Emacs,平滑滚动,滚动边距和eshell

时间:2012-10-01 02:59:34

标签: emacs scroll elisp margin eshell

我喜欢大约8左右的滚动边距。这意味着当光标位于顶部或底部的8行内时,缓冲区将开始滚动。但是,此方案不适用于eshell和ansi-term缓冲区,isql缓冲区或可能与emacs一起使用的任何REPL缓冲区。在任何一个缓冲区中,当一个缓冲区执行任何操作时,它会立即向上滚动缓冲区,以便缓冲区底部和输入线之间有8条线,使得它最好处于尴尬状态,在最坏情况下无法使用任何类似终端的终端emacs中的缓冲区,具体取决于具体情况。

没有缓冲区似乎能识别scroll-margin变量,除非它是全局变量。因此,虽然我可以使用不同模式的挂钩将变量设置为不同的值,但它会影响我的所有打开缓冲区。

所以我想说我正在编辑一些代码。我决定在shell中做一些事情。我的shell-mode-hooks将scroll-margin设置为0(这样它们可以使用)。然后,对于所有缓冲区,滚动边距设置为0,这使得在我的编码缓冲区中滚动变得很尴尬。但是如果我打开一个新的编码缓冲区,它会将我的滚动边距设置回8.然后我的shell缓冲区很难或无法使用,因为只要它们获得焦点或显示命令的输出,它就会立即向上滚动8个空格。

除了为所有缓冲区保持全局滚动边距0之外,是否有解决此问题的方法?

1 个答案:

答案 0 :(得分:8)

将评论转换为答案。暂时使用buffer local variable