目录
基本信息
语法规则
匹配语法元素
匹配多个元素
使用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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

2025年最佳10个最佳免费反向链接检查器工具 2025年最佳10个最佳免费反向链接检查器工具 Mar 21, 2025 am 08:28 AM

网站建设只是第一步:SEO与反向链接的重要性 建立网站只是将其转化为宝贵营销资产的第一步。您需要进行SEO优化,以提高网站在搜索引擎中的可见度,吸引潜在客户。反向链接是提升网站排名的关键,它向谷歌和其他搜索引擎表明您的网站权威性和可信度。 并非所有反向链接都有利:识别并避免有害链接 并非所有反向链接都有益。有害链接会损害您的排名。优秀的免费反向链接检查工具可以监控链接到您网站的来源,并提醒您注意有害链接。此外,您还可以分析竞争对手的链接策略,从中学习借鉴。 免费反向链接检查工具:您的SEO情报员

使用GO构建网络漏洞扫描仪 使用GO构建网络漏洞扫描仪 Apr 01, 2025 am 08:27 AM

此基于GO的网络漏洞扫描仪有效地确定了潜在的安全弱点。 它利用了GO的并发功能的速度功能,包括服务检测和漏洞匹配。让我们探索它的能力和道德

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

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

See all articles