systemd-language-server

April 14, 2024 ยท View on GitHub

PyPI GitHub Actions (Tests) GitHub

Language server for systemd unit files. Result of an exercise to learn the language server protocol.

Supported Features

textDocument/completion

Completion for

  • unit file directives
  • unit file sections

textDocument/hover

Documentation for directives supplied on hovering.

For markup in hover windows (i.e. the fancy highlighting), pandoc must be found in $PATH. Otherwise, there will be fallback to plain text.

Installation

pip install systemd-language-server

Example Integrations

coc.nvim

In coc-settings.json, under .languageserver:

...
"systemd-language-server": {
  "command": "systemd-language-server",
  "filetypes": ["systemd"]
}
...

nvim-lspconfig

local lspconfig = require 'lspconfig'
local configs = require 'lspconfig.configs'

if not configs.systemd_ls then
  configs.systemd_ls = {
    default_config = {
      cmd = { 'systemd-language-server' },
      filetypes = { 'systemd' },
      root_dir = function() return nil end,
      single_file_support = true,
      settings = {},
    },
    docs = {
      description = [[
https://github.com/psacawa/systemd-language-server

Language Server for Systemd unit files.
]]
    }
  }
end

lspconfig.systemd_ls.setup {}

Courtesy of @ValdezFOmar