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.
- Install
qls(see above) and ensure it is on your$PATH. - 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
- chili-neovim — Neovim plugin for kdb+/q
- vscode-q — VS Code / Cursor extension that embeds this language server
- Changelog
License
Copyright 2026 Jo Shinonome. All rights reserved. See LICENSE.txt.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
00da375f0d91f9591095085a407401787f113c011bfd8a00a5f3731c36984f46
|
|
| MD5 |
88d947b983ab3e5237c118c07cab7df1
|
|
| BLAKE2b-256 |
3d3e65111590b50b9fdb7babe57e1feede9ceca699d38f13480e6b1b943e732a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64012be3d4fabefdc9da91b009257719c2fb4427308c08e8834f904cda7fe254
|
|
| MD5 |
00b8891e2f934eabb04ddcb274abe7db
|
|
| BLAKE2b-256 |
7d360e4db0c7b9e9fa95661098fbcbba22f6b6c5e9ef196ce8c6b077a2f92e1d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
661635c532162f0d29a228d28ebf00c3e0697d8a141b53bb9f8fa94e155fb0a8
|
|
| MD5 |
c4b28a31230b2ce999fb2f329b5b2797
|
|
| BLAKE2b-256 |
74dcda7d09403a482a6a3eb184bf4bc96aaf8bfff8ea9b7dcefa055a5c4bc3ce
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf50ad9530999148fadd3b298a3bbcfec9cbd73e6fb9e8ca3dcc039a7d1a5ba3
|
|
| MD5 |
a99082560822440770b49a7dece5839d
|
|
| BLAKE2b-256 |
02bf6c641318f232f9bf3417c4a2e0b3ab7aaa5743bf7c8fa1760fe75b3478d8
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1df3bfa7500840472b9551de1568c7c1806563201122485dd876dcfb92833596
|
|
| MD5 |
e10d5518ec2817f6936e09a661eeddcc
|
|
| BLAKE2b-256 |
fe2bef7df5c5ec0e6323ad8e2d8d237295fd8d0b9eec6aabd235f10ac87e1401
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
202fa21eb9ae11c4ecc5bbf814e30c6083a19d89485537240cf6544ed3044ee1
|
|
| MD5 |
2fd8e6edaa5b515a9ae7fe6f5625eebd
|
|
| BLAKE2b-256 |
8f93de8c9693ecc7b5ba868db7c3703b3d7c3cbd32cf504b023c5c27babaed8b
|