该回声区是在模式线以下的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.
这不是你所要求的答案,它不会给你迷你缓冲区,但它会回收一些屏幕房地产
(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
您可以做的一件事是将迷你缓冲区拆分为自己的帧,然后根据需要隐藏和显示它。
(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)