質問編集履歴

3

2022/01/12 07:40

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,125 +1,65 @@
1
1
  Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
2
2
 
3
+ Emacsのモードラインをいじっています。
3
4
 
4
-
5
- モードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
5
+ Emacsのモードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
6
-
7
-
8
6
 
9
7
  アクティブなモードラインには `mode-line`フェイス、そうでない方は`mode-line-inactive`フェイスが使われるようですが、これらは単純にpropertizeで色を付けた文字列には適用されず、アクティブかどうかに関わらずpropertizeした色で表示されます。
10
8
 
11
-
12
-
13
9
  これをpropertizeした文字列でもモードラインが非アクティブになると暗い色に切り替えたいと思っています。
14
-
15
-
16
10
 
17
11
  例えば、現状のflycheckのインジケータは下のようになっています。
18
12
 
19
-
20
-
21
13
  |ウィンドウの状態|モードライン表示|
22
-
23
14
  |:--|:--:|
24
-
25
- |アクティブ|![アクティブ時](73ca570877ab4cd94ce0b4ba63a51240.png)|
15
+ |アクティブ|![アクティブ時](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/ec8a03e7-e150-4361-838d-518c22cac3de.png)|
26
-
27
- |非アクティブ|![インアクティブ時](34fee4daea88ca9f2113f0b0d3e2002b.png)|
16
+ |非アクティブ|![インアクティブ時](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/58c54d7a-93f4-43d0-9c11-9468c95891b1.png)|
28
-
29
-
30
17
 
31
18
  右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
32
19
 
33
-
34
-
35
- この赤黄緑非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
20
+ この赤黄緑非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
36
-
37
-
38
21
 
39
22
  以下は現状の init.el の抜粋です。
40
-
41
23
  ``` lisp
42
-
43
24
  (defun my-flycheck-mode-line ()
44
-
45
25
  (let-alist (flycheck-count-errors flycheck-current-errors)
46
-
47
26
  (let* ((status flycheck-last-status-change)
48
-
49
27
  (info (or .info 0))
50
-
51
28
  (warnings (or .warning 0))
52
-
53
29
  (errors (or .error 0)))
54
-
55
30
  (when status
56
-
57
31
  (concat
58
-
59
32
  (propertize (int-to-string errors) 'face 'flycheck-error-list-error) " "
60
-
61
33
  (propertize (int-to-string warnings) 'face 'flycheck-error-list-warning) " "
62
-
63
34
  (propertize (int-to-string info) 'face 'flycheck-error-list-info))))))
64
35
 
65
-
66
-
67
36
  (defun my-mode-line--form ()
68
-
69
37
  (let* ((left-part (concat
70
-
71
38
  evil-mode-line-tag
72
-
73
39
  ;;;;; snip ;;;;;;;;;;;;;
74
-
75
40
  " "))
76
-
77
41
  (right-part (concat
78
-
79
42
  (my-coding-system-name-mnemonic)
80
-
81
43
  ;;;;; snip ;;;;;;;;;;;;;
82
-
83
44
  (flycheck-mode (my-flycheck-mode-line)) ;; <--!!!
84
-
85
45
  " "
86
-
87
46
  mode-name
88
-
89
47
  ))
90
-
91
48
  ;;;;; snip ;;;;;;;;;;;;;
92
-
93
49
  (margin
94
-
95
50
  (propertize " "
96
-
97
51
  'display `(space :align-to (- (+ scroll-bar scroll-bar) ,(string-width right-part) ,margin-env)))))
98
-
99
52
  (concat left-part margin right-part)))
100
53
 
101
-
102
-
103
54
  (setq-default mode-line-format '(:eval (my-mode-line--form)))
104
-
105
55
  ```
106
-
107
-
108
56
 
109
57
  もう長いことこのまま使っており、暇を見ては`window-state-change-hook`等に何か仕込んでみたりするのですが自力では解決まで至っておりません。
110
58
 
111
-
112
-
113
59
  細かなことで恐縮なのですが、最近特に目が悪くなってきたのか、他のバッファに一生懸命タイピングしていることが多くなり、ちょっとしんどくなってきました。
114
60
 
115
-
116
-
117
61
  もしご存じの方がおられましたら、ヒントだけでも頂けますと助かります。
118
-
119
62
  よろしくお願いします。
120
63
 
121
-
122
-
123
64
  #### 環境
124
-
125
65
  - Emacs: 27.2 (Emacs Mac Port)

2

書式

2022/01/11 14:51

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- Emacsのモードラインをいじっています。
6
-
7
-
8
-
9
- Emacsのモードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
5
+ モードラインはアクティブなウィンドウを切り替えるとそれに応じて色が変わります。
10
6
 
11
7
 
12
8
 
@@ -36,7 +32,7 @@
36
32
 
37
33
 
38
34
 
39
- この赤黄緑非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
35
+ この赤黄緑非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
40
36
 
41
37
 
42
38
 

1

書式

2022/01/11 14:51

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -32,11 +32,15 @@
32
32
 
33
33
 
34
34
 
35
- 右側の web-modeのインジケータは`propertize`してないので非アクティブ時に色が暗くなりますが、左側のflycheckの方は非アクティブになっても赤黄緑のままです。
35
+ 右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
36
36
 
37
37
 
38
38
 
39
+ この赤黄緑が非アクティブになったときに暗い色にしたいというのが、今回の質問の内容となります。
40
+
41
+
42
+
39
- 以下は init.el の抜粋です。
43
+ 以下は現状の init.el の抜粋です。
40
44
 
41
45
  ``` lisp
42
46