其他分享
首页 > 其他分享> > 如何将args传递给sublime_plugin.WindowCommand的实例?

如何将args传递给sublime_plugin.WindowCommand的实例?

作者:互联网

我为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类的正确方法是什么?提前致谢.

解决方法:

我是一个插件/ 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"}, 

希望这可以帮助!

标签:python,sublimetext3,sublime-text-plugin
来源: https://codeday.me/bug/20190628/1317469.html