方法:use-packageで電力線を使用する場合、メジャーモードの文字列を喜ばせる?

私は powerline で初期化しているので、 use-package のメジャーモード文字列(モードライン)を delight use-package そのものです。

私の推測では、誤った時刻に:delight 部分が発生し、 mode-line-format が更新されたメジャーモード文字列なしで設定されていると思います。 > powerline は:disabled です)。

この問題を解決するための良いアプローチは何ですか?

Here is my init-mode-line.el for reference. New link: init-mode-line.el.

0
追加された 編集された
ビュー: 2
私はuse-packageの統合がどのように機能するかは実際は分かりませんが、あなたのリンクの(delight ...)/code>をそれぞれのメジャーモード宣言から削除します。 emacswiki.org/emacs/DelightedModes のドキュメントを参照してください。
追加された 著者 Mark Ireland,
さて、あなたはそのファイルを "参照用に"指しており、そのコメントブロックには、ファイル中の "delight"という単語の唯一のインスタンスが含まれています。 実際に使用しようとしているコードを表示してください。あなたが使用していないバージョンを表示することは、誰にも役立ちません。
追加された 著者 Mark Ireland,
そのコメント部分は使用されていませんでした(いくつかの古いコピーパスタ)。私は:delight ショートカットを許可する use-package と組み合わせて delight を使います:これは diminish と同じ方法で使用されます。しかし、私が言及したように、私は電力線を無効にするとかなりうまく動作します。
追加された 著者 chyx,
たとえば、 init-css.el この問題は、キーワード:delight をどのように使用するかではなく、モード行形式をどのように設定するかに関係しています。だから私は init-mode-line.el (更新されたリンク)。これが不明な場合は申し訳ありません。
追加された 著者 chyx,

1 答え

簡単な答えは、 powerlinedelight は直接互換性がないということです。 delight (新しいバージョン1.04)に変更を加えました。このような統合を一般的に可能にするために、 delight-powerline ライブラリは、特に電力線を扱うために構築されています。

元の回答が続きます


さてあなたの設定を試しました。私の最初のコメントは、ほとんどのあなたの:喜びの仕様でデフォルトモード名を指定しているようですが、それはちょっと変です。例えばorg-mode 既にはモード名として "Org"を使用しています - delight org-mode "Org" を使用する点はごくわずかです。

However I can confirm that delight is still working for major modes with powerline enabled, because if I visit an org-mode buffer and check mode-name it tells me (inhibit-mode-name-delight "Org" "Org") (normally those two values wouldn't be identical, of course, but see above...)

これは、他のコンテキスト( Mx describe-mode など modeも表示されます)のカスタム値を 表示しないで、 -name )。

これは、電力線が明示的に format-mode-line を呼び出していることを示唆しています。 (これはやや直感的ですが、 format-mode-line は通常のモード行表示コードでは呼び出されませんが、他のモードラインの構造をレンダリングすることができます)。

それは2つの図書館間の非互換性です、私は恐れます。

delightのアドバイスを(読み込んだ後に)無効にすることができます:

(ad-disable-advice 'format-mode-line 'around 'delighted-modes-are-glum)
(ad-activate 'format-mode-line)

これはあなたの電力線の出力を修正しますが、メジャーモードのモード名を表示する他のものも喜んでいるバージョンを表示することを意味します。しかし、それはおそらくあなたにとってはまだ好ましいでしょう。

電力線が呼び出されているときにのみ動くように助言してください。これは標準的なモードラインレンダリングのオプションではありませんでしたが、このような場合には確かに実行できます。

delight-powerline.el 統合ライブラリをEmacsWiki。

delight.el の新しいバージョン1.04が必要です。 。

2
追加された
これは、delight.el自体がすでに変数を宣言していなかったためです。私は更新されたライブラリでそれを解決しましたが、修正された答えのリンクを参照してください。
追加された 著者 Mark Ireland,
字句バインディングが導入されて以来、すべての動的変数は、字句的結合を使用するライブラリで参照されるようにするために、 defvar に適しています。宣言されていない変数の setq-local が動的に強制されるかどうかは実際には分かりません。私は単に問題を指摘し、標準的なアプローチを行った。
追加された 著者 Mark Ireland,
私は物事がどのように見えるかを上手にしたいと思います(そして、私が使っているモードの名前の変更は避けてください)。それよりも、(最適ではないが)すべてのパッケージにカスタマイズ可能なブロックを用意することは、私にとっては最高のものです:)。私はあなたのスニペットを試して、それは仕事をします、ありがとう。 3番目の注釈で、なぜ inhibit-mode-name-delightdefvar + setq を使用するのですか?その場合にのみ setq-default との違いは何ですか?
追加された 著者 chyx,
OK、できるだけ早く更新します:) list-packages を使って更新する準備が整うまで少し時間が必要です。しかし、私の質問はもっと教育的な目的でした: setq-default だけで作業していました。
追加された 著者 chyx,
ああ、そうだよ。解明してくれてありがとう、delight.el :)
追加された 著者 chyx,