目錄
基本信息
語法規則
匹配語法元素
匹配多個元素
使用beginend匹配
首頁 科技週邊 IT業界 如何為github開發一個軟件包的原子代碼編輯器

如何為github開發一個軟件包的原子代碼編輯器

Feb 19, 2025 am 10:20 AM

Atom編輯器擴展指南:創建並發布自己的語法高亮包

Atom編輯器功能強大,但有時你可能需要一些默認情況下未提供的功能,比如針對特定語言的語法高亮。這時,創建自定義包就顯得尤為重要。本文將指導你創建一個語法高亮包,並將其發佈到Atom社區。

How To Develop a Package for GitHub's Atom Code Editor

核心要點:

  • 通過創建自定義包來擴展Atom編輯器的功能,尤其適用於默認情況下缺少的功能。
  • .atom/packages目錄下創建文件夾並添加有效的package.json文件來初始化新的包。
  • 對於語法高亮,創建grammars子文件夾,在CSON文件中定義語言規則,並指定Atom如何識別和高亮顯示語言語法。
  • 使用View/Reload功能在Atom中測試你的包,以便立即查看更改並確保功能正常。
  • 在GitHub上設置公共倉庫,然後使用apm publish命令將你的包發佈到Atom社區,讓其他開發者受益。

我們將構建什麼?

本文將指導你創建一個類似於language-scilab的語法高亮包,你可以將其應用於你需要的任何語言。我們將學習如何初始化一個新的包,編寫語法高亮規則,以及如何將你的包發佈到Atom社區。

初始化新的Atom包

Atom使用一個名為.atom的配置文件文件夾來存儲個人選項和已安裝的包。包位於該文件夾的packages子文件夾中,每個包都有自己的文件夾。

How To Develop a Package for GitHub's Atom Code Editor

第一步是創建你的包文件夾,例如language-mylanguage(這是添加語言支持的命名約定)。然後,在該文件夾中創建package.json文件,Atom才能識別並加載它。

How To Develop a Package for GitHub's Atom Code Editor

以下是一個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'
}
登入後複製

使用beginend匹配

使用beginend屬性匹配起始和結束標記,例如匹配單引號字符串:

{
    'match': '\b(function)\s+(\w+)\s*\(.*\)'
    'captures': {
        '1': { 'name': 'keyword.control.mylanguage' },
        '2': { 'name': 'entity.name.function.mylanguage' }
    },
    'name': 'meta.function.mylanguage'
}
登入後複製

你還可以使用beginCapturesendCaptures捕獲起始和結束標記,以及patterns屬性在匹配的元素內部匹配子元素。

發布Atom包

在發布包之前,請檢查是否已存在同名包。你需要一個公共的GitHub倉庫。在package.json文件中更新倉庫地址。

使用apm publish minor命令發布包(minormajorpatch分別對應次要版本、主要版本和補丁版本更新)。這個命令會註冊你的包名,增加版本號,創建Git標籤並推送更改。

How To Develop a Package for GitHub's Atom Code Editor

使用apm unpublish name-of-the-package命令取消發布包。

結語

本文介紹瞭如何創建和發布Atom語法高亮包。 Atom的靈活性允許創建各種類型的包,但本文僅限於語法高亮包的創建。 希望本文能幫助你擴展Atom編輯器的功能,並與社區分享你的成果。

常見問題解答 (FAQs)

(此處省略了原文中FAQs部分,因為該部分內容與上文高度重複,屬於對上文內容的總結和解釋,為了避免冗餘,此處不進行重複輸出。)

以上是如何為github開發一個軟件包的原子代碼編輯器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CNCF ARM64飛行員:影響和見解 CNCF ARM64飛行員:影響和見解 Apr 15, 2025 am 08:27 AM

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效

使用AWS ECS和LAMBDA的無服務器圖像處理管道 使用AWS ECS和LAMBDA的無服務器圖像處理管道 Apr 18, 2025 am 08:28 AM

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

21個開發人員新聞通訊將在2025年訂閱 21個開發人員新聞通訊將在2025年訂閱 Apr 24, 2025 am 08:28 AM

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL

See all articles