Com:
(when window-system
(set-face-background 'hl-line "light yellow")
(global-hl-line-mode 1))
a linha atual destacada pelo fundo amarelo, mas se o texto tiver propriedades de fundo, ele também será substituído (como modo diferencial, modo arco-íris).
É possível definir plano de fundo apenas para peças que não possuem propriedades apropriadas?
ATUALIZAÇÃO Começo a experimentar, parece que o pontilhado não está em conflito com o plano de fundo:
(set-face-stipple 'hl-line '(4 4 "\x01\x00\x00\x00"))
(set-face-attribute 'hl-line nil :inherit nil)
Infelizmente, pontilhado danifica a aparência do texto ...
elisp
syntax-highlighting
hl-line-mode
gavenkoa
fonte
fonte
(when (memq NAME-OF-FACE (mapcar (function (lambda (ovr) (overlay-get ovr 'face))) (overlays-at (point)))) (remove-overlays BEGINNING-POINT ENDING-POINT 'face hl-line))
Respostas:
O problema é que, às vezes, a propriedade de texto
face
é usada para realçar ehl-line-mode
usa uma sobreposição. E as sobreposições sempre aparecem "em cima" doface
realce da propriedade de texto .diff-mode
, por exemplo, usa a propriedade text, não uma sobreposição. Portanto, para casos como este, você está sem sorte.Mas, para o destaque produzido por uma sobreposição, você pode reduzir a prioridade da sobreposição da linha hl:
hl-line-overlay
ouglobal-hl-line-overlay
, ou , para que essa sobreposição pareça estar "abaixo" do outro destaque da sobreposição.Se você usar a biblioteca
hl-line+.el
, poderá usar a opçãohl-line-overlay-priority
para definir a prioridade da sobreposição. Veja também a página Wiki do Emacs, Destaque a Linha Atual . (Mas, novamente, alterar a prioridade da sobreposição não terá efeito se o outro realce não for de uma sobreposição.)fonte
hl-line-overlay
propriedade? Por exemplo, não aparececustomize-variable
.hl-line+.el
, basta personalizar a opçãohl-line-overlay-priority
. Caso contrário, você não poderá (exceto redefinindo ou aconselhando as funções pré-fornecidas). Esse é o objetivo de fornecer essa opção ao usuário.Termino com solução parcial - destaque apenas no final da linha:
fonte
Tropecei nessa questão ao tentar não
hl-line
substituir o plano de fundo (apesar de serem guias de recuo nesse caso):Eu decidi sobre isso, que começa a desenhar a linha de destaque após o recuo:
Substituir
(+ (line-beginning-position 1) (current-indentation))
por(point)
funciona também (começando no cursor).fonte