在 Sublime 3 中的 运行 自定义命令之前保存文件
Save file before running custom command in Sublime3
这个问题与这个问题类似Is it possible to chain key binding commands in sublime text 2?自那个问题(以及给出的答案)以来已经过去了几年,我使用的是 Sublime Text 3(不是 2),所以我相信这个新问题有道理。
我设置了自定义键绑定:
{
"keys": ["f5"],
"command": "project_venv_repl"
}
到 运行 project_venv_repl.py
脚本:
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project's specified
python interpreter.
Instructions to make this file work taken from:
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
def get_project_interpreter(self):
"""Return the project's specified python interpreter, if any"""
settings = self.view.settings()
return settings.get('python_interpreter', '/usr/bin/python')
def repl_open(self, cmd_list):
"""Open a SublimeREPL using provided commands"""
self.view.window().run_command(
'repl_open', {
'encoding': 'utf8',
'type': 'subprocess',
'cmd': cmd_list,
'cwd': '$file_path',
'syntax': 'Packages/Python/Python.tmLanguage'
}
)
这 运行 是按下 f5
键时在 SublimeREPL 中打开的文件。
我需要的是一种模仿 "Build" 快捷方式 (Ctrl+B
) 的方法。这是:当按下 f5
键时,当前(打开的)文件应该在 运行 执行 project_venv_repl
命令之前 保存 。
是否可以将此指令添加到 project_venv_repl.py
脚本或键绑定定义中的 command
行?
没有必要做任何花哨的事情。如果你只想在 运行 REPL 之前保存当前视图,编辑你的 ProjectVenvReplCommand
class 的 run()
方法(当 project_venv_repl
命令时调用被执行)并在开头添加以下行:
self.view.run_command("save")
这将自动保存当前视图,除非之前未保存过,在这种情况下,将像往常一样打开另存为...对话框。
如果你想保存window中所有打开的文件,你可以使用这个代码:
for open_view in self.view.window().views():
open_view.run_command("save")
这个问题与这个问题类似Is it possible to chain key binding commands in sublime text 2?自那个问题(以及给出的答案)以来已经过去了几年,我使用的是 Sublime Text 3(不是 2),所以我相信这个新问题有道理。
我设置了自定义键绑定:
{
"keys": ["f5"],
"command": "project_venv_repl"
}
到 运行 project_venv_repl.py
脚本:
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project's specified
python interpreter.
Instructions to make this file work taken from:
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
def get_project_interpreter(self):
"""Return the project's specified python interpreter, if any"""
settings = self.view.settings()
return settings.get('python_interpreter', '/usr/bin/python')
def repl_open(self, cmd_list):
"""Open a SublimeREPL using provided commands"""
self.view.window().run_command(
'repl_open', {
'encoding': 'utf8',
'type': 'subprocess',
'cmd': cmd_list,
'cwd': '$file_path',
'syntax': 'Packages/Python/Python.tmLanguage'
}
)
这 运行 是按下 f5
键时在 SublimeREPL 中打开的文件。
我需要的是一种模仿 "Build" 快捷方式 (Ctrl+B
) 的方法。这是:当按下 f5
键时,当前(打开的)文件应该在 运行 执行 project_venv_repl
命令之前 保存 。
是否可以将此指令添加到 project_venv_repl.py
脚本或键绑定定义中的 command
行?
没有必要做任何花哨的事情。如果你只想在 运行 REPL 之前保存当前视图,编辑你的 ProjectVenvReplCommand
class 的 run()
方法(当 project_venv_repl
命令时调用被执行)并在开头添加以下行:
self.view.run_command("save")
这将自动保存当前视图,除非之前未保存过,在这种情况下,将像往常一样打开另存为...对话框。
如果你想保存window中所有打开的文件,你可以使用这个代码:
for open_view in self.view.window().views():
open_view.run_command("save")