27 个版本 (13 个重大更新)
新 0.21.0 | 2024年8月20日 |
---|---|
0.19.2 | 2024年8月8日 |
0.19.1 | 2024年6月22日 |
27 在 文本编辑器
每月下载 1,204 次
475KB
6.5K SLoC
GitLab CI 语言服务器 (gitlab-ci-ls)
免责声明
这是一个独立项目,并非GitLab的官方产品。它旨在与 yaml-language-server
(yamlls) 一起使用,为GitLab CI文件提供专门支持,而不替代yamlls。
功能
- 转到定义:导航到
jobs
、includes
、variables
、needs
、extends
和variables
的定义。 - 查找引用:查找
jobs
、extends
和stages
的所有用法。 - 自动完成:为
extends
、stages
、needs
、variables
和components
提供建议。 - 悬停信息:查看具有合并定义的工作的文档。
- 诊断:识别
extends
引用、stage
定义、job needs
使用和components
的问题。 - 重命名:支持工作重命名。
它还支持跳转到包含的文件。如果是远程文件,它将尝试使用当前工作区的Git设置下载并本地缓存。
展示
请注意,此视频不包括所有功能。
配置
初始化选项
- cache:缓存远程文件的位置
- log_path:LS日志的位置
安装
- GitHub发布版:从 GitHub发布页面 下载。
- Homebrew (macOS):
brew install alesbrelih/gitlab-ci-ls/gitlab-ci-ls
- Cargo (Rust包管理器):
cargo install gitlab-ci-ls
- Mason (neovim):Github
从源码构建
cargo build --release
可执行文件可以在 target/release/gitlab-ci-ls 中找到
与Neovim集成
使用neovim的最简单方法是使用mason结合mason-lspconfig来安装它。
重要:为了现在使用它,您需要设置正确的文件类型。以前它是附加在yaml
文件类型上的,但我决定这会引起太多混淆。
如何添加示例
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = "*.gitlab-ci*.{yml,yaml}",
callback = function()
vim.bo.filetype = "yaml.gitlab"
end,
})
与VSCode的集成
扩展可以在这里找到。
此扩展支持需要设置的配置,因为gitlab-ci-ls本身并没有随扩展一起安装,但需要从发行版、brew或从源代码构建。
Emacs lsp-mode配置
要使用gitlab-ci-ls
与Emacs的lsp-mode
,请参考以下示例配置。
(add-to-list 'lsp-language-id-configuration '("\\.gitlab-ci\\.yml$" . "gitlabci"))
(add-to-list 'lsp-language-id-configuration '("/ci-templates/.*\\.yml$" . "gitlabci"))
(lsp-register-custom-settings
'(("gitlabci.cache" "/path/where/remote/folders/will/be/cached")
("gitlabci.log_path" "/tmp/gitlab-ci-ls.log")))
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("gitlab-ci-ls"))
:activation-fn (lsp-activate-on "gitlabci")
:server-id 'gitlabci
:priority 10
:initialization-options (lambda () (gethash "gitlabci" (lsp-configuration-section "gitlabci")))))
待办事项
- 更智能的初始化方式,它应该支持root_dir等于nil,一旦文件被打开,它应该接收/计算新的root。
- 修复VSCode完成。似乎它还需要一个范围来正确更新文本。
- 重命名为gitlab-ci-ls。
- 阶段参考
- 变量也可以在矩阵中设置,这对于变量定义的跳转是相关的。
- 支持!reference
- 处理默认关键字
- 处理组件
- 推送诊断,而不是基于拉取的
依赖关系
~13–26MB
~426K SLoC