This extension adds language support for the Nim language to VS Code, including:
- Syntax Highlight (nim, nimble, nim.cfg)
- Code Completion
- Signature Help
- Goto Definition
- Find References
- File outline
- Build-on-save
- Workspace symbol search
- Quick info
- Nim check result reported in
Nim
output channel (great for macro development).
First, you will need to install Visual Studio Code 1.27.0
or higher.
In the command palette (cmd-shift-p
) select Install Extension
and choose Nim
.
The following tools are required for the extension:
- Nim compiler - http://nim-lang.org
Note: It is recommended to turn Auto Save
on in Visual Studio Code (File -> Auto Save
) when using this extension.
The following Visual Studio Code settings are available for the Nim extension. These can be set in user preferences (cmd+,
) or workspace settings (.vscode/settings.json
).
nim.buildOnSave
- perform build task fromtasks.json
file, to use this options you need declare build task according to Tasks Documentation, for example:{ "taskName": "Run module.nim", "command": "nim", "args": ["c", "-o:bin/${fileBasenameNoExtension}", "-r", "${fileBasename}"], "options": { "cwd": "${workspaceRoot}" }, "type": "shell", "group": { "kind": "build", "isDefault": true } }
nim.lintOnSave
- perform the project check for errors on savenim.project
- optional array of projects file, if nim.project is not defined then all nim files will be used as separate projectnim.licenseString
- optional license text that will be inserted on nim file creation
{
"nim.buildOnSave": false,
"nim.buildCommand": "c",
"nim.lintOnSave": true,
"nim.project": ["project.nim", "project2.nim"],
"nim.licenseString": "# Copyright 2020.\n\n"
}
The following commands are provided by the extension:
Nim: Run selected file
- compile and run selected file, it usesc
compiler by default, but you can specifycpp
innim.buildCommand
config parameter. This command available from file context menu or byF6
keyboard shortcut.
- Clean-up
- Correctly model various nim project concepts
- Update
nimsuggest
RPC based on project rework and command/event log - Replace nedb indexing with work inspired from nimedit's finder
- Ignore node_modules entirely at this point
- Convert to asyncjs API
- Rename support
- Debug support
- Extract most functionality into an LSP (check existing one)
- Extract Visual Studio Code API into a separate Nimble package
- Switch to using concepts for interfaces
ChangeLog is located here