【发布时间】:2018-05-22 00:07:43
【问题描述】:
如何在 Sublime Text 3 启动时自动启用 Sublime Text 的 AutoSave 插件?
【问题讨论】:
-
您能否编辑以提供指向您所指插件的链接?
-
添加了链接。
标签: sublimetext3 sublimetext sublime-text-plugin autosave
如何在 Sublime Text 3 启动时自动启用 Sublime Text 的 AutoSave 插件?
【问题讨论】:
标签: sublimetext3 sublimetext sublime-text-plugin autosave
这个特定的包并没有天真地支持在 Sublime 启动时自动启用自己的想法,所以为了实现这一点,需要一个小插件来实现这一点,我已经在下面发布了。
为了使用这个插件,从菜单中选择Tools > Developer > New Plugin...,然后用下面的代码替换提供给你的存根插件代码,并将文件保存在Sublime默认的位置(你的User包)作为 Python 文件,例如 auto_save_on_startup.py
注意:请参阅下面的编辑;这个插件需要你添加一个设置来控制它是否被启用。
import sublime
import sublime_plugin
# Sublime executes this every time it loads the plugin, which includes when
# it first starts, as well as whenever the this file changes on disk.
def plugin_loaded():
settings = sublime.load_settings("auto_save.sublime-settings")
# See if auto_save_toggle_at_startup is turned on; default it to
# not being turned on if the setting is missing, because that is
# how the package would behave if you didn't add the setting.
if settings.get("auto_save_toggle_at_startup", False):
sublime.set_timeout(lambda: sublime.run_command("auto_save"), 1000)
编辑: 这个插件的原版直接叫run_command;但是 Sublime 在完全添加插件提供的所有命令类之前调用了plugin_loaded 端点,因此它可以在命令可用之前尝试运行。
上面的代码已经过修改,因此在命令触发之前施加了延迟,以便让命令有时间变得可用。
正如评论所暗示的,每次 Sublime 加载插件文件时,如果它恰好存在,它将执行该插件文件内的 plugin_loaded() 函数。
这里的代码检查自动保存包设置,看看您是否将值 auto_save_toggle_at_startup 设置为 true,如果有,它将调用自动保存包中的命令来打开它。
因此,您还需要从菜单中选择Preferences > Package Settings > Auto-save > Settings - User 并添加适当的设置。如果您使用的是 MacOS,首选项位于菜单中的 Sublime Text 下方。
如果这会显示一个空文件(因为您使用的是默认设置),那么您应该在文件中输入以下内容并保存。否则,您可以将设置本身添加到现有设置中。
{
// Toggle auto save at startup (from User/auto_save_on_startup.py)
"auto_save_toggle_at_startup": true
}
这里的评论提醒您,这个设置是由包本身之外的东西提供的,以防您忘记。
由于插件命令只会在加载时切换自动保存的状态,因此您必须在添加插件之前添加设置,保存插件文件以让 Sublime 在设置到位后重新加载它,或者重启 Sublime。
或者,您可以替换 plugin_loaded() 函数以仅包含 run_command 行以无条件地始终在启动时切换状态,但您可能希望在将来的某个时候暂时阻止它这样做,您可以只需切换设置即可轻松完成。
【讨论】:
.py 文件直接在User 包内很重要(也就是说,User\my_plugin_file.py 可以,但User\something\my_plugin_file.py 不行),但除此之外名字根本不重要。确保您也应用了该设置,否则插件将不会执行任何操作。
reloading plugin auto-save.auto_save 之后是否出现“你好”的行?您使用的是什么 Build/OS,也许我可以复制正在发生的事情。