gpt4 book ai didi

plugins - 如何设置 Sublime Text 3 鼠标事件来触发自定义行为和默认行为?

转载 作者:行者123 更新时间:2023-12-04 04:33:55 28 4
gpt4 key购买 nike

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

在 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

由于 Sublime Text 3 的 API 文档几乎不存在,我试图弄清楚我的 system_args 中是否存在一些问题字典还是 API 只是以其他方式更改?

最佳答案

问题很老,但迟到总比抱歉好,今天偶然发现
ValueError在我看来是由 sublime.decode_value(string) 抛出的

此方法将 JSON 字符串解码为对象,我认为在 run_command 中使用然后解析 args 以从击键或内部调用运行命令。
.sublime-keymap文件包含一个 JSON 数组,其中包含用于指定键绑定(bind)的 JSON 对象。 JSON 对象必须包含 keyscommand键,还可能包含 args如果命令需要参数,则为键。

所以如果 arg 值不是有效的 JSON 对象,你会得到 ValueError
解决方法 - 传递字符串或数字
view.run_command('name', {'string_arg': 'string', 'num_arg': 1})

class NameCommand(sublime_plugin.TextCommand):

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

或者将您的对象作为 JSON 字符串转储到命令并在原地恢复

关于plugins - 如何设置 Sublime Text 3 鼠标事件来触发自定义行为和默认行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091500/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com