Plugins 如何设置升华文本3鼠标事件来触发自定义行为和默认行为?

Plugins 如何设置升华文本3鼠标事件来触发自定义行为和默认行为?,plugins,python-3.x,sublimetext3,Plugins,Python 3.x,Sublimetext3,当且仅当用户在某个视图中时,我想覆盖Sublime Text 3中的双击以运行我的插件代码。否则,双击将执行正常行为(突出显示文件中的单词和其他实例)。但是,我不希望在自定义视图中运行正常行为 在Sublime Text 2(和Python 2)中实现这一点的适当代码可以从中找到,但我无法将其重构到Sublime Text 3(和Python 3)中 崇高文本2的工作代码(取自上述链接)为: class MySpecialDoubleclickCommand(sublime_plugin.Tex

当且仅当用户在某个视图中时,我想覆盖Sublime Text 3中的双击以运行我的插件代码。否则,双击将执行正常行为(突出显示文件中的单词和其他实例)。但是,我不希望在自定义视图中运行正常行为

在Sublime Text 2(和Python 2)中实现这一点的适当代码可以从中找到,但我无法将其重构到Sublime Text 3(和Python 3)中

崇高文本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中工作,我将字典处理代码重构为(否则代码相同):

但是,当我调用
run\u命令(system\u命令,system\u参数)
方法时,它返回以下错误消息:

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

由于Sublime Text 3的API文档几乎不存在,我试图找出我的
系统参数
字典中是否存在一些问题,或者API只是以其他方式更改了

我自己还没有做过任何鼠标绑定的工作,但是您似乎缺少run命令的参数。请注意,它需要3个PARM,您只给。您是否尝试过将self.view.id作为第一个parm传递给您(基于错误,这可能是它所期望的)。

这个问题很老了,但与其抱歉,不如迟到,今天就开始吧

ValueError
在我看来是由
sublime.decode\u value(string)

这个方法将JSON字符串解码成一个对象,正如我认为在
run_command
中使用的那样,然后解析参数,以便通过击键或内部调用来运行命令

.sublime keymap
文件包含一个JSON数组,其中包含用于指定键绑定的JSON对象。JSON对象必须包含
命令
键,如果命令需要参数,还可以包含
args

因此,如果arg值不是有效的JSON对象,则会得到
ValueError

解决方法-传递字符串或数字

view.run_命令('name',{'string_arg':'string','num_arg':1})


或者将对象转储为JSON字符串pass to command and restore at place

如果我将命令更改为以id作为第一个参数(即
self.view.run_命令(self.view.id、system_命令、system_参数)
我将得到以下错误:
文件“C:\Users\User\AppData\Roaming\Sublime Text 3\Packages\MyPlugin\output.py”,第153行,在run_uself.view.run_命令(self.view.id,system_命令,system_参数)类型错误:run_命令()获取2到3个位置参数,但给出了4个
哦,对不起,我弄错了代码。我以为你在调用
sublime\u api。以某种方式直接调用view\u run\u命令
。似乎你在试图覆盖
run\ucode>方法,而不是正常的
run
方法。我不知道它会修复任何问题,您可能应该匹配现有方法的签名,即
def run\u(self,edit\u token,args):
即使我匹配现有方法的签名,也会出现相同的错误。我还尝试直接调用
sublime\u api.view\u run\u命令(self.view\u id,cmd,args)
但它给了我更神秘的错误信息:
TypeError:String required
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
class NameCommand(sublime_plugin.TextCommand):

    def run(self, edit, string_arg, num_arg):
        pass