Skip to content

Conversation

@RSS1102
Copy link
Collaborator

@RSS1102 RSS1102 commented Jan 2, 2026

close #1204

Co-Authored-By: Saraph1nes <52569690+Saraph1nes@users.noreply.github.com>
@changeset-bot
Copy link

changeset-bot bot commented Jan 2, 2026

🦋 Changeset detected

Latest commit: 4dd9303

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
cherry-markdown Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new
Copy link

pkg-pr-new bot commented Jan 2, 2026

Open in StackBlitz

pnpm add https://pkg.pr.new/cherry-markdown@1586
npm i https://pkg.pr.new/cherry-markdown@1586
yarn add https://pkg.pr.new/cherry-markdown@1586.tgz

commit: 4dd9303

@cherry-markdown-bot
Copy link
Collaborator

cherry-markdown-bot commented Jan 2, 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 2, 2026

Size Change: +713 kB (+10.81%) ⚠️

Total Size: 7.3 MB

Filename Size Change
./packages/cherry-markdown/dist/cherry-markdown.core.common.js 599 kB +120 kB (+24.97%) 🚨
./packages/cherry-markdown/dist/cherry-markdown.core.js 599 kB +120 kB (+24.95%) 🚨
./packages/cherry-markdown/dist/cherry-markdown.css 34.8 kB -1.89 kB (-5.15%)
./packages/cherry-markdown/dist/cherry-markdown.engine.core.common.js 186 kB +6.29 kB (+3.5%)
./packages/cherry-markdown/dist/cherry-markdown.engine.core.esm.js 186 kB +6.3 kB (+3.5%)
./packages/cherry-markdown/dist/cherry-markdown.engine.core.js 186 kB +6.3 kB (+3.5%)
./packages/cherry-markdown/dist/cherry-markdown.esm.js 1.43 MB +120 kB (+9.13%) 🔍
./packages/cherry-markdown/dist/cherry-markdown.js 2.29 MB +217 kB (+10.46%) ⚠️
./packages/cherry-markdown/dist/cherry-markdown.min.css 27.3 kB -1.05 kB (-3.71%)
./packages/cherry-markdown/dist/cherry-markdown.min.js 1.44 MB +120 kB (+9.12%) 🔍
./packages/cherry-markdown/dist/types/Cherry.d.ts 4.52 kB +101 B (+2.29%)
./packages/cherry-markdown/dist/types/core/HookCenter.d.ts 791 B -27 B (-3.3%)
./packages/cherry-markdown/dist/types/core/hooks/Emoji.config.d.ts 9.31 kB -7 B (-0.08%)
./packages/cherry-markdown/dist/types/core/hooks/Emoji.d.ts 9.36 kB -1 B (-0.01%)
./packages/cherry-markdown/dist/types/core/hooks/HighLight.d.ts 157 B -1 B (-0.63%)
./packages/cherry-markdown/dist/types/core/hooks/InlineMath.d.ts 495 B +8 B (+1.64%)
./packages/cherry-markdown/dist/types/core/hooks/Link.d.ts 582 B -1 B (-0.17%)
./packages/cherry-markdown/dist/types/core/hooks/MathBlock.d.ts 461 B +10 B (+2.22%)
./packages/cherry-markdown/dist/types/core/hooks/Panel.d.ts 436 B +1 B (+0.23%)
./packages/cherry-markdown/dist/types/core/hooks/Size.d.ts 176 B -1 B (-0.56%)
./packages/cherry-markdown/dist/types/core/hooks/Strikethrough.d.ts 236 B +1 B (+0.43%)
./packages/cherry-markdown/dist/types/core/hooks/Sub.d.ts 179 B -1 B (-0.56%)
./packages/cherry-markdown/dist/types/core/hooks/Suggester.d.ts 1.79 kB +64 B (+3.71%)
./packages/cherry-markdown/dist/types/core/hooks/Sup.d.ts 179 B -1 B (-0.56%)
./packages/cherry-markdown/dist/types/core/hooks/Transfer.d.ts 175 B -1 B (-0.57%)
./packages/cherry-markdown/dist/types/core/hooks/Underline.d.ts 156 B -1 B (-0.64%)
./packages/cherry-markdown/dist/types/core/HooksConfig.d.ts 523 B -1 B (-0.19%)
./packages/cherry-markdown/dist/types/core/SyntaxBase.d.ts 954 B +3 B (+0.32%)
./packages/cherry-markdown/dist/types/Editor.d.ts 2.15 kB +659 B (+44.23%) 🚨
./packages/cherry-markdown/dist/types/Engine.d.ts 1.45 kB +3 B (+0.21%)
./packages/cherry-markdown/dist/types/Factory.d.ts 1.01 kB +43 B (+4.42%)
./packages/cherry-markdown/dist/types/index.d.ts 82 B +6 B (+7.89%) 🔍
./packages/cherry-markdown/dist/types/index.engine.d.ts 93 B +6 B (+6.9%) 🔍
./packages/cherry-markdown/dist/types/Previewer.d.ts 2.15 kB -3 B (-0.14%)
./packages/cherry-markdown/dist/types/toolbars/Bubble.d.ts 665 B +8 B (+1.22%)
./packages/cherry-markdown/dist/types/toolbars/FloatMenu.d.ts 766 B +189 B (+32.76%) 🚨
./packages/cherry-markdown/dist/types/toolbars/HookCenter.d.ts 509 B +4 B (+0.79%)
./packages/cherry-markdown/dist/types/toolbars/hooks/DrawIo.d.ts 420 B -1 B (-0.24%)
./packages/cherry-markdown/dist/types/toolbars/hooks/InlineCode.d.ts 436 B +7 B (+1.63%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Italic.d.ts 463 B -1 B (-0.22%)
./packages/cherry-markdown/dist/types/toolbars/hooks/List.d.ts 488 B +2 B (+0.41%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Publish.d.ts 390 B +2 B (+0.52%)
./packages/cherry-markdown/dist/types/toolbars/hooks/QuickTable.d.ts 440 B -1 B (-0.23%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Redo.d.ts 263 B -5 B (-1.87%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Settings.d.ts 753 B +1 B (+0.13%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Size.d.ts 300 B -1 B (-0.33%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Strikethrough.d.ts 405 B +1 B (+0.25%)
./packages/cherry-markdown/dist/types/toolbars/hooks/TogglePreview.d.ts 342 B +2 B (+0.59%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Underline.d.ts 403 B -1 B (-0.25%)
./packages/cherry-markdown/dist/types/toolbars/hooks/Undo.d.ts 244 B -1 B (-0.41%)
./packages/cherry-markdown/dist/types/toolbars/MenuBase.d.ts 2.74 kB +174 B (+6.77%) 🔍
./packages/cherry-markdown/dist/types/toolbars/PreviewerBubble.d.ts 2.03 kB +1 B (+0.05%)
./packages/cherry-markdown/dist/types/toolbars/ShortcutKeyConfigPanel.d.ts 1.37 kB +15 B (+1.11%)
./packages/cherry-markdown/dist/types/toolbars/Toolbar.d.ts 2.24 kB -42 B (-1.84%)
./packages/cherry-markdown/dist/types/utils/autoindent.d.ts 545 B +95 B (+21.11%) 🚨
./packages/cherry-markdown/dist/types/utils/cm-search-replace.d.ts 1.56 kB +44 B (+2.89%)
./packages/cherry-markdown/dist/types/utils/codeBlockContentHandler.d.ts 949 B -2 B (-0.21%)
./packages/cherry-markdown/dist/types/utils/formulaUtilsHandler.d.ts 532 B +1 B (+0.19%)
./packages/cherry-markdown/dist/types/utils/htmlparser.d.ts 1.55 kB -111 B (-6.67%)
./packages/cherry-markdown/dist/types/utils/image.d.ts 440 B -14 B (-3.08%)
./packages/cherry-markdown/dist/types/utils/imgSizeHandler.d.ts 907 B -62 B (-6.4%)
./packages/cherry-markdown/dist/types/utils/imgToolHandler.d.ts 312 B -20 B (-6.02%)
./packages/cherry-markdown/dist/types/utils/listContentHandler.d.ts 634 B -11 B (-1.71%)
./packages/cherry-markdown/dist/types/utils/pasteHelper.d.ts 847 B +22 B (+2.67%)
./packages/cherry-markdown/dist/types/utils/platformTransform.d.ts 152 B +1 B (+0.66%)
./packages/cherry-markdown/dist/types/utils/regexp.d.ts 1.56 kB +1 B (+0.06%)
./packages/cherry-markdown/dist/types/utils/selection.d.ts 398 B -325 B (-44.95%) 🎉
./packages/cherry-markdown/dist/types/utils/shortcutKey.d.ts 543 B +4 B (+0.74%)
./packages/cherry-markdown/dist/types/utils/tableContentHandler.d.ts 3.25 kB +9 B (+0.28%)
ℹ️ View Unchanged
Filename Size
./packages/cherry-markdown/dist/addons/advance/cherry-table-echarts-plugin.js 49.6 kB
./packages/cherry-markdown/dist/addons/advance/cherry-tapd-checklist-plugin.js 21.8 kB
./packages/cherry-markdown/dist/addons/advance/cherry-tapd-html-tag-plugin.js 21.8 kB
./packages/cherry-markdown/dist/addons/advance/cherry-tapd-table-plugin.js 24.8 kB
./packages/cherry-markdown/dist/addons/cherry-code-block-mermaid-plugin.js 23.2 kB
./packages/cherry-markdown/dist/addons/cherry-code-block-plantuml-plugin.js 24.8 kB
./packages/cherry-markdown/dist/cherry-markdown.core.common.d.ts 106 B
./packages/cherry-markdown/dist/cherry-markdown.core.d.ts 106 B
./packages/cherry-markdown/dist/cherry-markdown.d.ts 101 B
./packages/cherry-markdown/dist/cherry-markdown.engine.core.common.d.ts 116 B
./packages/cherry-markdown/dist/cherry-markdown.engine.core.d.ts 116 B
./packages/cherry-markdown/dist/cherry-markdown.engine.core.esm.d.ts 116 B
./packages/cherry-markdown/dist/cherry-markdown.esm.d.ts 101 B
./packages/cherry-markdown/dist/cherry-markdown.markdown.css 20.3 kB
./packages/cherry-markdown/dist/cherry-markdown.markdown.min.css 13.9 kB
./packages/cherry-markdown/dist/cherry-markdown.min.d.ts 101 B
./packages/cherry-markdown/dist/types/addons/advance/cherry-table-echarts-plugin.d.ts 1.73 kB
./packages/cherry-markdown/dist/types/addons/advance/cherry-tapd-checklist-plugin.d.ts 323 B
./packages/cherry-markdown/dist/types/addons/advance/cherry-tapd-html-tag-plugin.d.ts 494 B
./packages/cherry-markdown/dist/types/addons/advance/cherry-tapd-table-plugin.d.ts 1.15 kB
./packages/cherry-markdown/dist/types/addons/cherry-code-block-mermaid-plugin.d.ts 1.37 kB
./packages/cherry-markdown/dist/types/addons/cherry-code-block-plantuml-plugin.d.ts 160 B
./packages/cherry-markdown/dist/types/Cherry.config.d.ts 117 B
./packages/cherry-markdown/dist/types/CherryStatic.d.ts 509 B
./packages/cherry-markdown/dist/types/core/hooks/AiFlowAutoClose.d.ts 370 B
./packages/cherry-markdown/dist/types/core/hooks/AutoLink.d.ts 948 B
./packages/cherry-markdown/dist/types/core/hooks/BackgroundColor.d.ts 189 B
./packages/cherry-markdown/dist/types/core/hooks/Blockquote.d.ts 195 B
./packages/cherry-markdown/dist/types/core/hooks/Br.d.ts 193 B
./packages/cherry-markdown/dist/types/core/hooks/CodeBlock.d.ts 1.31 kB
./packages/cherry-markdown/dist/types/core/hooks/Color.d.ts 183 B
./packages/cherry-markdown/dist/types/core/hooks/CommentReference.d.ts 665 B
./packages/cherry-markdown/dist/types/core/hooks/Detail.d.ts 328 B
./packages/cherry-markdown/dist/types/core/hooks/Emphasis.d.ts 263 B
./packages/cherry-markdown/dist/types/core/hooks/Footnote.d.ts 307 B
./packages/cherry-markdown/dist/types/core/hooks/FrontMatter.d.ts 192 B
./packages/cherry-markdown/dist/types/core/hooks/Header.d.ts 605 B
./packages/cherry-markdown/dist/types/core/hooks/Hr.d.ts 223 B
./packages/cherry-markdown/dist/types/core/hooks/HtmlBlock.d.ts 313 B
./packages/cherry-markdown/dist/types/core/hooks/Image.d.ts 325 B
./packages/cherry-markdown/dist/types/core/hooks/InlineCode.d.ts 181 B
./packages/cherry-markdown/dist/types/core/hooks/List.d.ts 347 B
./packages/cherry-markdown/dist/types/core/hooks/Paragraph.d.ts 664 B
./packages/cherry-markdown/dist/types/core/hooks/Ruby.d.ts 154 B
./packages/cherry-markdown/dist/types/core/hooks/Space.d.ts 199 B
./packages/cherry-markdown/dist/types/core/hooks/SuggestList.d.ts 158 B
./packages/cherry-markdown/dist/types/core/hooks/Table.d.ts 554 B
./packages/cherry-markdown/dist/types/core/hooks/Toc.d.ts 974 B
./packages/cherry-markdown/dist/types/core/ParagraphBase.d.ts 1.18 kB
./packages/cherry-markdown/dist/types/Event.d.ts 531 B
./packages/cherry-markdown/dist/types/index.core.d.ts 122 B
./packages/cherry-markdown/dist/types/index.engine.core.d.ts 373 B
./packages/cherry-markdown/dist/types/libs/rawdeflate.d.ts 87 B
./packages/cherry-markdown/dist/types/locales/en_US.d.ts 1.05 kB
./packages/cherry-markdown/dist/types/locales/index.d.ts 141 B
./packages/cherry-markdown/dist/types/locales/ru_RU.d.ts 1.05 kB
./packages/cherry-markdown/dist/types/locales/zh_CN.d.ts 1.06 kB
./packages/cherry-markdown/dist/types/Logger.d.ts 441 B
./packages/cherry-markdown/dist/types/Sanitizer.d.ts 85 B
./packages/cherry-markdown/dist/types/toolbars/BubbleFormula.d.ts 1.38 kB
./packages/cherry-markdown/dist/types/toolbars/BubbleTable.d.ts 329 B
./packages/cherry-markdown/dist/types/toolbars/HiddenToolbar.d.ts 226 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Align.d.ts 191 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Audio.d.ts 322 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Bold.d.ts 455 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Br.d.ts 318 B
./packages/cherry-markdown/dist/types/toolbars/hooks/ChangeLocale.d.ts 252 B
./packages/cherry-markdown/dist/types/toolbars/hooks/CheckList.d.ts 353 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Code.d.ts 398 B
./packages/cherry-markdown/dist/types/toolbars/hooks/CodeTheme.d.ts 451 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Color.d.ts 2.11 kB
./packages/cherry-markdown/dist/types/toolbars/hooks/Copy.d.ts 697 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Detail.d.ts 324 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Export.d.ts 195 B
./packages/cherry-markdown/dist/types/toolbars/hooks/File.d.ts 319 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Formula.d.ts 459 B
./packages/cherry-markdown/dist/types/toolbars/hooks/FullScreen.d.ts 206 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Graph.d.ts 736 B
./packages/cherry-markdown/dist/types/toolbars/hooks/H1.d.ts 390 B
./packages/cherry-markdown/dist/types/toolbars/hooks/H2.d.ts 391 B
./packages/cherry-markdown/dist/types/toolbars/hooks/H3.d.ts 391 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Header.d.ts 505 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Hr.d.ts 322 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Image.d.ts 345 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Insert.d.ts 473 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Justify.d.ts 163 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Link.d.ts 347 B
./packages/cherry-markdown/dist/types/toolbars/hooks/MobilePreview.d.ts 316 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Ol.d.ts 349 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Panel.d.ts 475 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Pdf.d.ts 318 B
./packages/cherry-markdown/dist/types/toolbars/hooks/ProTable.d.ts 561 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Quote.d.ts 245 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Ruby.d.ts 447 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Search.d.ts 369 B
./packages/cherry-markdown/dist/types/toolbars/hooks/ShortcutKey.d.ts 442 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Split.d.ts 319 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Sub.d.ts 372 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Sup.d.ts 372 B
./packages/cherry-markdown/dist/types/toolbars/hooks/SwitchModel.d.ts 285 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Table.d.ts 364 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Theme.d.ts 465 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Toc.d.ts 320 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Ul.d.ts 350 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Video.d.ts 322 B
./packages/cherry-markdown/dist/types/toolbars/hooks/Word.d.ts 318 B
./packages/cherry-markdown/dist/types/toolbars/hooks/WordCount.d.ts 463 B
./packages/cherry-markdown/dist/types/toolbars/Sidebar.d.ts 224 B
./packages/cherry-markdown/dist/types/toolbars/Toc.d.ts 369 B
./packages/cherry-markdown/dist/types/toolbars/ToolbarRight.d.ts 156 B
./packages/cherry-markdown/dist/types/UrlCache.d.ts 529 B
./packages/cherry-markdown/dist/types/utils/async-render-handler.d.ts 344 B
./packages/cherry-markdown/dist/types/utils/code-preview-language-setting.d.ts 169 B
./packages/cherry-markdown/dist/types/utils/color.d.ts 205 B
./packages/cherry-markdown/dist/types/utils/config.d.ts 984 B
./packages/cherry-markdown/dist/types/utils/copy.d.ts 577 B
./packages/cherry-markdown/dist/types/utils/dialog.d.ts 195 B
./packages/cherry-markdown/dist/types/utils/dom.d.ts 650 B
./packages/cherry-markdown/dist/types/utils/downloadUtil.d.ts 426 B
./packages/cherry-markdown/dist/types/utils/env.d.ts 482 B
./packages/cherry-markdown/dist/types/utils/error.d.ts 185 B
./packages/cherry-markdown/dist/types/utils/event.d.ts 440 B
./packages/cherry-markdown/dist/types/utils/export.d.ts 351 B
./packages/cherry-markdown/dist/types/utils/exportWord.d.ts 424 B
./packages/cherry-markdown/dist/types/utils/file.d.ts 848 B
./packages/cherry-markdown/dist/types/utils/footnoteHoverHandler.d.ts 889 B
./packages/cherry-markdown/dist/types/utils/lazyLoadImg.d.ts 2.57 kB
./packages/cherry-markdown/dist/types/utils/lineFeed.d.ts 720 B
./packages/cherry-markdown/dist/types/utils/lookbehind-replace.d.ts 381 B
./packages/cherry-markdown/dist/types/utils/LRUCache.d.ts 554 B
./packages/cherry-markdown/dist/types/utils/mathjax.d.ts 218 B
./packages/cherry-markdown/dist/types/utils/myersDiff.d.ts 431 B
./packages/cherry-markdown/dist/types/utils/recount-pos.d.ts 259 B
./packages/cherry-markdown/dist/types/utils/sanitize.d.ts 423 B
./packages/cherry-markdown/dist/types/utils/svgUtils.d.ts 650 B

compressed-size-action

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the Cherry Markdown editor from CodeMirror 5.58.2 to CodeMirror 6.0.1+, introducing a comprehensive compatibility layer (CM6Adapter) to maintain backward compatibility with the existing API while leveraging the new architecture.

Key changes:

  • Complete replacement of CodeMirror 5 with CodeMirror 6 modular packages
  • Implementation of CM6Adapter class providing CM5-compatible API surface
  • Migration of all editor-related utilities and components to CM6 APIs
  • Updates to event handling, selection management, and DOM interactions

Reviewed changes

Copilot reviewed 44 out of 49 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
package.json Replaces CM5 dependencies with CM6 modular packages, upgrades TypeScript to 5.7.3
types/editor.d.ts Adds CM6Adapter interface with comprehensive API compatibility definitions
types/codemirror.d.ts Replaces CM5 type extensions with CM6LineBlock interface
types/cherry.d.ts Updates editor type from CM5 Editor to CM6 EditorView
src/Editor.js Implements CM6Adapter class, migrates to CM6 APIs, adds custom syntax highlighter
src/Cherry.js Updates all editor interactions to use CM6 APIs through adapter
src/Previewer.js Adjusts scrolling logic and editor refresh calls for CM6
src/utils/selection.js Rewrites selection utilities using CM6 state/transaction APIs
src/utils/shortcutKey.js Removes CM5 browser util dependency, implements platform detection
src/utils/regexp.js Refactors regex construction to avoid backreference issues
src/utils/pasteHelper.js Updates DOM queries and event handling for CM6
src/utils/file.js Changes from doc.replaceSelection to adapter.replaceSelection
src/utils/autoindent.js Adapts list autoindent logic for CM6Adapter
src/toolbars/MenuBase.js Comprehensive rewrite of selection/cursor manipulation for CM6
src/toolbars/hooks/* Updates all toolbar hooks to use CM6 state.doc.sliceString
src/toolbars/Bubble.js Migrates to CM6 DOM structure (.cm-editor) and coordsAtPos API
src/toolbars/FloatMenu.js Creates compatibility layer for cursor activity events
src/toolbars/Toolbar.js Simplifies toolbar visibility methods
src/toolbars/Toc.js Switches from CM5 events to Cherry event system
src/core/hooks/Suggester.js Updates panel positioning using CM6 coordsAtPos
src/sass/*.scss Updates CSS selectors from .CodeMirror-* to .cm-*
yarn.lock Adds CM6 package dependencies and removes CM5

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@RSS1102 RSS1102 marked this pull request as draft January 2, 2026 18:55
@RSS1102
Copy link
Collaborator Author

RSS1102 commented Jan 2, 2026

CodeMirror 5 → 6 参考以下进行未来测试覆盖

✅ 核心 API 功能列表

文档操作

API 状态 说明
getValue() 获取完整文档内容
setValue(text) 设置文档内容
getLine(line) 获取指定行内容
lineCount() 获取总行数
replaceRange(text, from, to) 替换指定范围文本
getRange(from, to) 获取范围内文本

选择操作

API 状态 说明
getSelection() 获取选中文本
getSelections() 获取多选文本数组
replaceSelection(text) 替换选中文本
replaceSelections(texts) 批量替换多选文本
setSelection(from, to) 设置选择范围
listSelections() 获取所有选择范围

光标操作

API 状态 说明
getCursor(type) 获取光标位置
setCursor(line, ch) 设置光标位置
cursorCoords(where) 获取光标坐标

坐标转换

API 状态 说明
posToLineAndCh(pos) 位置转行列号
lineAndChToPos(line, ch) 行列号转位置
posAtCoords(coords) 坐标转位置

滚动操作

API 状态 说明
scrollTo(x, y) 滚动到指定位置
scrollIntoView(pos) 滚动到指定位置可见
getScrollInfo() 获取滚动信息

搜索功能

API 状态 说明
setSearchQuery(query) 搜索并高亮
clearSearchQuery() 清除搜索高亮

标记功能

API 状态 说明
markText(from, to, options) 标记文本范围
findMarks(from, to) 查找范围内标记

DOM 操作

API 状态 说明
getWrapperElement() 获取包装元素
getScrollerElement() 获取滚动元素
refresh() 刷新编辑器
focus() 聚焦编辑器

🎬 事件系统

事件名 状态 触发时机
blur 编辑器失焦
focus 编辑器聚焦
change 文档内容改变
scroll 编辑器滚动
paste 粘贴内容
mousedown 鼠标按下
keydown 按键按下
keyup 按键释放
cursorActivity 光标位置改变
beforeChange 内容即将改变
drop 拖放内容

⚙️ 编辑器配置

支持的配置项

配置项 状态 说明
lineNumbers 是否显示行号
placeholder 占位符文本
autofocus 自动聚焦
keyMap 键盘映射风格(sublime/vim)
lineWrapping 自动换行

⌨️ 键盘快捷键

Sublime 风格快捷键 (默认)

通过以下 keymap 组合实现:

  • defaultKeymap - 基础编辑快捷键
  • historyKeymap - 撤销/重做
  • closeBracketsKeymap - 括号自动闭合
  • searchKeymap - 搜索相关
  • indentWithTab - Tab 缩进

支持的快捷键:

  • Ctrl+[ / Ctrl+] - 减少/增加缩进
  • Ctrl+Shift+D - 复制当前行
  • Ctrl+Enter - 在下方插入行
  • Ctrl+Shift+Enter - 在上方插入行
  • Ctrl+Shift+↑ / Ctrl+Shift+↓ - 向上/下移动行
  • Ctrl+Shift+K - 删除当前行
  • Ctrl+Shift+← / Ctrl+Shift+→ - 选择到行首/行尾
  • Ctrl+Backspace - 删除到单词开始
  • Ctrl+Shift+M - 选择匹配的括号内容
  • Ctrl+Shift+L - 在多个位置插入光标
  • Alt+F3 - 选择所有匹配项
  • Ctrl+Z / Ctrl+Y - 撤销/重做

Vim 模式

支持完整的 Vim 键位,可通过配置或运行时切换。


🎨 语法高亮

支持的语法元素:

  • 字符串、数字、关键字
  • 注释、标题、强调
  • 链接、代码块
  • 列表、引用
  • 全角符号高亮

🔧 已修复的问题

  • ✅ autofocus 配置支持
  • ✅ 移除 extraKeys 残留
  • ✅ 清理注释的 CM5 代码

📦 依赖变化

  • ✅ 已完全移除 CodeMirror 5
  • ✅ 已升级到 CodeMirror 6
  • ✅ 支持 Vim 模式 (@replit/codemirror-vim)

🏗️ 架构改进

  • ✅ 使用 CM6Adapter 适配器层提供 API 兼容
  • ✅ 通过 StateField 和 StateEffect 管理状态
  • ✅ 支持搜索高亮、文本标记、键盘映射等功能

✨ 新增功能

  • ✅ Vim 模式支持,可动态切换
  • ✅ 改进的搜索高亮
  • ✅ 更好的快捷键管理
  • ✅ 完整的 TypeScript 类型定义

🧪 测试建议

功能测试

  • 文档编辑(输入、删除、替换)
  • 选择操作(单选、多选)
  • 光标移动(键盘、鼠标)
  • 搜索和替换
  • 撤销/重做
  • 复制/粘贴
  • 快捷键(Sublime 和 Vim)
  • 全角符号高亮
  • 自动聚焦

性能测试

  • 大文档加载(10000+ 行)
  • 快速输入响应
  • 滚动流畅度
  • 搜索性能

兼容性测试

  • Chrome
  • Firefox
  • Safari
  • Edge

📚 相关资源

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 50 out of 55 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 54 out of 59 changed files in this pull request and generated 5 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

RSS1102 and others added 2 commits January 4, 2026 14:19
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@tencent-adm
Copy link
Member

tencent-adm commented Jan 7, 2026

CLA assistant check
All committers have signed the CLA.

@RSS1102 RSS1102 changed the title refactor: migrate to Codemirror @6 and update editor functionalities refactor: migrate to Codemirror@6 and update editor functionalities Jan 8, 2026
@RSS1102 RSS1102 added the minor 破坏性更改,break change label Jan 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor 破坏性更改,break change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

升级codemirror

4 participants