dsh-vscode-mode 0.3.0 → 0.3.1
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.
- package/README.md +5 -2
- package/lib/client.js +7 -3
- package/lib/client.js.map +1 -1
- package/package.json +1 -1
- package/src/client/editorModelState.ts +19 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-vscode-mode",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "DSH 上的类 VSCode 编码体验:Monaco 编辑器(文件页签/QuickOpen/状态栏,可驻 DSH 0.1.5+ 官方右侧 Sidebar 与对话同屏)+ 命令栏(Ctrl+Shift+P)与可扩展指令系统 + VS Code 兼容代码片段(.code-snippets 全局/项目,IntelliSense 展开)+ Agent 编辑差异审查(整文件差异/采纳/拒绝/归档/回滚)+ 语言服务器(LSP)智能(跳转定义/引用/hover/大纲 + VSIX 扩展市场安装),状态持久化到工作区旁车",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dsh",
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dsh-vscode-mode client — 编辑器模型可用性探测(模块级,不依赖 React)。
|
|
3
3
|
* 命令可用性判定(快捷键过滤 / 命令栏隐藏 / 执行前置检查)需要「当前是否有活动编辑器」,
|
|
4
|
-
* 而命令目录是模块级常量、拿不到 EditorView 实例,故统一读 DOM
|
|
5
|
-
*
|
|
4
|
+
* 而命令目录是模块级常量、拿不到 EditorView 实例,故统一读 DOM 标记。
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ 判据必须与 Monaco 的**输入实现无关**:
|
|
7
|
+
* 旧实现探测 `.monaco-editor textarea.inputarea`,而 Monaco 在有 EditContext API 的浏览器
|
|
8
|
+
* (Chrome/Edge)中默认用它取代 textarea(源码 `editContext: se(44,"editContext",!0)`),
|
|
9
|
+
* 只创建 `div.native-edit-context` —— 于是「编辑器明明开着文件」却判定为无模型,
|
|
10
|
+
* 导致 13 条 needsModel 命令(含 Ctrl+U 加引用、Ctrl+Alt+↑↓ 编辑行、命令栏里的保存/定义/引用等)
|
|
11
|
+
* 全部被静默隐藏且按键被放行(不吞键)→ 表现为「快捷键完全没效果」。
|
|
12
|
+
* 现判据用插件编辑器专属类名(不随 Monaco 输入实现演进、也不会误命中官方预览的 Monaco)。
|
|
6
13
|
* 作者 ddj 2026年09月10号
|
|
7
14
|
*/
|
|
8
15
|
|
|
9
|
-
/**
|
|
10
|
-
export const EDITOR_ROOT_SELECTOR = '
|
|
16
|
+
/** 编辑器行根节点选择器(EditorView 三种形态共用;浮层 portal 不含该类名)。 */
|
|
17
|
+
export const EDITOR_ROOT_SELECTOR = '.edrv-editor-row'
|
|
18
|
+
|
|
19
|
+
/** Monaco 编辑器实例选择器(限定在插件编辑器行内,排除官方预览等其它 Monaco)。 */
|
|
20
|
+
export const EDITOR_MODEL_SELECTOR = EDITOR_ROOT_SELECTOR + ' .monaco-editor'
|
|
11
21
|
|
|
12
22
|
/**
|
|
13
23
|
* 当前文档是否挂载了编辑器视图(无 document 的运行环境返回 false)。
|
|
@@ -20,11 +30,13 @@ export function hasEditorView(): boolean {
|
|
|
20
30
|
}
|
|
21
31
|
|
|
22
32
|
/**
|
|
23
|
-
* 当前文档是否已有 Monaco
|
|
33
|
+
* 当前文档是否已有 Monaco 活动编辑器(编辑器打开着文件而非空态)。
|
|
34
|
+
* 判据为插件编辑器行内存在 Monaco 实例:与输入实现(textarea / EditContext)无关,
|
|
35
|
+
* 空态(无文件页签)时 Monaco 未创建 → 返回 false,与旧语义一致。
|
|
24
36
|
* @author ddj 2026年09月10号
|
|
25
|
-
* @returns
|
|
37
|
+
* @returns 是否存在活动编辑器
|
|
26
38
|
*/
|
|
27
39
|
export function hasEditorModel(): boolean {
|
|
28
40
|
if (typeof document === 'undefined') return false
|
|
29
|
-
return document.querySelector(
|
|
41
|
+
return document.querySelector(EDITOR_MODEL_SELECTOR) !== null
|
|
30
42
|
}
|