window – Mueva el punto al final de una ventana en vivo usando elisp

Pregunta:

Quiero mover el punto al final de una ventana usando elisp. El siguiente fragmento de código:

(set-buffer "buffer-name")
(goto-char (point-min))

no cambia visualmente la ubicación del cursor en la ventana que visita el búfer "nombre-búfer". Esto se debe a que las ventanas y los búferes son conceptos separados.

Encontré la función set-window-point documentada en https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Point.html , pero no puedo usarla. Su firma es:

set-window-point window position

¿Qué significa el primer argumento, window ?

Intenté ejecutar el comando (set-window-point "buffer-name" (point-min)) , pero devuelve el error Wrong type argument: window-live-p, "buffer-name" , que supongo, significa que la ventana llamada "nombre-búfer" no se muestra en la pantalla.

Propósito: tengo varias ventanas de eshell en la pantalla que están conectadas a través de ssh a máquinas remotas y he escrito una función elisp para ejecutar un solo comando en todos los búferes de eshell. Puedo ejecutar el comando, pero no puedo ver el resultado porque las ventanas no se desplazan automáticamente. Tengo que cambiar a las ventanas y desplazarme hacia abajo.

Respuesta:

A menos que tenga una razón para no hacer que los búferes de eshell se desplacen automáticamente en la salida, creo que usar eshell-scroll-to-bottom-on-output (consulte Mx customize-apropos RET eshell para ver las variables relacionadas) será mucho más solución elegante y confiable.

Sin embargo, la siguiente función debería hacer lo que está pidiendo. Una advertencia (de muchas) es que solo se desplazará por una ventana que muestre este búfer, si tiene más de una.

(defun my-scroll-buffer-to-bottom (buf)
  (with-current-buffer buf
    (set-window-point
     (get-buffer-window (current-buffer) 'visible)
     (point-max))))

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım