2010-11-22 12 views
5

ho emacs comportarsi più o meno come lo voglio a utilizzando questo bit comune elisp:Finestra dedicata per la modalità dired in 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) 

Purtroppo, Dired utilizza la directory per il nome del buffer, quindi dedicando una finestra dired dedica solo a quella directory. Una volta spostati verso l'alto o verso il basso, si apre un nuovo buffer in una finestra separata. Quello che mi piacerebbe fare è dedicare una finestra a una modalità principale (dired in questo caso), e avere tutti i nuovi buffer che di default in quella modalità preferiscono quella finestra. È possibile?

risposta

4

Prova utilizzando il codice in combinazione con dired-single, che farà sì che tutti i navigazione dired avvenire entro un singolo buffer denominato *dired*. Nell'interesse della completa divulgazione, ho scritto dired-single.

+0

Grazie Joe, questo è quello che stavo cercando! –

+0

Sfortunatamente, 'dired-single' apre i file nella stessa finestra del buffer' * dired * '. Mentre questo è perfetto per le directory, sarebbe bello se i file potessero essere trattati come con 'dired-find-file-other-window' ... – hupf

3

set-window-dedicated-p forza Emacs a mostrare solo quella finestra per quel buffer, gli altri buffer dired non possono utilizzare la stessa finestra. Vedere la *info* page for set-window-dedicated-p:

`Display-buffer'(* nota Scelta Window: :) non utilizza un finestra dedicata per la visualizzazione di un altro buffer in esso.

Forse uno dei pacchetti sulla pagina wiki per DiredReuseDirectoryBuffer fornisce la funzionalità che stai cercando ...

+0

Grazie, Trey. Sto usando dired-find-alternate-file per impedire l'apertura di nuovi buffer, e ho impostato una stessa finestra-regexps per i buffer dired. Questo mi dà il 90% di dove voglio essere, ma altri buffer possono ancora aprirsi nella mia finestra dired (aiuto, completamenti, ecc.). Se avessi una migliore comprensione di elisp, vorrei solo agganciare una corrispondenza regexp per dired in una finestra prima di aprire un nuovo buffer in essa. :) –

Problemi correlati