refactor(编辑器): 去掉 vue-codemirror,代码编辑器、协作编辑器、教程编辑器改用自己的薄外壳

三个编辑器只用到它的 v-model、extensions、只读、缩进、占位文字、尺寸和 ready,
shared/components/CodeMirror.vue 照它的做法写了这几样,功能和手感不变:
- 它默认带的 basicSetup(行号、撤销、折叠、搜索、括号……)照样带上
- 各项配置的先后顺序和它一致;外部改代码仍是一次不带 userEvent 的 changes,
  提交时的编辑过程统计不受影响
- @codemirror/commands 现在直接 import,显式声明进依赖

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-12 20:22:39 +08:00
1 parent 6216e1cf22
commit d2b8a1ce4a
7 files changed
+133 -24

No files matched your search

@@ -3,7 +3,7 @@ import { markdown } from "@codemirror/lang-markdown"
import { EditorSelection } from "@codemirror/state"
import { EditorView, keymap } from "@codemirror/view"
import { Icon } from "@iconify/vue"
import { Codemirror } from "vue-codemirror"
import CodeMirror from "./CodeMirror.vue"
import { uploadImage } from "../../admin/api"
import { styleTheme } from "../extensions/baseTheme"
import { oneDark } from "../themes/oneDark"
@@ -196,12 +196,12 @@ const tools = computed(() => [
<input ref="fileInput" type="file" accept="image/*" multiple hidden @change="onPickImages" />
</div>
<div class="body">
<Codemirror
<CodeMirror
v-model="modelValue"
:extensions="extensions"
:tab-size="4"
:style="{ height: '100%', fontSize: '14px' }"
@ready="view = $event.view"
font-size="14px"
@ready="view = $event"
/>
</div>
</div>