Когда Emacs вводит recursive-edit
- например, при вводе минибуфера для Mx (AKA execute-extended-command
) - кажется, что он запоминает некоторые аспекты текущего состояния и восстанавливает их, если это рекурсивное редактирование выходит с ошибкой. Среди восстановленных битов состояния есть (window-point)
всех видимых окон.
Это означает, что если для compilation-scroll-output
установлено значение t
, а затем:
- вы запускаете
(compile ...)
, который делает свое дело, постепенно производя продукцию ...
- затем вы нажимаете М-х и начинаете вводить расширенную команду ...
- тогда вы останавливаетесь на минуту, чтобы подумать, пока создается несколько дополнительных строк ...
- тогда подумайте, что вам все-таки лучше подумать об этой расширенной команде, и нажмите C-g , чтобы отменить ее ...
то, что произойдет, это то, что точка в окне компиляции переместится назад к тому месту, где она была в начале шага 2. Это означает, что точка в окне компиляции больше не равна (point-max)
, и, следовательно, окно перестает прокручиваться при создании нового вывода.
Я не знаю о вас, но, поскольку я обычно использую Emacs, я стараюсь сделать хотя бы несколько рекурсивных изменений и отменить хотя бы несколько из них. Так что это означает, что в какой-то момент мое окно компиляции всегда отклеивается, и мне приходится переключаться на него и M -> время от времени.
Есть ли опция customize
, чтобы отключить это поведение, чтобы window-point
оставался там, где он есть, или фрагмент elisp, который устраняет проблему, или даже определенный хук, который выполняется, когда завершается рекурсивное редактирование , с достаточным количеством информации, чтобы сказать, где была точка до того, как редактирование было завершено?