【问题标题】:Enable Autosave files plugin on Sublime Startup在 Sublime 启动时启用自动保存文件插件
【发布时间】:2018-05-22 00:07:43
【问题描述】:

如何在 Sublime Text 3 启动时自动启用 Sublime Text 的 AutoSave 插件?

link to auto-save is here

【问题讨论】:

  • 您能否编辑以提供指向您所指插件的链接?
  • 添加了链接。

标签: sublimetext3 sublimetext sublime-text-plugin autosave


【解决方案1】:

这个特定的包并没有天真地支持在 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 行以无条件地始终在启动时切换状态,但您可能希望在将来的某个时候暂时阻止它这样做,您可以只需切换设置即可轻松完成。

【讨论】:

  • 您在 Sublime 控制台中看到错误吗?你确定你正确添加了设置和插件吗?
  • 将插件保存为.py 文件直接在User 包内很重要(也就是说,User\my_plugin_file.py 可以,但User\something\my_plugin_file.py 不行),但除此之外名字根本不重要。确保您也应用了该设置,否则插件将不会执行任何操作。
  • 奇怪的是这对我不起作用。我在插件中添加了一个 print("hallo") 并删除了设置检查。我在 sublime 的控制台中看到了你好,但仍然没有激活自动保存。此外,如果我输入 sublime.run_command("auto_save") 它确实有效并且自动保存被激活。好像用插件激活它不起作用
  • 嗯,它在我的机器上运行良好。 reloading plugin auto-save.auto_save 之后是否出现“你好”的行?您使用的是什么 Build/OS,也许我可以复制正在发生的事情。
  • 我发现了这可能不起作用的潜在原因并调整了上面的答案;如果您仍然对此感兴趣,新版本可能更适合您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多