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

5
我喜欢大约8行的滚动边距。这意味着当光标接近顶部或底部8行时,缓冲区将开始滚动。然而,这种方案在使用eshell和ansi-term缓冲区、isql缓冲区或任何REPL缓冲区时效果不佳。在任何这些缓冲区中,当执行任何操作时,它会立即向上滚动缓冲区,以便在输入行和缓冲区底部之间有8行,这使得在emacs中使用任何类似终端的缓冲区变得尴尬或无法使用,具体情况取决于情况。
除非是全局变量,否则没有任何缓冲区能够识别scroll-margin变量。因此,虽然我可以在不同的模式下使用钩子设置变量的不同值,但它影响我所有打开的缓冲区。
所以,假设我正在编辑一些代码。我决定在shell中进行一些操作。我的shell-mode-hooks将scroll-margin设置为0(以便它们可用)。然后,对于所有缓冲区,scroll-margin都被设置为0,使得在我的编码缓冲区中滚动变得尴尬。但是,如果我打开一个新的编码缓冲区,它将把我的scroll-margin重新设置为8。然后我的shell缓冲区变得尴尬或无法使用,因为每当它们获得焦点或显示命令输出时,它会立即向上滚动8个空格。
除了在所有缓冲区中全局保持scroll-margin为0之外,是否有任何解决此问题的方法?

3
你在你的钩子函数中使用了缓冲区局部变量吗? - rwb
不错!看起来可以了。在scroll-margin上使用make-local-variable就可以了。感谢您指导我正确的方向! - Jones
1个回答

8
将评论转换为答案。在钩子中使用缓冲区局部变量。 点击此处了解有关缓冲区局部变量的介绍。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接