#nix #language-server #lsp #rnix

app rnix-lsp

一个正在开发中的Nix语言服务器,具有语法检查和基本补全功能

5个版本

0.2.5 2022年6月14日
0.2.4 2022年1月30日
0.2.3 2021年12月24日
0.2.1 2021年9月23日
0.1.0 2020年1月12日

450文本编辑器 中排名

Download history 191/week @ 2024-02-26 145/week @ 2024-03-04 149/week @ 2024-03-11 130/week @ 2024-03-18 96/week @ 2024-03-25 131/week @ 2024-04-01 85/week @ 2024-04-08 90/week @ 2024-04-15 63/week @ 2024-04-22 73/week @ 2024-04-29 47/week @ 2024-05-06 64/week @ 2024-05-13 85/week @ 2024-05-20 88/week @ 2024-05-27 73/week @ 2024-06-03 78/week @ 2024-06-10

每月下载量 335

MIT 许可证

54KB
1K SLoC

rnix-lsp Crates.io

使用rnix的语法检查语言服务器。

  • 语法检查诊断
  • 基本补全
  • 基本重命名
  • 基本跳转到定义
  • 扩展选择建议
  • 使用nixpkgs-fmt格式化

这最多是测试版质量 - 我在编写rnix时没有预料到维护一个语言服务器,目标是其他人会围绕解析器蜂拥而至,编写大量编辑器工具 :)

预计会有破坏。在1.x.y之前没有semver兼容性。

使用RUST_LOG=trace打开日志记录,并将stderr重定向到文件。

bash -c "env RUST_LOG=trace rnix-lsp 2> /tmp/rnix-lsp.log"

安装

$ nix-env -i -f https://github.com/nix-community/rnix-lsp/archive/master.tar.gz

与您的编辑器集成

这些说明尚未完全测试 - 请参阅问题#3。如果以下配置没有正常工作,请提出问题或发送PR。

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))

eglot

(add-to-list 'eglot-server-programs '(nix-mode . ("rnix-lsp")))

Kakoune

kak-lsp

kak-lsp从版本v9.0.0开始内置配置

[language.nix]
filetypes = ["nix"]
roots = ["flake.nix", "shell.nix", ".git"]
command = "rnix-lsp"

如果您遇到“缺少根”的问题,请参阅此问题

VSCode

vscode-nix-ide

{
    "nix.enableLanguageServer": true
}

RIP jd91mzm2

遗憾的是,本项目的原始作者@jD91mZM2已经去世。他的在线身份是匿名的,我们留下的只有他的代码。这只是他贡献的众多仓库中的一个。

依赖关系

~9–19MB
~255K SLoC