質問編集履歴
3
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,63 +1,65 @@
|
|
1
|
-
Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
|
2
|
-
|
3
|
-
モードライン
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
(
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
(propertize (int-to-string
|
33
|
-
|
34
|
-
(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
(
|
43
|
-
|
44
|
-
mode-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
1
|
+
Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
|
2
|
+
|
3
|
+
Emacsのモードラインをいじっています。
|
4
|
+
|
5
|
+
Emacsのモードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
|
6
|
+
|
7
|
+
アクティブなモードラインには `mode-line`フェイス、そうでない方は`mode-line-inactive`フェイスが使われるようですが、これらは単純にpropertizeで色を付けた文字列には適用されず、アクティブかどうかに関わらずpropertizeした色で表示されます。
|
8
|
+
|
9
|
+
これをpropertizeした文字列でもモードラインが非アクティブになると暗い色に切り替えたいと思っています。
|
10
|
+
|
11
|
+
例えば、現状のflycheckのインジケータは下のようになっています。
|
12
|
+
|
13
|
+
|ウィンドウの状態|モードライン表示|
|
14
|
+
|:--|:--:|
|
15
|
+
|アクティブ||
|
16
|
+
|非アクティブ||
|
17
|
+
|
18
|
+
右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
|
19
|
+
|
20
|
+
この赤黄緑が非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
|
21
|
+
|
22
|
+
以下は現状の init.el の抜粋です。
|
23
|
+
``` lisp
|
24
|
+
(defun my-flycheck-mode-line ()
|
25
|
+
(let-alist (flycheck-count-errors flycheck-current-errors)
|
26
|
+
(let* ((status flycheck-last-status-change)
|
27
|
+
(info (or .info 0))
|
28
|
+
(warnings (or .warning 0))
|
29
|
+
(errors (or .error 0)))
|
30
|
+
(when status
|
31
|
+
(concat
|
32
|
+
(propertize (int-to-string errors) 'face 'flycheck-error-list-error) " "
|
33
|
+
(propertize (int-to-string warnings) 'face 'flycheck-error-list-warning) " "
|
34
|
+
(propertize (int-to-string info) 'face 'flycheck-error-list-info))))))
|
35
|
+
|
36
|
+
(defun my-mode-line--form ()
|
37
|
+
(let* ((left-part (concat
|
38
|
+
evil-mode-line-tag
|
39
|
+
;;;;; snip ;;;;;;;;;;;;;
|
40
|
+
" "))
|
41
|
+
(right-part (concat
|
42
|
+
(my-coding-system-name-mnemonic)
|
43
|
+
;;;;; snip ;;;;;;;;;;;;;
|
44
|
+
(flycheck-mode (my-flycheck-mode-line)) ;; <--!!!
|
45
|
+
" "
|
46
|
+
mode-name
|
47
|
+
))
|
48
|
+
;;;;; snip ;;;;;;;;;;;;;
|
49
|
+
(margin
|
50
|
+
(propertize " "
|
51
|
+
'display `(space :align-to (- (+ scroll-bar scroll-bar) ,(string-width right-part) ,margin-env)))))
|
52
|
+
(concat left-part margin right-part)))
|
53
|
+
|
54
|
+
(setq-default mode-line-format '(:eval (my-mode-line--form)))
|
55
|
+
```
|
56
|
+
|
57
|
+
もう長いことこのまま使っており、暇を見ては`window-state-change-hook`等に何か仕込んでみたりするのですが自力では解決まで至っておりません。
|
58
|
+
|
59
|
+
細かなことで恐縮なのですが、最近特に目が悪くなってきたのか、他のバッファに一生懸命タイピングしていることが多くなり、ちょっとしんどくなってきました。
|
60
|
+
|
61
|
+
もしご存じの方がおられましたら、ヒントだけでも頂けますと助かります。
|
62
|
+
よろしくお願いします。
|
63
|
+
|
64
|
+
#### 環境
|
63
65
|
- Emacs: 27.2 (Emacs Mac Port)
|
2
書式
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
|
2
2
|
|
3
|
-
|
3
|
+
モードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
|
4
4
|
|
5
|
-
Emacsのモードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
|
6
|
-
|
7
5
|
アクティブなモードラインには `mode-line`フェイス、そうでない方は`mode-line-inactive`フェイスが使われるようですが、これらは単純にpropertizeで色を付けた文字列には適用されず、アクティブかどうかに関わらずpropertizeした色で表示されます。
|
8
6
|
|
9
7
|
これをpropertizeした文字列でもモードラインが非アクティブになると暗い色に切り替えたいと思っています。
|
@@ -17,7 +15,7 @@
|
|
17
15
|
|
18
16
|
右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
|
19
17
|
|
20
|
-
この赤黄緑
|
18
|
+
この赤黄緑を非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
|
21
19
|
|
22
20
|
以下は現状の init.el の抜粋です。
|
23
21
|
``` lisp
|
1
書式
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,9 +15,11 @@
|
|
15
15
|
|アクティブ||
|
16
16
|
|非アクティブ||
|
17
17
|
|
18
|
-
右側の web-modeのインジケータは`propertize`して
|
18
|
+
右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
|
19
19
|
|
20
|
+
この赤黄緑が非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
|
21
|
+
|
20
|
-
以下は init.el の抜粋です。
|
22
|
+
以下は現状の init.el の抜粋です。
|
21
23
|
``` lisp
|
22
24
|
(defun my-flycheck-mode-line ()
|
23
25
|
(let-alist (flycheck-count-errors flycheck-current-errors)
|