2009-10-15 7 views
7

J'ai donc généralement 3 tampons ouverts dans Emacs.Comment faire pour que les commandes de déplacement de fenêtre ignorent une certaine fenêtre?

  1. Un tampon pour le code que j'écris.
  2. Un tampon pour le test unitaire dudit code.
  3. Un troisième tampon affichant les résultats du test unitaire. Ce tampon apparaît en dessous des deux autres tampons lorsque je lance mon test unitaire C-x SPACE.

Comment puis-je désactiver ce troisième tampon de sorte que lorsque je presse C-x o Je commutation seulement entre tampon 1 et le tampon 2? À l'heure actuelle, je passe entre le tampon 1, tampon puis 2, puis 3 tampon, alors le tampon 1, etc. Pour être précis, je veux C-x o à seulement passer de tampon 1 et 2.

Merci.

+0

Pas une réponse mais une solution de contournement qui pourrait vous aider: http://stackoverflow.com/questions/91071/emacs-switch-active-window –

+0

Il semble que vous demandiez d'ignorer une * fenêtre * quand elle contient un tampon particulier que vous ne voulez pas changer. Correct? –

+0

Stephen, puis-je vous suggérer de mettre à jour le titre et la question pour mettre la fenêtre au lieu du tampon? buffer/window/frame ont une signification spécifique dans emacs: Frame est l'équivalent de ce qu'un gestionnaire Windows appelle une fenêtre (le boîtier que vous pouvez généralement déplacer). La fenêtre est ce à quoi vous faites référence: un sous-ensemble de l'image qui montre du texte. un tampon est ce qui représente le contenu réel montré. Il est généralement identifié par un nom, qui apparaît dans la modélisation. Vous pouvez afficher le même tampon sur deux fenêtres, par ex. – Bahbar

Répondre

7

Une solution générale à ce (peut regarder) quelque chose comme ce qui suit:

(defvar ignore-windows-containing-buffers-matching-res '("\\*Help") 
     "List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)") 

(defadvice other-window (before other-window-ignore-windows-containing activate) 
    "skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res" 
    (if (and (= 1 (ad-get-arg 0)) (interactive-p)) 
     (let* ((win (next-window)) 
      (bname (buffer-name (window-buffer win)))) 
     (when (some 'identity (mapcar '(lambda (re) 
             (string-match re bname)) 
            ignore-windows-containing-buffers-matching-res)) 
      (ad-set-arg 0 2))))) 

Personnalisez la variable à une expression régulière correspondant aux noms de tampons que vous voulez sauter.

+0

J'ai copié ceci dans mon fichier .emacs. J'ai juste remplacé "* Aide" par "* Ruby-Test *" (qui était le nom du tampon que le test de ruby ​​était exécuté dedans). Maintenant, quand je change de tampon, il ne fait que basculer entre les tampons 1 et 2. On dirait que c'est une bonne solution. Merci. –

5

La réponse de Trey va faire exactement ce que vous voulez (il semble au moins comme il, je l'ai pas essayé). Une solution plus générique serait d'utiliser swbuff avec soit swbuff-x ou le mien swbuff-advice. Les informations sur les trois peuvent être trouvées sur le Emacs Wiki swbuff page.

Questions connexes