Ich möchte manchmal Informationen im Hilfepufferstil anzeigen, daher habe ich folgenden Code verwendet:
(with-help-window (help-buffer)
(princ "Type q to exit this help buffer.\n\n")
(princ result))
Dies funktioniert gut, aber das Hilfefenster verwendet nur die Hälfte meines Frames. Normalerweise teile ich meinen Rahmen horizontal, um zwei hohe Fenster zu erhalten. Der angezeigte Hilfepuffer verwendet eines der beiden Fenster.
In einigen Fällen würde ich lieber den gesamten Frame verwenden, um mehr Informationen anzuzeigen und die Häufigkeit zu verringern, mit der ich die angezeigten Informationen durchblättern muss. Das zu lösende Problem besteht darin, den gesamten Frame vorübergehend für den with-help-window
Aufruf zu verwenden und die ursprünglichen Puffer / Fenstergrößen automatisch wiederherzustellen, wenn ich im Hilfefenster "q" eingebe.
Wie kann ich dieses Ziel am besten erreichen? Ich glaube, ich suche so etwas:
(with-FULL-FRAME-help-window (help-buffer)
...)
Ich habe mir den Winner-Modus, Lesezeichen, das Speichern von Layouts in Registern und die verschiedenen (und leistungsstarken, aber komplexen) (display-buffer ...)
Methoden angesehen. Die meisten von ihnen scheinen meiner gewünschten Absicht etwas zuwider zu sein, da sie dazu neigen, ein Layout nach einem Vollbild-Anzeigevorgang zu korrigieren / wiederherzustellen. Und es scheint mir, dass viele von ihnen erfordern, dass ich mein Fensterlayout manuell wiederherstelle (was ich lieber nicht tun würde).
Ich frage mich, ob jemand von einem Weg gehört hat, dies einfach zu lösen. Ich hoffe auf etwas Einfaches wie diese möglichen Ansätze, bei denen ich etwas mit einem Let-Frame überschreiben kann ...
(let ((help-window-width-display-option fullwidth))
(with-help-window (help-buffer)
...))
Oder diese Art von Ansatz, den ich noch nicht beherrsche und der für mein aktuelles Können etwas schwierig / knifflig aussieht.
(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
)
Es scheint mir, dass das Hauptproblem, das ich lösen muss, darin besteht, die ursprüngliche Fensterkonfiguration automatisch wiederherzustellen, wenn ich "q" in den temporären Hilfemodus-Puffer eingebe. Vielen Dank
display-buffer-pop-up-frame
, da es ziemlich nahe an dem liegt, was ich suche. Aber ... der Frame erscheint an einer anderen Stelle (nicht in meinem aktuellen Frame), und ich muss ihn mit cmd-w versenden, nicht mit "q" im Hilfestil. Das Speichern / Wiederherstellen von Fensterkonfigurationen ist nicht das zugrunde liegende Problem. Derzeit neige ich dazu, die Quelle des With-Help-Fensters zu klonen und zu ändern, um ihr eine Option zu geben, die ich binden oder mit einem Defmacro oder etwas anderem umschließen kann. Ich lächle darüber, wie wählerisch wir Emacs sind, wenn es darum geht , genau das zu wollen , was wir von Emacs wollen.
help-return-method
, quit-window
die quit-restore
Fensterparameter, und wahrscheinlich einige benutzerdefinierte Code zu setzen / alle diese Dinge verwenden , um die gewünschten Effekte zu erzeugen.
display-buffer-pop-up-frame
: gnu.org/software/emacs/manual/html_node/elisp/... Eine weitere Idee Idee wäre ein zu erteilen ,make-frame
während Verwendungdisplay-buffer
mit einer benutzerdefinierten Funktion , um diesen neuen Rahmen Ziel. Wenn Sie daran interessiert sind, einen vorhandenen Frame zu finden und auf ihn abzuzielen,