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-marginpara 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?
(top . bottom)para scroll-margin.
window-scroll-functionsgancho (que toma dos argumentos) y poner un recentercomando 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))
scroll-marginno es la herramienta adecuada para el trabajo. Es posible que necesite alguna funciónpost-command-hookpara determinar si se desplaza la ventana.