我为sublime text 3创建了一个插件,设计的Command Palette.sublime-commands如下:
[
{
"caption": "Function 1",
"args": {parameter:"y"},
"command": "generalfunc"
},
{
"caption": "Function 2",
"args": {parameter:"n"},
"command": "generalfunc"
}
]
实际上,我想将args传递给下面的sublime_plugin实例:
class GeneralFuncCommand(sublime_plugin.WindowCommand):
def __init__(self, parameter=None):
self.parameter = parameter
super(GeneralFuncCommand, self).__init__()
def run(self):
if self.parameter =='y':
do something
elif self.parameter =='n':
do something else
else:
pass
将args传递给GeneralFuncCommand类的正确方法是什么?提前谢谢。
答案 0 :(得分:3)
我是一个插件/ python newb,但我把一些适合我的东西放在一起。
“** args”似乎是“def”行的关键。似乎是一个通配符,通过args ['myparamnamehere']语法使所有其他参数可用。我已经看到其他脚本命名为param“** kwargs”所以也许你可以谷歌那些更多的例子(我发现了大量的例子,但没有关于如何或它的原因的文档)。可能有更好的方法,但这是我在自己的项目上工作几个小时后发现的所有内容,所以我只是坚持下去。
class dgReplaceLibCommand(sublime_plugin.TextCommand):
def run(self, edit, **args):
if (args['replaceSet'] == "CFML to cfScript"):
self.cfml_to_cfscript(edit)
我猜你的def线需要看起来像这样......
def __init__(self, **args):
然后你会像这样访问你的参数(再次猜测)......
self.parameter = args['parameter']
此外,您可能需要在配置中的键“参数”周围加上引号。在没有引用的例子中我没有看到太多。即...
"args": {"parameter":"y"},
希望这有帮助!