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

标签 emacs scroll elisp margin eshell

我喜欢 8 左右的滚动边距。这意味着当光标到达顶部或底部的 8 行范围内时,缓冲区将开始滚动。然而,这一方案不适用于 eshell 和 ansi term 缓冲区、isql 缓冲区或任何可能与 emacs 一起使用的 REPL 缓冲区。在这些缓冲区中的任何一个中,当有人执行任何操作时,它会立即向上滚动缓冲区,以便缓冲区底部和输入行之间有 8 行,这使得使用任何类似终端的操作往好里说是很尴尬,往坏了说是无法使用。 emacs 中的缓冲区,视情况而定。

似乎没有缓冲区能够识别滚动边距变量,除非它是全局的。因此,虽然我可以在不同模式下使用 Hook 将变量设置为不同值,但它会影响我所有打开的缓冲区。

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

除了将所有缓冲区的滚动边距保持为 0 之外,还有其他解决方案吗?

最佳答案

将评论转换为答案。使用buffer local variable卡在钩子(Hook)上。

关于Emacs、平滑滚动、滚动边距和 eshell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667043/

相关文章:

ios uitableview uitableviewcell 重用有旧数据

emacs - 在elisp中去除字符串列表中的重复元素

emacs - 自动完成和驼峰式

html - 在 emacs 中使用 aspell 编辑 HTML 页面

emacs - 如何强制 Emacs 不在特定窗口中显示缓冲区?

Emacs Lisp : difference between (function (lambda . ..))和(lambda ...)?

emacs - 显示当前文件在迷你缓冲区中的完整路径的功能

emacs - 如何在 paredit 中用已经写好的外部形式包装形式

jQuery:如何将 DIV 保持在屏幕顶部并在向上滚动(并到达其原始位置)后恢复其位置

javascript - 如何编写多个javascript函数?