动态语法高亮


动态语法高亮指的是对用户可以修改的代码进行的高亮。只有一处会出现这种情况,那就是在线编辑器。

Note

代码片段、迭代之类的内容都是_静态_的,因为用户无法即时修改自己的代码。 如果想进一步了解我们如何处理静态语法高亮,请查看静态语法高亮文档。

实现

动态语法高亮使用 CodeMirror 库实现。

在为你的语言添加支持时,有三种选择:

  1. CodeMirror 本身_开箱即用_地支持该语言(即已列入受支持的语言)。如果是这样,请继续看启用语言一节。
  2. 该语言由现有的 CodeMirror 插件支持。如果是这样,请继续看使用现有插件一节。
  3. 该语言_不_受支持。这时又有三种选择:
    1. 从零开始编写一个 CodeMirror 插件,具体做法见创建新插件一节。
    2. 你的语言的语法与另一种语言的语法(很)相似(例如 Unison 的语法与 Haskell 相似),这种情况下你可以考虑用那种语言的语法高亮来高亮你的语言。更多信息见启用语言一节。
    3. 不使用动态语法高亮。

启用语言

要为你的语言启用 CodeMirror 支持,请在论坛上发一个新话题。之后我们(Exercism)会创建一个 Pull Request,在网站上为你的语言启用 CodeMirror 支持。

使用现有插件

要使用现有插件,它需要已发布到 NPM 上。

如果该插件尚未发布到 NPM,你可以:

  1. 询问插件作者是否愿意发布到 NPM。
  2. fork 代码仓库,然后自己发布。
  3. 让我们(Exercism)fork 代码仓库,由我们发布。要这样做,请在论坛上发一个话题提出这个请求。
Note

CodeMirror 网站上有社区构建的语言插件列表。

下一步是启用语言。

创建新插件

以下是入门的步骤:

  1. 查看我们的代码仓库列表里是否已有 codemirror-lang-...,确认还没有现成的。
  2. 在 Exercism 论坛上发一个新话题,告诉我们你想为哪种语言创建 CodeMirror 插件。
  3. 一旦为你创建了 CodeMirror 插件的代码仓库,就为你的学习轨道实现语法。
Note

为了帮你上手,为你创建的代码仓库里包含一个最小示例语法,你可以在此基础上继续构建或调整。

我们有一个极其友好、乐于助人的社区,在你完成这一切的过程中会很乐意帮助你!如果卡住了,请随时在 Exercism 论坛上发一个新话题,或者按需到 exercism/exercism 上创建新的 issue 🙂

之后你需要把插件发布到 NPM 上。下一步是启用语言。

使用另一种语言

你的语言的语法与另一种语言的语法(很)相似,这种情况下你可以考虑用那种语言的语法高亮来高亮你的语言。要这样做,就用另一种语言的 CodeMirror 插件来配置该学习轨道。更多信息见启用语言一节。