Ответ 1
Вы можете запомнить конфигурацию своего окна с помощью команды M-x window-configuration-to-register (или C-x r w) в начале.
После того, как вы всегда можете восстановить свои конфигурации с помощью M-x перехода к регистру (или C-x r j).
my Lisp -working-environment имеет фрейм, разбитый на два окна, первый для основного кодирования, последний для моей оценки слизи.
К сожалению, когда я допустил некоторые ошибки (потому что я все еще изучаю Lisp: P), отладчик slime предупреждает меня и делает это, он появляется в нижнем окне, которое автоматически изменяется. Чтобы быть более явным:
ДО:
_______
| |
| |
_______
|_____|
ПОСЛЕ:
_______
| | <- decreased in size!
_______
|_____| <- increased in size!
Как я могу предотвратить изменение размера окна Emacs? Я хочу, чтобы Emacs оставил мои размеры окон одинаковыми.
Как я могу это сделать?
Спасибо! Bye!
Alfredo
Вы можете запомнить конфигурацию своего окна с помощью команды M-x window-configuration-to-register (или C-x r w) в начале.
После того, как вы всегда можете восстановить свои конфигурации с помощью M-x перехода к регистру (или C-x r j).
К сожалению, основная команда pop-to-buffer
, которая используется почти каждой программой в emacs для переключения в буфер в другом окне, имеет описанный вами побочный эффект.
В дополнение ко всем другим решениям до сих пор существует режим победителя, чтобы отменить/изменить любые изменения в конфигурации окна в любой момент время.
Если какой-либо код, который вы вызываете, изменяет конфигурацию окна, вы можете оберните свой код с помощью (save-window-excursion BODY...)
Если это отладчик, который меняет конфигурацию, нажмите "q", и старая конфигурация будет переделана.
Если вы хотите, чтобы отладчик не изменил размер, попробуйте добавить к нему режим отладки в режиме отладки.
winner-mode
- это спасатель, но чтобы сделать pop-to-buffer
не изменить размер окна в первую очередь, сделайте
(setq even-window-heights nil)
Чтобы отключить сокращение окна, shrink-window-if-larger-than-buffer
должен быть не-op. Вы могли бы просто переопределить его, чтобы ничего не делать, но если вы посоветуете это, вы получите возможность включать и отключать его по своему усмотрению.
;; never shrink windows
(defvar allow-window-shrinking nil
"If non-nil, effectively disable shrinking windows by making `shrink-window-if-larger-than-buffer' a no-op.")
(advice-add 'shrink-window-if-larger-than-buffer
:before-while
(lambda (&rest args)
"Do nothing if `allow-window-shrinking' is nil."
allow-window-shrinking))
Вы можете сообщить другие функции, которые вызывают shrink-window-if-larger-than-buffer
, чтобы включить или отключить сжатие:
(advice-add 'some-function-that-resizes-windows
:around
(lambda (orig &rest args)
"enable shrinkage"
(let ((allow-window-shrinking t))
(apply orig args))))
У меня был старый фрагмент кода, который был по существу выше, и я имел ignore-errors
обернутый вокруг (apply orig args)
по какой-то забытой причине, но, вероятно, это не всегда необходимо.
N.B. это использует новый совет API, который был добавлен в Emacs 24.4. Старый совет API может делать то же самое с другим синтаксисом, если вам нужно использовать старую версию Emacs.