【发布时间】:2012-10-01 02:59:34
【问题描述】:
我喜欢大约 8 左右的滚动边距。这意味着当光标到达顶部或底部的 8 行以内时,缓冲区将开始滚动。但是,此方案不适用于 eshell 和 ansi-term 缓冲区、isql 缓冲区或任何可能与 emacs 一起使用的 REPL 缓冲区。在这些缓冲区中的任何一个中,当一个人做任何事情时,它会立即向上滚动缓冲区,以便在缓冲区底部和输入行之间有 8 行,这使得使用任何类似终端的东西充其量是尴尬,最坏的情况是无法使用在 emacs 中缓冲,视情况而定。
似乎没有缓冲区可以识别滚动边距变量,除非它是全局的。因此,虽然我可以在不同模式下使用钩子将变量设置为不同的值,但它会影响我所有的打开缓冲区。
假设我正在编辑一些代码。我决定在 shell 中做一些事情。我的 shell-mode-hooks 将滚动边距设置为 0(以便它们可以使用)。然后 all 缓冲区的滚动边距设置为 0,这使得在我的编码缓冲区中滚动变得很尴尬。但是如果我打开一个新的编码缓冲区,它会将我的滚动边距设置回 8。然后我的 shell 缓冲区很尴尬或无法使用,因为每当它们获得焦点或显示命令的输出时,它会立即向上滚动 8 个空格。
除了在全局范围内为所有缓冲区保持滚动边距为 0 之外,是否有任何解决此问题的方法?
【问题讨论】:
-
你在你的钩子中使用buffer local variables吗?
-
不!这似乎做到了。在滚动边距上使用 make-local-variable 有效。感谢您为我指明正确的方向!
标签: emacs scroll elisp margin eshell