Vous pouvez faire apparaître certains tampons, pour lesquels Emacs crée normalement une seconde fenêtre lorsque vous avez une seule fenêtre, dans leur propre cadre. Pour faire cela, définissez la variable special-display-buffer-names comme un liste de noms de tampons ; tout tampon dont le nom est dans cette liste est automatiquement placé dans un cadre spécial, lorsqu'Emacs tente de l'afficher dans "une autre fenêtre".
Par exemple, si vous définissez la variable ainsi,
(setq special-display-buffer-names '("*Completions*" "*grep*" "*tex-shell*")) |
alors les tampons de listes de complétion, de sortie de grep et de mode shell TeX apparaissent dans leur propre cadre. Ces cadres, et les fenêtres qu'ils contiennent, ne sont jamais découpés automatiquement ou réutilisés pour un autre tampon. Ils continuent à afficher les tampons pour lesquels ils ont été créés, à moins que vous les modifiez à la main. La destruction d'un tampon spécial entraîne automatiquement la destruction de son cadre.
Plus généralement, vous pouvez définir special-display-regexps comme une liste d'expressions rationnelles ; ainsi un tampon obtient son propre cadre si son nom correspond à une des expressions rationnelles. (Une fois encore, ceci s'applique seulement aux tampons qui sont normalement affichés dans une fenêtre séparée.)
La variable special-display-frame-alist spécifie les paramètres pour ces cadres. Elle a une valeur par défaut, vous n'avez donc pas besoin de la définir.
Pour ceux qui connaissent Lisp, un élément de special-display-buffer-names ou special-display-regexps peut aussi être une liste. Alors le premier élément est le nom du tampon ou une expression rationnelle ; le reste de la liste spécifie comment créer le cadre. Cela peut être une liste d'associations spécifiant les valeurs des paramètres du cadre ; ces valeurs sont prioritaires par rapport aux valeurs spécifiées dans special-display-frame-alist. Alternativement, ça peut avoir cette forme :
(fonction args...) |
où fonction est un symbole. Le cadre est alors construit en appelant fonction; son premier argument est le tampon, et ses arguments suivants sont args.
Une fonctionnalité analogue vous permet de spécifier les tampons qui doivent affichés dans la fenêtre sélectionnée. Section 18.5. La fonctionnalité "même fenêtre" l'emporte sur la fonctionnalité "cadre spécial" ; de ce fait, si vous ajoutez un nom de tampon à special-display-buffer-names et que ça n'a pas d'effet, vérifiez que cette fonctionnalité n'est pas aussi utilisée pour le même nom de tampon.