Commit 25bdcda9730e

Vincent Demeester <vincent@sbr.pm>
2026-03-10 12:07:03
feat: add tekton-lsp editor integration
Added Tekton LSP support for both Emacs (eglot) and Neovim, auto-attaching on YAML files that contain tekton.dev apiVersions. Installed tekton-lsp package on kyushu.
1 parent 0e560da
Changed files (3)
dots
config
emacs
nvim
lua
plugins
systems
kyushu
dots/config/emacs/init.el
@@ -782,6 +782,21 @@ minibuffer, even without explicitly focusing it."
    '(("\\($(\\(workspaces\\|context\\|params\\)\.[^)]+)\\)" 1 'font-lock-constant-face prepend)
      ("kind:\s*\\(.*\\)\n" 1 'font-lock-keyword-face prepend))))
 
+;; Tekton LSP for YAML files containing tekton.dev apiVersion
+;; TODO: replace with just "tekton-lsp" once it's in $PATH
+(with-eval-after-load 'eglot
+  (add-to-list 'eglot-server-programs
+	       `(yaml-ts-mode . (,(expand-file-name "~/src/tektoncd/tekton-lsp-go/tekton-lsp")))))
+(defun vde/maybe-start-tekton-lsp ()
+  "Start tekton-lsp via eglot if the buffer contains a Tekton apiVersion."
+  (when (and buffer-file-name
+	     (not (file-remote-p default-directory))
+	     (save-excursion
+	       (goto-char (point-min))
+	       (re-search-forward "tekton\\.dev\\|triggers\\.tekton\\.dev" nil t)))
+    (eglot-ensure)))
+(add-hook 'yaml-ts-mode-hook #'vde/maybe-start-tekton-lsp)
+
 (use-package orgalist
   :commands (orgalist-mode)
   :hook ((markdown-mode . orgalist-mode)
dots/config/nvim/lua/plugins/tekton.lua
@@ -1,4 +1,7 @@
 -- Tekton LSP: attaches tekton-lsp to YAML files containing tekton.dev apiVersion
+-- TODO: remove hardcoded path once tekton-lsp is in $PATH
+local tekton_lsp_bin = vim.fn.expand("~/src/tektoncd/tekton-lsp-go/tekton-lsp")
+
 vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
   group = vim.api.nvim_create_augroup("tekton_lsp_attach", { clear = true }),
   pattern = { "*.yaml", "*.yml" },
@@ -8,7 +11,7 @@ vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
       if line:match("tekton%.dev") or line:match("triggers%.tekton%.dev") then
         vim.lsp.start({
           name = "tekton-lsp",
-          cmd = { "tekton-lsp" },
+          cmd = { tekton_lsp_bin },
           root_dir = vim.fs.root(ev.buf, { ".git" }) or vim.fn.getcwd(),
         })
         return
systems/kyushu/home.nix
@@ -78,6 +78,7 @@ in
     cliphist-cleanup
 
     slackdump
+    tekton-lsp
   ];
 
   # Automatic color scheme switching