Sublime Text键绑定未保存更改中的上下文



我试图在sublime text 3中创建一个keybind, 根据文件是否有未保存的更改改变其行为。

Sublime已经在创建键绑定时支持context选项,如下所示:
{"keys":[":","e"],"command":"revert","context":[{"key": "setting.command_mode", "operand": true}]},

但是我找不到是否有一种方法来检测文件是保存的还是脏的。

有人对此有什么见解吗?

看看非官方文档(官方文档已经过时了),似乎没有上下文可以用于键绑定来确定文件是保存还是脏。

我认为有必要在Python中创建一个插件,用一个命令来执行基于文件是否有未保存更改的操作。然后,您可以设置键绑定以执行此命令,而不考虑上下文,因为插件将包含必要的逻辑。官方文档提到,插件可以使用视图上的is_dirty()方法来确定文件是否被保存。

我从你的问题中看到你想要执行revert命令,所以我已经编写了一个快速而简单的Sublime Text插件/python脚本来实现这一点:

import sublime, sublime_plugin
class RevertIfUnsavedCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        if self.view.is_dirty():
            self.view.run_command('revert')
        else:
            print('TODO: do something else here')

最新更新