Skip to content

An enhanced for CodeMirror framework in TiddlyWiki, including TW5 highlight, WikiLink auto-completion, expandable hint, snippets, etc.

License

Notifications You must be signed in to change notification settings

Gk0Wk/TW5-CodeMirror-Enhanced

Repository files navigation

TW5-CodeMirror-Enhanced

示例 | demo

Implement a swift and rich extension framework for TiddlyWiki5's CodeMirror editor, including TiddlyWiki5 (text/vnd.tiddlywiki) syntax highlighting, Wiki link auto-completion, clickable links, Tiddler preview, and more. More features ( syntax tree, syntax completion , WYSIWYG mode , quick template input , etc. ) is under development . This framework is open source framework , anyone is welcome to join the development , the documentation is being written .

为 TiddlyWiki5 的 CodeMirror 编辑器实现一个灵活而丰富的扩展框架,包括 TiddlyWiki5(text/vnd.tiddlywiki)语法高亮、Wiki 链接自动补全、可点击链接、Tiddler 预览等功能。更多功能(语法树、语法补全、所见即所得模式、快捷模板输入等)正在开发中。本框架是开源框架,欢迎任何人加入开发,框架文档正在编写中。

> English Readme <


说明

本插件为 TiddlyWiki5 的 CodeMirror 编辑器提供了一个便于扩展的框架,原始项目CodeMirror-Mode-TiddlyWiki5已停止开发。本框架继承原始项目的所有功能,并对整个框架进行重构,变成一个可扩展的模块化 CodeMirror 框架。目前支持的功能有:

  • 对 TiddlyWiki5 语法高亮的支持,所有 MIME 类型留空或者为text/vnd.tiddlywiki的 tiddler 都会有高亮(效果见下文)。
  • 支持像主流 IDE 那样在打字时实时进行代码补全的功能(不需要Ctrl+Space激活),并提供与 TiddlyWiki5 相关内容的补全,并提供丰富的扩展能力,此能力可以进行自定义扩展:
    • 目前支持在输入 WikiLink 时进行 tiddler 名称补全,以及同时提供 tiddler 内容预览(效果见下文)。
  • 鼠标点击 url 或 WikiLink 会打开/跳转至对应的 网页/tiddler(效果见下文),此能力可以进行自定义扩展。

插件还在开发中,如有任何建议或者 bug 请直接提 Issue。本框架欢迎所有人参与优化核心或者提交自己的插件。未来计划请见下文TODO List一节。

安装 & 编译

安装

请首先安装最新版CodeMirror主插件和CodeMirror Autocomplete子插件(不然会报错)。

如果你是单文件 TiddlyWiki5 用户或者NodeJS版 TiddlyWiki5 用户,直接去Release下载TW5-CodeMirror-Enhanced-X.X.X.json,然后将其拖拽到你的 TiddlyWiki 中,或者在 TiddlyWiki 中导入之。

如果插件报错了,不必惊慌,因为插件不会对 TiddlyWiki 本体内容做修改,所以只需要卸载就能够消除问题,但保险起见还是建议先备份再安装

如果你使用的是NodeJS版本的 TiddlyWiki5 项目并希望将插件安装至项目,可以下载Release中的 TW5-CodeMirror-Enhanced-X.X.X.zip 文件,解压后放置到项目的 plugins 文件夹下,并在tiddlywiki.info文件中使用该插件。

编译

由于当前项目涉及 TypeScript 子项目的编译与打包,所以编译步骤较为繁琐,如你有更好的方案,欢迎提出意见!

首先安装 python3nodenpm,并在项目根目录安装一些必要的包(yarn 同理):

npm install

随后进行编译工作:

npm run build

功能介绍

高亮TiddlyWiki5语法,支持内嵌代码块和LaTeX的语法高亮

Default: default

Ayu-Dark: ayu-dark

TiddlyWiki: tiddlywiki

注意:这些主题有些是我自己装的,如感兴趣换主题,请阅读 TiddlyWiki 的 CodeMirror 的 README。

WikiLink实时补全提示+预览

wikilink-hint

在预览打开的情况下:

hint-preview

可点击的链接

wikilink-hint

  • 对于 macOS 用户,cmd + 鼠标左键 可以打开 tiddler 或者外部 url。
  • 对于非 macOS 用户,ctrl + 鼠标左键 可以打开 tiddler 或者外部 url。

其他功能正在开发中。

开发者

Wiki(咕咕咕)

开发感想 & 致谢

在使用 TiddlyWiki 之后,一直苦于 TiddlyWiki5 语法没有高亮支持,写作体验不是很好。之前有也在网上找到一些相关的解决办法,例如在Google Group上面有人建议用 TiddlyWiki2 的语法进行 Hack,但是这种方法并不完美。

也有人编写了一个可用的 CodeMirror 的扩展版本TW5-CodeMirror-Plus,虽然是可用的,但是有两个问题:一个是语法高亮的内容有限,另一个是该插件直接基于 theme 而非 mode 进行开发,这就导致如果想要用 TW5 的高亮就必须舍弃其他语法高亮,并且无法自定义主题。所以最终还是打算自己写一个 :D

本插件一开始也是基于TW5-CodeMirror-Plus开发的,只不过魔改了很多,现在基本上是两个不同的插件了,在此感谢TW5-CodeMirror-Plus的作者adithya-badidey,以及src/mode/tiddlywiki5.js的原始作者PMario

TODO List

  • 代码块内的语法高亮与缩进。
  • LaTeX 公式高亮与缩进。
  • 自动补全内部链接的 tiddler 名称。
  • 可点击的 URL 与 WikiLink。
  • 补全提示的预览框。
  • 编写 API 文档。
  • 使用 Lezer 重新编写 TiddlyWiki5 的语法解析程序。
  • 使用重写的语法解析程序重写语法高亮与缩进。
  • 其他代码提示。
  • 代码错误检查。
  • 鼠标悬在 LaTeX 代码上方能够进行公式预览。
  • 所见即所得编辑器。