Emacs 23.2 открывает новое окно для каждой ошибки / предупреждения компиляции, к которому обращаются - PullRequest
7 голосов
/ 11 мая 2010

Я недавно обновился с Carbon Emacs (v22.3) до ванильного Emacs 23.2 (с http://www.emacsformacosx.com). В Carbon Emacs при компиляции проекта кадр разделяется на два с текущим исходным файлом / SConscript в верхнее окно и вывод компиляции в нижнем окне. Я бы нажал Cx `, чтобы перейти к первому предупреждению или ошибке в выводе компиляции, и он заменил бы все, что было в верхнем окне, на источник подать ошибку или предупреждение.

В Emacs 23.2, однако, открывается третье окно, в результате чего два окна открываются в верхней половине кадра (разбиваются по вертикали) и вывод компиляции в окне нижней половины кадра. Как мне сказать Emacs не открывать новое окно, а вместо этого открывать код в существующем окне вывода некомпилятора во фрейме?


Немного дальнейших разъяснений по поводу поведения, которое я только что заметил. Если я нажму C-x `, когда буфер, содержащий исходный файл или файл SConscript, активен, новое окно не откроется. Это только если я вручную перемещаюсь по буферу * compilation * и нажимаю ввод при появлении ошибки или предупреждения, или щелкаю мышью по предупреждению, когда появляется третье окно буфера.

Ответы [ 2 ]

4 голосов
/ 13 октября 2010

Функция, которая используется в next-error функциональности: pop-to-buffer, которая в свою очередь использует split-window-sensibly. Вы можете контролировать поведение split-window-sensibly, регулируя переменные split-width-threshold и split-height-threshold.

В вашем случае это split-width-threshold, что слишком мало. В моем emacs 23.1 он установлен на 160. Просто установите большее значение, и проблема должна быть решена:

(setq split-width-threshold 200)
2 голосов
/ 02 августа 2010

Я не могу воспроизвести эту проблему самостоятельно, но вы можете попробовать следующее:

(setq split-width-threshold nil)

Это говорит display-buffer никогда не разбивать окна по горизонтали, даже если они достаточно широкие. Существует также переменная split-height-threshold, которая обрабатывается аналогично. Проверка текущих значений этих переменных может подсказать, могут ли они иметь отношение к поведению, которое вы видите.

И последнее, что нужно проверить: если вы определили свой собственный display-buffer-function, это могло бы принять за вас эти решения.

...