teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

2022/01/12 07:40

投稿

yaxavr
yaxavr

スコア40

title CHANGED
File without changes
body CHANGED
@@ -1,63 +1,65 @@
1
- Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
2
-
3
- モードラインはアクティブなウィンドウ切り替えるとそれに応じて色が変わります。
4
-
5
- アクティブなモードライン `mode-line`フェイス、そうでない方は`mode-line-inactive`フェイスが使われるようですが、これらは単純にpropertizeで色を付けた文字列には適用されず、アクティブかどうか関わらずpropertizeしたで表示されます。
6
-
7
- これをpropertizeした文字列でもモードラインがアクティブになると暗い色に切り替えいと思っています。
8
-
9
- 例えば、現状のflycheckのインジケータは下のようになっています。
10
-
11
- |ウィンドウの態|モードライン表示|
12
- |:--|:--:|
13
- |アクテ|![アクティブ時](73ca570877ab4cd94ce0b4ba63a51240.png)|
14
- |非アクティブ|![インアクティブ時](34fee4daea88ca9f2113f0b0d3e2002b.png)|
15
-
16
- 右側の web-modeのインジケータは`propertize`して**ない**ので非アクティブ時に色が暗くなりますが、左側のflycheckの方は`propertize`して**いる**ので非アクティブになっても赤黄緑のままです。
17
-
18
- 赤黄緑を非アクティブになったときに暗いにしたいというのが、今回質問内容とます。
19
-
20
- 以下は現状 init.el 抜粋です。
21
- ``` lisp
22
- (defun my-flycheck-mode-line ()
23
- (let-alist (flycheck-count-errors flycheck-current-errors)
24
- (let* ((status flycheck-last-status-change)
25
- (info (or .info 0))
26
- (warnings (or .warning 0))
27
- (errors (or .error 0)))
28
- (when status
29
- (concat
30
- (propertize (int-to-string errors) 'face 'flycheck-error-list-error) " "
31
- (propertize (int-to-string warnings) 'face 'flycheck-error-list-warning) " "
32
- (propertize (int-to-string info) 'face 'flycheck-error-list-info))))))
33
-
34
- (defun my-mode-line--form ()
35
- (let* ((left-part (concat
36
- evil-mode-line-tag
37
- ;;;;; snip ;;;;;;;;;;;;;
38
- " "))
39
- (right-part (concat
40
- (my-coding-system-name-mnemonic)
41
- ;;;;; snip ;;;;;;;;;;;;;
42
- (flycheck-mode (my-flycheck-mode-line)) ;; <--!!!
43
- " "
44
- mode-name
45
- ))
46
- ;;;;; snip ;;;;;;;;;;;;;
47
- (margin
48
- (propertize " "
49
- 'display `(space :align-to (- (+ scroll-bar scroll-bar) ,(string-width right-part) ,margin-env)))))
50
- (concat left-part margin right-part)))
51
-
52
- (setq-default mode-line-format '(:eval (my-mode-line--form)))
53
- ```
54
-
55
- もう長いことこのまま使っており、暇を見ては`window-state-change-hook`等に何か仕込んでみたりするのですが自力では解決まで至っておりません。
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
+ |アクティブ|![アクティブ時](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/ec8a03e7-e150-4361-838d-518c22cac3de.png)|
16
+ |非アクティブ|![インアクティブ時](https://d1666c7av167g2.cloudfront.net/questions/2022-01-12/58c54d7a-93f4-43d0-9c11-9468c95891b1.png)|
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

書式

2022/01/11 14:51

投稿

yaxavr
yaxavr

スコア40

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,7 @@
1
1
  Stack Overflow やr/emacsを何度探しても見つけられなかったので、質問させていただきます。
2
2
 
3
- Emacsのモードラインます。
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

書式

2022/01/11 14:51

投稿

yaxavr
yaxavr

スコア40

title CHANGED
File without changes
body CHANGED
@@ -15,9 +15,11 @@
15
15
  |アクティブ|![アクティブ時](73ca570877ab4cd94ce0b4ba63a51240.png)|
16
16
  |非アクティブ|![インアクティブ時](34fee4daea88ca9f2113f0b0d3e2002b.png)|
17
17
 
18
- 右側の web-modeのインジケータは`propertize`してないので非アクティブ時に色が暗くなりますが、左側のflycheckの方は非アクティブになっても赤黄緑のままです。
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)