Editor Modes for Nix Files: Difference between revisions
imported>Fricklerhandwerk No edit summary |
imported>Figsoda No edit summary |
||
Line 1: | Line 1: | ||
Nix language has decent syntax highlighting (SH) support among popular code editors, but refactoring/autocomplete is still rare. Below is a list of editor modes for Nix syntax. | Nix language has decent syntax highlighting (SH) support among popular code editors, but refactoring/autocomplete is still rare. Below is a list of editor modes for Nix syntax. | ||
== Language servers == | |||
Most popular editors have support for the l[https://microsoft.github.io/language-server-protocol language server protocol], the following language servers can be used to provide features like completions and go-to-definition. | |||
* [https://github.com/oxalica/nil nil] | |||
* [https://github.com/nix-community/rnix-lsp rnix-lsp] | |||
== Emacs == | == Emacs == | ||
Line 6: | Line 11: | ||
* [https://github.com/shlevy/nix-buffer nix-buffer] | * [https://github.com/shlevy/nix-buffer nix-buffer] | ||
* [https://github.com/jwiegley/nix-update-el nix-update-el] | * [https://github.com/jwiegley/nix-update-el nix-update-el] | ||
== Vim == | == Vim == | ||
=== vim-addon-nix === | === vim-addon-nix === | ||
Line 45: | Line 46: | ||
]; | ]; | ||
}</syntaxHighlight> | }</syntaxHighlight> | ||
== Neovim == | |||
In addition to the Vim plugins listed above, [https://github.com/nvim-treesitter/nvim-treesitter nvim-treesitter] also has support for nix. | |||
<syntaxHighlight lang="nix">{ | |||
programs.neovim = { | |||
configure = { | |||
packages.all.start = with pkgs.vimPlugins; [ | |||
(nvim-treesitter.withPlugins (ps: [ ps.nix ])) | |||
# or | |||
nvim-treesitter.withAllGrammars # to install all grammars (including nix) | |||
]; | |||
}; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
== IntelliJ IDEA == | == IntelliJ IDEA == |
Revision as of 15:21, 5 February 2023
Nix language has decent syntax highlighting (SH) support among popular code editors, but refactoring/autocomplete is still rare. Below is a list of editor modes for Nix syntax.
Language servers
Most popular editors have support for the llanguage server protocol, the following language servers can be used to provide features like completions and go-to-definition.
Emacs
- nix-mode official available in melpa
- @marsam's nix-mode
- nix-buffer
- nix-update-el
Vim
vim-addon-nix
This plugin supports syntax highlighting and simple syntax and undeclared variable checking.
Usage with VAM package manager:
{ # /etc/nixos/configuration.nix
environment.systemPackages = [
(pkgs.vim_configurable.customize {
name = "vim";
vimrcConfig.vam.pluginDictionaries = [
# vim-nix handles indentation better but does not perform sanity
{ names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; }
];
})
];
}
vim-nix
vim-nix *only* supports syntax-highighting.
Usage with vim package manager:
{ # /etc/nixos/configuration.nix
environment.systemPackages = [
(pkgs.vim_configurable.customize {
name = "vim";
vimrcConfig.packages.myplugins = with pkgs.vimPlugins; {
start = [ vim-nix ]; # load plugin on startup
};
})
];
}
Neovim
In addition to the Vim plugins listed above, nvim-treesitter also has support for nix.
{
programs.neovim = {
configure = {
packages.all.start = with pkgs.vimPlugins; [
(nvim-treesitter.withPlugins (ps: [ ps.nix ]))
# or
nvim-treesitter.withAllGrammars # to install all grammars (including nix)
];
};
};
}
IntelliJ IDEA
Eclipse
- nix-eclipse - development stopped in 2010
Sublime Text
Atom
Visual Studio Code
- vscode-nix on github
- vscode-nix-ide on GitHub and VSCode Store with support to format and lint