nim-wiki/Editor-Support.md

201 lines
6.5 KiB
Markdown
Raw Permalink Normal View History

2016-07-14 20:13:14 +00:00
If you add more editor support, don't forget to add it to the [FAQ](https://github.com/Araq/Nim/blob/devel/web/question.rst) as well.
2013-05-21 20:35:06 +00:00
2015-01-12 00:29:21 +00:00
The following editors have some Nim support:
2011-08-26 11:20:53 +00:00
### Visual Studio Code aka VSCode
2016-07-14 21:45:44 +00:00
* https://marketplace.visualstudio.com/items?itemName=kosz78.nim (Nim Extension)
* Syntax Highlight (nim, nims, nimble, nim.cfg)
* Code Completion
* Goto Definition
* Find References
* File outline
* Lint-on-save (optional)
* Build-on-save and / or hotkey (optional)
* Workspace symbol search
* Related extensions and information for Nim with VSCode
* https://code.visualstudio.com (editor homepage)
* https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow (indent visualizer)
* https://marketplace.visualstudio.com/items?itemName=mattn.Runner (code runner)
* https://marketplace.visualstudio.com/items?itemName=webfreak.debug (debugger)
* http://forum.nim-lang.org/t/2061 (Nim Forum Thread)
2011-08-26 11:20:53 +00:00
### Emacs
2015-12-31 02:38:22 +00:00
* https://github.com/nim-lang/nim-mode (requires emacs 24.4)
2015-01-12 00:29:21 +00:00
* https://github.com/jameshfisher/nimrod-mode (works with emacs 23 too, as of 2014-02-15)
2011-08-26 11:20:53 +00:00
### Vim
2015-07-18 23:43:55 +00:00
* https://github.com/zah/nim.vim/
2011-08-26 11:20:53 +00:00
* Syntax Highlighting
* Auto-indent
* Build/Jump to errors within Vim
2019-04-20 10:21:42 +00:00
* Project Navigation and Jump to Definition (using the Ctags support listed below or [Nim's idetools](https://nim-lang.org/docs/idetools.html) command)
2016-02-20 23:38:59 +00:00
* https://github.com/baabelfish/nvim-nim
A very new plugin for Vim and Neovim, still in heavy development.
2019-01-28 04:15:13 +00:00
* https://github.com/alaviss/nim.nvim
An experimental plugin targeting Neovim (no Vim support) featuring:
* Semantic syntax highlighting
* Go to definition
* Auto-completion
* Section movements
* Auto-indent
* Code folding
2019-07-28 15:26:27 +00:00
* Find references
* File outline
2019-01-28 04:15:13 +00:00
* http://gradha.github.io/articles/2014/02/invoking-dash-from-the-command-line-vim.html
2015-01-12 00:29:21 +00:00
Instructions to map Vim's ``K`` letter to look up documentation under MacOSX using [Dash](http://forum.nim-lang.org/t/330).
2011-08-26 11:20:53 +00:00
* https://github.com/w0rp/ale (Asynchronous Lint Engine)
* General lint/syntax-check plugin
* Supports running `nim check` on save by default
* Only works with Vim8 and neovim since it uses async features
### Textadept
* https://github.com/xomachine/textadept-nim
A very new plugin for [Textadept](https://foicica.com/textadept/)
2015-04-24 00:11:31 +00:00
### LiClipse
* http://www.liclipse.com
LiClipse is a plugin for Eclipse (which also provides a standalone version for convenience) which provides Nim support providing syntax-highlighting, outline, comment/uncomment (ctrl+/), select/deselect scope (Shift+Alt+Up/Down), auto-indent, mark occurrences, user templates, multiple cursors (Ctrl+K or Ctrl+Alt+mouse select) and indent guides.
2011-08-26 11:20:53 +00:00
### Scite
2015-02-03 08:14:41 +00:00
Recent versions of Scite have out-of-the-box support for Nim. For older versions: <br />
2015-01-12 00:29:21 +00:00
http://sourceforge.net/p/scintilla/scite/ci/default/tree/src/nimrod.properties?format=raw
2011-08-26 11:20:53 +00:00
To enable nim, edit the global config file: *(from http://forum.nim-lang.org/t/312)*
* remove nimrod from the list in `imports.exclude=(...lots of stuff)`
* edit `source.files` to make scintilla recognise .nim
2011-08-26 11:20:53 +00:00
### Aporia
2015-01-12 00:29:21 +00:00
Aporia is a Nim IDE written in Nim.
2014-10-11 23:21:14 +00:00
2015-01-12 00:29:21 +00:00
https://github.com/nim-lang/Aporia/
2011-08-26 11:20:53 +00:00
2017-03-03 11:43:08 +00:00
### Visual Studio
https://github.com/Gravityzwell/NimStudio
2014-02-13 17:46:36 +00:00
### LightTable
2015-07-18 23:43:55 +00:00
https://github.com/zah/nim.lt/
2014-02-13 17:46:36 +00:00
2014-03-13 15:14:23 +00:00
### Atom
2015-09-23 16:18:23 +00:00
* https://github.com/russpowers/nim-atom
* Autocomplete
* Linting/Error Checking (on file save or on-the-fly)
* Jump-to-definition
* Syntax highlighting
* https://github.com/zah/nim.atom/
2014-03-13 15:14:23 +00:00
2011-08-26 14:09:59 +00:00
### Gedit/Other GtkSourceView editors
There is a .lang file for gedit [here](https://github.com/nim-lang/Aporia/blob/master/share/gtksourceview-2.0/language-specs/nim.lang)
2011-08-26 14:09:59 +00:00
### Geany
2015-02-03 08:14:41 +00:00
There is a [pull request](https://github.com/geany/geany/pull/193) to provide Nim support in [Geany](http://www.geany.org).
2011-08-26 11:20:53 +00:00
### Ctags
2015-01-12 00:29:21 +00:00
Basic ```~/.ctags``` rules for Nim code (Feel free to improve and contribute)
2016-11-26 22:30:48 +00:00
Don't use this if possible, [Nim idetools](http://nim-lang.org/docs/idetools.html) provides better results.
2011-08-26 11:20:53 +00:00
```
2015-01-12 00:29:21 +00:00
--langdef=nim
--langmap=nim:.nim
--regex-nim=/(\w+)\*?\s*=\s*object/\1/t,class/
--regex-nim=/(\w+)\*?\s*=\s*enum/\1/t,enum/
--regex-nim=/(\w+)\*?\s*=\s*tuple/\1/t,tuple/
--regex-nim=/(\w+)\*?\s*=\s*range/\1/t,subrange/
--regex-nim=/(\w+)\*?\s*=\s*proc/\1/t,proctype/
--regex-nim=/proc\s+(\w+)/\1/f,procedure/
--regex-nim=/method\s+(\w+)/\1/f,method/
--regex-nim=/proc\s+`([^`]+)`/\1/o,operator/
--regex-nim=/template\s+(\w+)/\1/t,template/
--regex-nim=/macro\s+(\w+)/\1/m,macro/
2012-10-21 15:54:28 +00:00
```
2015-10-10 15:44:33 +00:00
Alternatively, there's a native tags generator specifically for Nim: https://bitbucket.org/nimcontrib/ntags
2012-10-21 15:54:28 +00:00
### jEdit
2013-12-18 09:10:49 +00:00
https://github.com/exhu/nimrod-misc/tree/master/jedit
### Sublime
* https://github.com/Varriount/NimLime
**NimLime** is a Sublime Text plugin that supports:
* Syntax highlighting
* Go to definition
* Error checking and highlighting through the compiler
* Completion suggestions though the compiler
* Babel package manager interaction
2014-12-22 15:13:07 +00:00
* https://github.com/leonardoce/nimrod-sublime
### Kate
2015-01-03 03:18:18 +00:00
Syntax highlighting:
2015-01-03 03:19:32 +00:00
2015-01-03 03:19:13 +00:00
https://github.com/PhilipWitte/NimKate
2015-01-05 04:06:57 +00:00
### TextMate
Available from the bundle installer in preferences ([repository](https://github.com/textmate/nim.tmbundle)).
### QtCreator
2018-03-30 21:39:46 +00:00
Enable the experimental plugin 'Nim' from the menu Help -> About Plugin..
Support
* Syntax Highlighting
* Debugging
* Simple project handling
2015-08-11 19:34:27 +00:00
### KDevelop
https://github.com/xyz32/KDevelop-template
2015-08-20 13:59:45 +00:00
Demo: https://vimeo.com/135918228
2015-08-11 19:37:25 +00:00
KDevelop templates for Nim project and Nim file:
2015-08-11 19:34:27 +00:00
* Project management (build/run configuration)
2015-08-11 19:37:25 +00:00
* New nim file
* Debug with gdb (You will need to uncomment the debug flag in the nim.cfg file)
2015-08-20 13:57:23 +00:00
* Syntax Highlighting (Needs [Kate syntax highlighting](https://github.com/nim-lang/Nim/wiki/Editor-Support#kate)).
2015-08-11 19:34:27 +00:00
2015-08-20 14:00:12 +00:00
Make sure you have both Nim and Nimble installed.
2015-08-15 17:41:38 +00:00
### Howl
http://howl.io
2016-02-29 12:30:10 +00:00
Recent versions of Howl have built-in Nim syntax highlighting.
2017-03-04 18:00:09 +00:00
### Micro
https://github.com/zyedidia/micro
Has built-in Nim syntax highlighting
2016-02-29 12:30:10 +00:00
### Notepad++
Support Nim syntax highlighting and code folding via a plugin written entirely in Nim!.
* Download available [here](https://github.com/jangko/nppnim/releases)
* Source code available [here](https://github.com/jangko/nppnim)
### Code::Blocks
2018-06-30 11:24:22 +00:00
[Pull request](https://sourceforge.net/p/codeblocks/tickets/657/) with the description of how to apply the attached settings locally to enable the Nim syntax highlighting.
### Kakoune
http://kakoune.org/
2018-06-30 18:47:52 +00:00
Has built-in Nim syntax highlighting and external linting support using Nim check with this [hook](https://gist.github.com/Clyybber/8861110a55f63ef1c255b26dbabfec1c)