動態語法突顯


動態語法突顯指的是為使用者可修改的程式碼做突顯。只有一個地方會用到它,那就是線上編輯器。

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 外掛來設定你的軌道。 詳情請見啟用語言一節。