Emacs禁用*Messages*缓冲区

24

有没有一种方法可以禁用 Messages 缓冲区?我知道我可以杀死它,但它会重新出现。我知道我可以在不经过 Messages 的情况下滚动缓冲区,但是有没有一种方法可以禁用它的创建呢?

谢谢。


5
你如何切换缓冲区?我希望你不要使用效率低下的默认缓冲区切换方式。请查看iswitchb,然后你可以直接转到任何一个缓冲区,这样你就不必经过 Messages 缓冲区了。顺便说一句,Messages 缓冲区很有用,例如当你从 elisp 中打印出信息时,你会学会欣赏它。 - Tom
3
不要禁用 *Messages*,这是个不好的主意。查看 http://stackoverflow.com/questions/9536186/emacs-lisp-buffer-out-of-focus-function 获取一些建议,防止它(以及其他类似的缓冲区)妨碍你操作。 - phils
@Tom,当你使用iswitchb切换时,*Messages*也会被匹配,增加了子字符串的歧义性,是吗? - katspaugh
1
@katspaugg 如果你想要过滤掉消息,可以使用变量iswitchb-buffer-ignore。 - Tom
2个回答

26
根据上面的答案,在你的.emacs文件中添加以下内容以完全禁用消息:messages
;; Forces the messages to 0, and kills the *Messages* buffer - thus disabling it on startup.
(setq-default message-log-max nil)
(kill-buffer "*Messages*")

如果你和我一样,打开一个新文件时出现的 Completions 缓冲区可以按以下方式去除。

;; Disabled *Completions*
(add-hook 'minibuffer-exit-hook 
      '(lambda ()
         (let ((buffer "*Completions*"))
           (and (get-buffer buffer)
            (kill-buffer buffer)))))

2
如果您想完全删除scratch、messages和completions,请参见链接 - Ole
我也可以在 *scratch 中这样做吗?@Ole - alper
1
请查看上面评论中的链接,@alper - Ole

19
你可以自定义变量message-log-max并设置值为nil来禁用日志记录:
Maximum number of lines to keep in the message log buffer.
If nil, disable message logging.  If t, log messages but don't truncate
the buffer when it becomes large.

我尝试关闭*Messages*缓冲区,产生的消息会显示在迷你缓冲区上,但没有新的消息缓冲区出现。


谢谢你的提示。这个问题一直困扰着我很长时间了。顺颂商祺。 - Vincent
3
以下是要添加到 .emacs 的代码,可以实现这个功能。 - Alexandre Holden Daly

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