Como fazer com que a face da região tenha prioridade sobre a face `show-paren-mode`?

7

Estou usando o show-paren-moderealce da expressão, alterando a face do plano de fundo para um tom mais claro que o plano de fundo padrão. Eu gosto muito.

O problema é que, quando tenho uma marca, a face do plano de fundo da expressão parêntese substitui a face do plano de fundo da região marcada, para que pareça estranha e inconsistente, e é difícil dizer visualmente o que é toda a região.

Existe alguma maneira de configurar a face da região para ter uma "prioridade" mais alta do que a face show-paren-match?

levand
fonte
Isso é mais difícil do que parece por vários motivos, você recomendaria show-paren-modenunca exibir algo se a região estiver ativa?
wasamasa
@wasamasa - Que tal definir uma prioridade mais baixa na sobreposição que deve ser encoberta? O valor de prioridade da região definida em simple.elé '(nil . 100)- consulteredisplay-highlight-region-function
lawlist
@wasamasa com certeza, seria uma pausa aceitável, suponho.
Levand #
@lawlist A documentação declara que as prioridades podem ser apenas números e qualquer outra coisa é apenas para uso interno. No entanto, a região usa o que parece ser uma prioridade secundária que não está documentada. Tentei valores abaixo de 100, mas eles não tiveram nenhum efeito, a menos que você tenha definido a prioridade do show-paren para a nilqual teve outro efeito colateral: mostrar a expressão destacada no vídeo reverso.
Wasamasa 13/10/2015
@lawlist Este poderia, obviamente, ser o meu tema especificando algo além de vídeo reverso para a região, mas ainda assim, esse tipo de falha não deveria acontecer em primeiro lugar. Por isso, estou propondo uma abordagem alternativa.
Wasamasa 13/10/2015

Respostas:

9

Personalize a opção show-paren-prioritypara ter um valor negativo, por exemplo, -50 .

Não, isso não está documentado em nenhum lugar. Sim, um bug foi registrado sobre isso. Não, o relatório de erro nunca foi respondido.

Consulte os erros do Emacs nº 20253 , nº 15899 e nº 16192 .

Desenhou
fonte
Legal. Isso funciona exatamente como se poderia esperar. Hurrah para recursos não documentados.
Levev #
2

Como não encontrei uma maneira confiável e documentada de alterar as respectivas prioridades de sobreposição envolvidas sem introduzir falhas visuais indesejadas, recorrai a aconselhar show-paren-function:

(defadvice show-paren-function (around inhibit-in-region activate)
  (if (region-active-p)
      (progn
        (delete-overlay show-paren--overlay)
        (delete-overlay show-paren--overlay-1))
    ad-do-it))

Isso simplesmente desativa qualquer destaque se a região estiver ativa.

wasamasa
fonte