A veces quiero mostrar información en el estilo del búfer de ayuda, por lo que he estado usando un código como este:
(with-help-window (help-buffer)
(princ "Type q to exit this help buffer.\n\n")
(princ result))
Esto funciona bien, pero la ventana de ayuda solo usa la mitad de mi marco. Normalmente divido mi marco horizontalmente, para dar dos ventanas altas. El búfer de ayuda que se muestra utiliza una de las dos ventanas.
Preferiría usar todo el marco en algunos casos, para mostrar más información y reducir la cantidad de veces que necesito desplazarme por la información mostrada. El problema a resolver es cómo usar temporalmente el marco completo para la with-help-window
llamada y restaurar automáticamente los tampones / tamaños de ventana originales cuando escribo "q" en la ventana de ayuda.
¿Cómo puedo lograr mejor este objetivo? Creo que estoy buscando algo como esto:
(with-FULL-FRAME-help-window (help-buffer)
...)
He examinado el modo ganador, marcadores, guardar diseños en registros, los diversos (y potentes, pero complejos) (display-buffer ...)
métodos. La mayoría de ellos parecen ligeramente desviados de mi intención deseada porque tienden a corregir / restaurar un diseño después de una operación de visualización de fotograma completo. Y me parece que muchos de ellos requieren que restaure manualmente el diseño de mi ventana (lo que preferiría no hacer).
Me pregunto si alguien ha oído hablar de una manera de resolver esto simplemente. Espero algo simple como estos posibles enfoques, donde puedo anular algo con un marco let ...
(let ((help-window-width-display-option fullwidth))
(with-help-window (help-buffer)
...))
O este tipo de enfoque, que aún no sé cómo hacer, y que parece un tanto difícil / complicado para mi nivel de habilidad actual.
(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
)
Me parece que el problema clave que debo resolver es cómo restaurar automáticamente la configuración original de la ventana cuando escribo "q" en el búfer temporal del modo de ayuda. Gracias
display-buffer-pop-up-frame
, ya que está bastante cerca de lo que busco. Pero ... el marco aparece en otro lugar (no mi marco actual), y debo enviarlo con cmd-w, no "q" en estilo de ayuda. Guardar / restaurar configuraciones de ventana no es el problema subyacente. Actualmente me estoy inclinando hacia la clonación y la modificación de la fuente de la ventana con ayuda para darle una opción que pueda vincular o envolver con un defmacro o algo así. Sonrío por lo exigentes que somos las personas de emacs que queremos exactamente lo que queremos de Emacs.
help-return-method
, quit-window
el quit-restore
parámetro de ventana, y probablemente algún código personalizado para set / usar todas esas cosas para crear el efecto deseado.
display-buffer-pop-up-frame
: gnu.org/software/emacs/manual/html_node/elisp/… Otra idea sería emitir unmake-frame
tiempo usandodisplay-buffer
una función personalizada para apuntar a ese nuevo marco. Si está interesado en localizar y orientar un marco existente, eche un vistazo a este ejemplo: stackoverflow.com/questions/18346785/…