2011-07-08 11 views
5

Cuando realizo M-x compile o obtengo un error de compilación elisp, mi emacs divide la ventana verticalmente y muestra el mensaje de salida/error de compilación en la nueva ventana. Prefiero trabajar con mis buffers en una ventana de pantalla completa, porque la ventana dividida verticalmente es demasiado estrecha para mí. ¿Puedo decirle a emacs no dividir la ventana y hacer un M-x switch-buffer al buffer de compilación/error?¿Cómo puedo decirle a emacs que no divida la ventana en el error de compilación M-x o elisp?

Editar: la sugerencia de Trey funciona para la compilación. ¿Hay alguna forma de configurarlo para todos los comandos que dividen la ventana? Los tres que tengo en mente son compilación elisp, M-x apropos y M-x ocurren.

+1

Si esto se reformula como una pregunta * elisp *, debe estar sobre el tema. – Arafangion

+1

@Arafangion Creo que pertenece a la sección de 'herramientas de software comúnmente utilizadas por los programadores' en las preguntas frecuentes. Hay muchas preguntas sobre editores en SO. – jonsca

Respuesta

5

Prueba esto:

(setq compilation-window-height 1000) 

Se puede conseguir la suposición y, de hecho calcular el número de líneas de texto en el marco de ... (/ (frame-pixel-height) (frame-char-height)), pero que parece tonta.

de control

Io cómo Emacs muestra generalmente tampones, puede configurar la variable same-window-regexps para que coincida con todos los nombres de amortiguamiento, y luego todos los comandos que muestran amortiguadores utilizando display-buffer va a utilizar la misma ventana:

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

Ver Choosing a Window para obtener más detalles.

+0

que funcionó! pero, ¿hay alguna manera de hacerlo para M-x o M-x apropos? – benhsu

+0

@benhsu Yup, actualizado. –

+0

Para 'M-x compile', use:' M-x customize-variable RET misma-ventana-regexps RET' y agregue la expresión regular '\ * compilation \ *' – user1735594

2

mi conjetura es que desea personalizar la variable split-window-preferred-function. el valor predeterminado es split-window-sensibly. debes cambiarlo a una versión personalizada que simplemente cambie el búfer actual.

esto parece funcionar:

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

(setq split-window-preferred-function 'no-split-window) 
0

Esto es lo que uso para las ventanas de compilación. Si no hay errores o advertencias, mostrará el buffer de salida de compilación por un segundo y luego lo matará. De lo contrario, el búfer se queda porque probablemente quiera encontrar los errores y corregirlos. Lo obtuve del a newsgroup.

 
(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) 
Cuestiones relacionadas