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

如何为github开发一个软件包的原子代码编辑器

Christopher Nolan
发布: 2025-02-19 10:20:14
原创
836 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板