如何在Emacs中限制缓冲区的大小?

时间:2012-07-22 17:10:25

标签: emacs

有没有办法可以限制Emacs中缓冲区的大小?已经检查了这个问题:Can I limit the length of the compilation buffer in Emacs?但这不是我想要的。我想限制用户正在处理的缓冲区的大小,因此他不能放置超过预定义的大小。

2 个答案:

答案 0 :(得分:4)

message-mode的示例(将缓冲区置于此模式类型M-x message-mode

(define-key message-mode-map [remap self-insert-command]
  '(lambda () 
     (interactive)
     (let ((limit-buffer-size 30))
       (message "buffer-size is %i of %i" (buffer-size) limit-buffer-size)
       (if (< (buffer-size) limit-buffer-size)
       (call-interactively 'self-insert-command)
     (message "Maximum bufer size is %i characters" limit-buffer-size)))))

请注意,用户仍可以yank个字符。另一种选择是重新映射save-buffer

答案 1 :(得分:3)

我看不到任何直接访问它的方法,你可以做的是:如果命令是pre-command-hook,可以勾选self-insert-command你可以检查buffer-size是否低于你的长度想。或者,您可以挂钩post-self-insert-hook以检查是否达到大小限制,撤消它并打印消息。为此,您需要编写一个在缓冲区中处于活动状态的minor-mode