Skip to content

添加EasyCon Script 语言服务器客户端实现#45

Merged
ca1e merged 2 commits intoEasyConNS:devfrom
zhantss:dev
Apr 27, 2026
Merged

添加EasyCon Script 语言服务器客户端实现#45
ca1e merged 2 commits intoEasyConNS:devfrom
zhantss:dev

Conversation

@zhantss
Copy link
Copy Markdown

@zhantss zhantss commented Apr 27, 2026

No description provided.

@ca1e
Copy link
Copy Markdown
Contributor

ca1e commented Apr 27, 2026

代码审查

必须修复

1. formatOnSave 逻辑反转 (extension.js)

const formatOnSave = vscode.workspace.getConfiguration('editor', document.uri).get('formatOnSave');
if (!formatOnSave) {
    vscode.commands.executeCommand('editor.action.formatDocument');
}

formatOnSave=false 时反而执行格式化,逻辑反了。如果意图是无论用户全局设置如何都格式化 ecs 文件,应去掉条件判断直接执行;否则应改为 if (formatOnSave)

2. LSP 启动无错误处理 (extension.js)

lspClient.start() 返回 Promise,未处理 reject。服务器启动失败(找不到 python / 二进制文件不存在)会静默失败,用户毫无感知。建议加 .catch(err => ...) 并在 outputChannel 中输出错误信息。

建议改进

3. Python 回退缺少 warning log — 回退到 python -m easycon_script_lsp 时没有任何提示,用户排查困难。建议加一条 warning log。

4. documentSelector 仅覆盖 scheme: 'file' — 未保存的文件(untitled scheme)不会获得 LSP 功能。如需支持可添加 { scheme: 'untitled', language: 'easycon-script' }

5. TODO 注释 scope 丢失 (ecs.tmLanguage.json) — 从 comment.line.number-sign.todo.bold.ecs markup.bold.ecs 改为仅 markup.bold.ecs,失去了 comment scope,多数主题下着色会变。

正面评价

  • 架构方向正确,将语言特性委托给 LSP 是可扩展的正确做法
  • 三级服务发现策略(自定义路径 → 捆绑二进制 → Python 回退)设计合理
  • 语法高亮重构有实质改进:字符串转义、EXTERN 声明、按钮/摇杆/方向分离
  • deactivate() 正确停止了 LSP client

@zhantss
Copy link
Copy Markdown
Author

zhantss commented Apr 27, 2026

代码审查修复

必须修复

1. formatOnSave 逻辑反转 (extension.js:127-129)

  • if (!formatOnSave)if (formatOnSave),现在仅当用户启用 formatOnSave 时才格式化 .ecs 文件。

2. LSP 启动无错误处理 (extension.js:100-103)

  • lspClient.start() 添加 .catch(),启动失败时在 outputChannel 输出错误并弹窗提示用户。

建议改进

3. Python 回退处理 (extension.js:74-78)

  • Python 回退尚未就绪,改为输出提示信息并 return,引导用户将二进制放入 bin/ 或配置 easycon.languageServer.path

4. documentSelector 扩展 (extension.js:82-85)

  • 新增 { scheme: 'untitled', language: 'easycon-script' },未保存文件也能获得 LSP 功能。

5. TODO 注释 scope (ecs.tmLanguage.json:34)

  • 恢复为 comment.line.number-sign.todo.bold.ecs markup.bold.ecs,保留注释着色上下文。

@ca1e
Copy link
Copy Markdown
Contributor

ca1e commented Apr 27, 2026

二次审查(所有 check 已通过)

上一轮提出的 5 个问题均已确认修复:

# 问题 修复验证
1 formatOnSave 逻辑反转 ✅ 已改为 if (formatOnSave)
2 LSP 启动无错误处理 ✅ 已添加 .catch() + outputChannel 日志 + 弹窗提示
3 Python 回退缺少提示 ✅ 已改为 warning log + 引导配置路径
4 documentSelector 仅 file scheme ✅ 已添加 untitled scheme
5 TODO 注释 scope 丢失 ✅ 已恢复 comment.line.number-sign.todo.bold.ecs markup.bold.ecs

CI 3/3 passed,无新问题。LGTM,可以合并。

@ca1e ca1e merged commit 933a7bb into EasyConNS:dev Apr 27, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants