diff --git a/README.md b/README.md index 1a4ae3e..15ffdc5 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ 安装[vsix](./vscode/)扩展 ```bash -code --install-extension tsl-devkit-1.0.0.vsix # 具体版本号以vsix文件为准 +code --install-extension tsl-tools-1.0.0.vsix # 具体版本号以vsix文件为准 ``` ### 安装方式二 @@ -33,7 +33,7 @@ npm install npx vsce package # 安装 -code --install-extension tsl-devkit-1.0.0.vsix # 具体版本号以vsix文件为准 +code --install-extension tsl-tools-1.0.0.vsix # 具体版本号以vsix文件为准 ``` ## Vim @@ -53,8 +53,8 @@ autocmd BufNewFile,BufRead *.ts[lf] setf tsl "languageserver": { "tsl-server": { "command": "tsl-server", + "args": ["--log=trace", "--log=stderr"], "filetypes": ["tsl", "tsf"] } } ``` - diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md index 2d29a69..1e5ff35 100644 --- a/vscode/CHANGELOG.md +++ b/vscode/CHANGELOG.md @@ -1,6 +1,14 @@ # Change Log -Notable changes to the `TSL` extension will be documented in this file. +Notable changes to the `TSL` extension will be documented in thio file. + +## [2.3.0]: 2025-07-03 + +- 修改插件名为`tsl-tools` +- 支持设置参数 + - `tsl.server.executable`: `tsl-server`的执行路径 + - `tsl.server.arguments`: `tsl-server`的启动参数 + - `tsl.interpreter.executable`: `tsl`解释器的路径 ## [2.2.0]: 2025-07-02 diff --git a/vscode/bin/tsl-server b/vscode/bin/tsl-server index d57fbd6..f1854af 100644 Binary files a/vscode/bin/tsl-server and b/vscode/bin/tsl-server differ diff --git a/vscode/bin/tsl-server.exe b/vscode/bin/tsl-server.exe index 780ad5a..3efbcac 100644 Binary files a/vscode/bin/tsl-server.exe and b/vscode/bin/tsl-server.exe differ diff --git a/vscode/package-lock.json b/vscode/package-lock.json index 3052b59..e9a957c 100644 --- a/vscode/package-lock.json +++ b/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "tsl-devkit", - "version": "2.1.0", + "version": "2.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tsl-devkit", - "version": "2.1.0", + "version": "2.2.0", "license": "AGPL-3.0-or-later", "dependencies": { "vscode-languageclient": "^9.0.1" @@ -14,7 +14,7 @@ "devDependencies": { "@types/node": "^24.0.3", "@types/vscode": "^1.101.0", - "@vscode/vsce": "^3.5.0", + "@vscode/vsce": "^3.6.0", "prettier": "^3.5.3", "typescript": "^5.8.3" }, @@ -367,64 +367,64 @@ } }, "node_modules/@secretlint/config-creator": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-9.3.4.tgz", - "integrity": "sha512-GRMYfHJ+rewwB26CC3USVObqSQ/mDLXzXcUMJw/wJisPr3HDZmdsYlcsNnaAcGN+EZmvqSDkgSibQm1hyZpzbg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.1.1.tgz", + "integrity": "sha512-TJ42CHZqqnEe9ORvIXVVMqdu3KAtyZRxLspjFexo6XgrwJ6CoFHQYzIihilqRjo2sJh9HMrpnYSj/5hopofGrA==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^9.3.4" + "@secretlint/types": "^10.1.1" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/config-loader": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-9.3.4.tgz", - "integrity": "sha512-sy+yWDWh4cbAbpQYLiO39DjwNGEK1EUhTqNamLLBo163BdJP10FIWhqpe8mtGQBSBXRtxr8Hg/gc3Xe4meIoww==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.1.1.tgz", + "integrity": "sha512-jBClVFmS6Yu/zI5ejBCRF5a5ASYsE4gOjogjB+WsaHbQHtGvnyY7I26Qtdg4ihCc/VPKYQg0LdM75pLTXzwsjg==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/profiler": "^9.3.4", - "@secretlint/resolver": "^9.3.4", - "@secretlint/types": "^9.3.4", + "@secretlint/profiler": "^10.1.1", + "@secretlint/resolver": "^10.1.1", + "@secretlint/types": "^10.1.1", "ajv": "^8.17.1", "debug": "^4.4.1", "rc-config-loader": "^4.1.3" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/core": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-9.3.4.tgz", - "integrity": "sha512-ErIVHI6CJd191qdNKuMkH3bZQo9mWJsrSg++bQx64o0WFuG5nPvkYrDK0p/lebf+iQuOnzvl5HrZU6GU9a6o+Q==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.1.1.tgz", + "integrity": "sha512-COLCxSoH/iVQdLeaZPVtBj0UWKOagO09SqYkCQgfFfZ+soGxKVK405dL317r4PnH9Pm8/s8xQC6OSY5rWTRObQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/profiler": "^9.3.4", - "@secretlint/types": "^9.3.4", + "@secretlint/profiler": "^10.1.1", + "@secretlint/types": "^10.1.1", "debug": "^4.4.1", "structured-source": "^4.0.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/formatter": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-9.3.4.tgz", - "integrity": "sha512-ARpoBOKz6WP3ocLITCFkR1/Lj636ugpBknylhlpc45r5aLdvmyvWAJqodlw5zmUCfgD6JXeAMf3Hi60aAiuqWQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.1.1.tgz", + "integrity": "sha512-Gpd8gTPN121SJ0h/9e6nWlZU7PitfhXUiEzW7Kyswg6kNGs+bSqmgTgWFtbo1VQ4ygJYiveWPNT05RCImBexJw==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/resolver": "^9.3.4", - "@secretlint/types": "^9.3.4", - "@textlint/linter-formatter": "^14.7.2", - "@textlint/module-interop": "^14.7.2", - "@textlint/types": "^14.7.2", + "@secretlint/resolver": "^10.1.1", + "@secretlint/types": "^10.1.1", + "@textlint/linter-formatter": "^14.8.4", + "@textlint/module-interop": "^14.8.4", + "@textlint/types": "^14.8.4", "chalk": "^4.1.2", "debug": "^4.4.1", "pluralize": "^8.0.0", @@ -433,47 +433,47 @@ "terminal-link": "^2.1.1" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/node": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-9.3.4.tgz", - "integrity": "sha512-S0u8i+CnPmyAKtuccgot9L5cmw6DqJc0F+b3hhVIALd8kkeLt3RIXOOej15tU7N0V1ISph90Gz92V72ovsprgQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.1.1.tgz", + "integrity": "sha512-AhN+IGqljVObm8a+B33b23FY79wihu5E61Nd3oYSoZV7SxUvMjpafqhLfpt4frNSY7Ghf/pirWu7JY7GMujFrA==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/config-loader": "^9.3.4", - "@secretlint/core": "^9.3.4", - "@secretlint/formatter": "^9.3.4", - "@secretlint/profiler": "^9.3.4", - "@secretlint/source-creator": "^9.3.4", - "@secretlint/types": "^9.3.4", + "@secretlint/config-loader": "^10.1.1", + "@secretlint/core": "^10.1.1", + "@secretlint/formatter": "^10.1.1", + "@secretlint/profiler": "^10.1.1", + "@secretlint/source-creator": "^10.1.1", + "@secretlint/types": "^10.1.1", "debug": "^4.4.1", - "p-map": "^4.0.0" + "p-map": "^7.0.3" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/profiler": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-9.3.4.tgz", - "integrity": "sha512-99WmaHd4dClNIm5BFsG++E6frNIZ3qVwg6s804Ql/M19pDmtZOoVCl4/UuzWpwNniBqLIgn9rHQZ/iGlIW3wyw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.1.1.tgz", + "integrity": "sha512-kReI+Wr7IQz0LbVwYByzlnPbx4BEF2oEWJBc4Oa45g24alCjHu+jD9h9mzkTJqYUgMnVYD3o7HfzeqxFrV+9XA==", "dev": true, "license": "MIT" }, "node_modules/@secretlint/resolver": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-9.3.4.tgz", - "integrity": "sha512-L1lIrcjzqcspPzZttmOvMmOFDpJTYFyRBONg94TZBWrpv4x0w5G2SYR+K7EE1SbYQAiPxw1amoXT1YRP8cZF2A==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.1.1.tgz", + "integrity": "sha512-GdQzxnBtdBRjBULvZ8ERkaRqDp0njVwXrzBCav1pb0XshVk76C1cjeDqtTqM4RJ1Awo/g5U5MIWYztYv67v5Gg==", "dev": true, "license": "MIT" }, "node_modules/@secretlint/secretlint-formatter-sarif": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-9.3.4.tgz", - "integrity": "sha512-IpAl5gzKwpTRqoivKOTJB89l6b7uvBwjSNKzJb3oIGD9Jg3vXcQunSntvLv5XGynYtdi1NhANfEpbhavlmMSyA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.1.1.tgz", + "integrity": "sha512-Dyq8nzy6domjSlZKX1E5PEzuWxeTqjQJWrlXBmVmOjwLBLfRZDlm5Vq+AduBmEk03KEIKIZi4cZQwsniuRPO9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -481,50 +481,50 @@ } }, "node_modules/@secretlint/secretlint-rule-no-dotenv": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-9.3.4.tgz", - "integrity": "sha512-lMSVwTrJiZ/zL9VIzpT7tMcb0ClI6u4cyJo2YKGSbuJErJG1zB4gQKtjIwCSt7px5JF6U+aFtpb9M8+s40WWCQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.1.1.tgz", + "integrity": "sha512-a3/sOUUtEHuw1HCadtxUjViNeomiiohfJj+rwtHxJkCq4pjITS3HSYhQBXnNvkctQNljKIzFm7JUA/4QJ6I4sQ==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^9.3.4" + "@secretlint/types": "^10.1.1" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/secretlint-rule-preset-recommend": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-9.3.4.tgz", - "integrity": "sha512-RvzrLNN2A0B2bYQgRSRjh2dkdaIDuhXjj4SO5bElK1iBtJNiD6VBTxSSY1P3hXYaBeva7MEF+q1PZ3cCL8XYOA==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.1.1.tgz", + "integrity": "sha512-+GeISCXVgpnoeRZE4ZPsuO97+fm6z8Ge23LNq6LvR9ZJAq018maXVftkJhHj4hnvYB5URUAEerBBkPGNk5/Ong==", "dev": true, "license": "MIT", "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/source-creator": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-9.3.4.tgz", - "integrity": "sha512-I9ZA1gm9HJNaAhZiQdInY9VM04VTAGDV4bappVbEJzMUDnK/LTbYqfQ88RPqgCGCqa6ee8c0/j5Bn7ypweouIw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.1.1.tgz", + "integrity": "sha512-IWjvHcE0bhC/x88a9M9jbZlFRZGUEbBzujxrs2KzI5IQ2BXTBRBRhRSjE/BEpWqDHILB22c3mfam8X+UjukphA==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/types": "^9.3.4", + "@secretlint/types": "^10.1.1", "istextorbinary": "^9.5.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@secretlint/types": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-9.3.4.tgz", - "integrity": "sha512-z9rdKHNeL4xa48+367RQJVw1d7/Js9HIQ+gTs/angzteM9osfgs59ad3iwVRhCGYbeUoUUDe2yxJG2ylYLaH3Q==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.1.1.tgz", + "integrity": "sha512-/JGAvVkurVHkargk3AC7UxRy+Ymc+52AVBO/fZA5pShuLW2dX4O/rKc4n8cyhQiOb/3ym5ACSlLQuQ8apPfxrQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/@sindresorhus/merge-streams": { @@ -541,24 +541,24 @@ } }, "node_modules/@textlint/ast-node-types": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.8.1.tgz", - "integrity": "sha512-fW5Tx5F3ZmTZeKNins9uRhoDCVLHcuUijGNQRfCmJX8R6MjL0yBFt3hHlrvXDpZg5t2PELCvBA25id83LhNMSg==", + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.8.4.tgz", + "integrity": "sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==", "dev": true, "license": "MIT" }, "node_modules/@textlint/linter-formatter": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.8.1.tgz", - "integrity": "sha512-guraonRgEZJ9MnysT+pCvXFDaT5VeHwAHZAsr7uDRSviqEldmG2oqtXf4lxaQ1Qo4SL16bzSEr6F7+j5k8QONQ==", + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.8.4.tgz", + "integrity": "sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==", "dev": true, "license": "MIT", "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "^14.8.1", - "@textlint/resolver": "^14.8.1", - "@textlint/types": "^14.8.1", + "@textlint/module-interop": "14.8.4", + "@textlint/resolver": "14.8.4", + "@textlint/types": "14.8.4", "chalk": "^4.1.2", "debug": "^4.4.1", "js-yaml": "^3.14.1", @@ -578,27 +578,27 @@ "license": "MIT" }, "node_modules/@textlint/module-interop": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.8.1.tgz", - "integrity": "sha512-Lt3Qjb81e09nPElcJM6rOml5uPyZLKHScAoI9LlpcVca5oS2ZjnPr6M92tKxf/kfkqL4lDkg0LY61W1r5MI7Zg==", + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.8.4.tgz", + "integrity": "sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==", "dev": true, "license": "MIT" }, "node_modules/@textlint/resolver": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.8.1.tgz", - "integrity": "sha512-aAOKXQJhVnq8LXBibEpo0dgEr8ImCw4waj3kAeC+Nj+a9nQkOitg4Veul/IO6he7mNxvYRgqWWoMaN9JRqp34w==", + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.8.4.tgz", + "integrity": "sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==", "dev": true, "license": "MIT" }, "node_modules/@textlint/types": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.8.1.tgz", - "integrity": "sha512-8ncGYcEoKLE3JP2s9+2IlxMbMLWpNmvptOZmF3qI188vW3g/a00r3hBRNMcKxJg3phYDtgLOyXdv44/jwJxsLw==", + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.8.4.tgz", + "integrity": "sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "^14.8.1" + "@textlint/ast-node-types": "14.8.4" } }, "node_modules/@types/node": { @@ -648,17 +648,17 @@ } }, "node_modules/@vscode/vsce": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.5.0.tgz", - "integrity": "sha512-2Eb6fBh8OzNhWqviCjeUPA1MW+d2GCb1QlVxrpOR8lrLHGk8x7HD4LbfELnZPyOz2X33Myz9FE9t4LwYbmeMRg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.6.0.tgz", + "integrity": "sha512-u2ZoMfymRNJb14aHNawnXJtXHLXDVKc1oKZaH4VELKT/9iWKRVgtQOdwxCgtwSxJoqYvuK4hGlBWQJ05wxADhg==", "dev": true, "license": "MIT", "dependencies": { "@azure/identity": "^4.1.0", - "@secretlint/node": "^9.3.4", - "@secretlint/secretlint-formatter-sarif": "^9.3.4", - "@secretlint/secretlint-rule-no-dotenv": "^9.3.4", - "@secretlint/secretlint-rule-preset-recommend": "^9.3.4", + "@secretlint/node": "^10.1.1", + "@secretlint/secretlint-formatter-sarif": "^10.1.1", + "@secretlint/secretlint-rule-no-dotenv": "^10.1.1", + "@secretlint/secretlint-rule-preset-recommend": "^10.1.1", "@vscode/vsce-sign": "^2.0.0", "azure-devops-node-api": "^12.5.0", "chalk": "^4.1.2", @@ -675,7 +675,7 @@ "minimatch": "^3.0.3", "parse-semver": "^1.1.1", "read": "^1.0.7", - "secretlint": "^9.3.4", + "secretlint": "^10.1.1", "semver": "^7.5.2", "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", @@ -849,20 +849,6 @@ "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -1227,16 +1213,6 @@ "license": "ISC", "optional": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/cockatiel": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", @@ -2141,16 +2117,6 @@ "node": ">= 4" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2853,16 +2819,13 @@ } }, "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3363,16 +3326,16 @@ "license": "ISC" }, "node_modules/secretlint": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-9.3.4.tgz", - "integrity": "sha512-iNOzgMX/+W1SQNW/TW6eikGChyaPiazr2AEXjzjpoB0R6QJEulvlwhn0KLT1/xjPfdYrk3yiXZM40csUqET8uQ==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.1.1.tgz", + "integrity": "sha512-q50i+I9w6HH8P6o34LVq6M3hm5GZn2Eq5lYGHkEByOAbVqBHn8gsMGgyxjP1xSrSv1QjDtjxs/zKPm6JtkNzGw==", "dev": true, "license": "MIT", "dependencies": { - "@secretlint/config-creator": "^9.3.4", - "@secretlint/formatter": "^9.3.4", - "@secretlint/node": "^9.3.4", - "@secretlint/profiler": "^9.3.4", + "@secretlint/config-creator": "^10.1.1", + "@secretlint/formatter": "^10.1.1", + "@secretlint/node": "^10.1.1", + "@secretlint/profiler": "^10.1.1", "debug": "^4.4.1", "globby": "^14.1.0", "read-pkg": "^8.1.0" @@ -3381,7 +3344,7 @@ "secretlint": "bin/secretlint.js" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=20.0.0" } }, "node_modules/semver": { diff --git a/vscode/package.json b/vscode/package.json index 14bceed..3ce1f91 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -1,8 +1,8 @@ { - "name": "tsl-devkit", + "name": "tsl-tools", "displayName": "TSL", - "version": "2.2.0", - "description": "TSL syntax highlighter support for VSCode.", + "version": "2.3.0", + "description": "VSCode extension for TSL, with syntax highlighting, code completion, and formatting", "publisher": "csh", "homepage": "https://git.mytsl.cn/csh/tsl-devkit", "author": { @@ -46,6 +46,33 @@ "path": "./syntaxes/tsl.tmLanguage.json" } ], + "configuration": { + "type": "object", + "title": "TSL", + "properties": { + "tsl.server.executable": { + "type": "string", + "default": "", + "description": "Path to tsl-server executable (leave empty for auto-detection)" + }, + "tsl.server.arguments": { + "type": "array", + "default": [ + "--log=info", + "--log-stderr" + ], + "description": "Arguments for TSL server", + "items": { + "type": "string" + } + }, + "tsl.interpreter.executable": { + "type": "string", + "default": "", + "description": "Path to TSL interpreter executable (leave empty for auto-detection)" + } + } + }, "commands": [ { "command": "extension.start", @@ -59,11 +86,11 @@ "watch": "tsc -watch -p ." }, "devDependencies": { - "@vscode/vsce": "^3.5.0", - "typescript": "^5.8.3", "@types/node": "^24.0.3", "@types/vscode": "^1.101.0", - "prettier": "^3.5.3" + "@vscode/vsce": "^3.6.0", + "prettier": "^3.5.3", + "typescript": "^5.8.3" }, "engines": { "vscode": "^1.101.0" diff --git a/vscode/src/extension.ts b/vscode/src/extension.ts index e5ebbf9..0ed8fd8 100644 --- a/vscode/src/extension.ts +++ b/vscode/src/extension.ts @@ -20,45 +20,53 @@ function findSystemTslServer(): string | null { } export function activate(context: vscode.ExtensionContext) { - const bundledPath = context.asAbsolutePath( - path.join('bin', process.platform === 'win32' ? 'tsl-server.exe' : 'tsl-server') - ) + // server配置项 + const config = vscode.workspace.getConfiguration('tsl') + const customExecutable = config.get('server.executable', '') + const serverArguments = config.get('server.arguments') - // 查找路径优先级:插件目录 -> 系统 PATH let serverExe: string | null = null - if (fs.existsSync(bundledPath)) { - serverExe = bundledPath + + if (customExecutable) { + serverExe = customExecutable } else { - serverExe = findSystemTslServer() + const bundledPath = context.asAbsolutePath( + path.join('bin', process.platform === 'win32' ? 'tsl-server.exe' : 'tsl-server') + ) + // 查找路径优先级:插件目录 -> 系统 PATH + if (fs.existsSync(bundledPath)) { + serverExe = bundledPath + } else { + serverExe = findSystemTslServer() + } } if (!serverExe) { vscode.window.showErrorMessage( "Cannot find tsl-server. Please install it globally or include it in your extension's server directory." ) - return - } - - const serverOptions: ServerOptions = { - run: {command: serverExe, transport: TransportKind.stdio, args: ['--log=trace', '--log-stderr']}, - debug: {command: serverExe, transport: TransportKind.stdio} - } - - const clientOptions: LanguageClientOptions = { - documentSelector: [{scheme: 'file', language: 'tsl'}], - synchronize: { - fileEvents: vscode.workspace.createFileSystemWatcher('**/*.tsl') + } else { + const serverOptions: ServerOptions = { + run: {command: serverExe, transport: TransportKind.stdio, args: serverArguments}, + debug: {command: serverExe, transport: TransportKind.stdio, args: serverArguments} } + + const clientOptions: LanguageClientOptions = { + documentSelector: [{scheme: 'file', language: 'tsl'}], + synchronize: { + fileEvents: vscode.workspace.createFileSystemWatcher('**/*.tsl') + } + } + + client = new LanguageClient( + 'tslLanguageServer', // 客户端唯一ID + 'TSL Language Server', // 用户可见名称 + serverOptions, + clientOptions + ) + + client.start() } - - client = new LanguageClient( - 'tslLanguageServer', // 客户端唯一ID - 'TSL Language Server', // 用户可见名称 - serverOptions, - clientOptions - ) - - client.start() } export function deactivate(): Thenable | undefined { diff --git a/vscode/tsl-devkit-2.2.0.vsix b/vscode/tsl-devkit-2.2.0.vsix deleted file mode 100644 index c5c9322..0000000 Binary files a/vscode/tsl-devkit-2.2.0.vsix and /dev/null differ diff --git a/vscode/tsl-tools-2.3.0.vsix b/vscode/tsl-tools-2.3.0.vsix new file mode 100644 index 0000000..34d024d Binary files /dev/null and b/vscode/tsl-tools-2.3.0.vsix differ