Отключить диалоговое окно предупреждения о закрытии файла в Sublime Text

2

Я в основном использую ST в качестве временного блокнота. Теперь, когда я нажимаю Ctrl + W, это вызывает у меня этот диалог

введите описание изображения здесь

Тем не менее, 99% времени мои намерения "закрыть без сохранения". Есть ли способ отключить это всплывающее окно? Поскольку в действительности ST автоматически сохраняет мои файлы.

Неемия
источник

Ответы:

4

Да, вы можете просто написать плагин, чтобы установить представление как царапину и закрыть его. Затем создайте привязку клавиш для этой команды. Выберите Инструменты> Разработчик> Новый плагин ... и вставьте:

import sublime_plugin


class CloseWithoutSavingCommand(sublime_plugin.WindowCommand):
    def run(self):
        view = self.window.active_view()
        view.set_scratch(True)
        view.close()

Затем создайте привязку клавиш для перезаписи ctrl + w

{
    "keys": ["ctrl+w"],
    "command": "close_without_saving",
},

PS. Как упомянуто в комментариях @ Dreamcat4, также может быть целесообразным ограничить привязку клавиш временными буферами. В этом случае вы можете легко создать прослушиватель контекста, который включает привязку клавиш только для этого типа файла:

import operator as opi

import sublime
import sublime_plugin

class CloseWithoutSavingCommand(sublime_plugin.WindowCommand):
    def run(self):
        view = self.window.active_view()
        view.set_scratch(True)
        view.close()

class IsRealFileListener(sublime_plugin.EventListener):
    def on_query_context(self, view, key, operator, operand, match_all):
        # only act with the correct context key
        if key != 'user.is_real_file':
            return

        if operator == sublime.OP_EQUAL:
            op = opi.eq
        elif operator == sublime.OP_NOT_EQUAL:
            op = opi.ne
        else:
            # operator not supported
            return

        # assumption: a real file is a buffer, which has a filename as target
        is_real_file = bool(view.file_name())
        return op(is_real_file, operand)

Создайте привязку клавиш для перезаписи ctrl + w, но ограничивайтесь контекстом

{
    "keys": ["ctrl+w"],
    "command": "close_without_saving",
    "context": [
        { "key": "user.is_real_file", "operator": "equal", "operand": false }
    ],
},
г-Stein
источник
Интересный ответ, рады узнать это. Просто примечание, как только я сделал это, новые файлы без названия не могут быть открыты, что совершенно нормально, так как мне требуется максимум один блокнот
nehemiah
@itsneo Извините, я не понял вашу записку. Это не должно оказывать негативного влияния на остальное поведение.
r-stein
Извините за это, это работает отлично, должен удалить этот комментарий
nehemiah
кстати @ r-stein, получил PayPal? этот ответ заслуживает небольшого
совета
Спасибо :). Нет, у меня нет PayPal, но я ценю ваши положительные отзывы в качестве совета;).
r-stein