2010-11-22 14 views
5

J'ai emacs se comporter plus ou moins comment je veux qu'il en utilisant ce bit commun de elisp:Fenêtre dédiée pour le mode dired dans 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) 

Malheureusement, DIRED utilise le répertoire pour le nom du tampon, afin de consacrer une fenêtre Dired il consacre uniquement à cette annuaire. Une fois que vous naviguez vers le haut ou vers le bas, il ouvre un nouveau tampon dans une fenêtre séparée. Ce que je voudrais faire est de dédier une fenêtre à un mode majeur (dired dans ce cas), et tous les nouveaux buffers qui par défaut à ce mode préfèrent cette fenêtre. Est-ce possible?

Répondre

4

Essayez d'utiliser votre code en combinaison avec dired-single, qui fera toute navigation Dired à se produire dans un seul tampon nommé *dired*. Dans l'intérêt de la divulgation complète, j'ai écrit dired-single.

+0

Merci Joe, c'est ce que je cherchais! –

+0

Malheureusement, 'dired-single' ouvre les fichiers dans la même fenêtre que le buffer' * dired * '. Bien que ce soit parfait pour les répertoires, il serait bien que les fichiers puissent être traités comme avec 'dired-find-file-other-window' ... – hupf

3

set-window-dedicated-p Force Emacs à afficher uniquement cette fenêtre pour ce tampon, les autres tampons dired ne peuvent pas utiliser la même fenêtre. Voir la *info* page for set-window-dedicated-p:

(* Note'Affichage-buffer »

Choisir Window: :) utilise jamais une fenêtre dédiée pour afficher un autre tampon en elle.

Peut-être l'un des forfaits sur la page wiki pour DiredReuseDirectoryBuffer fournit la fonctionnalité que vous cherchez ...

+0

Merci, Trey. J'utilise dired-find-alternate-file pour empêcher l'ouverture de nouveaux buffers, et j'ai mis en place un regexps pour les buffers dired. Cela m'obtient 90% de l'endroit où je veux être, mais d'autres tampons peuvent encore s'ouvrir dans ma fenêtre dired (aide, complétions, etc.). Si j'avais une meilleure compréhension de elisp, je ferais juste un hook regexp pour dired dans une fenêtre avant d'y ouvrir un nouveau buffer. :) –