Je souhaite parfois afficher des informations dans un style de tampon d'aide, j'ai donc utilisé du code comme celui-ci:
(with-help-window (help-buffer)
(princ "Type q to exit this help buffer.\n\n")
(princ result))
Cela fonctionne bien, mais la fenêtre d'aide n'utilise que la moitié de mon cadre. Je divise normalement mon cadre horizontalement, pour donner deux grandes fenêtres. Le tampon d'aide affiché utilise l'une des deux fenêtres.
Je préfère utiliser le cadre entier dans certains cas, pour afficher plus d'informations et pour réduire le nombre de fois que je dois parcourir les informations affichées. Le problème à résoudre est de savoir comment utiliser temporairement tout le cadre pour l' with-help-window
appel et restaurer automatiquement les tailles de tampons / fenêtres d'origine lorsque je tape "q" dans la fenêtre d'aide.
Comment puis-je atteindre au mieux cet objectif? Je pense que je cherche quelque chose comme ça:
(with-FULL-FRAME-help-window (help-buffer)
...)
J'ai regardé le mode gagnant, les signets, la sauvegarde des dispositions dans les registres, les différentes (display-buffer ...)
méthodes (et puissantes, mais complexes) . La plupart d'entre eux semblent légèrement hors cible par rapport à mon intention, car ils ont tendance à corriger / restaurer une mise en page après une opération d'affichage plein cadre. Et il me semble que beaucoup d'entre eux me demandent de restaurer manuellement la disposition de ma fenêtre (ce que je préférerais ne pas faire).
Je me demande si quelqu'un a entendu parler d'un moyen de résoudre ce problème simplement. J'espère quelque chose de simple comme ces approches possibles, où je peux remplacer quelque chose avec un cadre let ...
(let ((help-window-width-display-option fullwidth))
(with-help-window (help-buffer)
...))
Ou ce genre d'approche, que je ne sais pas encore faire, et qui semble quelque peu difficile / délicate pour mon niveau de compétence actuel.
(let ((save original configuration somehow)
(delete-other-windows)
(with-help-window (help-buffer)
...)
;; somehow, when I type "q" in the help buffer
;; - catch that action in code after the buffer is killed
;; - and restore the original window configuration
)
Il me semble que le problème clé à résoudre est de savoir comment restaurer automatiquement la configuration de la fenêtre d'origine lorsque je tape "q" dans le tampon du mode d'aide temporaire. Merci
display-buffer-pop-up-frame
, car c'est assez proche de ce que je recherche. Mais ... le cadre apparaît à un autre endroit (pas mon cadre actuel), et je dois le distribuer avec cmd-w, pas "q" dans le style d'aide. L'enregistrement / la restauration des configurations de fenêtre n'est pas le problème sous-jacent. Actuellement, je penche vers le clonage et la modification de la source de with-help-window pour lui donner une option que je peux laisser-lier ou boucler avec un defmacro ou quelque chose. Je souris à quel point nous émacions les gens à vouloir exactement ce que nous voulons d'Emacs.
help-return-method
, quit-window
le quit-restore
paramètre de fenêtre, et probablement du code personnalisé pour définir / utiliser toutes ces choses pour créer l'effet souhaité.
display-buffer-pop-up-frame
: gnu.org/software/emacs/manual/html_node/elisp/… Une autre idée serait de lancer unmake-frame
tout en utilisantdisplay-buffer
une fonction personnalisée pour cibler ce nouveau cadre. Si vous souhaitez localiser et cibler un cadre existant, jetez un œil à cet exemple: stackoverflow.com/questions/18346785/…