如何限制Emacs中缓冲区的大小?
问题描述:
有没有什么办法可以限制Emacs缓冲区的大小?已经检查过这个问题:Can I limit the length of the compilation buffer in Emacs?但它不是我想要的。我想限制用户正在处理的缓冲区的大小,所以他不能超过预定义的大小。如何限制Emacs中缓冲区的大小?
答
为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
。
答
我看不到任何方式直接访问它,你可以做的是:hook pre-command-hook
如果命令是self-insert-command
你可以检查buffer-size
是否在你想要的长度以下。或者,您可以挂钩post-self-insert-hook
以检查命中大小限制,撤消它并打印消息。对于所有这些,您需要编写一个在您的缓冲区中处于活动状态的minor-mode
。