/\ /\___| |_ __ ___ / / ___ / /_/ / _ \ | '_ ` _ \ / / / __| / __ / __/ | | | | | / /__\__ \ \/ /_/ \___|_|_| |_| |_\____/___/
helm-ls is helm language server protocol LSP.
You'll need vim-helm plugin installed before using helm_ls, Try to install it vim:
Plug 'towolf/vim-helm'
-
Download the latest helm_ls executable file from here and move it to your binaries directory
-
You can download it with curl, replace the {os} and {arch} variables
curl -L https://github.com/mrjosh/helm-ls/releases/download/master/helm_ls_{os}_{arch} --output /usr/local/bin/helm_ls
chmod +x /usr/local/bin/helm_ls
local configs = require('lspconfig.configs')
local lspconfig = require('lspconfig')
local util = require('lspconfig.util')
if not configs.helm_ls then
configs.helm_ls = {
default_config = {
cmd = {"helm_ls", "serve"},
filetypes = {'helm'},
root_dir = function(fname)
return util.root_pattern('Chart.yaml')(fname)
end,
},
}
end
lspconfig.helm_ls.setup {
filetypes = {"helm"},
cmd = {"helm_ls", "serve"},
}
Integrating helm-ls with eglot for emacs consists of two steps: wiring up Helm template files into a specific major mode and then associating that major mode with helm_ls
via the eglot-server-programs
variable.
The first step is necessary because without a Helm-specific major mode, using an existing major mode like yaml-mode
for helm_ls
in eglot-server-programs
may invoke the language server for other, non-Helm yaml files.
For example, the following elisp snippet demonstrates how to use this language server after installing it as explained in Getting Started.
Assuming that you leverage use-package
for package management:
;; ...ensure that your package manager of choice is setup before
;; installing packages, and then
;; Install yaml-mode
(use-package yaml-mode)
;; Create a derived major-mode based on yaml-mode
(define-derived-mode helm-mode yaml-mode "helm"
"Major mode for editing kubernetes helm templates")
(use-package eglot
; Any other existing eglot configuration plus the following:
:hook
; Run eglot in helm-mode buffers
(helm-mode . eglot-ensure)
:config
; Run `helm_ls serve` for helm-mode buffers
(add-to-list 'eglot-server-programs '(helm-mode "helm_ls" "serve")))
Invoke M-x helm-mode
in a Helm template file to begin using helm-ls as a backend for eglot.
Alternatively, you can include a comment such as the following at the top of Helm yaml files to automatically enter helm-mode
:
# -*- mode: helm -*-
Thank you for considering contributing to HelmLs project!
The HelmLs is open-source software licensed under the MIT license.