Skip to content

Commit 5cefed3

Browse files
Merge pull request #670 from KxSystems/v1.14.0-dev-to-main
V1.14.0 dev to main
2 parents b98bf57 + 7d74a4b commit 5cefed3

File tree

107 files changed

+17502
-14032
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+17502
-14032
lines changed

.vscode/launch.json

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,16 @@
99
"name": "Run Extension",
1010
"type": "extensionHost",
1111
"request": "launch",
12+
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
13+
"outFiles": ["${workspaceFolder}/out/extension.js*"],
14+
"preLaunchTask": "npm: watch"
15+
},
16+
{
17+
"name": "Run Extension Plain",
18+
"type": "extensionHost",
19+
"request": "launch",
1220
"args": [
13-
"--disable-extensions",
21+
"--profile-temp",
1422
"--extensionDevelopmentPath=${workspaceFolder}"
1523
],
1624
"outFiles": ["${workspaceFolder}/out/extension.js*"],
@@ -29,11 +37,24 @@
2937
"type": "extensionHost",
3038
"request": "launch",
3139
"args": [
32-
"--profile=Extension Tests",
40+
"--profile-temp",
41+
"--extensionDevelopmentPath=${workspaceFolder}",
42+
"--extensionTestsPath=${workspaceFolder}/out-test/test/suite/index"
43+
],
44+
"outFiles": ["${workspaceFolder}/out-test/**/*.js"],
45+
"preLaunchTask": "npm: pretest"
46+
},
47+
{
48+
"name": "Test Selected File",
49+
"type": "extensionHost",
50+
"request": "launch",
51+
"args": [
52+
"--profile-temp",
3353
"--extensionDevelopmentPath=${workspaceFolder}",
34-
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
54+
"--extensionTestsPath=${workspaceFolder}/out-test/test/suite/index"
3555
],
36-
"outFiles": ["${workspaceFolder}/out/**/*.js"],
56+
"env": { "TEST_FILE": "${fileBasenameNoExtension}" },
57+
"outFiles": ["${workspaceFolder}/out-test/**/*.js"],
3758
"preLaunchTask": "npm: pretest"
3859
},
3960
{
@@ -54,8 +75,7 @@
5475
],
5576
"runtimeExecutable": "npm",
5677
"skipFiles": ["<node_internals>/**"],
57-
"type": "node",
58-
"presentation": { "hidden": true }
78+
"type": "node"
5979
}
6080
],
6181
"compounds": [

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
},
88
"[xml]": {
99
"editor.defaultFormatter": "redhat.vscode-xml"
10-
}
10+
},
11+
"terminal.integrated.scrollback": 4000
1112
}

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,37 @@
22

33
All notable changes to the **kdb VS Code extension** are documented in this file.
44

5+
# v1.14.0
6+
7+
### Enhancements
8+
9+
- Added a new setting to hide detailed console query output that, when disabled, shows the query that generated the output, the connection the query was run on, and the time when it was run
10+
- The `QHOME` environment variable and the `kdb.qHomeDirectory` setting are now treated as identical when locating the q executable for REPL and bundled q connections.
11+
- Added REPL execution support for Python files
12+
- Added REPL execution support in KX Notebooks
13+
- Added `.venv` support to REPL
14+
- Added `.env` support to REPL
15+
- Added workspace picker for REPL for multi-root workspaces
16+
- Implemented stop execution support on Windows
17+
- Enhanced the language server with:
18+
- Pattern matching syntax support
19+
- Filter function support
20+
- Folding comments
21+
- Support for language server features on notebook q code cells
22+
23+
### Fixes
24+
25+
- Fixed issues with bundled q connections failing on remote setups
26+
- Fixed error messages during clean install
27+
- Support editing connections without the need to re-enter authentication details when just changing port and host
28+
- QSQL endpoint queries now preserve new lines
29+
- Fixed issues where adding BundledQ or MyQ connections did not update connection list
30+
31+
### Internal Improvements
32+
33+
- Split large test files into smaller, category-specific files for better readability and maintainability
34+
- Test files can now be run one by one instead of all at once
35+
536
# v1.13.1
637

