回声区域是模式行下方的Emacs底部的行:
~ ~
| |
+-----------------------+
|-U:--- mode-line |
+-----------------------+
| M-x echo-area |
+-----------------------+
现在模式线可高度自定义,而回声区域更加严格(并且很多时候都未使用)。问题很简单:可以在不活动期间隐藏回声区域,并在需要注意时重新显示它:
~ ~ ~ ~
| | | |
| | +-----------------------+
| | |-U:--- mode-line |
+-----------------------+ +-----------------------+
|-U:--- mode-line | | M-x echo-area |
+-----------------------+ +-----------------------+
Inactive Active
这类似于Google Chrome将鼠标悬停在链接上时显示网址的方式,以及默认情况下隐藏命令行的Firefox插件Pentadactyl。
答案 0 :(得分: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)
为了完整起见,luddite-mode
(global-set-key [f12] '(lambda () (interactive) (menu-bar-mode nil) (scroll-bar-mode nil)))
当然,最好从这开始:
(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)))
我将急切地等待这个问题的答案并将其纳入luddite-mode
答案 1 :(得分:4)
你可以做的一件事就是将迷你缓冲区分成自己的框架,然后隐藏并根据需要显示它。
(setq minibuffer-frame-alist (append '((auto-raise . t) (auto-lower . t)) minibuffer-frame-alist))
(setq initial-frame-alist (append '((minibuffer . nil)) initial-frame-alist))
你会丢失回音区消息,但我知道你已经不在乎了。
(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)))
答案 2 :(得分:3)
使用此代码
可以获得无迷你帧(setq default-minibuffer-frame
(make-frame
'((name . "minibuffer")
(width . 0)
(height . 0)
(minibuffer . only)
(top . 0)
(left . 0)
)))
(setq new-frame
(make-frame
'((name . "editor")
(width . 80)
(height . 30)
(minibuffer . nil)
(top . 50)
(left . 0)
)))
我在SO上从here采取并修改了
虽然它可以创建无迷你缓冲框架,但似乎无法摆脱迷你缓冲区,只有在需要时才会显示它,就像您在Google Chrome的状态栏示例中所描述的那样。
答案 3 :(得分:2)
从技术上讲,无法隐藏回声区域。但是,假设您在全屏环境中使用Emacs,我有一个想法可能会给出相同的外观。在这种情况下,工具可以调整emacs窗口的大小(emacs说话中的“框架”),以便它可以填充显示器或延伸到显示器底部之外,具体取决于回显区域是否可见。
不幸的是,我自己没有时间来实现这一点,因此我将其留给其他人来做这件事并申请赏金。
第一个挑战是找到一个调整大小的好地点,其中一个地方可能是post-command-hook
。其他地方可能是minibuffer-setup-hook
和minibuffer-setup-hook
第二个挑战是确定回声区域是否可见,我认为您可以使用current-message
来检查是否正在显示消息
答案 4 :(得分:1)
据我所知,隐藏echo area是不可能的,我不同意你的意思是很多时候都没有使用它。从缓冲区切换M-x命令到迷你缓冲区输出,回声区域中有很多不同的东西。
我可以理解,在小型显示器上,例如在上网本等上,希望节省屏幕空间。但我认为,当您编辑文件时,回显区域的使用远远超过在查看网页时使用Web浏览器的地址栏。它是Emacs不可或缺的一部分。