Atom飞行手册翻译: 3.1 ~ 3.2
现在是时候来介绍在这一Hackable的编辑器中,真正“Hackable”的部分了。像我们在整个第二章中看到的那样,Atom中很大一部分都由一大堆包组成。如果你想向Atom中添加一些功能,你必须要访问和Atom核心特性相同的API和工具。从树视图、命令面板到查找替换功能,甚至Atom的绝大多数核心特性都是以包的形式实现的。
所需工具
最开始,我们假设在某种程度上,你只知道很少的事情。由于Atom完全采用web技术实现,我们必须假设你知道CoffeeScript和Less的任何事情,它们是Javascript和CSS的预处理器。
如果你不了解CoffeeScript,但是熟悉JavaScript,就应该没有太大问题。下面是一个CoffeeScript的简单示例:
MyPackageView = require './my-package-view'
module.exports =
myPackageView: null
activate: (state) ->
@myPackageView = new MyPackageView(state.myPackageViewState)
deactivate: ->
@myPackageView.destroy()
serialize: ->
myPackageViewState: @myPackageView.serialize()
我们会展示一些这样的例子,而这就是这门语言的样子。
在Atom中,你能用CoffeeScript做的任何事情都可以用JavaScript来做,但是由于大多数社区都用CoffeeScript,你可能会想用它来编写你的包。这会有助于你从开源社区中获取代码,并且在许多实例中编写更简单的代码。
你可以在coffeescript.org上面复习CoffeeScript。
Less是源于CSS的简化转换,它向CSS中添加了一些有用的东西,比如变量和函数。你可以在lesscss.org上面复习Less的技巧。但是我们对Less的使用并不涉及到这本书中太复杂的部分,所以你只要懂得CSS的基本知识就够了。
初始文件
当Atom完成加载之后,它会运行你~/.atom
目录中的init.coffee
文件,给你一个机会来运行CoffeeScript代码来执行自定义。这个文件中的代码可以充分访问到Atom API。如果自定义的代码变得很大,考虑创建一个包,这部分会在“字数统计包”一节中介绍。
你可以在编辑器中从Atom > Open Your Init Script
菜单打开init.coffee
文件。这个文件也可以命名为init.js
来包含JavaScript代码。
例如,如果你在设置中开启了蜂鸣提示音,你可以将以下代码添加到init.coffee
,让Atom在每次加载时用蜂鸣提示音向你打招呼。
atom.beep()
由于init.coffee
可以访问到Atom API,你可以使用它来实现有用处的命令,而不需要创建新的或者扩展现有的包。下面是一个使用了选择APi和剪贴板API的命令,它从被选中的文本和剪贴板内容中构建Markdown连接作为URL:
atom.commands.add 'atom-text-editor', 'markdown:paste-as-link', ->
return unless editor = atom.workspace.getActiveTextEditor()
selection = editor.getLastSelection()
clipboardText = atom.clipboard.read()
selection.insertText("[#{selection.getText()}](#{clipboardText})")
现在,重新加载Atom,并使用命令面板通过名字执行新的命令(例如“Markdown: Paste As Link”)。而且,如果你喜欢通过快捷键来触发这个命令,你可以为命令定义一个键表(keymap)。