Sublime插件開發API手冊[中文版]html
本文爲Sublime插件API手冊的中文翻譯版本,英文版地址:http://www.sublimetext.com/docs/2/api_reference.htmllinux
翻譯和理解水平有限,有不當的地方歡迎指正。部分方法描述裏添加了些我的的註解,但願有助於理解方法的使用。windows
後期若是有更多實踐經驗的話再回過頭來修正可能解釋有誤的地方,或加些註解。api
在sublime的插件目錄下Packages/Default裏有幾個預置的插件,能夠做爲參考看看:數組
Packages/Default/delete_word.py 刪除光標左邊或者右邊的一個單詞安全
Packages/Default/duplicate_line.py 複製當前行多線程
Packages/Default/goto_line.py 提示用戶輸入,而後更新選擇點架構
Packages/Default/font.py 展現瞭如何使用settings異步
Packages/Default/mark.py 用了add_regions() 往行頭槽裏插入圖標編輯器
Packages/Default/trim_trailing_whitespace.py 保存前修改緩衝區
方法 | 返回值 | 描述 |
---|---|---|
set_timeout(callback, delay) | None | 延時調用 (毫秒). 回調的順序會按添加的順序依次執行. 多線程調用setTimeout也是安全的. |
status_message(string) | None | 設置狀態欄消息. |
error_message(string) | None | 顯示一個error對話框. |
message_dialog(string) | None | 顯示一個message對話框. |
ok_cancel_dialog(string, <ok_button>) | bool | 顯示一個"確認/取消"的對話框。若是有"確認"按鈕,點擊確認返回True. |
load_settings(base_name) | Settings | 載入一個配置,name參數要包括文件名和後綴而不是路徑。會根據base name搜索插件包,結果返回setting對象。後續調用load_settings載入同一個base_name將返回同一個對象,而不會從新從磁盤讀取文件。 |
save_settings(base_name) | None | 保存配置,寫入磁盤。 |
windows() | [Window] | 返回打開窗口的列表。 |
active_window() | Window | 返回最近使用的一個窗口。 |
packages_path() | String | 返回packages目錄的路徑. |
installed_packages_path() | String | 返回全部用戶 *.sublime-package文件的目錄。 |
get_clipboard() | String | 返回剪貼板的內容。 |
set_clipboard(string) | None | 設置剪貼板的內容。 |
score_selector(scope, selector) | Int | 把選擇器設置成對應的區域,返回區域值。 0標示沒有選區,大於0表示有一個選區。 不一樣的選擇器能夠經過scope來比較: scope值越高說明這段選區越適合這個選擇器. |
run_command(string, <args>) | None | 運行ApplicationCommand,string是command名字,args是傳給command的參數。 |
log_commands(flag) | None | 控制命令的日誌。若是啓用,全部command從快捷鍵,菜單中執行都回記錄到控制檯。 |
log_input(flag) | None | 控制日誌輸出。若是啓用,全部按鍵都回被記錄到控制檯。 |
version() | String | 返回版本號。 |
platform() | String | 返回運行的平臺。"osx", "linux" 或者 "windows"。 |
arch() | String | 返回CPU架構。64/32位,"x32" or "x64"。 |
view表明了text buffer(緩衝區)中的視圖。注意,多個view能夠引用同一段buffer, 可是它們有本身惟一的選區和幾何形狀。
方法 | 返回值 | 描述 |
---|---|---|
id() | int | 返回當前view的惟一標識ID。 |
buffer_id() | int | 返回當前view下buffer標識的惟一ID。 |
file_name() | String | 返回buffer關聯的完整文件名,若是沒有緩衝區存儲在磁盤的話返回None。(buffer指緩衝區,下同) |
name() | String | 返回buffer指定的名稱。 |
set_name(name) | None | 設置buffer的名稱。 |
is_loading() | bool | 若是buffer還在從磁盤載入返回ture,表示還未準備好給用戶使用。 |
is_dirty() | bool | 返回是否有未保存到buffer的修改。 |
is_read_only() | bool | 返回true,若是buffer不容許修改。 |
set_read_only(value) | None | 設置緩衝區不可修改。 |
is_scratch() | bool | 若是緩衝區是臨時緩衝區返回True。臨時緩衝區不會報告爲dirty。 |
set_scratch(value) | None | 設置buffer爲臨時緩衝區。 |
settings() | Settings | 返回view的settings對象。settings對象對當前view是私有的。 |
window() | Window | 返回持有當前view的window。 |
run_command(string, <args>) | None | 運行指定的TextCommand,args傳入參數。 |
size() | int | 返回文件中字符總數量。 |
substr(region) | String | 返回region選區內容字符串。 |
substr(point) | String | 返回point點的右側字符。 |
begin_edit(<command>, <args>) | Edit | 建立一個edit對象,能夠劃定一組撤銷操做,須要對應到 end_edit()標記。 |
end_edit(edit) | Edit | 標記完成一個edit對象。(譯者注:begin_edit到end_edit之間的操做能夠當成一個命令分組,能夠用於撤銷操做。) |
insert(edit, point, string) | int | 在緩衝區指定的點插入一個字符串。返回插入的字符數量;若是插入當前緩衝區的tabs返回有點區別。 |
erase(edit, region) | None | 從緩衝區移除region選區內容。 |
replace(edit, region, string) | None | 把region選區內容替換成指定的字符串。 |
sel() | RegionSet | 返回selection(選擇)的引用。 |
line(point) | Region | 返回point點所在的行。 |
line(region) | Region | 返回region區域行頭到行尾的一份拷貝,從行頭到行尾可能跨了多行(譯者注:換行顯示的時候,可是中間沒有換行符)。 |
full_line(point) | Region | 同 line(),可是尾部有換行符的時候也包括了換行符。 |
full_line(region) | Region | 同 line(), 可是尾部有換行符的時候也包括了換行符 |
lines(region) | [Region] | 返回region區域的全部行列表 (通過排序) 。 |
split_by_newlines(region) | [Region] | 用換行符把整個region分割成多個region區域,返回region列表。 |
word(point) | Region | 返回包含point點的單詞。 |
word(region) | Region | 返回包含region區域的單詞區域(從第一個單詞的開頭,到最後一個單詞的末尾)。有可能會跨多個單詞。 |
find(pattern, fromPosition, <flags>) | Region | 返回匹配的第一個區域,從指定的點位置開始,沒有匹配結果返回None。flags參數能夠是 sublime.LITERAL, sublime.IGNORECASE, 或者2個"或運算"。 |
find_all(pattern, <flags>, <format>, <extractions>) | [Region] | 返回全部(無重疊)的匹配區域結果。flags參數同上, 若是有format參數,全部匹配結果都會按指定格式被格式化並添加到extractions列表裏。 |
rowcol(point) | (int, int) | 計算指定點從0開始的行位置和列位置。 |
text_point(row, col) | int | 計算指定行,列位置字符的偏移量。"col"("列")是從一行的行頭開始的字符數量。 |
set_syntax_file(syntax_file) | None | 指定語法文件。view. syntax_file文件應該是按行來定義語法名稱,基於Packages/Python/Python.tmLanguage。接受當前語法可使用view.settings().get('syntax')。 |
extract_scope(point) | Region | 返回指定點位置字符語法名稱的範圍。 |
scope_name(point) | String | 返回指定點位置字符的語法名稱。 |
score_selector(point, selector) | Int | 返回包含指定點位置的選擇器(selector)的數量(score)。score爲0表示沒有匹配, 大於0表示一個匹配,不一樣的選擇器能夠經過scope來比較: scope值越高說明這段選區越適合這個選擇器。 |
find_by_selector(selector) | [Regions] | 返回符合指定選擇器的全部區域,結果爲一個列表。 |
show(point, <show_surrounds>) | None | 滾動view到指定的點。 |
show(region, <show_surrounds>) | None | 滾動view到指定的區域。 |
show(region_set, <show_surrounds>) | None | 滾動view到能夠顯示指定的區域集。 |
show_at_center(point) | None | 滾動到view的中心位置。 |
show_at_center(region) | None | 滾動view到region區域的中心位置。 |
visible_region() | Region | 返回當前view可看見的區域。 |
viewport_position() | Vector | 返回可視區域在佈局座標中的偏移量。 |
set_viewport_position(vector, <animate<) | None | 把可視區域滾動到指定位置。 |
viewport_extent() | vector | 返回可視區域寬高。 |
layout_extent() | vector | 返回文檔layout的寬高。(譯者注:layout區域至關於編輯器裏寫的代碼的範圍,到代碼字符的最後一行和最後一列區域,下同) |
text_to_layout(point) | vector | 把文本位置轉換成layout位置。 |
layout_to_text(vector) | point | layout位置轉換成文本位置。 |
line_height() | real | 返回layout的行高。 |
em_width() | real | 範圍layout的字符寬度。 |
add_regions(key, [regions], scope, <icon>, <flags>) | None | 往view裏添加這一組區域(region)。若是region已經存在,會被覆蓋。 scope參數決定region繪製的顏色,必須是scope名稱,好比 "comment" 或者 "string"。若是沒有scope參數,region不會被寫入。 icon參數,若是有的話,每一個region前面會繪製icon標記。圖標的顏色跟scope參數有關。 icon名稱能夠是:dot、circle,、bookmark,、cross。 可選參數flags能夠是下列的組合:
|
get_regions(key) | [regions] | 返回指定key的region。 |
erase_regions(key) | None | 移除指定key的region |
set_status(key, value) | None | 往view裏添加狀態。value值會被現實在狀態欄, 以key排序,每一個狀態值逗號分隔。value爲空字符串將清空改key對應的狀態值。 |
get_status(key) | String | 返回key對應的狀態值。 |
erase_status(key) | None | 清空key對一個的狀態值。 |
command_history(index, <modifying_only>) | (String,Dict,int) | 返回undo/redo棧中保存的,命令名稱,參數和重複次數。 Index 爲0 對應最近的一次command, -1對應倒數第二次的命令,一次類推。index爲正數表明redo 棧中德命令。若是undo / redo歷史記錄不足夠多返回(None, None, 0) 。 若是modifying_only爲True (默認爲False) 將只會返回修改了緩衝區的輸入。 |
fold([regions]) | bool | 摺疊指定區域,若是已經摺疊返回False。 |
fold(region) | bool | 同上。 |
unfold(region) | [regions] | 展開對應區域的全部文本,返回展開的區域。 |
unfold([regions]) | [regions] | 同上。 |
encoding() | String | 返回當前文件編碼。 |
set_encoding(encoding) | None | 設置文件編碼,文件下一次保存時生效。 |
line_endings() | String | 返回當前文件使用的換行符模式。(譯者注:windows系統下回返回"Windows") |
set_line_endings(line_endings) | None | 設置文件的換行符模式,下一次保存時生效。 |
維護一組區域,確保區域間沒有重疊。區域的按保存的順序持有。
方法 | 返回值 | 描述 |
---|---|---|
clear() | None | 移除全部區域。 |
add(region) | None | 添加指定區域。若是已經存在與該region有交集的區域,會被合併。 |
add_all(region_set) | None | 添加region_set裏的全部區域。 |
subtract(region) | None | 從全部region中移除指定區域。 |
contains(region) | bool | 若是全部區域中包含指定的region返回true。 |
表明了buffer中的一塊區域。空白區域能夠相等(==)。
構造器 | 描述 |
---|---|
Region(a, b) | 建立一塊區域。 |
屬性 | 類型 | 描述 |
---|---|---|
a | int | region區域的第一個結束位置。(譯者注:結束位置是相對於整個文檔的第一個開始字符而言。) |
b | int | region區域的第二個結束位置。b可能會比a小,這樣的話就至關於一個反轉的區域。 |
方法 | 返回值 | 描述 |
---|---|---|
begin() | int | 返回a,b中較小的值。 |
end() | int | 返回a,b中較大的值。 |
size() | int | 返回區域的字符總數。始終 >= 0。 |
empty() | bool | 若是begin()==end(),返回True。 |
cover(region) | Region | 返回一個跨越當前region和指定region的一個新的區域。 |
intersection(region) | Region | 返回當前region和指定region的交集。 |
intersects(region) | bool | 若是this==region或者當前region和指定region都包含了一個或多個一樣的位置。(譯者注:其實就是判斷指定的region和當前的region是否有交集) |
contains(region) | bool | 若是指定的region是當前region的一個子集返回True。 |
contains(point) | bool | 若是begin() <= point <= end()返回True。(譯者注:point點在當前區域範圍內)。 |
Edit對象沒有方法,它是用於對buffer的修改進行分組。
能夠經過view.begin_edit()來建立。每個begion_edit()調用都要對應一個view.end_edit()調用。一般會寫在try ... finally塊內。
方法 | 返回值 | 描述 |
---|---|---|
(無方法) |
方法 | 返回值 | 描述 |
---|---|---|
id() | int | 返回window的ID. |
new_file() | View | 建立一個文件。返回一個空的view,view的is_loaded方法返回True。 |
open_file(file_name, <flags>) | View | 打開指定文件,並返回對應的view。若是文件已經被打開,會切換到當前當前視圖。注意,文件載入是異步的,view的is_loading() 方法返回False前不能對文件進行操做。 可選參數flags能夠是下列的組合:
|
active_view() | View | 返回當前正在編輯的view。 |
active_view_in_group(group) | View | 返回指定組裏正在編輯的view。 |
views() | [View] | 返回window中全部打開的view。 |
views_in_group(group) | [View] | 返回指定組裏的全部view。 |
num_groups() | int | 返回window中打開的view分組的總數。 |
active_group() | int | 返回當前選中組的索引。 |
focus_group(group) | None | 激活指定分組。 |
focus_view(view) | None | 切換到指定view。 |
get_view_index(view) | (group, index) | 返回view的分組,和在分組裏的索引。若是沒有返回-1。 |
set_view_index(view, group, index) | None | 把view移動到指定分組和指定的索引位置。 |
folders() | [String] | 返回當前打開的文件夾列表。(譯者注:sublime左側顯示的folders列表的每一個跟目錄)。 |
run_command(string, <args>) | None | 運行WindowCommand,傳入指定參數。 |
show_quick_panel(items, on_done, <flags>) | None | 顯示一個選擇列表中某個選項的快速麪板。 on_done會被調用一次,接受選中項的索引爲參數。若是快速麪板被取消,on_done調用的時候接收的參數爲-1。 Items 能夠是字符串數組,或者一個字符串數組的數組(二維字符串數組)。若是是後者,快速麪板裏的每一個條目會顯示成多行。 Flags 只能有一個值: sublime.MONOSPACE_FONT |
show_input_panel(caption, initial_text, on_done, on_change, on_cancel) | View | 顯示一個輸入面板,收集用戶的一行輸入。caption是輸入框的標題,on_done 和 on_change若是不爲空的話須要是一個接受一個字符串的函。on_cancel 是一個無參數的函數。 |
get_output_panel(name) | View | 返回view對應的指定名稱的輸出面板,若是有必要會建立。output面板能夠經過運行show_panel( window command)來顯示,panel 的名稱會加上 "output." 前綴。 |
方法 | 返回值 | 描述 |
---|---|---|
get(name) | value | 返回指定名稱的設置。 |
get(name, default) | value | 返回指定名稱的設置,若是沒有定義該設置返回默認的。 |
set(name, value) | None | 設置某個名稱的配置,只能接受原類型,列表, lists,字典。 |
erase(name) | None | 移除某個配置。若是是繼承自父配置不會被刪除。 |
has(name) | bool | 判斷當前配置類中是否存在某個配置或者父配置中是否存在。 |
add_on_change(key, on_change) | None | 註冊當前配置對象的change的回調。只要有一個配置發生變化都會被回調。. |
clear_on_change(key) | None | 移除指定的change回調。 |
方法 | 返回值 | 描述 |
---|---|---|
(無方法) |
注意,有許多事件是view下的buffer緩衝區觸發的,並且這些方法只調用一次, view做爲第一個參數。
方法 | 返回值 | 描述 |
---|---|---|
on_new(view) | None | 當建立一個新的buffer時觸發。 |
on_clone(view) | None | 當從一個已存在的view複製一份時觸發。 |
on_load(view) | None | 當文件載入完成時觸發。 |
on_close(view) | None | 當view被關閉時觸發(注意,在同一buffer中可能還有其它view)。 |
on_pre_save(view) | None | 在一個view保存前觸發。 |
on_post_save(view) | None | 在一個view保存後觸發。 |
on_modified(view) | None | view被修改後觸發。 |
on_selection_modified(view) | None | view裏的選區變化時觸發。 |
on_activated(view) | None | 一個view被激活時觸發。 |
on_deactivated(view) | None | 一個view被隱藏時觸發(被切換到後臺)。 |
on_query_context(view, key, operator, operand, match_all) | bool or None | 當使用給定的上下文key去觸發一個key綁定時觸發。若是插件知道如何處理上下文能夠返回True 或者 False。若是上線問是未知的,應該返回None。 operator可取下列某個值:
若是context涉及到選擇(selections)應該使用match_all:是否每一個選擇都須要匹配(match_all = True), 還至少要一個選擇匹配 (match_all = Fals)。 |
方法 | 返回值 | 描述 |
---|---|---|
run(<args>) | None | 當command運行時執行。 |
is_enabled(<args>) | bool | 若是command在當前時間可運行返回True。 默認實現都返回Flase。 |
is_visible(<args>) | bool | 若是command在當前可顯示在菜單。默認實現都返回False。 |
description(<args>) | String | 返回command的描述。在菜單中使用,若是沒有標題的狀況下。返回None獲取默認描述。 |
WindowCommands 每一個window只初始化一次。Window對象能夠經過self.window來引用。
方法 | 返回值 | 描述 |
---|---|---|
run(<args>) | None | command運行時調用。 |
is_enabled(<args>) | bool | 若是command在當前時間可運行返回True。 默認實現都返回Flase。 |
is_visible(<args>) | bool | 若是command在當前可顯示在菜單。默認實現都返回False。 |
description(<args>) | String | 返回command的描述。在菜單中使用,若是沒有標題的狀況下。返回None獲取默認描述。 |
TextCommands每一個view只初始化一次。能夠經過self.view放訪問當前view。
方法 | 返回值 | 描述 |
---|---|---|
run(edit, <args>) | None | command運行時調用。 |
is_enabled(<args>) | bool | 若是command在當前時間可運行返回True。 默認實現都返回Flase。 |
is_visible(args) | bool | 若是command在當前可顯示在菜單。默認實現都返回False。 |
description(args) | String | 返回command的描述。在菜單中使用,若是沒有標題的狀況下。返回None獲取默認描述。 |