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

5
2个回答

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

3

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


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