Одна из хороших вещей о Textmate была способность трубы содержимое всей сферы в команде, например, так:Использовать весь размах в качестве входных данных плагина в Sublime Text 2
Вы могли бы затем укажите область действия, например meta.class.python
или что угодно.
Я пытаюсь написать небольшой плагин, который будет транслировать всю текущую область как вход для плагина (например (не совсем то, что я пытаюсь сделать, но закрываю), функцию, которая позволяет вам закомментировать весь класс Python, не выбирая все)
Используя текущий выбор (ы) в качестве входных данных достаточно просто:
import sublime, sublime_plugin
import re
class DoStuffWithSelection(sublime_plugin.TextCommand):
def run(self, edit):
for region in self.view.sel():
if not region.empty():
changed = region # Do something to the selection
self.view.replace(edit, region, changed) # Replace the selection
Я обыскивал Sublime Text плагин API для какого-то способа сделать что-то как for region in self.view.scope()
, но безуспешно.
Есть ли способ использовать содержимое текущей области под курсором в качестве входа для функции плагина? Или, что еще лучше, способ использовать всю область действия, если нет выбора, но используйте выделение, если оно есть.
Спасибо!
Использование примера 'if region.empty()' успешно получает всю строку, где находится курсор, но не получит всю область видимости. Он также не позволит вам указать, какую область вы хотите (например, класс Python имеет 'source.python'' meta.class.python' и 'entity.name.type.class.python' как области действия, никоим образом выбрать тот, который будет использовать плагин. – Andrew