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中文网其他相关文章!