以 js 为例,我一直都是按这个顺序:
js-mode -> lsp-typescript
后来安装了 nodenv 来管理不同版本的 node,启动顺序也变成:
js-mode -> nodenv-mode -> lsp-typescript
至于不同目录使用不同版本的 node,交给 nodenv 管理,lsp 只要跟在 nodenv-mode 后面启动就可以了。
再后来,某些个特定的文件也要使用不同版本的 node,跟项目其他文件不一样:
// Local Variables:
// nodenv-node-version: "8.0.0"
// End:
这时,lsp 的启动时机就要再度推迟了:
js-mode -> hack-local-variables-hook -> nodenv-mode -> lsp-typescript
因为 local variable 是最晚生效的,而且即使没有定义任何本地变量,hook 也会执行,所以这是启用 lsp 的最佳时机?