dsh-vscode-mode 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +40 -6
  2. package/assets/icon.svg +7 -0
  3. package/cordis.patch.yml +12 -0
  4. package/lib/client.js +9317 -7494
  5. package/lib/client.js.map +1 -1
  6. package/lib/index.js +1295 -173
  7. package/lib/index.js.map +1 -1
  8. package/locale/en.json +4 -0
  9. package/locale/zh.json +4 -0
  10. package/package.json +3 -1
  11. package/src/client/compat.ts +134 -4
  12. package/src/client/copyText.ts +28 -0
  13. package/src/client/fileClipboard.ts +46 -0
  14. package/src/client/imagePreview.ts +76 -2
  15. package/src/client/index.ts +68 -39
  16. package/src/client/monaco/lsp/lspClient.ts +46 -0
  17. package/src/client/monaco/lsp/providers.ts +245 -1
  18. package/src/client/nativeOpenStore.ts +91 -0
  19. package/src/client/officialSidebar.ts +11 -45
  20. package/src/client/openWithDialog.ts +66 -0
  21. package/src/client/outline/index.ts +1 -1
  22. package/src/client/pdf/pdfPanel.ts +18 -0
  23. package/src/client/searchSeed.ts +36 -0
  24. package/src/client/settingsContext.ts +6 -4
  25. package/src/client/sidebar/contextMenu.ts +51 -10
  26. package/src/client/sidebar/menuItems.ts +473 -50
  27. package/src/client/sidebar/panels/FileExplorer.ts +1 -1
  28. package/src/client/sidebar/panels/SearchPanel.ts +24 -3
  29. package/src/client/sidebar/panels/SvnPanel.ts +1 -1
  30. package/src/client/sidebar/panels/index.ts +1 -1
  31. package/src/client/sidebar/types.ts +6 -0
  32. package/src/client/styles/editor.css +5 -3
  33. package/src/client/svnStore.ts +6 -1
  34. package/src/client/tabActions.ts +22 -10
  35. package/src/client/ui/EditorView.ts +198 -25
  36. package/src/client/ui/McpSettings.ts +30 -0
  37. package/src/client/ui/OfficialSideTab.ts +1 -0
  38. package/src/client/ui/PerfSettings.ts +4 -1
  39. package/src/client/ui/PromptDialog.ts +63 -0
  40. package/src/client/ui/SideEditorTab.ts +1 -0
  41. package/src/client/ui/commandCatalog.ts +14 -0
  42. package/src/client/ui/icons.ts +72 -0
  43. package/src/compat.ts +2 -2
  44. package/src/dshVersion.ts +2 -1
  45. package/src/fileOpenSettings.ts +163 -40
  46. package/src/index.ts +15 -1
  47. package/src/lsp/client.ts +24 -0
  48. package/src/lsp/rpc.ts +57 -0
  49. package/src/lsp/server.ts +272 -2
  50. package/src/perf.ts +90 -4
  51. package/src/routes.ts +13 -1
  52. package/src/rpc.ts +294 -36
  53. package/src/shared/fsNames.ts +115 -0
  54. package/src/shared/keybindings.ts +2 -0
  55. package/src/shared/lsp.ts +79 -0
  56. package/src/shared/nativeOpen.ts +91 -0
  57. package/src/shared/rpc.ts +158 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  - 📝 **同屏编辑**:DSH 0.1.5+ 官方右侧 Sidebar,AI 对话与文件编辑同屏
7
7
  - 🔍 **差异审查**:Keep / Undo / 回滚 / 归档,状态持久化重启不丢
8
- - 🧠 **LSP 智能**:转到定义 / 查找引用 / Peek 多结果选择
8
+ - 🧠 **LSP 智能**:转到定义 / 查找引用 / Peek 多结果选择 / 智能补全(注释索引)/ 签名帮助
9
9
  - ⌨️ **命令面板**:`Ctrl+Shift+P`,19 条命令开箱即用,可编程扩展
10
10
 
11
11
  ## 目录
@@ -106,6 +106,12 @@
106
106
  `Ctrl+hover` 可导航标识符下划线提示。v0.4.2 起统一委托完整 Monaco 原生命令:
