From 7e9cf6d152a75340843df7e1317d756d3f50e064 Mon Sep 17 00:00:00 2001 From: csh Date: Tue, 17 Jun 2025 10:05:53 +0800 Subject: [PATCH] feat: ignorecase improvements --- test/test.tsl | 3 +- vscode/CHANGELOG.md | 5 + vscode/package.json | 2 +- vscode/syntaxes/tsl.tmLanguage.json | 196 +++++++++--------- ...evkit-1.2.0.vsix => tsl-devkit-1.3.0.vsix} | Bin 18438 -> 18541 bytes 5 files changed, 104 insertions(+), 102 deletions(-) rename vscode/{tsl-devkit-1.2.0.vsix => tsl-devkit-1.3.0.vsix} (65%) diff --git a/test/test.tsl b/test/test.tsl index 66b440b..3767c1c 100644 --- a/test/test.tsl +++ b/test/test.tsl @@ -54,8 +54,9 @@ a ? b : c; a ? b : c ? d : e; // select -select ["test"] from table end; +Select ["test"] from table end; vselect ["test"] from table end; +select distinct ["test"] from table where ['a'] = 1 end; // array a := array(1, 2); diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md index 29e8e2c..2251b9f 100644 --- a/vscode/CHANGELOG.md +++ b/vscode/CHANGELOG.md @@ -2,6 +2,11 @@ Notable changes to the `TSL` extension will be documented in this file. +## [1.3.0]: 2025-06-17 + +- 支持关键字大小写不敏感 +- 调整和新增某些关键字的所属类型 + ## [1.2.0]: 2025-06-16 - 大量高亮调整 diff --git a/vscode/package.json b/vscode/package.json index a808bd5..2cad9b9 100644 --- a/vscode/package.json +++ b/vscode/package.json @@ -1,7 +1,7 @@ { "name": "tsl-devkit", "displayName": "TSL", - "version": "1.2.0", + "version": "1.3.0", "description": "TSL syntax highlighter support for VSCode.", "publisher": "csh", "homepage": "https://git.mytsl.cn/csh/tsl-devkit", diff --git a/vscode/syntaxes/tsl.tmLanguage.json b/vscode/syntaxes/tsl.tmLanguage.json index a0b0f03..52cae37 100644 --- a/vscode/syntaxes/tsl.tmLanguage.json +++ b/vscode/syntaxes/tsl.tmLanguage.json @@ -389,120 +389,116 @@ "keywords": { "patterns": [ { - "name": "keyword.control.header.tsl", - "match": "\\b(program|function|procedure)\\b" - }, - { - "name": "variable.language.builtin.tsl", - "match": "\\b(paramcount|realparamcount|params|system|thisfunction|tslassigning|likeeps|likeepsrate)\\b" - }, - { - "name": "keyword.control.conditional.tsl", - "match": "\\b(else|if)\\b" - }, - { - "name": "keyword.control.statement.tsl", - "match": "\\b(begin|end|then|this|with|exit|weakref|autoref|namespace)\\b" + "name": "keyword.control.program-structure.tsl", + "match": "(?i)\\b(program|function|procedure|unit|uses|implementation|interface|initalization|finalization)\\b" }, { "name": "keyword.control.interface.tsl", - "match": "\\b(unit|uses|implementation|interface|initalization|finalization)\\b" + "match": "(?i)\\b(unit|uses|implementation|interface|initalization|finalization)\\b" }, { - "name": "keyword.control.repeat.tsl", - "match": "\\b(for|while|do|downto|step|until|repeat|to)\\b" - }, - { - "name": "keyword.control.branch.tsl", - "match": "\\b(break|continue)\\b" - }, - { - "name": "keyword.control.return.tsl", - "match": "\\b(return|debugreturn|debugrunenv|debugrunenvdo)\\b" - }, - { - "name": "keyword.control.label.tsl", - "match": "\\b(case|of|goto|label)\\b" - }, - { - "name": "keyword.operator.io.tsl", - "match": "\\b(write|read)\\b" - }, - { - "name": "keyword.operator.set.tsl", - "match": "\\b(union|minus|union2)\\b" - }, - { - "name": "keyword.operator.shift.tsl", - "match": "\\b(ror|rol|shr|shl)\\b" - }, - { - "name": "keyword.operator.logical.tsl", - "match": "\\b(and|in|is|not|or)\\b" - }, - { - "name": "keyword.operator.arithmetic.tsl", - "match": "\\b(div|mod)\\b" - }, - { - "name": "keyword.control.exception.tsl", - "match": "\\b(except|raise|try|finally|exceptobject)\\b" - }, - { - "name": "constant.language.boolean.tsl", - "match": "\\b(false|true)\\b" - }, - { - "name": "constant.language.null.tsl", - "match": "\\bnil\\b" - }, - { - "name": "storage.type.tsl", - "match": "\\b(string|integer|boolean|int64|real|array)\\b" - }, - { - "name": "support.function.builtin.tsl", - "match": "\\b(echo|mtic|mtoc|this|inf|nan)\\b" - }, - { - "name": "storage.modifier.tsl", - "match": "\\b(external|const|out|var)\\b" - }, - { - "name": "keyword.other.sql.tsl", - "match": "\\b(select|vselect|sselect|update|delete|mselect|set)\\b" - }, - { - "name": "keyword.operator.sql.tsl", - "match": "\\b(sqlin|from|where|group|by|like|order)\\b" - }, - { - "name": "keyword.other.system.tsl", - "match": "\\b(setuid|sudo)\\b" - }, - { - "name": "keyword.other.calling-convention.tsl", - "match": "\\b(cdecl|pascal|stdcall|safecall|fastcall|register)\\b" - }, - { - "name": "storage.modifier.scope.tsl", - "match": "\\b(global|static)\\b" + "name": "storage.type.primitive.tsl", + "match": "(?i)\\b(string|integer|boolean|int64|real|array)\\b" }, { "name": "storage.type.class.tsl", - "match": "\\b(type|class|fakeclass|new)\\b" + "match": "(?i)\\b(type|class|fakeclass|new)\\b" }, { "name": "storage.modifier.class.tsl", - "match": "\\b(override|overload|virtual|property|self|inherited)\\b" - }, - { - "name": "keyword.other.constructor.tsl", - "match": "\\b(create|destroy|operator)\\b" + "match": "(?i)\\b(override|overload|virtual|property|self|inherited)\\b" }, { "name": "storage.modifier.access.tsl", - "match": "\\b(public|protected|private|published)\\b" + "match": "(?i)\\b(public|protected|private|published)\\b" + }, + { + "name": "keyword.other.constructor.tsl", + "match": "(?i)\\b(create|destroy|operator)\\b" + }, + { + "name": "storage.modifier.variable.tsl", + "match": "(?i)\\b(external|const|out|var|global|static)\\b" + }, + { + "name": "keyword.control.conditional.tsl", + "match": "(?i)\\b(if|else|then|case|of)\\b" + }, + { + "name": "keyword.control.loop.tsl", + "match": "(?i)\\b(for|while|do|downto|step|until|repeat|to)\\b" + }, + { + "name": "keyword.control.branch.tsl", + "match": "(?i)\\b(break|continue|goto|label|exit)\\b" + }, + { + "name": "keyword.control.return.tsl", + "match": "(?i)\\b(return|debugreturn|debugrunenv|debugrunenvdo)\\b" + }, + { + "name": "keyword.control.block.tsl", + "match": "(?i)\\b(begin|end|this|with|weakref|autoref|namespace)\\b" + }, + { + "name": "keyword.control.exception.tsl", + "match": "(?i)\\b(except|raise|try|finally|exceptobject)\\b" + }, + { + "name": "keyword.operator.logical.tsl", + "match": "(?i)\\b(and|in|is|not|or)\\b" + }, + { + "name": "keyword.operator.arithmetic.tsl", + "match": "(?i)\\b(div|mod)\\b" + }, + { + "name": "keyword.operator.bitwise.tsl", + "match": "(?i)\\b(ror|rol|shr|shl)\\b" + }, + { + "name": "keyword.operator.set.tsl", + "match": "(?i)\\b(union|minus|union2)\\b" + }, + { + "name": "keyword.operator.io.tsl", + "match": "(?i)\\b(write|read)\\b" + }, + { + "name": "keyword.control.sql.tsl", + "match": "(?i)\\b(select|vselect|sselect|update|delete|mselect)\\b" + }, + { + "name": "keyword.operator.sql.tsl", + "match": "(?i)\\b(on|like|in)\\b" + }, + { + "name": "keyword.other.sql.tsl", + "match": "(?i)\\b(sqlin|from|where|group|by|order|distinct|join)\\b" + }, + { + "name": "keyword.other.calling-convention.tsl", + "match": "(?i)\\b(cdecl|pascal|stdcall|safecall|fastcall|register)\\b" + }, + { + "name": "keyword.other.system.tsl", + "match": "(?i)\\b(setuid|sudo)\\b" + }, + { + "name": "variable.language.builtin.tsl", + "match": "(?i)\\b(paramcount|realparamcount|params|system|thisfunction|tslassigning|likeeps|likeepsrate)\\b" + }, + { + "name": "support.function.builtin.tsl", + "match": "(?i)\\b(echo|mtic|mtoc|this|inf|nan)\\b" + }, + { + "name": "constant.language.boolean.tsl", + "match": "(?i)\\b(false|true)\\b" + }, + { + "name": "constant.language.null.tsl", + "match": "(?i)\\bnil\\b" } ] }, diff --git a/vscode/tsl-devkit-1.2.0.vsix b/vscode/tsl-devkit-1.3.0.vsix similarity index 65% rename from vscode/tsl-devkit-1.2.0.vsix rename to vscode/tsl-devkit-1.3.0.vsix index d08883fdbf3dd817dbdde680adca8152af1eb92b..fbf2a85c37d529f42b83478308a193cdc529248c 100644 GIT binary patch delta 3953 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 L5C+vn00000ZG>;SKdwrfu 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