在不活动期间隐藏Emacs回显区域

Ice*_*ack 19 emacs appearance

回声区是在模式线以下的Emacs底部的线:

                     ~                       ~
                     |                       |
                     +-----------------------+
                     |-U:--- mode-line       |
                     +-----------------------+
                     | M-x echo-area         |
                     +-----------------------+
Run Code Online (Sandbox Code Playgroud)

现在模式线是高度可定制的,而回声区域更加严格(并且很多时候都没有使用).问题很简单:是否可以在不活动期间隐藏回声区域,并在需要注意时重新显示它:

  ~                       ~             ~                       ~
  |                       |             |                       |
  |                       |             +-----------------------+
  |                       |             |-U:--- mode-line       |
  +-----------------------+             +-----------------------+
  |-U:--- mode-line       |             | M-x echo-area         |
  +-----------------------+             +-----------------------+

          Inactive                                Active
Run Code Online (Sandbox Code Playgroud)

这类似于当您将mose悬停在链接上时Google Chrome显示网址的方式,以及默认情况下隐藏命令行的Firefox插件Pentadactyl.

kla*_*ang 6

这不是你所要求的答案,它不会给你迷你缓冲区,但它会回收一些屏幕房地产

(defun toggle-mode-line () "toggles the modeline on and off"
  (interactive) 
  (setq mode-line-format
    (if (equal mode-line-format nil)
        (default-value 'mode-line-format)) )
  (redraw-display))

(global-set-key [M-f12] 'toggle-mode-line)
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这是标志性的 luddite-mode

(global-set-key [f12] '(lambda () (interactive) (menu-bar-mode nil) (scroll-bar-mode nil)))
Run Code Online (Sandbox Code Playgroud)

当然,最好从这开始:

(cond ((> emacs-major-version 20)
       (tool-bar-mode -1) ; introduced in emacs 21
       (menu-bar-mode -1)
       (scroll-bar-mode -1)
       (menu-bar-showhide-fringe-menu-customize-disable)
       (blink-cursor-mode -1)
       (windmove-default-keybindings 'meta)))
Run Code Online (Sandbox Code Playgroud)

我将急切地等待这个问题的答案并将其纳入其中 luddite-mode


gee*_*aur 5

您可以做的一件事是将迷你缓冲区拆分为自己的帧,然后根据需要隐藏和显示它。

(setq minibuffer-frame-alist (append '((auto-raise . t) (auto-lower . t)) minibuffer-frame-alist))
(setq initial-frame-alist (append '((minibuffer . nil)) initial-frame-alist))
Run Code Online (Sandbox Code Playgroud)

您将丢失回声区消息,但我认为您已经不在乎这些了。


编辑:以上未经测试,不完整。这似乎在这里工作:

(setq initial-frame-alist (append '((minibuffer . nil)) initial-frame-alist))
(setq default-frame-alist (append '((minibuffer . nil)) default-frame-alist))
(setq minibuffer-auto-raise t)
(setq minibuffer-exit-hook '(lambda () (lower-frame)))
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 1

据我所知,隐藏回声区域是不可能的,而且我不同意你的观点,即它很长时间都没有被使用。从 Mx 命令的缓冲区切换到迷你缓冲区输出,回显区域中会发生许多不同的事情。

我可以理解,在小型显示器上,例如上网本等,需要节省屏幕空间。但我认为,编辑文件时使用回显区域的次数比查看网页时使用网络浏览器地址栏的次数要多得多。它是 Emacs 的一个组成部分。