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?

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