Emacs:メッセージをミュート(「エコーエリア」)

Emacs:メッセージをミュート(「エコーエリア」)

私はEmacsで私が知っているコマンドを積み重ね、多くの自動化を行います。手動。これは多くの努力を必要としないので、私が推奨する方法です。いつものようにEmacsを使っていると、時々思いが浮かびます。 「ええ、私はいつもこのコマンドを使っていますが、なぜそうですか?」 「ただマージしますか?」 「コマンド(名前またはショートカット)を知ると、すべてが簡単になります。

しかし、問題の1つは、コマンドをスタックすると、「エコー領域」(ミニバッファと同じ位置)で点滅する多くのメッセージが表示されることです。これらのメッセージには意味がありません。以下で発生するすべてのもの(呼び出される関数)がユーザーに透過的である必要があるためです。

まあ、あなたはできます静かなそれ、それからミュート解除それ?以下を見てください:

(defun invisible-pretty-mail ()
  "Automatize `pretty-mail'."
  (interactive)
  ; (mute-echo-area)
  (rmail-edit-current-message)
  (pretty-mail) ; lots of replace-string, replace-regexp, etc. here
                ; that will flood messages
  (rmail-cease-edit)
  ; (unmute-echo-area)
  )

編集するSDS 'への対応回答:

あなたが言及したコメントはEmacsヘルプシステムで非常に一般的であることを理解しています。

あなたの提案は一般的に間違っているわけではありませんが、この特定のケースをさらに詳しく調べてみましょう。 1)にElisp機能があります.emacs。 2)このコマンドが使用するコマンドは、機能を設定する人に非常になじみやすいので、読みやすくメンテナンスが非常に簡単です。 3) 機能が期待どおりに正しく動作します。 4)一つ欠点は、あまりにも多くのメッセージをエコーすることです。

今この場合本当に提案してもらえますか?完全に書き直されましたこの機能(および他の多くの機能)は、まったく異なるコマンド(存在しても存在しない場合もあるコマンド)を使用して、私たちが知らないメッセージを減らすための可能な方法で何をしますか?

編集する:(動作)はい、助けを受けた後ドリュー

(defun test-suppress-msgs ()
  (interactive)
  (let ((log-size message-log-max))
    (setq message-log-max nil)
    (message "This message is suppressed.")
    (setq message-log-max log-size)
    (message "This is echoed, and logged.") ))

ベストアンサー1

バインディングは(動的)バインディング中にメッセージを抑制しますmessage-log-maxnil

echo-keystrokesキー入力エコーを抑制するためにバインドします0

Emacs 25.1以降、変数をinhibit-messagenon-にバインド(または設定)することもできますnil。これはほとんどのエコーゾーンメッセージを防ぎます(ただし、バッファに書き込まれるのを防ぎません*Messages*)。

おすすめ記事