MikaelElkiaer / helm-ls

⎈ Language server for Helm ⎈

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lint Tests Release License

  /\  /\___| |_ __ ___   / / ___ 
 / /_/ / _ \ | '_ ` _ \ / / / __|
/ __  /  __/ | | | | | / /__\__ \
\/ /_/ \___|_|_| |_| |_\____/___/

Helm Language Server Protocol

helm-ls is helm language server protocol LSP.

Getting Started

Vim Helm Plugin

You'll need vim-helm plugin installed before using helm_ls, Try to install it vim:

Plug 'towolf/vim-helm'

Download

  • 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

Make it executable

chmod +x /usr/local/bin/helm_ls

nvim-lspconfig setup

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"},
}

asciicast

Emacs eglot setup

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 -*-

Contributing

Thank you for considering contributing to HelmLs project!

License

The HelmLs is open-source software licensed under the MIT license.

About

⎈ Language server for Helm ⎈

License:MIT License


Languages

Language:C 77.1%Language:Go 22.7%Language:Makefile 0.2%