簡體   English   中英

Sublime Text 3插件開發,用於自定義自動完成功能,例如Emmet?

[英]Sublime text 3 plugin development for custom autocomplete like emmet?

我想創建諸如emmet之類的自定義插件來自動完成,並為諸如h2>span .myclass之<div class="myclass"></div> html標簽擴展標簽,以生成<div class="myclass"></div>

我從開始但沒有找到任何文檔來跟蹤用戶類型事件以及如何定義僅適用於html文件的插件范圍。

當我嘗試在班級內使用print語句時,拋出語法錯誤

def run(self, edit):
  print "i am in run"
  self.view.insert(edit, 0, "Hello, World!")

我如何在沒有打印語句的情況下調試我的插件代碼,或者有什么替代崇高插件的方法?

通常,不編寫插件來跟蹤用戶在Sublime Text中輸入的內容,而是將命令綁定到鍵綁定。 然后,當用戶在特定條件下按下在綁定上下文中定義的特定鍵時,該命令將執行並查看選擇插入標記附近的文本。

Sublime Text插件是使用Python 3開發的,其中print不是語句,而是函數。 因此,您需要使用print('I am in "run"')將調試消息輸出到ST控制台。

例如,如果這是您的插件代碼:

import sublime
import sublime_plugin


class ThisIsAnExampleCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        print('I am in the "run" method of "ThisIsAnExampleCommand"')
        self.view.insert(edit, 0, "Hello, World!")

那么您可以定義如下的綁定:

{ "keys": ["tab"], "command": "this_is_an_example",
    "context":
    [
        { "key": "selector", "operator": "equal", "operand": "text.html", "match_all": true },
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
    ]
},

當用戶按下Tab時,該選項將起作用,但前提是所有選擇均為空,並且當前正在編輯的文件的語法為HTML。

您的插件可以查看self.view.sel()以獲得選擇/插入位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM