拟更新洛谷的markdown编辑器
查看原帖
拟更新洛谷的markdown编辑器
68344
离散小波变换°3rd eye楼主2024/5/29 20:40

目前正在洛谷广泛使用的 Markdown 编辑器 Markdown*palletes(https://github.com/luogu-dev/markdown-palettes) 因为年久失修积累了太多 bug。并且由于其开发基于 Codemirror5 以及 Vue2,已经无法适配新前端项目,因此我们计划更换 Markdown 编辑器。

于是我最近写了一个新的 Markdown 编辑器,基于 Codemirror6 和 Vue3。

需要注意的是,由于 micromark-extension-math 支持的公式语法与洛谷并不完全相同,所以预览地址上的数学公式语法稍有不同;事实上我们已经编写了适配洛谷数学公式语法的 micromark-extension-math,不过由于在私有仓库里,所以没有在上述预览地址里应用。

编辑器大致进行了如下改进:

新增内容

  • 使用 remark+rehype 生态进行渲染,完全支持 GFM,包括洛谷之前不支持的 task list 和 Link reference definitions。这些与洛谷新前端将会采用的渲染机制相一致,可以参考文章区的渲染效果。
  • 预期加入一些新的插件丰富编辑体验。不过这部分需要进一步讨论。
  • 增加了一些 Codemirror 自带功能。包括:
    • 搜索替换功能(Ctrl+F);
    • 折叠文段功能;
    • 自动补全,例如编写引用块自动添加右尖括号。
  • 优化了同步滚动效果,看上去比之前的更流畅。
  • 优化了工具栏的功能。

修复 Bug

  • 修复了全屏后编辑器光标乱飞的问题。
  • 修复了全屏后并没有将编辑器完全覆盖页面的问题。
  • 修复了全屏后编辑区滚动不正确的问题。
  • 修复了编辑区没有禁用 HTML 的问题(无意书写 HTML 标签格式例如 <a> 会导致奇怪的缩进问题)
  • 修复了编辑区不能正确识别数学公式的问题(例如编写 $ {p}_{a_b}$ 会有奇怪的斜体,十分影响编辑)。
    * 上述三个问题在 ByteMD 里均有出现,并且由于 ByteMD 也处于没人维护的状态并且使用更旧的 Codemirror5,于是我没有决定采用他们的方案。
  • 修复了禁用预览之后编辑区仍然只占据一半空间的问题。
  • 修复了空格宽度十分诡异的问题。

TODO

  • 拖拽图片自动上传图床。
  • 按键绑定。
  • 编辑较长文章时同步渲染依然会卡顿,需要增加选项控制多久刷新一次预览。
  • 更换部分工具栏图标。
  • 国际化(?)

不过由于个人精力有限,所以可能会导致一些新的 bug,所以需要经过一段时间的测试。并且投入实际使用可能也需要一段时间(咕咕咕)。

希望大家能够反馈目前阶段存在的 bug()

2024/5/29 20:40
加载中...