В: Как мне вставить / изменить текст в буфере, не undoзамечая этого?
Вот пример использования. У меня есть блок комментариев в начале каждого файла, который, помимо прочего, обновляет временную метку для самого последнего изменения в файле. Я хотел бы иметь возможность изменять эту временную метку, не undoобращая на это внимания.
Причина, по которой я хочу закорачивать undoздесь, связана со следующим краевым случаем, который возникает при редактировании / компиляции документов LaTeX (и, возможно, других, но это тот, который сводит меня с ума чаще всего):
- Сделайте небольшое изменение в файле, чтобы увидеть, как это повлияет на скомпилированный документ
- Сохраните файл (который обновляет отметку времени)
- Запустите
latexфайл - Решите, что изменение плохое
undoперемены
Проблема на этапе (5) ( undo) состоит в том, что он не отменяет изменения, сделанные на этапе (1), а скорее отменяет обновление метки времени на этапе (2). Это не будет беспокоить меня (я мог бы просто еще undoраз), за исключением того, что оно также перемещает точку до отметки времени в верхней части файла, которая почти всегда на много-много строк от фактического существенного изменения. Это очень неприятно и полностью нарушает мою концентрацию.
Я задаю вопрос относительно файла, который я посещаю, но в целом он касается модификации буферов.
Итак: как я могу не undoзаметить конкретную модификацию буфера?
undoотменяет оба.
with-undo-collapseмакрос, который был очень полезен: emacs.stackexchange.com/a/7560/2418