2010-11-20 5 views
4

Je voudrais écrire une fonction emacs lisp qui écrira la sortie dans une fenêtre autre que la fenêtre courante. Il devrait créer une nouvelle fenêtre si seulement la fenêtre courante existe, et elle devrait utiliser une fenêtre existante sinon. Ceci est similaire à ce qui se passe lorsque vous exécutez C-h-f (fonction Describe), et la description apparaît dans une autre fenêtre. Quelle est la meilleure façon de procéder?Emacs Lisp - ouverture de la nouvelle fenêtre

Répondre

9

Voir display-buffer:

display-tampon est un interactive compilé fonction Lisp dans `window.el.

Il est lié à C-x 4 C-o.

(affichage tampon tampon ou nom & option cadre sans cette fenêtre)

Marque tampon tampon ou nom apparaissent dans la fenêtre une mais ne sélectionnez pas. buffer-or-name doit être un tampon ou le nom d'un tampon existant. Retourne la fenêtre choisie pour afficher buffer-or-name ou zéro si aucune fenêtre n'est trouvée.

Argument optionnel sans cette fenêtre signifie non nul afficher la mémoire tampon dans une fenêtre autre que celui sélectionné, même si elle est déjà affichée dans la fenêtre sélectionnée .

Le cadre d'argument facultatif spécifie les trames à examiner lorsque le tampon spécifié est déjà affiché. Si le tampon est déjà affiché dans une fenêtre sur l'une de ces images retourne simplement cette fenêtre. Valeurs possibles du cadre sont les suivants:

`visible » - considérer toutes les fenêtres sur cadres visibles.

0 - envisager des fenêtres sur tous les cadres iconisés .

t - envisager des fenêtres sur toutes les images.

Un cadre spécifique - considérez les fenêtres sur qui encadrent uniquement.

nil - considère les fenêtres du cadre sélectionné (en fait le dernier cadre non-mini-tampon ) uniquement. Si, cependant, que ce soit display-buffer-reuse-frames' or pop-up-cadres est non nul (non nul et non graphique uniquement sur un terminal texte uniquement ), tenir compte de tous visibles ou cadres iconifiés.

Ou vous pouvez utiliser pop-to-buffer si vous voulez que le tampon à choisir (ce qui sonne comme vous n'avez pas), ou with-output-to-temp-buffer qui lie le standard-output à envoyer à la mémoire tampon temporaire - lire le documentation pour plus de détails (Conseil de chapeau à Michael pour cela).

+2

Merci. J'ai également trouvé avec-output-to-temp-buffer. Il permet une entrée directe dans le tampon temporaire, plutôt que de garder une trace d'un tampon séparé. –

+0

@Michael ajouté avec le lien de la documentation. –

Questions connexes