Skip to main content

Server implementation of the Language Server Protocol for reStructuredText

Project description

license version supported-versions

RST Language Server implements the server side of the Language Server Protocol (LSP) for the reStructuredText markup language.

RST Language Server is intended to be used by text editors implementing the client side of the protocol. See langserver.org for a list of implementing clients.

Features

Autocompletion of title adornments

https://raw.githubusercontent.com/digitalernachschub/rst-language-server/a4c81b4805d8ea913042c82e73eb8bae56e88c58/assets/autocomplete_title_adornments.webp

Installation

RST Language Server is available as a package on PyPI and can be installed via pip:

$ pip install --user rst-language-server

Usage with Kate

Using RST Language Server with Kate requires the LSP Client Plugin. Once the plugin is activated in the settings a new settings symbol named LSP-Client appears. Click on the section, select the User Server Settings tab and paste the following server configuration.

{
    "servers": {
        "rst": {
            "command": ["rst-ls", "--client-insert-text-interpretation=false"],
            "highlightingModeRegex": "^reStructuredText$"
        }
    }
}

This will start RST Language Server when opening any file that is configured to use the reStructuredText syntax highlighting.

Usage with Neovim

There are numerous ways to use Language Servers in with Neovim. This setup configuration assumes that you use nvim-lspconfig.

To registers RST Language Server with nvim-lspconfig, add the following lua code before requiring lspconfig and calling the corresponding setup function of the language server:

-- Register rst-ls with lspconfig
local configs = require "lspconfig/configs"
local util = require "lspconfig/util"

configs.rst_language_server = {
  default_config = {
    cmd = { "rst-ls" },
    filetypes = { "rst" },
    root_dir = util.path.dirname,
  },
  docs = {
    description = [[
https://github.com/digitalernachschub/rst-language-server
Server implementation of the Language Server Protocol for reStructuredText.
]],
    default_config = {
      root_dir = [[root_pattern(".git")]],
    },
  },
}

Note that this setup currently requires Neovim Nightly (0.6).

Is my editor supported?

RST Language Server can be used with any text editor that implements a Language Client. See this list of Language Client implementations.

Feature Matrix

Feature \ Editor

Kate

Neovim

Autocompletion of title adornments

Development configuration with Kate

The RST Language Server is executed as a subprocess of the Language Client. Therefore, if we want to see log output in Kate we need to write the logs to a file using the –log-file command line option. We also set the log level to debug in order to view the JSON-RPC messages exchanged between client and server. Lastly, we configure the root (i.e. the working directory of the executed command) to the directory where our source code lives in and use poetry run to execute the code in the Git repository:

{
    "servers": {
        "rst": {
            "command": ["poetry", "run", "rst-ls", "--log-file=/tmp/rst-ls.log", "--log-level=debug", "--client-insert-text-interpretation=false"],
            "root": "/path/to/rst-language-server-repo",
            "highlightingModeRegex": "^reStructuredText$"
        }
    }
}

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

rst-language-server-0.2.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

rst_language_server-0.2.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file rst-language-server-0.2.0.tar.gz.

File metadata

  • Download URL: rst-language-server-0.2.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for rst-language-server-0.2.0.tar.gz
Algorithm Hash digest
SHA256 53133d42054562a150a00e3616e58d3f23f91430e48b4f8a263303f15691560d
MD5 99d1299b5d11b5508dd2e2b80c8030d8
BLAKE2b-256 9810a08fe990f49a5f5473f5aff870b227b651a725df60d2ab3f678dbd0abc20

See more details on using hashes here.

Provenance

File details

Details for the file rst_language_server-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: rst_language_server-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for rst_language_server-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 767fe4b05fd468ee56515f50b7b1c0d9df941bebfaa96abdc3bafc36e927a58b
MD5 bb270667cda48c0d3b49a733d05418c3
BLAKE2b-256 07693d933055c4c6625ee373062b23d6bea6ac7752cb2fcf81da5bccc3ad57a3

See more details on using hashes here.

Provenance

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