Duas questões relacionadas
- É possível usar a opacidade durante a temática no emacs? Quero dizer, definir o tema que, por exemplo, adicionaria 25% de azul à cor de fundo dos elementos aos quais é aplicado. Ou o que tornaria a fonte 30% mais leve.
Ou, se não.
- É possível recalcular dinamicamente algumas propriedades do tema sempre que o tema personalizado principal é alterado?
fundo
Isso seria ótimo para vários modos de "adicionar alguma marca". Um caso que refiro-me especificamente é a face do erro de verificação do flycheck, que seria menos invasiva se desse ao fundo um leve sotaque vermelho em vez de sublinhar o texto.
Mas meu caso principal é o modo de mira (que combina o destaque da linha atual e da coluna atual). Eu o configurei para usar o fundo um pouco diferente do padrão, e isso criou uma boa indicação sutil da localização do cursor. Mas uma vez que comecei a alternar temas com mais frequência, acabou sendo um incômodo, pois a cor adequada depende do fundo atual.
gamgrid-color
egamegrid-colorize-glyph
interiorgamegrid.el
são um exemplo combinado em que o sombreamento pode ser usado para criar diferentes níveis de coloração - por exemplo, os tons usados 0,6 ou 0,8 ou 1,0 (cores). A cor que se deseja alterar dentro de um tema pode ser feita programaticamente, convertendo a cor em um vetor de 3 elementos usando a funçãocolor-name-to-rgb
decolor.el
. A funçãoface-remap-add-relative
pode ser usada para tornar um local de buffer de face específico: gnu.org/software/emacs/manual/html_node/elisp/…vline-style
de'compose
[use composit char] ou'mixed
[use face and composit char] para criar um efeito de passagem vertical. O valor padrão é'face
. Asvline-style
opções'compose
e'mixed
funcionam imediatamente no Windows, mas não funcionam no OSX. O efeito de passagem vertical com'compose
não usa um rosto e isso talvez resolva seu problema com a cor de fundo interferindo na visualização da linha vertical.Respostas:
Finalmente eu mesmo encontrei uma solução mais ou menos satisfatória. Ainda assim, não tenho certeza se é perfeito.
1) A biblioteca hexrgb.el fornece boas funções para realizar cálculos de cores reais. Por exemplo:
calcula a cor que é um pouco mais verde do que o fundo atual (nos parâmetros acima, 2 são quantos dígitos cada cor tem e 20 é mudança relativa).
2) Aconselhei o tema de carregamento (enquanto escrevo isso, me ocorreu que esse não é o lugar certo e que alguma API de nível inferior - tema de ativação ou sth ainda mais profundo - poderia ser melhor) para alterar vários atributos de hl-line e rostos com destaque de cores após a alteração do tema (eu tive que definir a cor real, mas também limpar: herdar).
fonte