738
### Fixes

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ If you want to use q outside of VS Code, set a [`QHOME` environment variable](ht
9696

9797
If q is installed at `C:\q`, then `QHOME` is `C:\q`.
9898

99+
**Note!** The kdb VS Code Extension treats the `QHOME` environment variable and the `kdb.qHomeDirectory` setting as identical when locating the q executable for REPL and bundled q connections. For more details, refer to the [QHomeDirectory](https://github.com/KxSystems/kx-vscode/wiki/qHomeDirectory) wiki page.
100+
99101
### Versions available
100102

101103
There are commercial and non-commercial editions available. We recommend you start with the kdb+ Personal Edition or kdb Insights Personal Edition. The following table lists the editions with links to downloads and the functionality they support.
@@ -863,6 +865,26 @@ The results are shown in the terminal and you can continue to work either in you
863865

864866
Refer to the [REPL shortcuts table](https://github.com/KxSystems/kx-vscode/wiki/REPL) for information on the keyboard shortcuts you can use.
865867

868+
### Benefits of using REPL
869+
870+
A REPL gives you a tight feedback loop, stateful context, and guardrails. You learn faster, debug quicker, and ship with fewer mistakes.
871+
872+
Key benefits include:
873+
874+
- **Rapid iteration with stateful sessions**. Execute commands and receive immediate feedback while maintaining session state across operations. This enables faster development cycles with reduced boilerplate.
875+
876+
- **Safe and efficient troubleshooting**. Experiment within transactions and roll back changes as needed. Quickly isolate and resolve issues by modifying and re-running queries in real time.
877+
878+
- **In-context exploration and optimization**. Access schema details, autocomplete, and performance insights directly within the REPL, supporting informed tuning and discovery.
879+
880+
- **Streamlined workflow and reusability**. Minimize context switching by staying within a single interface. Use command history as a living notebook to document, replay, or convert workflows into scripts.
881+
882+
- **Smooth transition to production and built-in safeguards**. Validate logic in the REPL before promoting queries to production. Features like autocommit off, role switching, and environment prompts help prevent unintended changes.
883+
884+
### Use PyKX within REPL
885+
886+
Refer to the [PyKX within REPL](https://github.com/KxSystems/kx-vscode/wiki/Use-PyKX-Within-REPL) instructions for details on how to get started and use PyKX within REPL.
887+
866888
## Logs
867889

868890
Any error or info is posted at **OUTPUT** in **kdb** tab

package-lock.json

Lines changed: 28 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "kdb",
44
"description": "IDE support for kdb product suite including the q programming language",
55
"publisher": "KX",
6-
"version": "1.13.1",
6+
"version": "1.14.0",
77
"engines": {
88
"vscode": "^1.96.0"
99
},
@@ -143,51 +143,54 @@
143143
"kdb.servers": {
144144
"type": "object",
145145
"description": "kdb servers for explorer",
146-
"scope": "application"
146+
"scope": "machine"
147147
},
148148
"kdb.insights": {
149149
"deprecationMessage": "This setting is deprecated, use kdb.insightsEnterpriseConnections instead",
150150
"type": "object",
151151
"description": "kdb insights for explorer",
152-
"scope": "application"
152+
"scope": "machine"
153153
},
154154
"kdb.insightsEnterpriseConnections": {
155155
"type": "object",
156156
"description": "kdb insights enterprise connections for explorer",
157-
"scope": "application"
157+
"scope": "machine"
158158
},
159159
"kdb.hideInstallationNotification": {
160160
"type": "boolean",
161161
"description": "Hide notification for installation path, after first install",
162-
"scope": "application"
162+
"scope": "machine",
163+
"deprecationMessage": "This setting is deprecated, use kdb.neverShowQInstallAgain instead"
163164
},
164165
"kdb.hideDetailedConsoleQueryOutput": {
165166
"type": "boolean",
166167
"description": "Hide detailed console query output",
167168
"default": true,
168-
"scope": "application"
169+
"scope": "machine"
169170
},
170171
"kdb.autoFocusOutputOnEntry": {
171172
"type": "boolean",
172173
"description": "Automatically focus the output console when running a query without an active results tab or receive log entry",
173174
"default": true,
174-
"scope": "application"
175+
"scope": "machine"
175176
},
176177
"kdb.qHomeDirectory": {
177178
"type": "string",
178179
"description": "QHOME directory for q runtime",
179-
"scope": "application"
180+
"default": "",
181+
"scope": "machine-overridable"
180182
},
181183
"kdb.neverShowQInstallAgain": {
182184
"type": "boolean",
183185
"description": "Never show q install walkthrough again",
184-
"scope": "application"
186+
"default": false,
187+
"scope": "machine"
185188
},
186189
"kdb.hideSubscribeRegistrationNotification": {
187190
"type": "boolean",
188191
"description": "Hide subscribe for registration notification",
189192
"default": false,
190-
"scope": "application"
193+
"scope": "machine"
191194
},
192195
"kdb.linting": {
193196
"type": "boolean",
@@ -221,19 +224,19 @@
221224
"type": "array",
222225
"description": "List of label names and colorset",
223226
"default": [],
224-
"scope": "application"
227+
"scope": "machine"
225228
},
226229
"kdb.labelsConnectionMap": {
227230
"type": "array",
228231
"description": "Labels connection map",
229232
"default": [],
230-
"scope": "application"
233+
"scope": "machine"
231234
},
232235
"kdb.hideSurvey": {
233236
"type": "boolean",
234237
"default": false,
235238
"description": "Hide the extension survey dialog box",
236-
"scope": "application"
239+
"scope": "machine"
237240
}
238241
}
239242
},
@@ -462,7 +465,7 @@
462465
},
463466
{
464467
"category": "KX",
465-
"command": "kdb.start.repl",
468+
"command": "kdb.repl.start",
466469
"title": "Start REPL"
467470
},
468471
{
@@ -513,7 +516,7 @@
513516
{
514517
"category": "KX",
515518
"command": "kdb.toggleParameterCache",
516-
"title": "KX: Toggle parameter cache"
519+
"title": "Toggle Parameter Cache"
517520
},
518521
{
519522
"category": "KX",
@@ -1137,8 +1140,10 @@
11371140
"preui-test": "rimraf out-test .test-extensions",
11381141
"preui-test-cmd": "tsc --outdir out-test -p ./test",
11391142
"publish": "npx vsce publish",
1140-
"pretest": "rimraf out-test && tsc --outdir out-test -p ./test",
1143+
"pretest": "rimraf out out-test && tsc --outdir out-test -p ./test",
11411144
"test": "node ./out-test/test/runTest.js",
1145+
"test:file": "cross-env TEST_FILE=$1 npm run test",
1146+
"test:folder": "cross-env TEST_FOLDER=$1 npm run test",
11421147
"ui-test": "npm run ui-test-cmd -- ./out-test/test/ui/**/*.test.js",
11431148
"ui-test-cmd": "extest setup-and-run --code_version $npm_package_config_ui_test_vscode_version --code_settings ./test/ui/fixtures/settings.json --extensions_dir ./.test-extensions --storage ./.test-folder -m ./test/ui/fixtures/mocha.json",
11441149
"vscode:prepublish": "npm run -S esbuild-base -- --minify --keep-names",
@@ -1169,6 +1174,7 @@
11691174
"@types/vscode-webview": "^1.57.5",
11701175
"@typescript-eslint/eslint-plugin": "^8.34.1",
11711176
"@typescript-eslint/parser": "^8.34.1",
1177+
"@vscode/python-extension": "^1.0.5",
11721178
"@vscode/test-electron": "^2.5.2",
11731179
"c8": "^10.1.3",
11741180
"esbuild": "^0.25.5",
@@ -1192,6 +1198,7 @@
11921198
"prettier": "^3.6.0",
11931199
"rimraf": "^6.0.1",
11941200
"sinon": "^21.0.0",
1201+
"tree-kill": "^1.2.2",
11951202
"typescript": "^5.8.3",
11961203
"typescript-eslint": "^8.34.1",
11971204
"vscode-extension-tester": "^8.16.2",

resources/teste.q

Lines changed: 0 additions & 3 deletions
This file was deleted.

server/src/linter/checks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
* specific language governing permissions and limitations under the License.
1212
*/
1313

14+
import { DateTimeLiteral } from "../parser";
1415
import {
15-
DateTimeLiteral,
1616
SyntaxError,
1717
Token,
1818
amended,
@@ -23,7 +23,7 @@ import {
2323
inParam,
2424
ordered,
2525
qualified,
26-
} from "../parser";
26+
} from "../parser/utils";
2727

2828
export function deprecatedDatetime(tokens: Token[]): Token[] {
2929
return tokens.filter((token) => token.tokenType === DateTimeLiteral);

server/src/linter/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
* specific language governing permissions and limitations under the License.
1212
*/
1313

14-
import { Token } from "../parser";
1514
import { Rules } from "./rules";
15+
import { Token } from "../parser/utils";
1616

1717
const enabled = [
1818
"DEPRECATED_DATETIME",

0 commit comments

Comments
 (0)