P: ¿hay alguna manera de establecer diferentes márgenes de desplazamiento en la parte superior e inferior de una ventana?
La variable scroll-margin
(definida en el código fuente C) establece cuántas líneas de texto muestra Emacs, como mínimo, en la parte superior e inferior de una ventana:
Número de líneas de margen en la parte superior e inferior de una ventana. Vuelva a colocar la ventana cuando el punto se encuentre dentro de estas líneas de la parte superior o inferior de la ventana.
Me gustaría usarlo scroll-margin
para la parte inferior de la ventana, pero no lo quiero en la parte superior (por ejemplo, un valor positivo en la parte inferior, pero 0 en la parte superior). ¿Hay una manera de hacerlo?
scroll-margin
no es la herramienta adecuada para el trabajo. Es posible que necesite alguna funciónpost-command-hook
para determinar si se desplaza la ventana.(top . bottom)
parascroll-margin
.window-scroll-functions
gancho (que toma dos argumentos) y poner unrecenter
comando en una función adjunta a ese gancho y luego usar una configuración de(setq scroll-conservatively 101)
- en esencia, usted define cuándo ocurre la reenfoque y apaga el auto incorporado -Desplazarse. Algo así como(when (and (>= (point) (window-end nil t)) (not (pos-visible-in-window-p (point) (get-buffer-window (current-buffer) (selected-frame))))) (recenter))
Respuestas:
Lo siguiente funciona para mí:
Tenga en cuenta que esto es teóricamente ineficiente, pero el rendimiento en mi computadora no parece afectado.
fuente