Как я могу сказать emacs не разбивать окно при Mx-компиляции или ошибке компиляции elisp? - PullRequest
5 голосов
/ 08 июля 2011

Когда я выполняю M-x compile или получаю ошибку компиляции elisp, мой emacs разбивает окно по вертикали и отображает вывод компиляции / сообщение об ошибке в новом окне. Я предпочитаю работать с моими буферами в полноэкранном режиме, потому что вертикально разделенное окно слишком узкое для меня. Могу ли я попросить emacs , а не разделить окно и сделать M-x переключатель-буфер в буфер компиляции / ошибок?

Редактировать : предложение Трэя работает для компиляции. Есть ли способ установить его для всех команд, которые разбивают окно? Три из них, которые я имею в виду, это компиляция elisp, M-x по поводу и M-x происходят .

Ответы [ 3 ]

5 голосов
/ 08 июля 2011

Попробуйте:

(setq compilation-window-height 1000)

Вы можете получить фантазию и рассчитать количество строк текста во фрейме ... (/ (frame-pixel-height) (frame-char-height)), но это кажется глупым.

Ioуправляя тем, как Emacs обычно отображает буферы, вы можете настроить переменную same-window-regexps так, чтобы она соответствовала всем именам буферов, и тогда все команды, которые отображают буферы с использованием display-buffer, будут использовать одно и то же окно:

(setq same-window-regexps '("."))

См. Выбор окна для более подробной информации.

3 голосов
/ 08 июля 2011

я предполагаю, что вы хотите настроить переменную split-window-preferred-function. значение по умолчанию split-window-sensibly. Вы должны изменить его на пользовательскую версию, которая просто переключает текущий буфер.

это похоже на работу:

(defun no-split-window ()
  (interactive)
  nil)

(setq split-window-preferred-function 'no-split-window)
0 голосов
/ 27 августа 2011

Это то, что я использую для окон компиляции.Если нет ошибок или предупреждений, он будет отображать буфер вывода компиляции в течение секунды, а затем уничтожит его.В противном случае буфер останется, потому что вы, вероятно, захотите найти ошибки и исправить их.Я получил это от группы новостей .

(defun kill-compile-buffer-if-successful (buffer string) 
  " kill a compilation buffer if succeeded without warnings " 
  (if (and 
       (string-match "compilation" (buffer-name buffer)) 
       (string-match "finished" string) 
       (not 
        (with-current-buffer buffer 
          (search-forward "warning" nil t)))) 
      (run-with-timer 1 nil 
                      'kill-buffer 
                      buffer)))
(add-hook 'compilation-finish-functions 'kill-compile-buffer-if-successful)
...