Merge branch 'master' into lsp-server
This commit is contained in:
commit
23d113457a
12
README.md
12
README.md
|
|
@ -8,10 +8,10 @@
|
|||
|
||||
### 安装方式一(推荐)
|
||||
|
||||
安装[vsix](./vscode/tsl-devkit-1.0.0.vsix)扩展
|
||||
安装[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
|
||||
|
|
@ -52,9 +52,9 @@ autocmd BufNewFile,BufRead *.ts[lf] setf tsl
|
|||
```json
|
||||
"languageserver": {
|
||||
"tsl-server": {
|
||||
"command": "tsl-server",
|
||||
"filetypes": ["tsl", "tsf"]
|
||||
"command": "tsl-server",
|
||||
"args": ["--log=trace", "--log=stderr"],
|
||||
"filetypes": ["tsl", "tsf"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,22 @@
|
|||
// SYNTAX TEST "tsl"
|
||||
|
||||
// 字符串,数字,注释
|
||||
// 注释 TODO
|
||||
// abc();
|
||||
a := "string"; // 字符串
|
||||
b := 123; // 数字
|
||||
c := 1.23; // 浮点数
|
||||
a := "字符串函数func()";
|
||||
// TODO: 注释
|
||||
{aaaaa TODO}
|
||||
(* abcdef *)
|
||||
|
||||
// 数字
|
||||
num6 := 123; // 数字
|
||||
num7 := 1.23; // 浮点数
|
||||
num1 := 0xAF123;
|
||||
num2 := 0O12357;
|
||||
num3 := 0B010111;
|
||||
num4 := 1.2e-12;
|
||||
num5 := +3E15;
|
||||
|
||||
// 字符串
|
||||
string1 := '123';
|
||||
string2 := "func2()";
|
||||
|
||||
// 类相关
|
||||
type MyClass = class
|
||||
|
|
@ -20,6 +29,8 @@ public
|
|||
|
||||
property P1 write param1_ read param1_;
|
||||
private
|
||||
[weakref]obj: integer;
|
||||
[weakref]b: MyClass;
|
||||
param1_: real;
|
||||
param2_: array of string;
|
||||
end;
|
||||
|
|
@ -30,7 +41,7 @@ end;
|
|||
|
||||
function MyClass.Func3(a: real = 1; b: string = "123"): array of string;
|
||||
begin
|
||||
obj.P1;
|
||||
obj.P1.P2;
|
||||
self.P1;
|
||||
end
|
||||
|
||||
|
|
@ -42,7 +53,8 @@ data.items.count;
|
|||
// 函数声明
|
||||
function f(); // 无参数
|
||||
function f(a, b); // 参数无类型
|
||||
function f(a: real; b: DD); // 参数有类型
|
||||
function f(a: real; b: DD); // 参数有类型1
|
||||
function f(a: real, b: DD); // 参数有类型2
|
||||
function f(a: real = 1; b: string = "123"; c: number = abc.CONST1): def; // 带返回类型
|
||||
|
||||
// 函数调用
|
||||
|
|
@ -70,3 +82,15 @@ b := array((1, 2), (3, 4));
|
|||
sql += "update ts_xbcheck result set isvalid = "$status$remark$" where checkid in ('"$array2str
|
||||
(checkid[(i-1)*len:], "','")$"');\r\n"
|
||||
sql +=
|
||||
|
||||
// tsl-web块
|
||||
<?tslx>
|
||||
<HTML>
|
||||
<Body>
|
||||
<p>
|
||||
<?tsl write("TSL Script");?>
|
||||
</p>
|
||||
</Body>
|
||||
</HTML>
|
||||
|
||||
|
||||
|
|
|
|||
42
vim/tsl.vim
42
vim/tsl.vim
|
|
@ -20,7 +20,7 @@ syn keyword tslPrimitiveType string integer boolean int64 real array
|
|||
|
||||
# 类型系统和面向对象
|
||||
syn keyword tslClassType type class fakeclass new
|
||||
syn keyword tslClassModifier override overload virtual property self inherited
|
||||
syn keyword tslClassModifier override overload virtual property inherited self
|
||||
syn keyword tslAccessModifier public protected private published
|
||||
syn keyword tslConstructor create destroy operator
|
||||
syn keyword tslReferenceModifier weakref autoref
|
||||
|
|
@ -66,15 +66,17 @@ syn keyword tslBoolean false true
|
|||
syn keyword tslNull nil
|
||||
syn keyword tslMathConstant inf nan
|
||||
|
||||
# todo
|
||||
syn keyword tslTodo FIXME NOTE NOTES TODO XXX contained
|
||||
|
||||
# Function definitions
|
||||
syn match tslFuncName '\%(\h\w*\.\)\?\h\w*' contained nextgroup=tslFuncParams skipwhite contains=tslTypeNameInFunc,tslDotInFunc,tslFuncNamePart
|
||||
syn match tslTypeNameInFunc '\h\w*\ze\.\h\w*' contained
|
||||
syn match tslDotInFunc '\.' contained
|
||||
syn match tslFuncName '\.\@<=\h\w*' contained
|
||||
syn match tslFuncName '\%(\h\w*\.\)\?\h\w*' contained nextgroup=tslFuncParams skipwhite contains=tslTypeNameInFunc,tslDotInFunc
|
||||
syn match tslTypeNameInFunc '\h\w*\ze\.\h\w*' contained
|
||||
syn match tslDotInFunc '\.' contained
|
||||
syn match tslFuncName '\.\@<=\h\w*' contained
|
||||
|
||||
syn region tslFuncParams
|
||||
\ matchgroup=Delimiter
|
||||
\ start='('
|
||||
\ end=')'
|
||||
\ contained
|
||||
|
|
@ -87,12 +89,8 @@ syn match tslReturnType ':\s*[^;]*' contained contains=tslColon
|
|||
syn match tslParamSep '[;,]' contained
|
||||
syn match tslColon ':' contained
|
||||
|
||||
syn match tslVarDecl '\(?\s\)\@<!\h\w\s:=\@!\s[^;?];' contains=tslVarName,tslVarType
|
||||
syn match tslVarName '\(?\s\)\@<!\h\w\ze\s:=\@!' contained
|
||||
syn match tslVarType ':=\@!\s[^;?]' contained contains=tslColon
|
||||
|
||||
# 匹配完整的属性链
|
||||
syn match tslPropertyChain '\h\w*\%(\.\h\w*\)\+' contains=tslObjectName,tslPropertyDot,tslPropertyName
|
||||
# Property chain
|
||||
syn match tslPropertyChain '\h\w*\%(\.\h\w*\)\+\>' contains=tslObjectName,tslPropertyDot,tslPropertyName
|
||||
syn match tslObjectName '\h\w*\ze\.\h\w*' contained
|
||||
syn match tslPropertyDot '\.' contained
|
||||
syn match tslPropertyName '\.\@<=\h\w*\%(\ze\.\|\ze\s*[^(]\|\ze\s*$\)' contained
|
||||
|
|
@ -107,7 +105,7 @@ syn region tslFuncCall
|
|||
\ contains=tslFuncCallName,tslFuncCall,tslNamedParam,tslPositionalParam,tslString,tslRawString,tslNumber,tslIdentifier,tslOperator,tslParamSep
|
||||
\ transparent
|
||||
|
||||
syn match tslNamedParam '\h\w*\s*:\s*[^;,)]*' contained
|
||||
syn match tslNamedParam '\%((\|;\s*\)\zs\h\w*\s*:\s*[^;,)]*' contained
|
||||
\ contains=tslParamName,tslParamColon,tslParamValue
|
||||
|
||||
syn match tslParamName '\h\w*\ze\s*:' contained
|
||||
|
|
@ -118,8 +116,21 @@ syn match tslParamValue ':\s*\zs[^;,)]*' contained
|
|||
syn match tslPositionalParam '[^;,():]*' contained
|
||||
\ contains=tslString,tslNumber,tslIdentifier,tslOperator,tslFuncCall,tslFuncCallName
|
||||
|
||||
syn match tslParamSep '[;,]' contained
|
||||
# Variable declaration
|
||||
syn match tslVarDeclWithTag '\]\@<=\s*\h\w*\ze\s*:\%(=\)\@!'
|
||||
\ nextgroup=tslVarTypeDecl skipwhite
|
||||
\ contains=tslVarName
|
||||
|
||||
syn match tslVarDeclStart '\%(^\s*\|;\s*\)\zs\h\w*\ze\s*:\%(=\)\@!'
|
||||
\ nextgroup=tslVarTypeDecl skipwhite
|
||||
\ contains=tslVarName
|
||||
|
||||
syn match tslVarName '\h\w*' contained
|
||||
syn region tslVarTypeDecl
|
||||
\ matchgroup=tslVarDelimiter start=':\%(=\)\@!' end=';'
|
||||
\ contained keepend oneline
|
||||
\ contains=tslVarType
|
||||
syn match tslVarType '[^;]*' contained
|
||||
|
||||
# Operators and delimiters
|
||||
syn match tslOperator '[+\-*/<>=!&|^~%]'
|
||||
|
|
@ -144,6 +155,7 @@ syn match tslNumber '\<\d\+[eE][+-]\=\d\+[jJ]\=\>'
|
|||
syn match tslNumber '\<\d\+\.\%([eE][+-]\=\d\+\)\=[jJ]\=\%(\W\|$\)\@='
|
||||
syn match tslNumber '\%(^\|\W\)\zs\d*\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>'
|
||||
|
||||
|
||||
# Highlight links
|
||||
hi def link tslProgramStructure Statement
|
||||
hi def link tslModuleStructure Statement
|
||||
|
|
@ -179,8 +191,8 @@ hi def link tslNull Constant
|
|||
hi def link tslMathConstant Number
|
||||
|
||||
# 其他元素的高亮链接保持不变
|
||||
hi def link tslClassName Type
|
||||
hi def link tslDot Operator
|
||||
hi def link tslObjectName Type
|
||||
hi def link tslPropertyDot Operator
|
||||
hi def link tslPropertyName Special
|
||||
|
||||
hi def link tslFuncName Function
|
||||
|
|
|
|||
|
|
@ -1,6 +1,23 @@
|
|||
# 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.1]: 2025-07-10
|
||||
|
||||
- 修复:关键字`initialization`拼写错误
|
||||
|
||||
## [2.3.0]: 2025-07-03
|
||||
|
||||
- 修改插件名为`tsl-tools`
|
||||
- 支持设置参数
|
||||
- `tsl.server.executable`: `tsl-server`的执行路径
|
||||
- `tsl.server.arguments`: `tsl-server`的启动参数
|
||||
- `tsl.interpreter.executable`: `tsl`解释器的路径
|
||||
|
||||
## [2.3.0]: 2025-08-29
|
||||
|
||||
- 支持`begin|else|do|then`等换行增加缩进
|
||||
- 支持`end`等换行减少缩进
|
||||
|
||||
## [2.2.0]: 2025-07-02
|
||||
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +0,0 @@
|
|||
cp ../lsp-server/build/arch/tsl-server ./bin/tsl-server
|
||||
cp ../lsp-server/build/msys2/tsl-server.exe ./bin/tsl-server.exe
|
||||
npx vsce package
|
||||
|
|
@ -22,15 +22,9 @@
|
|||
["\"", "\""],
|
||||
["'", "'"]
|
||||
],
|
||||
"folding": {
|
||||
"markers": {
|
||||
"start": "^\\s*\\{\\s*$",
|
||||
"end": "^\\s*\\}\\s*$"
|
||||
}
|
||||
},
|
||||
"wordPattern": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b",
|
||||
"indentationRules": {
|
||||
"increaseIndentPattern": "^.*(\\{[^}\"']*|\\([^)\"']*|\\[[^\\]\"']*)$",
|
||||
"decreaseIndentPattern": "^(.*\\*\\/)?\\s*[\\}\\]\\)].*$"
|
||||
"increaseIndentPattern": "^.*\\b([Bb][Ee][Gg][Ii][Nn]|[Dd][Oo]|[Tt][Hh][Ee][Nn]|[Ee][Ll][Ss][Ee])\\b.*$",
|
||||
"decreaseIndentPattern": "^\\s*\\b([Ee][Nn][Dd])\\b.*$"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "tsl-devkit",
|
||||
"version": "2.1.0",
|
||||
"version": "2.3.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "tsl-devkit",
|
||||
"version": "2.1.0",
|
||||
"version": "2.3.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": {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -20,16 +20,25 @@ 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<string>('server.executable', '')
|
||||
const serverArguments = config.get<string[]>('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) {
|
||||
|
|
@ -41,7 +50,7 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
|
||||
const serverOptions: ServerOptions = {
|
||||
run: {command: serverExe, transport: TransportKind.stdio, args: ['--log=trace', '--log-stderr']},
|
||||
debug: {command: serverExe, transport: TransportKind.stdio}
|
||||
debug: {command: serverExe, transport: TransportKind.stdio, args: ['--log=trace', '--log-stderr']}
|
||||
}
|
||||
|
||||
const clientOptions: LanguageClientOptions = {
|
||||
|
|
@ -49,16 +58,23 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
synchronize: {
|
||||
fileEvents: vscode.workspace.createFileSystemWatcher('**/*.tsl')
|
||||
}
|
||||
|
||||
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<void> | undefined {
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@
|
|||
"patterns": [
|
||||
{
|
||||
"name": "keyword.control.program-structure.tsl",
|
||||
"match": "(?i)\\b(program|function|procedure|unit|uses|implementation|interface|initalization|finalization)\\b"
|
||||
"match": "(?i)\\b(program|function|procedure|unit|uses|implementation|interface|initialization|finalization)\\b"
|
||||
},
|
||||
{
|
||||
"name": "keyword.control.interface.tsl",
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue