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)。
相關文章
- Webpack飛行手冊Web
- Laravel6.X 手冊翻譯Laravel
- 翻譯:man getopt(1)中文手冊
- ZooKeeper開發手冊中文翻譯
- TypeScript 官方手冊翻譯計劃【十三】:模組TypeScript
- TypeScript 官方手冊翻譯計劃【十二】:類TypeScript
- TypeScript 官方手冊翻譯計劃【一】:基礎TypeScript
- Netty使用者手冊簡單翻譯Netty
- 谷歌 Web 開發最佳實踐手冊:目錄(中文翻譯進行中)谷歌Web
- TypeScript 官方手冊翻譯計劃【五】:物件型別TypeScript物件型別
- 翻譯:SET Variable(已提交到MariaDB官方手冊)
- 翻譯:window function(已提交到MariaDB官方手冊)Function
- 翻譯:TRUNCATE TABLE(已提交到MariaDB官方手冊)
- 翻譯:INSERT(已提交到MariaDB官方手冊)
- TypeScript 官方手冊翻譯計劃【二】:普通型別TypeScript型別
- 翻譯:delete語句(已提交到MariaDB官方手冊)delete
- 翻譯:update語句(已提交到MariaDB官方手冊)
- 【風農翻譯】畫素寶典 #6 魔法特效、肖像、飛行特效
- TypeScript 官方手冊翻譯計劃【六】:型別操控-泛型TypeScript型別泛型
- 翻譯:SET PASSWORD語句(已提交到MariaDB官方手冊)
- 翻譯:DECLARE HANDLER語句(已提交到MariaDB官方手冊)
- 翻譯:非遞迴CTE(已提交到MariaDB官方手冊)遞迴
- 飛行員手冊是避免工作失誤的最佳手段
- 翻譯:insert on duplicate key update(已提交到MariaDB官方手冊)
- 【譯】JavaScript 完整手冊JavaScript
- [譯] fasthttp 文件手冊ASTHTTP
- TypeScript 官方手冊翻譯計劃【十】:型別操控-對映型別TypeScript型別
- TypeScript 官方手冊翻譯計劃【九】:型別操控-條件型別TypeScript型別
- TypeScript 官方手冊翻譯計劃【十一】:型別操控-模板字面量型別TypeScript型別
- TypeScript 官方手冊翻譯計劃【七】:型別操控-型別操作符TypeScript型別
- Python 使用白嫖網易翻譯 API 進行翻譯PythonAPI
- (翻譯)給iOS開發者的GCD使用手冊iOSGC
- [譯] Vue Router 實戰手冊Vue
- 【翻譯】GRAIL-手寫識別AI
- TypeScript 官方手冊翻譯計劃【八】:型別操控-按索引訪問的型別TypeScript型別索引
- 翻譯:如何向MariaDB中快速插入資料(已提交到MariaDB官方手冊)
- 重磅 | 李飛飛 CS231n 官方筆記授權翻譯正式釋出!筆記
- 翻譯