配置 linux + vim + vala 开发环境
vim8
你需要先了解的知识
-
Language Server Protocol - 语言服务器协议,简称 lsp
简单的说,就是原来只有 IDE 才支持的 自动补全、查找、格式化等功能,现在被抽离出来,拆分成语言服务器的和客户端, 中间通过协议进行通讯。只要我们的 IDE 或文本编辑器支持 lsp 客户端,那么就能使用这些功能了。即然是 cs 架构, 那我们要做的事情就很清楚了:配置 lsp 客户端、构建语言服务器、调用语言服务器
-
vim-plug - vim 插件管理器
vim 的插件管理器。网上很多博客,这里就不再赘述了。
-
meson - 新的构建系统
功能和 cmake 差不多,但是构建速度更快,语法也更加规范。
-
git - 非常流行的版本控制系统
一、配置 lsp 客户端
这里我们用至 vim-lsp 插件, 其实还有其它插件可供选择,但是这个插件使用起来比较简单
" lsp 及相关插件
Plug "prabirshrestha/async.vim"
Plug "prabirshrestha/vim-lsp"
Plug "thomasfaingnaert/vim-lsp-snippets"
Plug "thomasfaingnaert/vim-lsp-ultisnips"
" 自动补全插件
Plug "prabirshrestha/asyncomplete.vim"
Plug "prabirshrestha/asyncomplete-lsp.vim"
Plug "ajh17/vimcompletesme"
" vala 语法高亮插件
Plug "arrufat/vala.vim"
接下来 :PlugInstall
进行安装
二、构建语言服务器
vala 语言服务器其实也有几种可供选择,这里使用 vala-language-server
依赖
glib-2.0
gobject-2.0
gio-2.0
gee-0.8
jsonrpc-glib-1.0
libvala-0.48
如果你的系统没有安装这些库,需要先安装它们。
克隆
git clone https://github.com/benwaffle/vala-language-server.git
构建
进入文件夹
meson build
ninja -C build
编译完成之后,把 build 文件夹中的 vala-language-server(这个就是我们构建好的语言服务器了) 复制到 ~/.local/bin
三、调用语言服务器
在 .vimrc 中添加如下信息
if executable("vala-language-server")
au User lsp_setup call lsp#register_server({
"name": "vala-language-server",
"cmd": {server_info->[&shell, &shellcmdflag, "vala-language-server"]},
"whitelist": ["vala"],
})
重新加载 .vimrc。现在我们只需要打开 vala 源文件,就可以使用 vala-language-server 的功能了。
vala-language-server 和 pkg-config 配合使用
在类 unix 环境中,我们经常使用到 pkg-config。vala-language-server 怎么识别 pkg-config 信息呢? 我们只需要配置好 meson.build,然后执行下 meson.build,如果没有报告,vala-language-server 就能正常识别了。
最后
vala-language-server 目前还在快速开发中,功能尚不完善,依赖也随时可能会发生变化,如果你发现构建不过了, 请点击链接,按照官方教程进行构建。