P: existe uma maneira de definir margens de rolagem diferentes na parte superior e inferior de uma janela?
A variável scroll-margin
(definida no código fonte C) define quantas linhas de texto o Emacs exibe, no mínimo, na parte superior e inferior de uma janela:
Número de linhas de margem na parte superior e inferior de uma janela. Atualize a janela sempre que houver um ponto dentro de muitas linhas da parte superior ou inferior da janela.
Eu gostaria de usar scroll-margin
na parte inferior da janela, mas não a quero na parte superior (por exemplo, um valor positivo na parte inferior, mas 0 na parte superior). Tem algum jeito de fazer isso?
scroll-margin
não é a ferramenta certa para o trabalho. Você pode precisar de alguma funçãopost-command-hook
para determinar se deve rolar a janela.(top . bottom)
parascroll-margin
.window-scroll-functions
gancho (que recebe dois argumentos) e colocar umrecenter
comando em uma função anexada a esse gancho e, em seguida, usar uma configuração de(setq scroll-conservatively 101)
- em essência, você define quando ocorre a ocorrência de recentes e desativa o recurso automático incorporado. -rolagem. Algo como(when (and (>= (point) (window-end nil t)) (not (pos-visible-in-window-p (point) (get-buffer-window (current-buffer) (selected-frame))))) (recenter))
Respostas:
O seguinte funciona para mim:
Observe que isso é teoricamente ineficiente, mas o desempenho no meu computador coxo parece não ser afetado.
fonte