✨ feat(vscode): 代码阅读契约加命令规则(按命令名注册、读一条命令)、按位置的参数 / 输出 / 返回、解释器和选项块、分情况 / 命令 / 管道种类、常量色;模板引擎加节点读法;没有定义、高亮提供者的语言用语言插件认的同一文件里的名字跳转、高亮

This commit is contained in:
cruldra committed 2026-09-28 00:44:46 +08:00
1 parent cf09c24730
commit ff2a44f080
17 files changed
+555 -60

No files matched your search

@@ -10,6 +10,7 @@ body {
--cr-string: #ce9178;
--cr-number: #b5cea8;
--cr-comment: #6a9955;
--cr-constant: #4fc1ff;
--cr-kind-import: #c586c0;
--cr-kind-function: #dcdcaa;
@@ -23,6 +24,8 @@ body {
--cr-kind-return: #89d185;
--cr-kind-statement: #9d9d9d;
--cr-kind-comment: #6a9955;
--cr-kind-options: #e5c07b;
--cr-kind-command: #d7ba7d;
margin: 0;
font-family: var(--vscode-font-family, system-ui, sans-serif);
@@ -41,6 +44,7 @@ body.vscode-high-contrast-light {
--cr-string: #a31515;
--cr-number: #098658;
--cr-comment: #008000;
--cr-constant: #0070c1;
--cr-kind-import: #af00db;
--cr-kind-function: #795e26;
@@ -54,6 +58,8 @@ body.vscode-high-contrast-light {
--cr-kind-return: #388a34;
--cr-kind-statement: #6f6f6f;
--cr-kind-comment: #008000;
--cr-kind-options: #9a6a00;
--cr-kind-command: #7c5f12;
}
/* 种类颜色:同一类语义共用一个颜色,图标区分具体是哪种(kindIcons.tsx)。卡片取自己的种类,子层取所属块的种类 */
@@ -63,12 +69,14 @@ body.vscode-high-contrast-light {
[data-kind="enum"] { --kind: var(--cr-kind-enum); }
[data-kind="exception"] { --kind: var(--cr-kind-exception); }
:is([data-kind="field"], [data-kind="const"], [data-kind="variable"]) { --kind: var(--cr-kind-data); }
:is([data-kind="if"], [data-kind="else"]) { --kind: var(--cr-kind-branch); }
:is([data-kind="if"], [data-kind="else"], [data-kind="case"]) { --kind: var(--cr-kind-branch); }
[data-kind="loop"] { --kind: var(--cr-kind-loop); }
:is([data-kind="try"], [data-kind="catch"], [data-kind="finally"]) { --kind: var(--cr-kind-error); }
[data-kind="return"] { --kind: var(--cr-kind-return); }
[data-kind="statement"] { --kind: var(--cr-kind-statement); }
:is([data-kind="statement"], [data-kind="interpreter"]) { --kind: var(--cr-kind-statement); }
[data-kind="comment"] { --kind: var(--cr-kind-comment); }
[data-kind="options"] { --kind: var(--cr-kind-options); }
:is([data-kind="command"], [data-kind="pipeline"]) { --kind: var(--cr-kind-command); }
/* 库规则认领的块:颜色由规则给,暗色、亮色两个写在元素的 style 上(--kind-dark / --kind-light),这里按主题挑 */
[data-badge] { --kind: var(--kind-dark); }
body:is(.vscode-light, .vscode-high-contrast-light) [data-badge] { --kind: var(--kind-light); }
@@ -198,6 +206,7 @@ body:is(.vscode-light, .vscode-high-contrast-light) [data-badge] { --kind: var(-
.cr-role-storage,
.cr-role-operator { color: var(--cr-storage); }
.cr-role-variable { color: var(--cr-variable); }
.cr-role-constant { color: var(--cr-constant); }
.cr-role-function { color: var(--cr-function); }
.cr-role-type { color: var(--cr-type); }
.cr-role-string { color: var(--cr-string); }
@@ -31,6 +31,11 @@ describe('块的种类图标', () => {
return: 'corner-down-left',
statement: 'code',
comment: 'message-square-text',
interpreter: 'terminal',
options: 'sliders-horizontal',
case: 'signpost',
command: 'square-terminal',
pipeline: 'square-terminal',
})
})
@@ -21,9 +21,13 @@ import {
Shield,
ShieldAlert,
ShieldCheck,
Signpost,
SlidersHorizontal,
Split,
SquareFunction,
SquareTerminal,
Tag,
Terminal,
TriangleAlert,
Variable,
} from 'lucide-react'
@@ -48,6 +52,10 @@ export const KIND_ICON_COMPONENTS: Record<KindIconName, LucideIcon> = {
'corner-down-left': CornerDownLeft,
'code': Code,
'message-square-text': MessageSquareText,
'terminal': Terminal,
'sliders-horizontal': SlidersHorizontal,
'signpost': Signpost,
'square-terminal': SquareTerminal,
'database': Database,
'package': Package,
'server-cog': ServerCog,
@@ -79,6 +87,11 @@ export const KIND_ICONS: Record<BlockKind, KindIconName> = {
return: 'corner-down-left',
statement: 'code',
comment: 'message-square-text',
interpreter: 'terminal',
options: 'sliders-horizontal',
case: 'signpost',
command: 'square-terminal',
pipeline: 'square-terminal',
}
/**
+3 -1
View File
@@ -5,6 +5,7 @@
export type BlockKind
= | 'import' | 'function' | 'class' | 'enum' | 'exception' | 'type' | 'field' | 'const' | 'variable'
| 'if' | 'else' | 'loop' | 'try' | 'catch' | 'finally' | 'return' | 'statement' | 'comment'
| 'interpreter' | 'options' | 'case' | 'command' | 'pipeline'
/** 着色用的词性,源码着色和译文着色共用。 */
export type TokenRole
@@ -12,6 +13,7 @@ export type TokenRole
| 'storage' // 声明关键字与字面量关键字:const function async class interface new true false null …
| 'operator' // 被翻成文字的运算符:全等 并且 或者 非
| 'hint' // 属性表里的说明词:未标注 无 N 个 默认导出 …
| 'constant' // 按习惯全大写、当常量用的名字
| 'variable' | 'function' | 'type' | 'string' | 'number' | 'literal' | 'comment' | 'plain'
/**
@@ -86,7 +88,7 @@ export interface ThemeColor { dark: string, light: string }
export type KindIconName
= | 'import' | 'square-function' | 'box' | 'braces' | 'list-ordered' | 'triangle-alert' | 'tag' | 'lock' | 'variable'
| 'split' | 'corner-down-right' | 'repeat' | 'shield' | 'shield-alert' | 'shield-check' | 'corner-down-left' | 'code'
| 'message-square-text' | 'database' | 'package' | 'server-cog' | 'calendar-clock' | 'globe' | 'network'
| 'message-square-text' | 'terminal' | 'sliders-horizontal' | 'signpost' | 'square-terminal' | 'database' | 'package' | 'server-cog' | 'calendar-clock' | 'globe' | 'network'
/** 库规则的种类:名字(悬停提示、读屏念的文字)、颜色和图标(从 KindIconName 里挑);块左边只画图标 */
export interface KindBadge { label: string, color: ThemeColor, icon: KindIconName }