3

問題は、保存するたびにファイルパスがかなり長くなると、ミニバッファーの高さが増加し、基本的にすぐに減少することです。とても頻繁に起こるので、一種の迷惑です。

したがって、「wrote:...」メッセージを短くする(basename?)か、デフォルトの(開始)ミニバッファの高さを2行にします。または、ミニバッファでのみ切り捨てを有効にすることもできますが、それはあまり良くありません。

方法はありますか?

4

1 に答える 1

4

編集:変数に気付きました。message-truncate-linesand とは異なりresize-mini-windowsmax-mini-window-height実際にこれを希望どおりに動作させることができます。

(defadvice save-buffer (around my-save-mini-window-size)
  "Don't increase the size of the echo area if the path of the file being saved is too long to show on one line."
  (let ((message-truncate-lines t))
    ad-do-it))
(ad-activate 'save-buffer)

元の答えは次のとおりです(誰かがそれについて詳しく説明できる場合、同様のアドバイスで他の変数を設定しても望ましい効果が得られない理由を知りたいです?)

メッセージ自体をいじるのはかなり毛むくじゃらになると思います (いずれにせよ悪い考えです)。write-region(fileio.cで)その引数について述べていますがIf VISIT is neither t nor nil nor a string, that means do not display the "Wrote file" message、それを強制することが賢明であるかどうかは強く疑問です。

メッセージの長さに関係なく、ミニバッファーのサイズが変更されないようにすることが唯一の健全な方法だと思います。以下はこれを行いますが、ファイルを保存するだけではありません。

(setq resize-mini-windows nil)

ここでの私の通常のアプローチは、関心のある関数 (私が考えていたsave-buffer) についてアドバイスを書いて一時的にその値を設定することですが、何らかの理由で望ましい効果が得られません。

同様に、 と を使用before-save-hookafter-save-hookて設定および復元します。

変数もありmax-mini-window-heightますが、一時的に設定しようとすると同じ問題が発生するようです。

于 2012-03-17T10:35:13.910 に答える