2010-11-22 15 views
5

he emacs comportarse de manera más o menos la forma en que yo quiero que a través de este poco común de elisp:¿Ventana dedicada para el modo directo en Emacs?

(defun toggle-current-window-dedication() 
(interactive) 
(let* ((window (selected-window)) 
     (dedicated (window-dedicated-p window))) 
    (set-window-dedicated-p window (not dedicated)) 
    (message "Window %sdedicated to %s" 
      (if dedicated "no longer " "") 
      (buffer-name)))) 

(global-set-key [pause] 'toggle-current-window-dedication) 

Desafortunadamente, DIRED utiliza el directorio para el nombre del búfer, por lo que dedicar una ventana dired sólo se dedica a ese directorio. Una vez que navegas hacia arriba o hacia abajo, abre un nuevo buffer en una ventana separada. Lo que me gustaría hacer es dedicar una ventana a un modo principal (direc en este caso), y hacer que todos los buffers nuevos que prefieran ese modo prefieran esa ventana. es posible?

Respuesta

4

Trate de usar su código en combinación con dired-single, lo que hará que toda la navegación dired suceda dentro de un solo buffer llamado *dired*. En aras de la divulgación completa, escribí dired-single.

+0

Gracias Joe, ¡eso es lo que estaba buscando! –

+0

Desafortunadamente, 'dired-single' abre los archivos en la misma ventana que el búfer' * dired * '. Si bien esto es perfecto para directorios, sería bueno si los archivos pudieran tratarse como 'dired-find-file-other-window' ... – hupf

3

set-window-dedicated-p obliga a Emacs a mostrar solo esa ventana para ese búfer, los otros buffers dired no pueden usar la misma ventana. Ver el *info* page for set-window-dedicated-p:

`display-buffer'(* Nota La elección de Ventana: :) nunca se utiliza un ventana dedicada para la visualización de otro búfer en ella.

Quizás uno de los paquetes en la página wiki para DiredReuseDirectoryBuffer proporciona la funcionalidad que está buscando ...

+0

Gracias, Trey. Estoy usando dired-find-alternate-file para evitar que se abran nuevos buffers, y configuré una misma ventana-regexps para los buffers dired. Esto me da el 90% de donde quiero estar, pero otros búferes todavía se pueden abrir en mi ventana (ayuda, terminaciones, etc.). Si tuviera una mejor comprensión de elisp, simplemente conectaría una coincidencia de expresiones regulares para dired en una ventana antes de abrir un nuevo búfer en ella. :) –