Existe-t-il une face Emacs qui peut être utilisée pour contrôler la couleur des noms de tampons inactifs?
Normalement, lors du réglage de la face, mode-line-buffer-id
toutes les fenêtres sont affectées.
Dans cet exemple, le mode-line
a un fond clair, j'ai donc réglé mode-line-buffer-id
sur beaucoup plus sombre #333
.
L'idée est d'inverser la combinaison de couleurs pour pour mode-line-inactive
.
Bien que cela soit possible pour la plupart du texte dans la ligne de mode des fenêtres inactives, les noms des tampons deviennent illisibles car ils sont toujours contrôlés par le mode-line-buffer-id
visage.
Je crois qu'un réglage mode-line-inactive
sur un fond plus clair contournerait le problème, mais ce n'est pas le résultat que je souhaite atteindre.
Réponses:
Je ne sais pas si vous cherchez toujours une réponse ou non, mais c'est le seul résultat que j'ai obtenu sur Google en essayant de le faire moi-même.
Quoi qu'il en soit, pour une raison quelconque, Emacs appelle cela,
distant-foreground
donc la seule chose que vous devez vraiment faire est d'ajouter:distant-foreground $colour-of-choice
à votre visage.la source
Voici une variante d'une autre réponse qui pourrait vous aider. Cet exemple remappe
mode-line-buffer-id
pour être vert dans les tampons inactifs.Mise à jour: Comme indiqué dans les commentaires, cela ne résout pas entièrement le problème. Lorsque vous avez plusieurs fenêtres visibles visitant le même tampon, elles partagent toutes le même visage.
la source
Il s'agit d'une variante des autres réponses, celle-ci distinguant les fenêtres actives et inactives. Si un tampon est visible dans plusieurs fenêtres, seule la fenêtre active aura
ml-active-window-face
et les autres fenêtres auront toutesml-inactive-window-face
.la source
Je ne suis pas sûr que ce soit possible. Il semble que la ligne de mode ne soit mise à jour que lorsque sa fenêtre est sélectionnée (test à l'aide d'appels pour le
message
confirmer). Et le code qui le fait est le code C, pas Lisp.Vous pouvez utiliser une expression conditionnelle dans la définition de
mode-line-buffer-identification
, afin que la face à utiliser soit calculée dynamiquement. Mais je ne connais aucune fonction ou variable que vous pouvez utiliser pour tester si une fenêtre donnée a une ligne de mode inactive.Vous ne pouvez pas utiliser
selected-window
, par exemple, car cela pointe toujours vers la fenêtre avec la ligne de mode active.Voici un exemple de mise à jour dynamique basée sur le nom du tampon. Ce n'est pas ce que vous voulez, mais cela vous montre au moins ce que vous pouvez faire. Si vous pouvez trouver un moyen de tester si la fenêtre en cours de mise à jour est sélectionnée, vous pouvez la remplacer par le test du nom du tampon. (Mais j'ai l'impression que seule la fenêtre sélectionnée obtient sa ligne de mode mise à jour.)
Une autre chose que vous pourriez essayer est de conseiller la fonction
format-mode-line
. Il distingue apparemment une fenêtre avec une ligne de mode active de celle avec une ligne de mode inactive. Mais il est également codé en C, donc je doute que vous iriez très loin en le conseillant. Il teste la variable CQmode_line_inactive
, FWIW.Je suggère de poser cette question sur l'une des listes de diffusion d'Emacs (par exemple
[email protected]
), si vous n'obtenez pas de réponse satisfaisante ici. On dirait qu'il pourrait être bon de pouvoir faire ce que vous demandez. +1 pour la question, en tout cas.la source