NimPlus
=======
(Formerly named SublimeNim)
Nim Programming Language plugin for Sublime Text 4
Requires version 4073 or higher.
- Q: Why not use NimLime ?
- A: NimLime dropped support for NimSuggest and Nimble. It now focuses on providing language highlighting support.
The goal of NimPlus is to have IDE like support for Nim including autocompletion, type information tooltips and more (see the Features section)
We currently support Window and Linux. Other OS might work but aren't tested.
Features
--------
* Syntax highlighting
* Highlight errors (Using `nim check`)
* Show tooltips with type informations
* Goto Definition (link inside tooltip)
* Autocompletion (based on `nimsuggest`)
* Shows your documentation
* Keyboard shortcuts for building and generating documentation
* Prettify your code with nimpretty
![demo](example.png)
Installation
------------
*Package Control* is required. Find how to install it here: https://packagecontrol.io/installation
If you have other packages installed, you probably also have already installed *Package Control*.
1. Ctrl+Shift+P
2. Select `Package Control: Add repository`
3. Enter URL: https://github.com/vanyle/NimPlus
4. `Install package`
5. `NimPlus`
6. `Enter`
Settings, Usage and Tips
------------------------
To see what NimPlus is capable of, open the *Command Palette* (Ctrl+Shift+P ), and type `NimPlus`.
This will list most NimPlus features.
You can install the `ANSIescape` package to enjoy the syntax coloring of the terminal when building.
This is optional.
Depending on how much you want Sublime to behave as an IDE or as a text editor, you can toggle the following features.
You can see all the toggles inside your preference file.
Open it with:
Preferences > Package Settings > NimPlus > Settings - Default
### Error highlighting
Toggle with `nimplus.savecheck`
After saving, will check the current file for errors. See screenshot above.
### Tooltips
Toggle with `nimplus.hoverdescription`
Will show the types and the docstring of the variable and procedure you hover over.
### Auto completion
Toggle with `nimplus.autocomplete`
Will propose completion options based on `nimsuggest`'s `sug` feature.
You need to enable `autocompletion` in *Sublime Text* settings
### Build shortcuts
Ctrl+B : Compile and Run the current nimble project
Ctrl+Shift+B : Compile the current nimble project
You can change these with:
Preferences > Package Settings > NimPlus > Key Bindings - Default
Possible configuration:
```js
[
{
"keys":["ctrl+b"],
"command":"run_nim" // put run_nim or run_nimble depending on if you use nim more as a scripting tool or for big projects.
},
{
"keys":["ctrl+shift+b"],
"command":"compile_nim" // same here
},
]
```
When building, the result will be shown inside the *Sublime Text* terminal.
You might want to change this behavior. The first settings controls the regular builds and the second setting controls the nimble builds. The compilation will always occur inside the *Sublime Text* terminal, only the run command can be customized.
```js
// possible values:
// `[]` => Use the Sublime Text terminal (readonly)
// `["wt"]` => Use Windows Terminal
// `["start","cmd","/k"]` => Please use something more modern ...
// `["start","powershell","-Command"]` => Use Powershell
{
// other values ...
"nimplus.nim.console":["wt"],
"nimplus.nimble.console":["wt"]
}
```
By default, NimPlus does not use the *Build System* integrated into Sublime Text.
Instead, NimPlus uses custom commands that perform the building. This allows us
to control what terminal is used to run the command and other options.
If you prefer using *Build System*, comment the lines inside the `Key Bindings - Default` files
to disable the Custom Sublime Nim building and check the option in:
Tools > Build System > Nim
Note that the *Build System* does not support `nimble`.
### Usage with Terminus
[Terminus](https://github.com/randy3k/Terminus) is a package that adds a real terminal
inside Sublime Text with colored output and interaction and evverything.
If it is installed, you can run your programs inside of it instead of the default output panel with
the config switch
```js
"nimplus.use_terminus": true
```
Contributing
------------
Pull requests are **not** welcome.
I might still merge them if I feel like it thou.
Open an issue if you have a problem.