Atom編輯器擴展指南:創建並發布自己的語法高亮包
Atom編輯器功能強大,但有時你可能需要一些默認情況下未提供的功能,比如針對特定語言的語法高亮。這時,創建自定義包就顯得尤為重要。本文將指導你創建一個語法高亮包,並將其發佈到Atom社區。
核心要點:
.atom/packages
目錄下創建文件夾並添加有效的package.json
文件來初始化新的包。 grammars
子文件夾,在CSON文件中定義語言規則,並指定Atom如何識別和高亮顯示語言語法。 View/Reload
功能在Atom中測試你的包,以便立即查看更改並確保功能正常。 apm publish
命令將你的包發佈到Atom社區,讓其他開發者受益。 我們將構建什麼?
本文將指導你創建一個類似於language-scilab
的語法高亮包,你可以將其應用於你需要的任何語言。我們將學習如何初始化一個新的包,編寫語法高亮規則,以及如何將你的包發佈到Atom社區。
初始化新的Atom包
Atom使用一個名為.atom
的配置文件文件夾來存儲個人選項和已安裝的包。包位於該文件夾的packages
子文件夾中,每個包都有自己的文件夾。
第一步是創建你的包文件夾,例如language-mylanguage
(這是添加語言支持的命名約定)。然後,在該文件夾中創建package.json
文件,Atom才能識別並加載它。
以下是一個language-mylanguage
包的package.json
文件示例:
{ "name": "language-mylanguage", "version": "0.0.0", "description": "Mylanguage language support in Atom", "engines": { "atom": "*" }, "dependencies": {}, "repository": { "type": "git", "url": "https://github.com/JeremyHeleine/language-mylanguage.git" }, "bugs": { "url": "https://github.com/JeremyHeleine/language-mylanguage/issues" }, "license": "MIT" }
關鍵字段解釋:
"name"
: 包名稱。 "version"
: 版本號,遵循主版本.次版本.修訂版本的約定,初始版本建議使用0.0.0
。 "description"
: 包描述。 "engines"
: Atom的最低版本要求。 "dependencies"
: 包依賴項。 "repository"
: 包的GitHub倉庫地址(發布前可為空)。 "bugs"
: 報告問題的地址。 "license"
: 許可證。 創建好package.json
文件後,Atom就可以識別你的包了。 你可以使用View/Reload
命令強制Atom重新加載包,以便立即看到更改。
創建語法高亮包
在包文件夾中創建grammars
子文件夾,並在其中創建以語言名稱命名的CSON文件(例如mylanguage.cson
)。這個文件包含語法高亮規則。
在定義語法規則之前,需要告訴Atom如何識別你的語言:
{ "name": "language-mylanguage", "version": "0.0.0", "description": "Mylanguage language support in Atom", "engines": { "atom": "*" }, "dependencies": {}, "repository": { "type": "git", "url": "https://github.com/JeremyHeleine/language-mylanguage.git" }, "bugs": { "url": "https://github.com/JeremyHeleine/language-mylanguage/issues" }, "license": "MIT" }
scopeName
: 語言標識符,用於主題、其他包或配置文件。 name
: 在Atom編輯器底部顯示的語言名稱。 fileTypes
: 語言使用的文件擴展名數組。 所有規則都必須在patterns
數組中聲明,每個規則用{}
括起來:
'scopeName': 'source.mylanguage' 'name': 'Mylanguage' 'fileTypes': ['ext1', 'ext2']
使用match
屬性匹配語法元素,例如匹配數字:
'scopeName': 'source.mylanguage' 'name': 'Mylanguage' 'fileTypes': ['ext1', 'ext2'] 'patterns': [ { # 规则1 }, { # 规则2 } ]
match
使用正則表達式,name
指定樣式類名,遵循一定的命名約定,以便主題能夠正確應用樣式。
使用captures
屬性匹配多個元素,例如匹配函數聲明:
{ 'match': '\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\b' 'name': 'constant.numeric.mylanguage' }
begin
和end
匹配使用begin
和end
屬性匹配起始和結束標記,例如匹配單引號字符串:
{ 'match': '\b(function)\s+(\w+)\s*\(.*\)' 'captures': { '1': { 'name': 'keyword.control.mylanguage' }, '2': { 'name': 'entity.name.function.mylanguage' } }, 'name': 'meta.function.mylanguage' }
你還可以使用beginCaptures
和endCaptures
捕獲起始和結束標記,以及patterns
屬性在匹配的元素內部匹配子元素。
發布Atom包
在發布包之前,請檢查是否已存在同名包。你需要一個公共的GitHub倉庫。在package.json
文件中更新倉庫地址。
使用apm publish minor
命令發布包(minor
、major
、patch
分別對應次要版本、主要版本和補丁版本更新)。這個命令會註冊你的包名,增加版本號,創建Git標籤並推送更改。
使用apm unpublish name-of-the-package
命令取消發布包。
結語
本文介紹瞭如何創建和發布Atom語法高亮包。 Atom的靈活性允許創建各種類型的包,但本文僅限於語法高亮包的創建。 希望本文能幫助你擴展Atom編輯器的功能,並與社區分享你的成果。
常見問題解答 (FAQs)
(此處省略了原文中FAQs部分,因為該部分內容與上文高度重複,屬於對上文內容的總結和解釋,為了避免冗餘,此處不進行重複輸出。)
以上是如何為github開發一個軟件包的原子代碼編輯器的詳細內容。更多資訊請關注PHP中文網其他相關文章!