Atom编辑器扩展指南:创建并发布自己的语法高亮包
Atom编辑器功能强大,但有时你可能需要一些默认情况下未提供的功能,比如针对特定语言的语法高亮。这时,创建自定义包就显得尤为重要。本文将指导你创建一个语法高亮包,并将其发布到Atom社区。
核心要点:
- 通过创建自定义包来扩展Atom编辑器的功能,尤其适用于默认情况下缺少的功能。
- 在
.atom/packages
目录下创建文件夹并添加有效的package.json
文件来初始化新的包。 - 对于语法高亮,创建
grammars
子文件夹,在CSON文件中定义语言规则,并指定Atom如何识别和高亮显示语言语法。 - 使用
View/Reload
功能在Atom中测试你的包,以便立即查看更改并确保功能正常。 - 在GitHub上设置公共仓库,然后使用
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中文网其他相关文章!

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显着改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

Arm64 架构开源软件的 CI/CD 难题与解决方案 在 Arm64 架构上部署开源软件需要一个强大的 CI/CD 环境。然而,Arm64 和传统 x86 处理器架构的支持水平之间存在差异,Arm64 通常处于劣势。面向多种架构的基础设施组件开发人员对工作环境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因采用不太流行的平台而需要改变开发流程。 性能:平台和支持机制具有良好的性能,确保在支持多个平台时部署方案不会因速度不足而受影响。 测试覆盖率:对所有平台同时进行效率、合规性和

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1
功能强大的PHP集成开发环境

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),