Existe uma face do Emacs que pode ser usada para controlar a cor dos nomes de buffer inativos?
Normalmente, ao definir o rosto, mode-line-buffer-id
todas as janelas são afetadas.
Neste exemplo, o arquivo mode-line
possui um fundo claro, então defino mode-line-buffer-id
para um muito mais escuro #333
.
A idéia é inverter a combinação de cores para for mode-line-inactive
.
Embora isso seja possível para a maior parte do texto na linha de modo das janelas inativas, os nomes dos buffers ficam ilegíveis, pois ainda são controlados pela mode-line-buffer-id
face.
Acredito que definir mode-line-inactive
um pano de fundo mais claro contornaria o problema, mas esse não é o resultado que desejo alcançar.
Respostas:
Não tenho certeza se você ainda está procurando uma resposta ou não, mas esse foi o único resultado que obtive no Google enquanto tentava fazer isso sozinho.
De qualquer forma, por qualquer motivo que o Emacs chama
distant-foreground
assim, a única coisa que você realmente precisa fazer é adicionar:distant-foreground $colour-of-choice
à sua cara.fonte
Aqui está uma variação de outra resposta que pode ajudar. Este exemplo remapeia
mode-line-buffer-id
para ficar verde em buffers inativos.Atualização: conforme observado nos comentários, isso não resolve completamente o problema. Quando você tem várias janelas visíveis visitando o mesmo buffer, todas elas compartilham a mesma face.
fonte
Essa é uma variação das outras respostas, com essa distinção entre janelas ativas e inativas. Se um buffer estiver visível em mais de uma janela, somente a janela ativa terá
ml-active-window-face
e as outras janelas terãoml-inactive-window-face
.fonte
Não tenho certeza se é possível. Parece que a linha de modo é atualizada somente quando sua janela é selecionada (teste usando chamadas para comprovar
message
isso). E o código que faz isso é o código C, não o Lisp.Você pode usar uma expressão condicional na definição de
mode-line-buffer-identification
, para que a face a ser usada seja computada dinamicamente. Mas não conheço nenhuma função ou variável que você possa usar para testar se uma determinada janela possui uma linha de modo inativa.Você não pode usar
selected-window
, por exemplo, porque isso sempre aponta para a janela com a linha de modo ativa.Aqui está um exemplo de atualização dinâmica baseada no nome do buffer. Não é o que você deseja, mas pelo menos mostra o que você pode fazer. Se você puder encontrar uma maneira de testar se a janela que está sendo atualizada está selecionada, poderá substituí-la pelo teste de nome do buffer. (Mas minha impressão é que apenas a janela selecionada recebe sua linha de modo atualizada.)
Outra coisa que você pode tentar é aconselhar a função
format-mode-line
. Aparentemente, distingue uma janela com uma linha de modo ativa de uma com uma linha de modo inativa. Mas também está codificado em C, então duvido que você vá muito longe ao aconselhá-lo. Testa a variável CQmode_line_inactive
, FWIW.Eu sugiro fazer essa pergunta em uma das listas de discussão do Emacs (por exemplo
[email protected]
), se você não receber uma resposta satisfatória aqui. Parece que seria bom poder fazer o que você solicitou. +1 para a pergunta, em qualquer caso.fonte