2012-04-15 142 views
18

有没有办法来禁用缓冲区的消息?我知道我可以杀死它,但它会再次出现。我知道我可以通过缓冲区滚动而不通过消息,但有没有办法可以禁用它的创建?Emacs禁用*消息*缓冲区

谢谢。

+5

如何切换缓冲区?我希望你不要使用效率非常低的默认缓冲区切换。查看[iswitchb](http://emacswiki.org/emacs/IswitchBuffers),然后你可以直接进入任何缓冲区,所以你不必通过* Messages *。消息缓冲区很有用,顺便说一句,您将学会欣赏它,例如,当您打印出来自elisp的信息性消息时。 – Tom 2012-04-15 20:01:27

+3

不要禁用'* Messages *';这是一个坏主意。请参阅http://stackoverflow.com/questions/9536186/emacs-lisp-buffer-out-of-focus-function关于阻止它(和其他此类缓冲区)阻止您的方式的一些建议。 – phils 2012-04-15 22:38:34

+0

@Tom,当您使用iswitchb进行切换时,是不是'* Messages *'会得到匹配,从而增加了子串的歧义性? – katspaugh 2012-08-27 11:04:02

回答

16

您可以自定义变量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*缓冲,产生消息(显示在迷你缓冲区),并没有出现新的消息缓冲。

+0

感谢提示。现在已经让我非常沮丧了。体重。 – Vincent 2014-08-13 09:46:54

+2

下面的答案实际上提供了添加到'.emacs'的代码,它可以实现这个效果 – 2014-08-17 16:47:56

17

基于上面的答案,将在这你的.emacs完全禁用消息

;; Forces the messages to 0, and kills the *Messages* buffer - thus disabling it on startup. 
(setq-default message-log-max nil) 
(kill-buffer "*Messages*") 

另外,如果你像我一样,你这是怎么删除完井缓冲区从缓冲区打开新文件时出现。

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

如果您想删除划痕,消息和完成项,请参阅[链接](http://unix.stackexchange.com/a/152151/72170)共。 – oles 2014-08-25 23:05:37