这是我几天前提出的这个问题的衍生物Save file before running custom command in Sublime3。
我在Sublime Text 3中设置了自定义键绑定:
{
"keys": ["f5"],
"command": "project_venv_repl"
}
运行project_venv_repl.py
脚本(请参阅here了解其功能):
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project's specified
python interpreter.
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
# Save all files before running REPL <---- THESE TWO LINES
for open_view in self.view.window().views():
open_view.run_command("save")
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
# Other functions...
当按下f5
键时,它会在SublimeREPL中运行打开的文件。 # Save all files before running REPL
下面的两行应该在运行REPL之前保存所有已保存更改的已打开文件(如answer中所述)。
线条起作用,即:它们保存文件。但是他们还会连续显示两个 Save 弹出窗口,要求我保存REPL(?):
*REPL* [/home/gabriel/.pyenv/versions/test-env/bin/python -i -u /home/gabriel/Github/test/test.py]
test.py
是调用脚本project_venv_repl
的文件。取消两个弹出窗口后,脚本会正确执行。
如何在执行前使用project_venv_repl
脚本保存所有已保存更改的已打开文件,不显示这些恼人的保存弹出窗口?
(所有这一切背后的想法是模仿Ctrl+B
的行为,这将在构建脚本之前保存所有未保存的文件)
答案 0 :(得分:1)
诀窍是只保存脏的文件并存在于磁盘上。
# Write out every buffer (active window) with changes and a file name.
window = sublime.active_window()
for view in window.views():
if view.is_dirty() and view.file_name():
view.run_command('save')
我与PHPUNITKIT有类似的问题。
save_all_on_run:仅保存磁盘上存在且具有脏缓冲区的文件
注意:&#34; save_all_on_run&#34;选项不再保存不合适的文件 存在于磁盘上。
此更改的原因是尝试保存不存在的文件 在磁盘上提示用户使用&#34;保存文件&#34;对话框,通常是 不希望的行为。
也许是另一种选择&#34; save_all_on_run_strict&#34;选项可以添加 之后,它会尝试保存磁盘上不存在的文件。
https://github.com/gerardroche/sublime-phpunit/commit/3138e2b75a8fbb7a5cb8d7dacabc3cf72a77c1bf