J'utilise sr-speedbar avec emacs, et j'ai souvent le cadre divisé en 2-3 fenêtres différentes, et chaque fois que je clique sur un fichier dans sr-speedbar, il ouvre toujours le nouveau tampon dans la fenêtre la plus basse. J'essaie de garder la fenêtre en bas à droite comme un terme relativement petit, et emacs continue d'insister pour ouvrir de nouveaux tampons dans la fenêtre à court terme plutôt que dans la zone beaucoup plus grande que j'aimerais utiliser pour éditer les tampons.
Existe-t-il un moyen de configurer la logique de création de tampon pour préférer les fenêtres supérieures aux fenêtres inférieures?
J'ai déjà essayé de prendre ma fenêtre la plus basse et de la marquer comme protégée, et cela a juste fait qu'emacs la divise en deux parties déraisonnablement petites. Ensuite, j'ai essayé d'activer window-size-fixed et au lieu de laisser emacs ouvrir le tampon au-dessus de cette fenêtre, cela m'a juste donné une erreur que la fenêtre était trop petite pour être divisée. Bon, je suppose que cela a cessé d'encombrer ma fenêtre la plus basse, mais stupide qu'il m'empêche d'ouvrir de nouveaux tampons à la place.
Idéalement, j'aimerais pouvoir forcer emacs à sélectionner la fenêtre en haut à droite pour afficher les tampons nouvellement créés, sans essayer de diviser la fenêtre en bas à droite.
Réponses:
Je suppose que vous utilisez Emacs 24; Je n'ai testé cette réponse dans aucune version antérieure et je ne sais pas quand le concept de fenêtres dédiées a été ajouté à Emacs. J'ai vu des mentions de son utilisation qui datent de 2011, donc je suppose qu'Emacs 23 (au moins) a également la capacité.
Vous pouvez empêcher Emacs d'ouvrir un nouveau tampon dans une fenêtre donnée en dédiant la fenêtre à son tampon .
Dans le cas le plus simple, vous pouvez le faire en sélectionnant la fenêtre que vous souhaitez dédier, en vous assurant qu'elle affiche actuellement le tampon auquel vous souhaitez le dédier, puis en le faisant
M-: (set-window-dedicated-p (selected-window) t)
. Cela empêchera Emacs de considérer la fenêtre ainsi modifiée au moment de décider dans quelle fenêtre afficher un tampon. Pour supprimer la dédicace, évaluez la même expression, en remplaçant le deuxième argument parnil
.Vous pouvez empêcher Emacs de tenter de diviser une fenêtre qui affiche un tampon donné en définissant la variable buffer-local window-size-fixed sur une valeur non nulle.
Dans le cas le plus simple, vous pouvez le faire en sélectionnant la fenêtre et en faisant
M-: (setq window-size-fixed t)
. Pour corriger uniquement la hauteur ou la largeur des fenêtres affichant le tampon, évaluez la même expression, en passant'height
ou'width
comme deuxième argument; pour supprimer la restriction, remplacez le deuxième argument parnil
.Dans le cas général, j'ai trouvé votre problème suffisamment intéressant pour pirater une solution , que vous pouvez déposer dans votre chemin de chargement
(require)
, et utiliser:la source
Dans les versions récentes d'Emacs, une option a
display-buffer-alist
été ajoutée. Il offre un contrôle précis sur l'affichage du tampon, les fenêtres utilisées, etc. Cependant, parce qu'il vous permet de faire beaucoup de choses, il est également assez complexe et difficile à décrire. Consultez la documentation:C-h v display-buffer-alist
.la source