2013-12-09 3 views
9

Для понимания того, что я пытаюсь достичь: печать замедленного текст в другой точке зрения ...Сохранение редактирования при запуске Sublime Text 3 плагина

Я пытаюсь сделать этот возвышенный текст 3 плагин работает должным образом я хочу называть несколько методов моего класса с помощью редактирования передается в параметре моего метода выполнения, как так:

# sample code, nothing real 
class MyCommandClass(sublime_plugin.TextCommand): 
    myEdit = None 
    def run(self, edit): 
     self.myEdit = edit 
     # stuff 
     self.myMethod() 

    def myMethod(self): 
     # use self.myEdit ... 

И я пытаюсь использовать его позже на другой метод, но когда я исполню плагин я получаю это ошибка:
ValueError: Edit objects may not be used after the TextCommand's run method has returned

Насколько я понимаю, все использование объекта редактирования должно быть до возвращения команды выполнения. И поскольку я играю с set_timeout, это может быть не так ... Так что я могу сделать?

Заранее спасибо.

ответ

12

Решение найдено, передать аргумент другому мнению и использовать редактирование:

class MainCommand(sublime_plugin.WindowCommand): 
    def run(self): 
     newFile = self.window.new_file() 
     newFile.run_command("second",{ "arg" : "this is an argument"}); 

class SecondCommand(sublime_plugin.TextCommand): 
    def run(self, edit, argument): 
     # do stuff with argument 
+0

Я предполагаю, что вы на самом деле означает 'sublime.set_timeout (лямбда: newFile.run_command (...), 1000)' – ahuff44

Смежные вопросы