2010-11-22 15 views
5

Ich habe verhalten Emacs mehr oder weniger, wie ich es möge durch dieses gemeinsam wenig elisp mit:Dedicated Fenster für Dired-Modus 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) 

Leider dired das Verzeichnis für den Puffer-Namen verwendet, so dass ein dired Fenster, um es nur zu, dass widmet widmen Verzeichnis. Sobald Sie nach oben oder unten navigieren, wird ein neuer Puffer in einem separaten Fenster geöffnet. Was ich tun möchte, ist ein Fenster einem Major-Modus (in diesem Fall dired) zu widmen, und alle neuen Puffer, die standardmäßig in diesem Modus sind, bevorzugen dieses Fenster. Ist das möglich?

Antwort

4

Versuchen Sie den Code in Kombination mit mit dired-single, die alle dired Navigation verursachen wird innerhalb geschehen ein einzelner Puffer namens *dired*. Im Interesse der vollständigen Offenlegung schrieb ich dired-single.

+0

Danke Joe, das ist, was ich gesucht habe! –

+0

Unglücklicherweise öffnet 'dired-single' die Dateien im selben Fenster wie der' * dired * 'Puffer. Während dies für Verzeichnisse ideal ist, wäre es schön, wenn Dateien wie mit 'dired-find-file-other-window' behandelt werden könnten ... – hupf

3

set-window-dedicated-p zwingt Emacs, nur dieses Fenster für diesen Puffer anzuzeigen, die anderen dired Puffer können das gleiche Fenster nicht verwenden. Siehe die *info* page for set-window-dedicated-p:

`Display-Puffer‘ (* Anmerkung Wahl Fenster: :) nie benutzt ein spezielles Fenster für einen weiteren Puffer darin angezeigt wird.

Vielleicht eines der Pakete auf der Wiki-Seite für DiredReuseDirectoryBuffer bietet die Funktionalität Sie suchen ...

+0

Danke, Trey. Ich verwende dired-find-alternate-file, um zu verhindern, dass neue Puffer geöffnet werden, und ich errichte ein gleiches Fenster-regexps für dired-Puffer. Dadurch bekomme ich 90% von dem, wo ich sein möchte, aber andere Puffer können immer noch in meinem direkten Fenster (Hilfe, Vervollständigungen usw.) geöffnet werden. Wenn ich elisp besser verstehen würde, würde ich einfach eine Regexp-Übereinstimmung für dired in einem Fenster haken, bevor ich einen neuen Puffer darin öffne. :) –