Skip to main content

q-lang-server

Offline Language Server Protocol implementation for q and k, written in Rust and powered by tree-sitter.

The server binary is named qls.

Install

pip install q-lang-server

Or with uv:

uv pip install q-lang-server

This installs the qls executable on your PATH.

Features

  • Diagnostics (linter)
  • Document formatting
  • Go to definition
  • Find references
  • Rename symbol (with prepare rename)
  • Hover
  • Document symbols and workspace symbols
  • Document highlight
  • Completion (with resolve)
  • Signature help
  • Semantic tokens

Source files are analyzed offline from the workspace. By default the server looks under **/src/**/*.q and **/src/**/*.k. Add ; to mark statement ends when needed for more accurate parsing.

Ignore directives

Place either comment above a block to skip analysis for that block:

// q-lang-server-ignore-linter
// q-lang-server-ignore-formatter

Editor setup

Neovim

Use chili-neovim for q/k syntax, process management, and LSP. It starts qls for .q / .k buffers by default.

  1. Install qls (see above) and ensure it is on your $PATH.
  2. Install chili-neovim with lazy.nvim:

Minimal:

{ "jshinonome/chili-neovim" }

With options and completion:

{
  "jshinonome/chili-neovim",
  main = "chili",
  dependencies = {
    "hrsh7th/nvim-cmp",
    "hrsh7th/cmp-nvim-lsp",
    "hrsh7th/cmp-buffer",
    "hrsh7th/cmp-vsnip",
    "hrsh7th/vim-vsnip",
  },
  opts = {
    qls = {
      cmd = { "qls" },
      filetypes = { "q" }, -- .q and .k
      document_highlight = true,
      format_on_save = true,
    },
  },
}

See the chili-neovim README for process config, commands, and keybindings.

Other editors

Any LSP client that can launch qls over stdio can use this server. Point the client at the qls binary and associate it with q and k filetypes.

Related

License

Licensed under the Apache License, Version 2.0.

Release files for q-lang-server 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for q-lang-server 1.0.2
File
q_lang_server-1.0.2-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
q_lang_server-1.0.2-py3-none-win32.whl Python 3 none Windows x86-32 Details
q_lang_server-1.0.2-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
q_lang_server-1.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
q_lang_server-1.0.2-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
q_lang_server-1.0.2-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size:11.9 MB

Release files / q_lang_server-1.0.2-py3-none-win_amd64.whl

Download URL q_lang_server-1.0.2-py3-none-win_amd64.whl
Size 2.0 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
3cd1498438a4d31365535ba012fd091a65fc6288626f75749e7656a1d376ce28
BLAKE2b-256 checksum
How to use checksums
ba759bd3a68f2ffeddefd29c2e2d2852e93ff974b1ac3e60b7997b22c669d7eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / q_lang_server-1.0.2-py3-none-win32.whl

Download URL q_lang_server-1.0.2-py3-none-win32.whl
Size 1.8 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
ea128651e241d02346583ca254d088f17da835b7f404411e880d0c4a137d4860
BLAKE2b-256 checksum
How to use checksums
9c63edbea36971f4e5de1a6932f8a12806d5fb73382c7632da73b862475f00c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / q_lang_server-1.0.2-py3-none-musllinux_1_2_x86_64.whl

Download URL q_lang_server-1.0.2-py3-none-musllinux_1_2_x86_64.whl
Size 2.1 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a2579d24f8c973bff335d5e312316df08931eee597aa3dfa93f5cf75249cf6b7
BLAKE2b-256 checksum
How to use checksums
8a9366373fb0b511cb51c256c113a39d65ae618ac005f07146b28bf3404051b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / q_lang_server-1.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL q_lang_server-1.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a799384082ba3a07784864a9549620acc1a03e04cfd6da568d6397e7c3af09cb
BLAKE2b-256 checksum
How to use checksums
d259f897f452d9b956a98c5b1eea10c5e30bd3a4c7b4939ba12c09a8c31e5d67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / q_lang_server-1.0.2-py3-none-macosx_11_0_arm64.whl

Download URL q_lang_server-1.0.2-py3-none-macosx_11_0_arm64.whl
Size 1.9 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
80c6822eecc8b253e968f7e447994f13b7b556b240a9f42ac9ef4ad8e05756fb
BLAKE2b-256 checksum
How to use checksums
8de76cf61b13ac6e23e807291a7d7d7ed3c0cb486506da87ee4b3d2291954da7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / q_lang_server-1.0.2-py3-none-macosx_10_12_x86_64.whl

Download URL q_lang_server-1.0.2-py3-none-macosx_10_12_x86_64.whl
Size 2.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f394570d05c920b9accbd01ce4ffeb1d1fd6c6f55d21d8c893d5b1aa8b4cf9ef
BLAKE2b-256 checksum
How to use checksums
813eb3446ada10129302b7b488e97b1a825ef12aaade7908cac94f9371ba6672
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.0.5

6 release files

1.0.4

6 release files

This release

1.0.2 This release

6 release files

1.0.1

6 release files

1.0.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page