Scripted Editor 的簡易範本

工程 | Andrew Eisenberg | 2013年1月23日 | ...

我們近期發佈了 0.3 版本Scripted Editor,並且我們正快速朝下一個版本邁進。 Scripted Editor 0.4 的主要目標之一是擴充性,而擴充性的一部分是一個簡單、可擴充的範本機制(另一部分是強大的外掛程式模型,將在未來的部落格文章中描述)。在這篇文章中,我將介紹 Scripted Editor 的自訂程式碼完成和範本。

Sublime Text 是一個出色的通用編輯器。它具有高度可配置性,許多 Scripted 使用者也使用 Sublime。因此,我們希望在合理的情況下,使 Sublime 的擴充功能與 Scripted 相容。其中一個領域是 sublime-completions 檔案。這些檔案指定給定內容類型(通常對應到檔案副檔名)的完成清單。 Scripted 允許您按原樣使用這些完成檔案,並且還提供了一些額外功能。

首先,我將解釋如何使用現有的 sublime-completions 檔案,然後我將展示如何建立新的檔案,最後我將展示我們在 Sublime Text 支援的基礎上新增的一些額外功能,以及這一切如何在編輯器中體現。

使用現有的完成檔案

只需將您的 *.sublime-completions 檔案重新命名為 *.scripted-completions,並將它們放置在您的 ${user.home}/.scriptedrc 目錄中。完成檔案也存在於 scripted/completions 目錄中,但這些完成是由 scripted 本身提供的,並且每次升級都會被覆寫。

作為範例

  1. PHP.sublime-completions 檔案放置在您的 Sublime Text 發行版中的 .scriptedrc 目錄中。在 Mac 上,此檔案可以在這裡找到 ${HOME}/Library/Application Support/Sublime Text 2/Packages/PHP/PHP.sublime-completions
  2. 將其重新命名為 PHP.scripted-completions
  3. 重新啟動 Scripted 伺服器(在命令列上執行 scr -r)以載入新檔案(請記住...Scripted 是一個 node 應用程式)
  4. 重新整理編輯器頁面並開啟一個 php 檔案。
  5. 內容輔助現在將在您的編輯器中顯示新的 PHP 完成
您將看到類似這樣的內容

選擇建議將顯示這個

就這麼簡單。

建立您自己的完成檔案

讓我們使用 PHP 完成的簡化部分作為範例

第一行是 scope,Sublime 和 Scripted 都使用它來判斷完成啟用的上下文。 Scripted 只識別 scope 第一個字詞的檔案副檔名(例如,php)來判斷這些完成在哪些檔案類型中啟用。 Sublime 對 scope 有更複雜的概念,Scripted 尚未(還沒有)實作。接下來是完成的陣列。如果前綴匹配,單個字串元素(例如,php)將該條目新增到內容輔助建議清單中。稍微複雜一點的是具有 triggercontents 的條目。 trigger 指的是將觸發完成出現在建議清單中的文字。 content 區段是將取代 trigger 的文字。 $1$2 等指的是編輯時的 Tab 停靠點。 Tab 停靠點可以這樣命名 ${1:text}$0 是跳脫位置,也就是在按下 Enter 鍵後游標將跳到的位置。如果未指定,跳脫位置預設為完成的最後一個字元之後。 sublime-completions 和 scripted-completions 之間有一些差異需要注意

  1. Scripted 不識別 scope 中的分割區。 Scripted 僅識別檔案副檔名。
  2. 我們使用 json5 來解析 scripted-completions 檔案,因此您可以在您的 JSON 文字中包含註解和未加引號的鍵。

檔案中的任何錯誤都將記錄在 ${TEMP}/scripted.log 檔案中。有關 sublime-completions 檔案格式的完整參考,請 由此取得

其他功能

Scripted 提供了一些 Sublime 中沒有的額外功能。

變數

您可以包含要在內容輔助建議中展開的變數。例如

內容輔助將看起來像這樣

按下 Enter 鍵將產生這個

目前支援的變數有

  • ${year} 當前年份
  • ${file} 編輯器中目前檔案的完整路徑
  • ${dir} 目前檔案的目錄名稱
  • ${projectDir} 目前 scripted 專案的目錄
  • ${selection} 編輯器中目前選取的文字
  • ${lineStart} 目前行的開頭空白
  • ${indent} 預設為 '\t',並且可以配置
${lineStart}${indent} 變數不需要明確使用。您的完成中的每個 '\n' 都將被替換為 ${lineStart},每個 '\t' 都將被替換為 ${indent}
範本
範本是一種特殊的完成類型。當使用非空選取範圍調用內容輔助時,所有範本(且僅限範本)都將顯示,而與前綴無關。範本可用於將您的程式碼包圍在區塊中。要將完成標記為範本,請將 isTemplate: true 新增到完成中。例如,給定這個完成

您可以在編輯器中使用它,像這樣

按下 Enter 鍵或點擊,範本即會套用

請注意,格式設定已正確套用,使用現有的空白來縮排程式碼。

目前狀態

scripted-completions 的早期形式在 0.3 中可用,但要使用這篇部落格文章中描述的所有功能,您應該從 github 上的 Scripted 儲存庫 的 master 分支工作。

在撰寫本文時,Scripted 為 html 和 JavaScript 提供完成,我們計劃為更多語言提供建議。當然,您可以新增自己的。如果您想成為一個良好的開源公民,請考慮為您建立的任何新完成檔案提交 Pull Request。

取得 Spring 電子報

隨時掌握 Spring 電子報的最新資訊

訂閱

搶先一步

VMware 提供培訓和認證,以加速您的進展。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔案。

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部