VS Code 配置 Nim 语言扩展

2024-06-12 - 甲辰年 庚午月 丁未日 - 农历五月初七 阴转多去

安装 Nim language server 插件

Nim language server 官方 github 项目地址:

https://github.com/nim-lang/langserver

用下面的命令安装:

nimble install nimlangserver

安装过程会下载、编译一大堆的依赖

我本机安装的是 Nim ver 2.0.8,它竟然自己编译 Nim 2.0.2 并安装:

Installing nim@2.0.2 Success: nim installed successfully

测试 nimlangserver 安装是否成功

运行命令:

$ nimlangserver -v
1.4.0

上面显示的信息说明 nimlangserver 已经成功安装

VS Code 配置 Nim language server

  • 点击 VS Code 左侧图标栏的插件图标(底下那个)

  • 找到 nim-lang.org,点击右侧的齿轮状 “Manage" 小图标

  • 在弹出菜单中选择 Extension Settings

  • 找到设置项 Nim Lsp: Path,输入 nimlangserver.exe 所在目录的绝对路径,如:

    C:\Users\tuenhai.com.nimble\pkgs2\nimlangserver-1.4.0-20579f6b83a2b3b7b2af7e3e9cef94c27266fe1b\

也可以输入绝对路径,如:

C:\Users\tuenhai.com\.nimble\pkgs2\nimlangserver-1.4.0-20579f6b83a2b3b7b2af7e3e9cef94c27266fe1b\nimlangserver.exe

如果你不是用 nimble 从源码编译安装它,而是复制已经编译好的可执行文件所在的文件夹到另一口台电脑上,那么就要如上指定可执行文件的绝对路径

测试 nimlangserver 是否正常工作

  • 在 .nim 文件中,输入 parse 会列出一长串 parse 开头的函数
  • 鼠标移到函数名上,会弹出函数信息提示

弹窗错误提示的解决办法

按照本文设置,nimlangserver 能工作,只是它可能不时在右下角弹出类似下面的错误提示:

Request textDocument/documentSymbol failed

Request textDocument/documentHightlight failed

原因,海云青飞 认为可能是 nimlangserver 来不及计算出错误提示的信息

我设置 VS Code 源代码自动保存 afterDelay 1000 毫秒,这时我任意改动 nim 源文件都会很快触发 nimlangserver 重新计算,这让它忙得上气不接下气,实在没有办法,它只能报错求救

解决办法:

  • VS Code 右上角 ...

  • Configure Editor

  • 搜索 auto save

  • 修改设置

    • Files: Auto Save: afterDelay
    • Files: Auto Save Delay: 15000

这种设置是否有效还有待观察

编译第一个 Nim 程序

创建文本文件如 hello.nim,内容如下:

echo "sea fly!"

然后按 F6 运行当前文件:

输出:

tuenhai.com@DESKTOP-B3J39SP MSYS ~/nim/code
$ nim c -r "c:\msys64\home\tuenhai.com\nim\code\run\hello.nim"
Hint: used config file 'C:\Users\tuenhai.com\nim64\config\nim.cfg' [Conf]
Hint: used config file 'C:\Users\tuenhai.com\nim64\config\config.nims' [Conf]
........................................................................
CC: hello.nim
Hint:  [Link]
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
27794 lines; 1.069s; 30.324MiB peakmem; proj: c:\msys64\home\tuenhai.com\nim\code\run\hello.nim;
out: c:\msys64\home\tuenhai.com\nim\code\run\test.exe [SuccessX]
Hint: c:\msys64\home\tuenhai.com\nim\code\run\test.exe [Exec]
sea fly!

其他信息:PMunch/nimlsp 不是官方插件

https://github.com/PMunch/nimlsp 非官方插件

我一开始安装的是 nimlsp 0.4.6,使用时总是不起作用并报错

于是我进入 nimlsp.exe 所在目录,执行命令:

./nimlsp

这时显示:

Content-Length: 161

{"jsonrpc":"2.0","method":"window/showMessage","params":{"type":2,"message":"Current Nim version does not match the one NimLSP is built against 1.6.0 != 2.0.4"}}

重新安装 nimlsp,还是不行

后来我安装 nimlangserver 才成功

2024-09-19 更新


独立思考最难得,赞赏支持是美德!(微信扫描下图)