{"id":13691303,"url":"https://github.com/jshinonome/vscode-q","last_synced_at":"2025-10-29T09:30:56.039Z","repository":{"id":37613437,"uuid":"268026816","full_name":"jshinonome/vscode-q","owner":"jshinonome","description":"vscode kdb+/q extension","archived":false,"fork":false,"pushed_at":"2024-08-07T13:10:56.000Z","size":19690,"stargazers_count":41,"open_issues_count":2,"forks_count":16,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-12T17:46:31.434Z","etag":null,"topics":["kdb","q","vscode"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jshinonome.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-30T06:59:16.000Z","updated_at":"2024-08-07T13:11:00.000Z","dependencies_parsed_at":"2022-07-12T22:30:33.639Z","dependency_job_id":"9a7391e7-6727-4211-94bb-44896e06435a","html_url":"https://github.com/jshinonome/vscode-q","commit_stats":null,"previous_names":[],"tags_count":106,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshinonome%2Fvscode-q","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshinonome%2Fvscode-q/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshinonome%2Fvscode-q/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jshinonome%2Fvscode-q/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jshinonome","download_url":"https://codeload.github.com/jshinonome/vscode-q/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238798657,"owners_count":19532276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kdb","q","vscode"],"created_at":"2024-08-02T17:00:43.122Z","updated_at":"2025-10-29T09:30:56.032Z","avatar_url":"https://github.com/jshinonome.png","language":"TypeScript","funding_links":[],"categories":["Editor integrations"],"sub_categories":[],"readme":"# vscode-q\n\nThis extension has been placed into **maintenance mode**. No further feature updates or enhancements will be developed. Critical bug fixes may be addressed on a case-by-case basis.\n\nThis extension provides q language support:\n\n- q syntaxes\n- q notebook(\\*.qnb)\n- server list group by tags\n- server explorer\n- query grid powered by [ag-grid-community](https://www.ag-grid.com/) \u0026 [chart.js](https://www.chartjs.org/)\n- query visualization powered by [perspective](https://perspective.finos.org/)\n- language server powered by [tree-sitter](https://tree-sitter.github.io/tree-sitter/)\n  - rename symbol (F2)\n  - go to definition (F12)\n  - go to reference (Shift+F12)\n  - workspace symbol (Ctrl+T)\n  - document highlight\n  - document symbol (Ctrl+Shift+O)\n  - completion\n    - identifiers defined in code\n    - identifiers defined on kdb+ process\n    - column names define on kdb+ process\n  - completion resolve\n  - signature help\n  - semantic highlight\n  - call hierarchy\n\nSee the [change log](https://github.com/jshinonome/vscode-q/blob/master/CHANGELOG.md).\n\n## Configuration\n\n- To configure globally, type \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003e,\u003c/kbd\u003e to open Settings and change the following values.\n- To configure for workspace, type \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e, call `Preferences: Open Workspace Settings` and change the following values.\n\n| configuration                      | type    | default value                    | description                                |\n| ---------------------------------- | ------- | -------------------------------- | ------------------------------------------ |\n| q-server.sourceFiles.globsPattern  | array   | `[\"**/src/**/*.q\"]`              | source folder to be included               |\n| q-server.sourceFiles.ignorePattern | array   | `[\"**/build\",\"**/node_modules\"]` | folder to be excluded                      |\n| q-client.queryMode                 | string  | `Console`                        | query mode, Console, Grid or Visualization |\n| q-client.queryGrid.decimals        | number  | `3`                              | decimals in q grid                         |\n| q-client.term.qBinary              | string  | `q`                              | q executable file or full path             |\n| q-client.term.envPath              | string  | `''`                             | environment file relative or absolute path |\n| q-client.expl.prevQueryLimit       | string  | `5`                              | q explorer preview query limit             |\n| q-client.expl.autoRefresh          | boolean | `false`                          | q explorer auto refresh                    |\n| q-client.expl.excludedNamespaces   | array   | `[\"q\",\"Q\",\"j\",\"o\",\"h\"]`          | namespaced to be excluded from q explorer  |\n| q-client.output.autoClear          | boolean | `false`                          | Auto Clear Output                          |\n| q-client.output.includeQuery       | boolean | `false`                          | Include Query in Output                    |\n| q-client.output.consoleSize        | string  | `'36 180'`                       | Console Size for Output                    |\n\n## q Language Server(local server, no connection to the internet)\n\nThe server will analyze q source files in all 'src' folder. Insert ';' to indicated end of statement if necessary.\n\n## Notebook\n\nFiles with postfix \\*.qnb are using notebook feature. There are 2 output mode for q notebook, switch to following query mode for different output format\n\n- q Console -\u003e notebook console\n- q Grid -\u003e notebook html\n- q Visualization -\u003e notebook html\n\n## Server List\n\nList servers, click to switch server. Generate tree structure from tags.\n\nSpecial tag color:\n\n- green: dev, development\n- blue: uat\n- red: prd, prod.\n\n![server-list](assets/demo/server-list.png)\n\n## Discovery Server\n\nThe url should be a REST API endpoint, which returns a list of `{host:string, port:number, label:string}`. The returned list will be added to Server List, but it won't be saved.\n\n## Server Explorer\n\nList variables defined on the active server.\n\n## Query Mode\n\nType \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e and call `kdb+/q ext: Switch Query Mode` to switch Query Console.\n\n### Query View\n\nThe query view, powered by [perspective](https://perspective.finos.org/), can pivot and virtualize table data. In Query View mode, only table will be showed in a webview, but other result will still be in output. It will limit to 1000 rows when query a table, click the **flame** in **q Ext** panel , or call `kdb+/q ext: Toggle Unlimited Query`, to remove 1000 rows limit. Be noted that, Query View only support millisecond precision. Use **Query Grid**, if you need nanosecond precision.\n\n### Query Grid\n\nThe query grid, powered by [ag-grid-community](https://www.ag-grid.com/) and [chart.js](https://www.chartjs.org/), can filter and sort table data. In Query Grid mode, only table will be showed in a webview, but other result will still be in output. It will limit to 1000 rows when query a table, click the **flame** in **q Ext** panel , or call `kdb+/q ext: Toggle Unlimited Query`, to remove 1000 rows limit.\n\n### Query Console(default)\n\nOutput just like q console to an output channel. The console size is set to the same as q http size. Use `system \"C rows columns\"` to change console size.\n\n### History View\n\nRecord query histories.\n\n## Commands\n\n### Connect q Sever\n\nType \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e and call `kdb+/q ext: Connect to q Server` to connect to a q server.\n\n## Formatter\n\nAppend space to `},],)` by formatting the file. Turn on `Editor: Format On Save` to automatically append space.\n\n## Shortcuts\n\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eq\u003c/kbd\u003e: query current line\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003er\u003c/kbd\u003e: query selection\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003ee\u003c/kbd\u003e: query block\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003eq\u003c/kbd\u003e: send current line to terminal\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003er\u003c/kbd\u003e: send selection to terminal\n- \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ee\u003c/kbd\u003e: send block to terminal\n\nTo change shortcuts\n\n1. type \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e\n2. input \"shortcut\"\n3. open the Keyboard Shortcuts\n4. search for \"kdb+\".\n\n## Version Compatibility\n\nTo use this extension in an earlier version of vscode.\n\n1. git clone this repo\n2. change 'vscode' of 'engine' in the package.json and '@types/vscode' of devDependencies to target version 1.\\*\\*\n\n```\n...\n\t\"engines\": {\n\t\t\"vscode\": \"^1.**.*\"\n\t},\n...\n\t\"devDependencies\": {\n...\n\t\t\"@types/vscode\": \"^1.**.*\",\n...\n\t},\n```\n\n3. run the following commands from this repo folder to get a earlier version compatible package\n\n```\nnpm i\nsudo npm i -g vsce\nvsce package\n```\n\n## Tips\n\n### Enable Auto Scrolling for Output Channel\n\n1. Type \u003ckdb\u003ectrl\u003c/kdb\u003e+\u003ckdb\u003ecomma(,)\u003c/kdb\u003e, open Settings, disable `Output\u003eSmart Scroll`.\n2. Turn on Auto Scrolling by clicking a small locker icon on the right top of output channel.\n\n### Disable Word Wrap in q Console of Output\n\nType \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e, call `Open Setting(Json)`, and add following configuration.\n\n```\n    \"[Log]\": {\n        \"editor.wordWrap\": \"off\"\n    }\n```\n\n### No Color in q Output\n\nThere may be a conflict with other extensions. Disable or uninstall them and try again.\n\n### Enable Highlight for Attention And TODO of comments\n\n![comment-highlight](assets/demo/comment-highlight.png)\n\nType \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e, call `Open Setting(Json)`, and add following configuration.\n\n```\n    \"editor.tokenColorCustomizations\": {\n        \"textMateRules\": [\n            {\n                \"scope\":\"comment.line.attention\",\n                \"settings\": {\n                    \"fontStyle\": \"italic\",\n                    \"foreground\": \"#B71C1C\"\n                }\n            },\n            {\n                \"scope\":\"comment.line.todo\",\n                \"settings\": {\n                    \"fontStyle\": \"italic\",\n                    \"foreground\": \"#2E7D32\"\n                }\n            }\n        ]\n    }\n```\n\n### Special Comment\n\nQuerying comment line `/\u003c=\u003e quant,prod,local-1800` will connect to `quant,prod,local-1800`.\nType \u003ckbd\u003ectrl\u003c/kbd\u003e+\u003ckbd\u003eshift\u003c/kbd\u003e+\u003ckbd\u003ep\u003c/kbd\u003e, call `kdb+/q ext Insert Active Connection Label` to insert active connection label.\n\n### Customized Authentication\n\nrefer to [vscode-q-auth](https://github.com/jshinonome/vscode-q-auth)\n\n## Packages\n\nSpecial thanks to the following packages.\n\n- [node-q](https://github.com/michaelwittig/node-q)\n- [perspective](https://github.com/finos/perspective/)\n- [tree-sitter](https://github.com/tree-sitter/tree-sitter)\n- [ag-grid-community](https://www.ag-grid.com/)\n\n## Reference\n\n- https://github.com/simongarland/vim\n- https://github.com/quintanar401/language-kdb-q\n- https://github.com/tree-sitter/tree-sitter-javascript\n- https://github.com/bash-lsp/bash-language-server\n- https://github.com/RandomFractals/vscode-data-preview\n\n## Recommended Packages\n\n- [Theme: Dracula](https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula)\n- [Font : Fira Code](https://github.com/tonsky/FiraCode)\n\n## Contributing\n\nIf you'd like to contribute to this extension, please read the [contributing guidelines](https://github.com/jshinonome/vscode-q/blob/master/CONTRIBUTING.md).\n\n## License\n\n[GPL-3.0 license](https://github.com/jshinonome/vscode-q/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjshinonome%2Fvscode-q","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjshinonome%2Fvscode-q","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjshinonome%2Fvscode-q/lists"}