質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

解決済

Emacsのモードラインを propertizeで色を付けた文字列でも非アクティブ時に暗くしたい

yaxavr
yaxavr

総合スコア39

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

2回答

0リアクション

0クリップ

587閲覧

投稿2022/01/11 02:25

編集2022/01/12 07:40

Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。

Emacsのモードラインをいじっています。

Emacsのモードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。

アクティブなモードラインには mode-lineフェイス、そうでない方はmode-line-inactiveフェイスが使われるようですが、これらは単純にpropertizeで色を付けた文字列には適用されず、アクティブかどうかに関わらずpropertizeした色で表示されます。

これをpropertizeした文字列でもモードラインが非アクティブになると暗い色に切り替えたいと思っています。

例えば、現状のflycheckのインジケータは下のようになっています。

ウィンドウの状態モードライン表示
アクティブアクティブ時
非アクティブインアクティブ時

右側の web-modeのインジケータはpropertizeしてないので非アクティブ時に色が暗くなりますが、左側のflycheckの方はpropertizeしているので非アクティブになっても赤黄緑のままです。

この赤黄緑が非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。

以下は現状の init.el の抜粋です。

lisp

(defun my-flycheck-mode-line () (let-alist (flycheck-count-errors flycheck-current-errors) (let* ((status flycheck-last-status-change) (info (or .info 0)) (warnings (or .warning 0)) (errors (or .error 0))) (when status (concat (propertize (int-to-string errors) 'face 'flycheck-error-list-error) " " (propertize (int-to-string warnings) 'face 'flycheck-error-list-warning) " " (propertize (int-to-string info) 'face 'flycheck-error-list-info)))))) (defun my-mode-line--form () (let* ((left-part (concat evil-mode-line-tag ;;;;; snip ;;;;;;;;;;;;; " ")) (right-part (concat (my-coding-system-name-mnemonic) ;;;;; snip ;;;;;;;;;;;;; (flycheck-mode (my-flycheck-mode-line)) ;; <--!!! " " mode-name )) ;;;;; snip ;;;;;;;;;;;;; (margin (propertize " " 'display `(space :align-to (- (+ scroll-bar scroll-bar) ,(string-width right-part) ,margin-env))))) (concat left-part margin right-part))) (setq-default mode-line-format '(:eval (my-mode-line--form)))

もう長いことこのまま使っており、暇を見てはwindow-state-change-hook等に何か仕込んでみたりするのですが自力では解決まで至っておりません。

細かなことで恐縮なのですが、最近特に目が悪くなってきたのか、他のバッファに一生懸命タイピングしていることが多くなり、ちょっとしんどくなってきました。

もしご存じの方がおられましたら、ヒントだけでも頂けますと助かります。
よろしくお願いします。

環境

  • Emacs: 27.2 (Emacs Mac Port)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。