2009-07-31 16 views
24

Esta es probablemente una pregunta muy ingenua de Emacs: soy nuevo en ella.¿Cómo cierro una ventana abierta automáticamente en Emacs?

Cuando estoy evaluando una expresión de lisp, si hay un error, el depurador aparece automáticamente en otra ventana. Si tengo * scratch * y * info * open (el primero para probar lisp y el último para leer sobre él), entonces el depurador se abre en la ventana en la que * info * estaba. Por el momento, tengo que cambiar a esa ventana, luego cámbiela a * info *, antes de volver a * scratch *. (Lo mismo sucede si hago C-x C-b para obtener una lista de almacenamientos intermedios). Supongo que tiene que haber una forma de cerrar esa ventana sin esta larga secuencia de comandos. ¿Alguien puede iluminarme?

+0

quizás pide esta encima en superusuario? –

+0

Consideré que ... Es una decisión difícil. ¿Está bien para cross-post? (Supongo que debería preguntar eso en meta: P) – Skilldrick

+3

Dado que la mayoría de las preguntas sobre Emacs generalmente implican escribir un poco de elisp, parecen ser mejor respondidas aquí. :) –

Respuesta

21

Al menos aquí en mis emacs (22.3), cuando aparece el depurador, su ventana se convierte en la activa. Allí, presionando q acaba de salir del depurador, si eso es lo que quiere. En ese punto, también sale de la edición recursiva.

+0

¡Sí, eso funciona! Sin embargo, no resuelve el caso de la lista de búfer persistente, pero tal vez esa sea otra pregunta ... – Skilldrick

+0

"q" es un mecanismo de salida bastante común para muchas ventanas emergentes. Funciona con calc, calendario, depuradores, dired y muchos otros que no están incorporados, como browse-kill-ring. También funciona con la lista de búfer persistente, aunque primero debe cambiar a la lista de búfer. Si tiene una configuración de ventana de trabajo particular, puede almacenarla con C-x r w y luego volver a ella con C-x r j en cualquier momento. –

+0

Estaba jugando con 24.5, puedo confirmar la solución 'q'. Sin embargo, si 'q' falla en cualquier instancia, 'C-x 0' también cerrará la ventana enfocada. –

1

Una posible solución es utilizar un paquete de gestión de ventanas. Almacene la disposición de la ventana "preferida" y, una vez que aparezca la ventana del depurador/búfer y haya terminado, vuelva a su arreglo preferido.

Hay un montón de paquetes para elegir, ver: switching window configurations en la wiki.

Además, es posible que desee averiguar las acciones que realiza habitualmente para activar la ventana adicional (no deseada) que aparece, y usar eso para activar la configuración de la ventana antes de que aparezca la ventana.

Si desea rodar su propia (que es bastante fácil), sólo puede salvar de la configuración de la ventana, y restaurar así:

(setq the-window-configuration-i-want (current-window-configuration)) 
(global-set-key (kbd "<f7>") 
     (lambda() (interactive) 
      (set-window-configuration the-window-configuration-i-want))) 

El truco es saber dónde poner el ajuste de the-window-configuration-i-want.

3

Creo que está buscando C-x 4 C-o, que muestra un búfer en la "otra" ventana sin cambiar a ella.

Como se mencionó anteriormente, en el caso del búfer de la traza inversa probablemente desee salir de ella con q, para salir de la edición recursiva.

5

Usando winner mode, puede usar la flecha izquierda de C-C para volver a la configuración de ventana anterior. Por supuesto, esto en realidad no mata al nuevo buffer, pero sí lo oculta.

12

Por lo que entiendo, quiere cerrar el búfer en la otra ventana sin mover el cursor de la ventana actual.

No tengo ninguna función existente, por lo que rodé la mía.

(defun other-window-kill-buffer() 
    "Kill the buffer in the other window" 
    (interactive) 
    ;; Window selection is used because point goes to a different window 
    ;; if more than 2 windows are present 
    (let ((win-curr (selected-window)) 
     (win-other (next-window))) 
    (select-window win-other) 
    (kill-this-buffer) 
    (select-window win-curr))) 

Puede unirse a algo así como "C-x K" o alguna otra tecla algo difícil-a-prensa para que no se pulse por error.

(global-set-key (kbd "C-x K") 'other-window-kill-buffer) 

Uso esto MUCHO! (para búferes de Ayuda, búferes de compilación, búferes de Grep y búferes antiguos que quiero cerrar ahora, sin mover el punto)

1

Intente utilizar popwin-mode. Es realmente bueno cerrar las ventanas automáticamente.

poco enferma tratar de describir

Abres undo-tree-visualize de encontrar su rama correcta después de que cambie la ventana switch-window se va a cerrar otra ventana automáticamente

Cuestiones relacionadas