最先开辟atom插件(并没有系列)

atom高等用法???除了自定义功用基本没啥好玩,抱着装逼的主意,搜了一波atom插件入门,发明说得太含糊(能够是我太菜),然后翻开了官网的插件文档,细细的浏览起来,凭着糟糕的英语水平也算看懂了也许,干脆就翻译下来(由于搜到的中文atom遨游飞翔手册,插件篇是空的),愿望凭着本身的明白,能写得更浅显。让有心人能看懂官方模版代码。(注重:本文目标不在开辟一个什么什么插件,只通知你怎样举行开辟)

注:下文并没有太多代码,代码发起到你新建一个模版插件(然后你就具有了一切的代码),然后依据下文加深本身的明白,相信你会看懂它。

Atom插件编写指南(官方文档翻译)

  • 运用package-generator
  • ctrl-shift-p 翻开敕令输入框输入package-generator就能够找到该敕令

插件中的package.json文件

  • 基本和 node 的package.json雷同.
  • atom独占的属性:

    • main:你的package的进口js文件途径,假如没有,默许运用index.coffe或许index.js
    • styles: 一个字符串数组,决议款式加载的递次,默许字母递次
    • keymaps: 一个字符串数组,键盘映照的加载递次,默许字母
    • menus: 一个字符串数组,菜单映照递次,默许字母
    • snippet : 字符串数组,默许字母
    • activationCommands : 一个对象,能够分辨触发激活你的包的敕令,键是css挑选器,值是一个字符串敕令数组,只要个中一个敕令在划定的css范围内触发,atom才会加载你的包,假如不指定,你的进口文件的activate()要领会在包加载后挪用,
    • activationHooks: 不是很懂,也许是运用什么语法去诠释剧本(引荐到寓目英文版本)

源代码

  • 假如你想继续atom的行动,你的package应当包括一个单一的[top-level]顶级模块(就是你package.json内里 main 指定的模块),你的代码应当写在lib目次下,然后requiredmain 指定的文件(用官方插件天生的模版中 mian 指定的就是顶级模块) 假如你再package.json 内里没有设置,就会默许认为是 index.js 是主进口;
  • 顶级模块是一个治理你的插件的生命周期的单一对象,不管你的插件创建了多少个视图,增加到哪一个位置,这悉数都有顶级模块治理
  • 顶级模块能够完成下面的要领

    - activate(state): 插件激活时被挪用。假如你完成了 serialize() 接口,它会通报窗口上次的state. 平常用这个接口来初始化插件。
    - initialize(state): (Atom 1.14今后的版本支撑) 与activate() 功用相似,不过被挪用的更早,能够说在一切操纵之前被挪用。 假如你想等环境运转终了了再初始化,请用 activate() 。假如须要在画面组织前实行什么,请用initialize() 。
    - serialize(): 在窗口被封闭的时刻,许可你返回 JSON 序列,来保存当前的状况。你保存的信息,能够通报给activate() 接口,来在下次启动时恢复你的窗口状况。
    - deactivate(): 窗口封闭时会挪用这个接口,假如你的插件正在运用某些资本,或关联着某些文件,请在这里开释他们。

style-sheels

  • 你的款式应当写在styles里,当你的包激活的时刻,在这个目次的任何款式都会被加载,你能够检察atom的ui组件实行styleguide敕令.假如你不须要款式文件保存就好,假如你要指定色彩和大小,请运用主题供应的变量(这里有点贫苦,还要去检察别的的文档).

keymaps

  • 指定快捷键,会coffeeScript 或许 json 语法,一看就懂.

menus

  • context-menu 定义右键菜单,一看就懂

    "context-menu": {
    "atom-text-editor": [
       {
         "label": "Toggle your-name-word-count",
         "command": "your-name-word-count:toggle"
       }
      ]
     }
  • menu 定义导航菜单,同上,有json基本的基本一看就懂。

最先开辟

  • 进口js文件有4个要领,activate(),deactivate(),serialize(),toggle();

    • deactivate(); 开释资本的要领,不要做其他事变。
    • serialize(); 序列化要领,做一些状况保存的事情,不要做其他事变.
    • activate(); 唯一须要激活的要领,在atom加载后会自动实行
  • 主要领的toggle要领不会自动实行,须要手动实行.
  • CompositeDisposable class 注册插件中能够被挪用的敕令.
  • 本例子中toggle要领只是简朴的显现画面与隐蔽画面.

the flow (atom启动流程)

  1. 启动atom
  2. 加载paceage
  3. atom read your package.json
  4. atom loads styles menus keymaps main module
  5. atom finishs loading package
  6. 在某个点,用户触发了你的toggle敕令
  7. atom实行你的激活要领(avtitave);
  8. atom实行toggle要领.
  9. 在某个时刻,用户有触发了你的toggle敕令
  10. atom又实行你的toggle要领
  11. 末了atom会封闭任何你定义的序列化

当你不运用actitaveCommand这个属性时 实行的递次会有所不同

最先修正

  • 继续atomUI 即绘制本身的ui addModalPanel();

    this.modalPanel = atom.workspace.addModalPanel({
      item: this.commentHighlightView.getElement(),
      visible: false
    });
  • 继续ui要领2:你还能够把上面的item 增加到workspace上去;

    • tree view, console debugger, outline view 等等面板都是用这个完成的;
  • const edit = atom.workspace.getActiveTextEditor(); 猎取当前编辑器对象
  • edit.getText(); 猎取一切文本
  • edit.insertText(); 假如选中了文本这个要领会替代文本,假如没有则在光标处增加文本;
  • edit.getSelectedText(); 显著是猎取到挑选到的文本
    原文作者:les_lee
    原文地址: https://segmentfault.com/a/1190000015679584
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