#gitlab #language-server #extend #definition #ci #rename #reference

app gitlab-ci-ls

Gitlab CI 语言服务器

27 个版本 (13 个重大更新)

0.21.0 2024年8月20日
0.19.2 2024年8月8日
0.19.1 2024年6月22日

27文本编辑器

Download history 822/week @ 2024-05-04 186/week @ 2024-05-11 386/week @ 2024-05-18 323/week @ 2024-05-25 150/week @ 2024-06-01 217/week @ 2024-06-08 216/week @ 2024-06-15 366/week @ 2024-06-22 122/week @ 2024-06-29 89/week @ 2024-07-06 72/week @ 2024-07-13 101/week @ 2024-07-20 214/week @ 2024-07-27 215/week @ 2024-08-03 317/week @ 2024-08-10 444/week @ 2024-08-17

每月下载 1,204

MIT 许可证

475KB
6.5K SLoC

GitLab CI 语言服务器 (gitlab-ci-ls)

免责声明

这是一个独立项目,并非GitLab的官方产品。它旨在与 yaml-language-server (yamlls) 一起使用,为GitLab CI文件提供专门支持,而不替代yamlls。

功能

  • 转到定义:导航到 jobsincludesvariablesneedsextendsvariables 的定义。
  • 查找引用:查找 jobsextendsstages 的所有用法。
  • 自动完成:为 extendsstagesneedsvariablescomponents 提供建议。
  • 悬停信息:查看具有合并定义的工作的文档。
  • 诊断:识别 extends 引用、stage 定义、job needs 使用和 components 的问题。
  • 重命名:支持工作重命名。

它还支持跳转到包含的文件。如果是远程文件,它将尝试使用当前工作区的Git设置下载并本地缓存。

展示

请注意,此视频不包括所有功能。

观看视频

配置

初始化选项

  • cache:缓存远程文件的位置
  • log_path:LS日志的位置

安装

  1. GitHub发布版:从 GitHub发布页面 下载。
  2. Homebrew (macOS)brew install alesbrelih/gitlab-ci-ls/gitlab-ci-ls
  3. Cargo (Rust包管理器)cargo install gitlab-ci-ls
  4. 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或从源代码构建。

vscode settings

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