107
107
  **多结果弹 Peek 让用户选**,单结果直跳,取不到定义自动降级「转到引用」。
108
108
 
109
+ - **智能补全**:输入 `.` / `:` / `(` / `[` 自动弹出候选(`Ctrl+Space` 手动触发)。
110
+ EmmyLua 的注释索引(`---@class` / `---@field` / `---@type`)会被解析为真实的成员列表,
111
+ 即对 `---@class` 标注的实例打 `p.` 能列出注解声明的字段/方法;候选项带类型图标、
112
+ 弃用标记与片段展开(`${1:占位}`)。文档走 `completionItem/resolve` 惰性拉取,列表响应保持轻量。
113
+ - **签名帮助**:函数实参处(输入 `(` / `,`)显示参数签名并按当前实参高亮;
114
+ 多签名可切换。
109
115
  - 定义查找带降级链(definition → declaration → 引用推导);参数 / 局部变量
110
116
  (`this`、`pTarget` 这类)同样能跳到声明。
111
117
  - 相关踩坑与修复见 [常见问题](#常见问题) 第 1–4 条。
@@ -160,6 +166,18 @@ cmaps 支持中文渲染);工具条进入注释编辑:✎ 文本框 / 🖌
160
166
  可调 180–560),拖拽低于最小宽度自动收起。
161
167
  - 面板经注册表装配(`ctx.provide('edrvSidebarPanels')`),新增面板只加一条注册,
162
168
  不改编辑器布局。
169
+ - **资源管理器右键菜单**(v0.7.0,对齐 CodeBuddy 参考图,区分文件 / 文件夹 / 根空白区):
170
+ - 文件:打开方式…(已注册打开器中选择)| 在文件资源管理器中显示 | 添加引用
171
+ 到对话 | 剪切·复制 | 复制路径·复制相对路径 | 重命名…·删除 | SVN 组。
172
+ - 文件夹:新建文件…·新建文件夹(名称支持 `a/b.c` 嵌套)| 在文件资源管理器
173
+ 中显示 | 添加引用到对话·在文件夹中查找…(搜索面板带目录过滤)| 剪切·复制·
174
+ 粘贴(剪贴板空时灰显)| 复制路径·复制相对路径 | 重命名…·永久删除 | SVN 组。
175
+ - 根空白区 = 文件夹菜单去掉全部「仅非根」项;参考图中本架构无法实现的条目
176
+ (在集成终端中打开 / 运行测试 / Build 等)不显示。
177
+ - 文件管理写操作走 `edrv.fsCreateFile / fsCreateDir / fsRename / fsDelete /
178
+ fsCopy / fsMove`(工作区边界 + 同名拒绝 + 名称校验),删除带确认;重命名 /
179
+ 移动 / 删除与开着的页签自动同步(路径改写 / 关签)。剪切·复制·粘贴为应用内
180
+ 文件剪贴板(浏览器无系统文件剪贴板,语义对齐 VS Code)。
163
181
 
164
182
  ### 10. 规则管理(v0.1.49 / v0.1.50,参考 Codebuddy)
165
183
 
@@ -399,13 +417,13 @@ TortoiseSVN(`TortoiseProc.exe`)仅作 Windows 过渡增强:自研能力覆
399
417
 
400
418
  ```bash
401
419
  # ① Git 安装(clone + prepare 构建;推荐打固定 tag)
402
- dsh plugin --profile web add github:Lenonss/DSH_VsCodeMode#v0.6.0
420
+ dsh plugin --profile web add github:Lenonss/DSH_VsCodeMode#v0.8.0
403
421
 
404
422
  # ② npm 注册表(发布到 npm 后)
405
423
  dsh plugin --profile web add dsh-vscode-mode
406
424
 
407
425
  # ③ GitHub Release tgz 直装
408
- dsh plugin --profile web add https://github.com/Lenonss/DSH_VsCodeMode/releases/download/v0.6.0/dsh-vscode-mode-0.6.0.tgz
426
+ dsh plugin --profile web add https://github.com/Lenonss/DSH_VsCodeMode/releases/download/v0.8.0/dsh-vscode-mode-0.8.0.tgz
409
427
  ```
