Skip to main content

Language Server for RPM spec files

Project description

RPM Spec File Language Server

CI Status VSCode CI Status Code Coverage Chat on - Matrix

This is a proof of concept implementation of a server implementing the Language Server Protocol for RPM Spec files.

Please share your feature requests with us by opening an issue, creating a discussion or chat with us on matrix in #rpm-spec-language-server:matrix.org.

Supported LSP endpoints

  • autocompletion of macro names, spec sections and preamble keywords

  • jump to macro definition

  • expand macros on hover

  • breadcrumbs/document sections

Requirements

Running the server

  • Install the dependencies via poetry install

  • Launch the server in tcp mode (binds to `127.0.0.1:2087 by default) via poetry run rpm_lsp_server

Alternatively, you can build the python package, install the wheel and run the module directly:

poetry build
pip install --user dist/rpm_spec_language_server-*.whl
python -m rpm_spec_language_server

The server requires the spec.md file. It can either use the locally installed copy from the rpm package or (if the documentation has not been installed) from a locally cached version in ~/.cache/rpm/spec.md.

Clients

VSCode

A very simple VSCode client is available in clients/vscode/. Building requires nodejs and the npm package manager:

$ npm install
$ npm run package

Install the created rpm-spec-language-server-$VERSION.vsix and launch the language server in tcp mode.

vis with vis-lspci

Add to your ~/.config/vis/visrc.lua this code:

lsp = require('plugins/vis-lspc')
lsp.ls_map['rpmspec'] = {
    name = 'RPMSpec',
    cmd = 'python3 -mrpm_spec_language_server --stdio'
}

Neovim with built-in LSP client

local lspconfig = require("lspconfig")
local util = require("lspconfig.util")
local configs = require("lspconfig.configs")
configs.rpmspec = {
    default_config = {
      cmd = { 'python3', '-mrpm_spec_language_server', '--stdio' },
      filetypes = { 'spec' },
      single_file_support = true,
      root_dir = util.find_git_ancestor,
      settings = {},
    },
    docs = {
      description = [[
  https://github.com/dcermak/rpm-spec-language-server

  Language server protocol (LSP) support for RPM Spec files.
  ]],
    },
}

lspconfig["rpmspec"].setup({})

Neovim with coc.nvim plugin

Open nvim, run :CocConfig, and merge the following JSON into your configuration

{
    "languageserver": {
        "spec": {
            "command": "rpm_lsp_server",
            "args": ["--stdio"],
            "filetypes": ["spec"]
        }
    }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpm_spec_language_server-0.0.1.tar.gz (18.7 kB view hashes)

Uploaded Source

Built Distribution

rpm_spec_language_server-0.0.1-py3-none-any.whl (20.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page