Skip to main content

q language server, written in Rust.

Project description

q-lang-server

Offline Language Server Protocol implementation for kdb+ 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.

Build from source

cargo build --release -p q-lang-server

The binary is at target/release/qls.

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

Copyright 2026 Jo Shinonome. All rights reserved. See LICENSE.txt.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

q_lang_server-1.0.1-py3-none-win_amd64.whl (2.0 MB view details)

Uploaded Python 3Windows x86-64

q_lang_server-1.0.1-py3-none-win32.whl (1.8 MB view details)

Uploaded Python 3Windows x86

q_lang_server-1.0.1-py3-none-musllinux_1_2_x86_64.whl (2.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

q_lang_server-1.0.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

q_lang_server-1.0.1-py3-none-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

q_lang_server-1.0.1-py3-none-macosx_10_12_x86_64.whl (2.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file q_lang_server-1.0.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 00da375f0d91f9591095085a407401787f113c011bfd8a00a5f3731c36984f46
MD5 88d947b983ab3e5237c118c07cab7df1
BLAKE2b-256 3d3e65111590b50b9fdb7babe57e1feede9ceca699d38f13480e6b1b943e732a

See more details on using hashes here.

File details

Details for the file q_lang_server-1.0.1-py3-none-win32.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-win32.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 64012be3d4fabefdc9da91b009257719c2fb4427308c08e8834f904cda7fe254
MD5 00b8891e2f934eabb04ddcb274abe7db
BLAKE2b-256 7d360e4db0c7b9e9fa95661098fbcbba22f6b6c5e9ef196ce8c6b077a2f92e1d

See more details on using hashes here.

File details

Details for the file q_lang_server-1.0.1-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 661635c532162f0d29a228d28ebf00c3e0697d8a141b53bb9f8fa94e155fb0a8
MD5 c4b28a31230b2ce999fb2f329b5b2797
BLAKE2b-256 74dcda7d09403a482a6a3eb184bf4bc96aaf8bfff8ea9b7dcefa055a5c4bc3ce

See more details on using hashes here.

File details

Details for the file q_lang_server-1.0.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf50ad9530999148fadd3b298a3bbcfec9cbd73e6fb9e8ca3dcc039a7d1a5ba3
MD5 a99082560822440770b49a7dece5839d
BLAKE2b-256 02bf6c641318f232f9bf3417c4a2e0b3ab7aaa5743bf7c8fa1760fe75b3478d8

See more details on using hashes here.

File details

Details for the file q_lang_server-1.0.1-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1df3bfa7500840472b9551de1568c7c1806563201122485dd876dcfb92833596
MD5 e10d5518ec2817f6936e09a661eeddcc
BLAKE2b-256 fe2bef7df5c5ec0e6323ad8e2d8d237295fd8d0b9eec6aabd235f10ac87e1401

See more details on using hashes here.

File details

Details for the file q_lang_server-1.0.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: q_lang_server-1.0.1-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","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}

File hashes

Hashes for q_lang_server-1.0.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 202fa21eb9ae11c4ecc5bbf814e30c6083a19d89485537240cf6544ed3044ee1
MD5 2fd8e6edaa5b515a9ae7fe6f5625eebd
BLAKE2b-256 8f93de8c9693ecc7b5ba868db7c3703b3d7c3cbd32cf504b023c5c27babaed8b

See more details on using hashes here.

Supported by

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