Sublime Text3开发包新增列表输入处理器后命令报unexpected keyword错误
错误原因
Sublime Text 会自动为未显式指定name()方法的InputHandler生成参数名,生成规则为:移除类名末尾的InputHandler后缀,再将大驼峰命名转换为蛇形命名。
你定义的RedeployModuleInputHandler类按规则生成的参数名为redeploy_module,但你在RedeployJobCommand.run()方法中声明接收的参数是module,二者不匹配,Sublime自动传入redeploy_module参数时就会触发参数不匹配的报错。
解决方案
可任选以下任意一种方案修复:
方案1:为InputHandler显式指定参数名
在RedeployModuleInputHandler类中添加name()方法,返回你需要的参数名module,不需要修改其他逻辑:
class RedeployModuleInputHandler(sublime_plugin.ListInputHandler): # 新增name方法显式指定参数名 def name(self): return "module" def placeholder(self): return "Module to create template for" def list_items(self): return [("Manager (v1)", "manager"), ("Projects (v2)", "projects")]
方案2:修改所有引用的参数名
将run()方法的参数、next_input和input方法里的参数判断统一改为自动生成的redeploy_module,同时注意把参数补到你的执行命令里:
class ProjectNameInputHandler(sublime_plugin.TextInputHandler): def placeholder(self): return "Project's name - must already exist" def next_input(self, args): # 改为判断自动生成的参数名 if 'redeploy_module' not in args: return RedeployModuleInputHandler() class RedeployJobCommand(sublime_plugin.WindowCommand): # 参数改为自动生成的名称 def run(self, project_name, redeploy_module): plugin_path = str(os.path.dirname(__file__)) template_cli = "\"{}\\template-python-cli\\cli.py\"".format(plugin_path) folder = self.window.extract_variables()['folder'] # 补入module参数到执行命令 args = "redeployJob {} {}".format(project_name, redeploy_module) command = "echo 'python {} {}'".format(template_cli, args) self.window.run_command("exec", { "shell_cmd": command, "working_dir": folder }) def input(self, args): if 'project_name' not in args: return ProjectNameInputHandler() # 改为判断自动生成的参数名 elif 'redeploy_module' not in args: return RedeployModuleInputHandler()
内容的提问来源于stack exchange,提问作者Itération 122442
相关产品推荐
相关产品推荐

