未保存更改中的 Sublime Text 键绑定上下文
Sublime Text Keybinds Context Within Unsaved Changes
我正在尝试在 sublime text 3 中创建一个键绑定,根据文件是否有未保存的更改更改其行为。
Sublime 已经在创建键绑定时支持 context 选项,例如:
{"keys":[":","e"],"command":"revert","context":[{"key": "setting.command_mode", "operand": true}]},
但是我找不到是否有办法检测文件是已保存还是脏文件。
有人对此有一些见解吗?
查看unofficial documentation(官方文档已过时),似乎没有可用于键绑定的上下文来确定文件是已保存还是脏文件。
因此我认为有必要在 Python 中创建一个插件,其中包含一个命令,该命令将根据文件是否有未保存的更改来执行您需要的操作。然后你可以设置键绑定来执行这个命令而不考虑上下文,因为插件将包含必要的逻辑。
official documentation 提到插件可以使用视图上的 is_dirty()
方法确定文件是否保存。
我从你的问题中看出你想执行恢复命令,所以我制定了一个快速简单的 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')
我正在尝试在 sublime text 3 中创建一个键绑定,根据文件是否有未保存的更改更改其行为。
Sublime 已经在创建键绑定时支持 context 选项,例如:
{"keys":[":","e"],"command":"revert","context":[{"key": "setting.command_mode", "operand": true}]},
但是我找不到是否有办法检测文件是已保存还是脏文件。
有人对此有一些见解吗?
查看unofficial documentation(官方文档已过时),似乎没有可用于键绑定的上下文来确定文件是已保存还是脏文件。
因此我认为有必要在 Python 中创建一个插件,其中包含一个命令,该命令将根据文件是否有未保存的更改来执行您需要的操作。然后你可以设置键绑定来执行这个命令而不考虑上下文,因为插件将包含必要的逻辑。
official documentation 提到插件可以使用视图上的 is_dirty()
方法确定文件是否保存。
我从你的问题中看出你想执行恢复命令,所以我制定了一个快速简单的 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')