如今是時候來介紹在這一Hackable的編輯器中,真正「Hackable」的部分了。像咱們在整個第二章中看到的那樣,Atom中很大一部分都由一大堆包組成。若是你想向Atom中添加一些功能,你必需要訪問和Atom核心特性相同的API和工具。從樹視圖、命令面板到查找替換功能,甚至Atom的絕大多數核心特性都是以包的形式實現的。css
最開始,咱們假設在某種程度上,你只知道不多的事情。因爲Atom徹底採用web技術實現,咱們必須假設你知道CoffeeScript和Less的任何事情,它們是Javascript和CSS的預處理器。web
若是你不瞭解CoffeeScript,可是熟悉JavaScript,就應該沒有太大問題。下面是一個CoffeeScript的簡單示例:markdown
MyPackageView = require './my-package-view' module.exports = myPackageView: null activate: (state) -> @myPackageView = new MyPackageView(state.myPackageViewState) deactivate: -> @myPackageView.destroy() serialize: -> myPackageViewState: @myPackageView.serialize()
咱們會展現一些這樣的例子,而這就是這門語言的樣子。less
在Atom中,你能用CoffeeScript作的任何事情均可以用JavaScript來作,可是因爲大多數社區都用CoffeeScript,你可能會想用它來編寫你的包。這會有助於你從開源社區中獲取代碼,而且在許多實例中編寫更簡單的代碼。編輯器
你能夠在coffeescript.org上面複習CoffeeScript。函數
Less是源於CSS的簡化轉換,它向CSS中添加了一些有用的東西,好比變量和函數。你能夠在lesscss.org上面複習Less的技巧。可是咱們對Less的使用並不涉及到這本書中太複雜的部分,因此你只要懂得CSS的基本知識就夠了。工具
當Atom完成加載以後,它會運行你~/.atom
目錄中的init.coffee
文件,給你一個機會來運行CoffeeScript代碼來執行自定義。這個文件中的代碼能夠充分訪問到Atom API。若是自定義的代碼變得很大,考慮建立一個包,這部分會在「字數統計包」一節中介紹。ui
你能夠在編輯器中從Atom > Open Your Init Script
菜單打開init.coffee
文件。這個文件也能夠命名爲init.js
來包含JavaScript代碼。atom
例如,若是你在設置中開啓了蜂鳴提示音,你能夠將如下代碼添加到init.coffee
,讓Atom在每次加載時用蜂鳴提示音向你打招呼。spa
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)。