搜索
首页科技周边IT业界如何为github开发一个软件包的原子代码编辑器

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
定制电信软件的好处定制电信软件的好处May 11, 2025 am 08:28 AM

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

CNCF触发了ARM64和X86的平台平等突破CNCF触发了ARM64和X86的平台平等突破May 11, 2025 am 08:27 AM

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

21个开发人员新闻通讯将在2025年订阅21个开发人员新闻通讯将在2025年订阅Apr 24, 2025 am 08:28 AM

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

使用AWS ECS和LAMBDA的无服务器图像处理管道使用AWS ECS和LAMBDA的无服务器图像处理管道Apr 18, 2025 am 08:28 AM

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

CNCF ARM64飞行员:影响和见解CNCF ARM64飞行员:影响和见解Apr 15, 2025 am 08:27 AM

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

See all articles

热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

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

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

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

禅工作室 13.0.1

禅工作室 13.0.1

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

mPDF

mPDF

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