VSC-Logtalk
A VS Code extension which provides language support for Logtalk.
Features | Configurations | Bug Reporting
Note before installation
This extension can be installed via extensions viewlet of VS Code or 'Extensions: install extension' command from the command palette. The author notices that it is developed and tested in Logtalk 3.12.0 and VS Code 1.17 on Debian 9.0 (stretch). It's not yet tested under other environments.
Features
Feature descriptions and usages
Syntax highlighting
- Full syntax highlight for all Logtalk built-in control constructs, directives, methods, and predicates
- Full syntax highlight for all ISO Prolog standard built-in control constructs, directives, and predicates
- Built-ins pattern support
Indentation, snippets and auto-completion
- Indentation after new line
- Built-in directive, method and predicate template auto-completion
- Auto-complete recursive parameters: When '.'(dot) occures as first non-space character, VSC-Logtalk will repeat the nearest above head of clause and automatically change the parameters if possible.
Note: Relations between entities use choice snippets. 'orel' triggers object relation choices and 'crel' for category. There is only one relation between protocols 'extends', so 'ext' will trigger the snippet.
The snippets for built-ins all are triggered by natural prefix, i.e. ':- public' triggers ':- public()' directive. You needn't to type all charaters to show up the suggestion list.
Refter to the table below for other snippets:
Prefix |
Description |
:- obj |
Object |
:- cat |
Category |
:- pro |
Protocol |
orel |
relations between objects(choice) |
crel |
relations between categories(choice) |
ext |
relations between categories |
category |
Category with protocol |
category |
Category |
class |
Class with all |
class |
Class with category |
class |
Class with metaclass |
class |
Class with protocol |
class |
Class |
category |
Complementing category |
category |
Extended category |
protocol |
Extended protocol |
instance |
Instance with all |
instance |
Instance with category |
instance |
Instance with protocol |
instance |
Instance |
private |
(with no arguments) |
private |
Private predicate |
protected |
(with no arguments) |
protected |
Protected predicate |
protocol |
Protocol |
object |
Prototype with all |
object |
Prototype with category |
object |
Prototype with parent |
object |
Prototype with protocol |
object |
Prototype |
public |
(with no arguments) |
public |
Public predicate |
Grammar linter
Commands
Project specified commands
Project specified commands can be triggered from command palette via entering 'logtalk' to pop up the list of all commands of VSC-Logtalk.
Command |
Description |
Key binding |
Open Logtalk |
Opens Logtalk in an integrated terminal |
alt-x o |
Run Testers |
Runs the logtalk_tester script on the project root directory |
|
Run Doclets |
Runs the logtalk_doclet script on the project root directory |
|
Source file specified commands
These commands can be triggered from editor/context and explorer/context menus via right click editor area or Logtalk files in explorer area respectively. In explorer context, the file name at which right click occurs will be passed in the command as argument. File specified commands can also be triggered from command palette so that active file name in the editor will be passed in the command.
Command |
Description |
Key binding |
Load Document |
Loads the active source file into the Logtalk process |
F9 |
Run Tests |
Runs the tester file under the active source file directory |
|
Run Doclet |
Run the doclet file under the active source file directory |
|
Goto Next/Previous Error |
Locate cursor to the nearest line with error/warning from current cursor location and the corresponding error/warning message displays in output channel |
F7/shift-F7 |
Scan Dead Code |
Scans active file for dead code |
|
Generate Documentation |
Generates documentation for the files under the active source file directory |
|
Generate Diagrams |
Generates diagrams for the files under the active source file directory |
|
- Command 'Logtalk: load document'
Configurations
Bug reporting
Feel free to report bugs or suggestions via issues
Contributions
Pull requests are welcome.
Acknowledgements
The author of this extension thanks Professor Paulo Moura who is the author of Logtalk for his patient help and support. Syntax highlighting, some snippets, and some commands are integrated from his distro of Logtalk.
License
MIT