Awesome
rnix-lsp
A syntax-checking language server using rnix.
- Syntax-checking diagnostics
- Basic completion
- Basic renaming
- Basic goto definition
- Expand selection proposal
- Formatting using nixpkgs-fmt
This is beta-level quality at best - I didn't expect maintaining a language server when writing rnix, the goal was that others would flock around the parser and write a bunch of editor tooling :)
Breakages are expected. No semver compatibility before 1.x.y.
Turn on logging with RUST_LOG=trace
, and redirect stderr to a file.
bash -c "env RUST_LOG=trace rnix-lsp 2> /tmp/rnix-lsp.log"
Install
$ nix-env -i -f https://github.com/elkowar/rnix-lsp/archive/master.tar.gz
Integrate with your editor
These instructions are not fully tested - see issue #3. Please raise an issue and/or send a PR if a config below didn't work out of the box.
Vim/Neovim
coc.nvim
{
"languageserver": {
"nix": {
"command": "rnix-lsp",
"filetypes": [
"nix"
]
}
}
}
LanguageClient-neovim
let g:LanguageClient_serverCommands = {
\ 'nix': ['rnix-lsp']
\ }
vim-lsp
if executable('rnix-lsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'rnix-lsp',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'rnix-lsp']},
\ 'whitelist': ['nix'],
\ })
endif
Emacs
lsp-mode
(add-to-list 'lsp-language-id-configuration '(nix-mode . "nix"))
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("rnix-lsp"))
:major-modes '(nix-mode)
:server-id 'nix))