Вы должны использовать Sticky Windows , чтобы ваши окна и буферы оставались там, где они есть, но Sticky Windows не остановит gud / pdb от попыток украсть ваши окна. Когда gud / pdb не может украсть ваше окно исходного кода, он открывает новый фрейм Emacs, даже если в текущем фрейме есть другое окно.
Это происходит из-за того, что функция, которая пытается перейти в буфер gud-pdb (py-pdbtrack-track-stack-file
), вызывает функцию pop-to-buffer
с аргументом OTHER-WINDOW, установленным в t
.
Чтобы обойти это поведение для всех библиотек, которые вызывают pop-to-buffer, вы можете отменить роль OTHER-WINDOW, определив рекомендацию по pop-to-buffer
(в ваших .emacs):
(defadvice pop-to-buffer (before cancel-other-window first)
(ad-set-arg 1 nil))
(ad-activate 'pop-to-buffer)
Вам также следует настроить переменную pop-up-windows
на nil, чтобы display-buffer
(низкоуровневая процедура, используемая для отображения определенного буфера на окнах и фреймах) не создавало новое окно.