Я хотел бы переопределить двойной щелчок в Sublime Text 3, чтобы запустить мой код плагина тогда и только тогда, когда пользователь находится в определенном виде. В противном случае двойной щелчок должен вести нормальное поведение (выделите слово и другие экземпляры в файле). Тем не менее, я не хочу, чтобы нормальное поведение выполнялось в моем пользовательском представлении.Как установить событие Sublime Text 3 для запуска как пользовательского поведения, так и поведения по умолчанию?
Соответствующий код для достижения этого в Sublime Text 2 (и Python 2) можно найти по адресу https://www.sublimetext.com/forum/viewtopic.php?f=6&t=8823, но я не могу реорганизовать его для работы в Sublime Text 3 (и Python 3).
Рабочий код (взято из вышеуказанной ссылки) для Sublime Text 2 является:
class MySpecialDoubleclickCommand(sublime_plugin.TextCommand):
def run_(self, args):
if self.view.name() == "mySpecialBuffer":
self.doMyStuff()
else:
system_command = args["command"] if "command" in args else None
if system_command:
system_args = dict({"event": args["event"]}.items() + args["args"].items())
self.view.run_command(system_command, system_args)
Для того, чтобы заставить его работать в Python 3, я переработан в коде обработки в словаре (в противном случае код является то же самое):
system_args = dict({"event" : args["event"].items() | args["args"].items()})
Однако, когда я называю run_command(system_command, system_args)
метод, который он возвращает следующее сообщение об ошибке:
File "C:\Program Files\Sublime Text 3\sublime.py", line 607, in run_command
sublime_api.view_run_command(self.view_id, cmd, args)
TypeError: Value required
Поскольку документация по API для Sublime Text 3 практически отсутствует, я пытаюсь выяснить, есть ли какая-то проблема в моем словаре system_args
или API, который просто изменился каким-то другим способом?
Если я изменил команду на идентификатор в качестве первого параметра (например, 'self.view.run_command (self.view.id, s ystem_command, system_args). Я получу следующую ошибку: «Файл» C: \ Users \ User \ AppData \ Roaming \ Sublime Text 3 \ Packages \ MyPlugin \ output.py ", строка 153, в run_ self.view. run_command (self.view.id, system_command, system_args) ТипError: run_command() принимает от 2 до 3 позиционных аргументов, но 4 даны ' – Scam
Ой, извините, моя ошибка, я неправильно прочитал код. Я думал, что вы вызываете 'sublime_api.view_run_command' прямо каким-то образом. Похоже, вы пытаетесь переопределить метод 'run_', а не обычный метод' run'. Я не знаю, что он что-нибудь исправит, вероятно, вы должны соответствовать сигнатуре существующего метода, который является 'def run_ (self, edit_token, args):' – skuroda
Такая же ошибка появляется, даже если я сопоставляю сигнатуру существующего метода , Я также попытался вызвать непосредственно 'sublime_api.view_run_command (self.view_id, cmd, args)', но это дает мне более загадочное сообщение об ошибке: 'TypeError: String required'. – Scam