410
428
 
411
429
  > `dsh plugin ...` 是 pnpm 转发器:git 安装会克隆仓库、执行该包 `prepare` 脚本
@@ -486,7 +504,8 @@ bundles 层后重启 DSH 即自动把插件行挂进 loader 树。**不要**再
486
504
  - **代码片段**:`Ctrl+Shift+P` →「配置代码片段」编辑 `.code-snippets`;编辑代码
487
505
  时 `prefix` 自动 IntelliSense 补全,`Tab` / `Enter` 展开。
488
506
  - **LSP**:`F12` 转到定义(多结果弹 Peek 选择)、`Shift+F12` 查找引用、
489
- `Ctrl+点击` 导航;取不到定义自动降级「转到引用」。
507
+ `Ctrl+点击` 导航;取不到定义自动降级「转到引用」。补全随输入 `.` / `:` / `(` / `[`
508
+ 自动弹出(`Ctrl+Space` 手动触发,`Tab` / `Enter` 采纳),函数实参处显示签名帮助。
490
509
 
491
510
  ## 配置
492
511
 
@@ -565,7 +584,7 @@ src/
565
584
  ├── routes.ts Host webServer 路由(/edrv/rpc、/edrv/assets/*、/edrv/vendor/*)
566
585
  └── client/
567
586
  ├── index.ts Client 入口:slot 注册;官方/betterSidebar/中央页签三形态互斥分流
568
- ├── compat.ts ★ 设置桥三级降级(webUiSettings→settingsScope)、slot 安全注册
587
+ ├── compat.ts ★ 设置桥四级降级+晚到重试(configForms→webUiSettings→settingsScope)、slot 安全注册
569
588
  ├── officialSidebar.ts ★ 官方右侧 Sidebar 桥(DSH 0.1.5+,唯一维护面)
570
589
  ├── sidebarBridge.ts betterSidebar 桥(归档,仅旧版回退)
571
590
  ├── rpc.ts / events.ts / watchDecision.ts(外部改动同步纯逻辑)
@@ -602,7 +621,8 @@ pdf.js vendor + 图标 + launcher)、`skills/`(插件技能组)、`src/`
602
621
  + `conversation.input.dock`(id `edrv-diff-dock`,唯一差异栏)。内部路由 / slot /
603
622
  事件 / CSS 前缀沿用 `edrv-*`(防回归),包身份 `dsh-vscode-mode`。
604
623
  - **兼容层**(`src/compat.ts` + `src/client/compat.ts`):运行时探测
605
- `@deepseek-ai/dsh-mcp-client`、设置桥(`webUiSettings` → `settingsScope`)、
624
+ `@deepseek-ai/dsh-mcp-client`、设置桥(`configForms` 0.1.7+ → `webUiSettings` →
625
+ `settingsScope`,含 15×2s 晚到有界重试)、
606
626
  `/edrv` 路由前缀冲突与本插件重复装配(duplicate loader entry)护栏;
607
627
  `@deepseek-ai/dsh-settings` / `schemastery` 动态加载(缺失时插件仍可加载,
608
628
  设置持久化降级)。「VSCodeMode」设置页 →「兼容性」子 Tab 或 RPC `edrv.compat`
@@ -698,6 +718,20 @@ Keep All / Undo All 却是亮的。修复:单文件 Keep / Undo 覆盖冲突
698
718
  完整变更见 [GitHub Releases](https://github.com/Lenonss/DSH_VsCodeMode/releases)。
699
719
  近期关键版本:
700
720
 
721
+ - **v0.8.0**:**DSH 0.1.7 兼容适配 + 文件树原生打开**——P0×3 修复(0.1.7 移除
722
+ `settingsScope` 致整客户端停等 → 设置桥四级探测 + 15×2s 晚到重试;`installSection`
723
+ 移除 → `forms` 策略 + `export const Config` 与 section schema 同源;0.1.7 图标改名
724
+ `Icon<Name>16→Regular` 致侧栏图标全灭 → `icons.ts` 跨版本出口 + 占位兜底);新能力:
725
+ 文件树原生打开(`nativeOpenExts` 可配置范围,默认=让位清单,claim `canOpen` 同步让位)、
726
+ 插件管理页 icon + `locale/` 双语声明、图片缩放(适应宽度默认/±10%/每页签记忆)与
727
+ PDF 百分比指示、perf 面板官方归档/置顶徽标、`edrv.readBinary` 二进制预览通道
728
+ (octet-stream + base64 自动回退)。设置体系迁移:settings.yaml 一次性导入 profile
729
+ Config,读写统一 `sectionOf/updateSection`(冲突重读重试)。
730
+ - **v0.7.0**:**资源管理器右键菜单**——区分文件 / 文件夹 / 根空白区三套菜单:打开方式…
731
+ (已注册打开器选择)、在文件资源管理器中显示、添加引用到对话、新建文件/文件夹
732
+ (支持 `a/b.c` 嵌套)、在文件夹中查找(搜索面板目录过滤)、剪切·复制·粘贴(应用内
733
+ 文件剪贴板,语义对齐 VS Code)、复制路径/相对路径、重命名/删除/移动(写操作走
734
+ `edrv.fs*` 边界校验,删除带确认,与开着页签自动同步)、SVN 组。
701
735
  - **v0.6.0**:**编辑器内断点调试(DAP)+ SVN 补丁/汇总/导出**——① DAP 桥通用化
702
736
  (适配器由扩展清单 `contributes.debuggers` 驱动,Lua 链路复用 emmylua 适配器、零游戏侧
703
737
  改动):行首点击/`F9` 断点(悬停预览红点、禁用灰点、跨刷新持久化)、断点右键菜单与
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="128" height="128" role="img" aria-label="dsh-vscode-mode">
2
+ <!-- dsh-vscode-mode 插件图标:深色圆角方块 + 浅色 </> 编辑器符号(VSCode 风格) -->
3
+ <rect x="8" y="8" width="112" height="112" rx="24" fill="#1e1e2e"/>
4
+ <path d="M46 44 L30 64 L46 84" fill="none" stroke="#7ee2b8" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
5
+ <path d="M82 44 L98 64 L82 84" fill="none" stroke="#7ee2b8" stroke-width="10" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <path d="M70 40 L58 88" fill="none" stroke="#d7dce2" stroke-width="9" stroke-linecap="round"/>
7
+ </svg>
package/cordis.patch.yml CHANGED
@@ -16,6 +16,18 @@
16
16
  # imageDir: /path/to/icons
17
17
  # 注意:是覆盖(override),不是再 insert 一次同 id 的行,否则触发
18
18
  # duplicate loader entry id 启动失败。
19
+ #
20
+ # DSH 0.1.7 免重载配置字段(已实证,格式与本文件无关):插件在自己的 Config
21
+ # schema 字段上声明 `.volatile()`(如 `z.string().volatile()`,类型
22
+ # `import type { Volatile } from '@deepseek-ai/cordis'`),仅 volatile 字段的
23
+ # 变化由 Loader 就地提交(`ctx.on('loader/volatile-update')`),运行中的实例保留、
24
+ # 不重挂载;非 volatile 字段改动仍按原逻辑触发 reload(volatile 字段还要求位于
25
+ # 固定 object 路径,不得嵌套于 dict key / 外层 volatile 之内,app-boot 会校验)。
26
+ # 该声明落在插件源码的 schema 上,**不是 patch 文件字段**——本插件 config 暂无
27
+ # 自定义字段,故此处不声明;预留写法:未来给本行加 `config:` 字段时,须同步在
28
+ # 插件 Config schema 的对应字段加 `.volatile()` 才会免重载,届时再补注释示例。
29
+ # 另:0.1.7 起 `dsh.bundle.patch` 支持 `patch: string | string[]`(有序列表,
30
+ # 逐层施加),本包单文件写法保持兼容,无需改动。
19
31
  - insert:
20
32
  - id: dsh-vscode-mode
21
33
  name: 'dsh-vscode-mode'