25

エコー領域は、モード行の下の 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 に似ています。

4

5 に答える 5

7

これはあなたが求めていることに対する答えではありません。ミニバッファは提供されませんが、画面の領域が少し解放されます

(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

于 2011-02-22T20:27:48.490 に答える
5

できることの1つは、ミニバッファーを独自のフレームに分割し、必要に応じて非表示にして表示することです。

(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)))
于 2011-03-05T10:25:30.910 に答える
4

このコードを使用すると、ミニバッファのないフレームを取得できます

(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のステータスバーの例で説明しているように、ミニバッファを削除して必要な場合にのみ表示させることは不可能のようです。

于 2011-03-03T00:31:24.493 に答える
3

技術的には、エコー領域を非表示にすることはできません。ただし、フルスクリーン環境で Emacs を使用すると仮定すると、同じように見えるかもしれないという考えがあります。その場合、ツールは emacs ウィンドウ (emacs で言えば「フレーム」) のサイズを変更して、エコー領域を表示するかどうかに応じて、ディスプレイを埋めるか、ディスプレイの下部を超えて拡張することができます。

残念ながら、私にはこれを実装する時間がありません。そのため、他の誰かにこれを実行して賞金を請求​​してもらいます。

最初の課題は、サイズ変更を行うのに適した場所を見つけることです。そのような場所の 1 つがpost-command-hook. 他の場所もあるかもしれませんminibuffer-setup-hookし、 2 つ目の課題は、エコー領域を表示するかどうかを決定することです。メッセージが表示されているかどうかを確認するためにminibuffer-setup-hook使用できると思います。current-message

于 2011-03-05T08:45:22.200 に答える
1

私の知る限り、エコー領域を非表示にすることは不可能であり、多くの場合使用されていないことに同意しません。Mx コマンドのバッファ切り替えからミニバッファ出力まで、さまざまな処理がエコー領域で行われます。

ネットブックなどの小さなディスプレイでは、画面のスペースを節約することが望ましいことは理解できます。しかし、Web ページを見るときに Web ブラウザのアドレス バーを使用するよりも、ファイルを編集するときにエコー領域を使用する方がはるかに多いと私は主張します。これは Emacs の不可欠な部分です。

于 2011-02-22T20:25:44.060 に答える