我想重写Sublime Text 3中的双击以在且仅当用户在特定视图中时运行我的插件代码。否则,双击应能正常运行(突出显示单词和文件中的其他实例)。但是,我不希望在我的自定义视图中运行正常行为。
可以在https://www.sublimetext.com/forum/viewtopic.php?f=6&t=8823中找到在Sublime Text 2(和Python 2)中实现此目的的适当代码,但我无法将其重构为正常工作在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数组,该数组包含用于指定键绑定的JSON对象。JSON对象必须包含keys
和command
键,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字符串传递给命令转储并就地还原
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句