我正在为SublimeText3开发一些插件。
这个插件应该在每次修改文本时都会运行,所以看一下api。
reference.html
on_modified_async(view)是我猜到的那个。
代码是这样的:
#!/usr/bin/env python
import sublime, sublime_plugin, socket
class testCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World1!")
self.view.insert(edit, 0, "Hello, World2!")
def on_modified_async(self, view):
self.view.insert(edit, 0, "Hello, World3!")此代码适用于Hello,world 1&2,但3从未触发。
我对SublimeText插件和python3.3开发都很陌生。我错过了什么?谢谢。//编辑
MESSAGE = self.view.substr(0,50)
TypeError: substr() takes 2 positional arguments but 3 were given看来我给出了两个位置论点,而不是3个。
我有一个错误:AttributeError:'MyEventListener‘对象没有属性’view‘……我的代码有什么问题(编辑)
import sublime, sublime_plugin, socket
class testCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, "Hello, World1!")
class MyEventListener(sublime_plugin.EventListener):
def on_modified_async(self,view):
self.view.insert(edit, 0, "Hello, World2!")--
Traceback (most recent call last):
File "/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py", line 279, in on_modified_async
callback.on_modified_async(v)
File "/Users/ken/Library/Application Support/Sublime Text 3/Packages/test/test.py", line 11, in on_modified_async
self.view.insert(edit, 0, "Hello, World2!")
AttributeError: 'MyEventListener' object has no attribute 'view'这是工作代码:
import sublime, sublime_plugin, socket
class MarkdownLiveCommand(sublime_plugin.TextCommand):
def run(self, edit):
tcp(self.view)
class MyEventListener1(sublime_plugin.EventListener):
def on_modified_async(self, view):
tcp(view)
def tcp(view):
#do the job发布于 2013-07-30 10:29:52
正如在文档中所描述的,您需要创建一个扩展sublime_plugin.EventListener的类,并在那里定义您的on_modified_async方法--在TextCommand的run方法中定义它实际上什么也不做。就像这样:
class MyEventListener(sublime_plugin.EventListener):
def on_modified_async(self, view):
edit = view.begin_edit()
view.insert(edit, 0, "Hello, World2!")
view.end_edit(edit)对于substr方法的错误,view.substr采用一个sublime.Region实例,而不是两点:
message = self.view.substr(sublime.Region(0, 50))错误消息可能有点混乱,因为第一个参数是视图本身;传递两个显式参数将导致调用带有三个参数的方法。
https://stackoverflow.com/questions/17943802
复制相似问题