Скрыть эхо-область Emacs во время бездействия
эхо-область - это строка внизу Emacs ниже строки режима:
~ ~
| |
+-----------------------+
|-U:--- mode-line |
+-----------------------+
| M-x echo-area |
+-----------------------+
Теперь линия режима очень настраивается, а область эха более жесткая (и не используется много времени). Вопрос довольно прост: возможно ли скрыть область эха во время бездействия и повторно отобразить его, если вам нужно ваше внимание:
~ ~ ~ ~
| | | |
| | +-----------------------+
| | |-U:--- mode-line |
+-----------------------+ +-----------------------+
|-U:--- mode-line | | M-x echo-area |
+-----------------------+ +-----------------------+
Inactive Active
Это похоже на то, как Google Chrome отображает URL-адреса, когда вы наводите курсор мыши на ссылку и Firefox-аддон Pentadactyl, где по умолчанию скрыта командная строка.
Ответы
Ответ 1
Это НЕ ответ на то, что вы просите, он не даст вам мини-буфер, но он восстановит немного экранной недвижимости.
(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
Ответ 2
Одна вещь, которую вы можете сделать, - разбить минибуфер на свой собственный фрейм, затем скрыть и показать его по мере необходимости.
(setq minibuffer-frame-alist (append '((auto-raise . t) (auto-lower . t)) minibuffer-frame-alist))
(setq initial-frame-alist (append '((minibuffer . nil)) initial-frame-alist))
Вы потеряете сообщения эхо-области, но я понимаю, что вам уже все равно.
EDIT: вышеуказанное было непроверено и неполным. Это, похоже, работает здесь:
(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)))
Ответ 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.
Несмотря на то, что он может создавать минибуферы без фреймов, невозможно избавиться от минибуфера и сделать его отображаемым только тогда, когда это необходимо, когда вы описываете пример строки состояния Google Chrome.
Ответ 4
Технически невозможно скрыть область эха. Тем не менее, у меня есть идея, которая могла бы дать такой же вид, исходя из предположения, что вы работаете с Emacs в полноэкранном режиме. В этом случае инструмент может изменить размер окна emacs ( "frame" в emacs-speak), чтобы он либо заполнил дисплей, либо выходил за нижнюю часть дисплея, в зависимости от того, должна ли отображаться область эха.
К сожалению, у меня нет времени, чтобы реализовать это, поэтому я оставляю его кому-то еще, чтобы сделать это, и потребовать награду.
Первая задача - найти хорошее место для изменения размера, одним из таких мест может быть post-command-hook
. Другие места могут быть minibuffer-setup-hook
и minibuffer-setup-hook
. Вторая задача состоит в том, чтобы решить, должна ли область эха быть видимой или нет, я думаю, что вы можете использовать current-message
, чтобы проверить, отображается ли сообщение.
Ответ 5
Насколько я знаю, невозможно скрыть область эха , и я не соглашусь с вами в том, что он не используется много время. От переключения буфера на команды M-x до выхода минибуфера в области эхо-сигналов происходит много разных вещей.
Я могу понять, что на небольших дисплеях, например, на нетбуках и т.д. желательно сохранить свойство экрана. Но я бы сказал, что область эха используется гораздо больше при редактировании файла, чем адресная строка веб-браузера используется при просмотре веб-страницы. Это неотъемлемая часть Emacs.