最新版已经考虑major-mode、扩展名、项目根目录和操作系统平台四个维度的优先级:
-
第一优先级, 按项目根目录来判断选择哪个server或者自定义的JSON文件,注意需要自定义 lsp-bridge-get-lang-server-by-project 这个函数, 这个函数接受两个参数: 当前文件所属的项目根目录和文件路径,注意如果一个文件是单文件,没在git目录下,第一个参数也是文件路径
-
第二优先级, 按文件后缀来判断, 需要自定义 lsp-bridge-lang-server-extension-list 选项, 比如文件 a.vue 虽然是 web-mode, 但是 lsp-bridge-lang-server-extension-list 的优先级比 lsp-bridge-lang-server-mode-list 高,会使用 volar 后端,而不是 javascript 后端
-
第三优先级, 按照 lsp-bridge-lang-server-mode-list 的匹配规则来判定
对于大家的使用来说:
- 如果要根据项目的子路径来做自动化配置,请自定义 lsp-bridge-get-lang-server-by-project 函数
- 如果要针对相同 major-mode 但是不同扩展名的文件配置不同的 lsp server, 定制 lsp-bridge-lang-server-extension-list
贡献新 lsp server 分支的同学注意, langserver 做了不同平台的区分,比如Linux平台用 pyright.json , Windows平台用 pyright_nt.json, 这样各个平台的差异化都可以随意定制JSON文件即可。