Alterar a cor de fundo do bloco específico?

7

Gostaria de iniciar uma cor de fundo diferente, começando de uma função até o fim.

Como isso:

insira a descrição da imagem aqui

Estou ciente de que você pode definir cores de fundo de alguns rostos, como funções e nomes de funções, como foobar. Mas afeta apenas a cor de fundo das palavras functione foobar. Gostaria de mudar a cor de fundo de toda a linha onde as estatísticas da função terminam.

Por que você pergunta? Seria muito mais fácil para mim distinguir quais partes pertencem a uma função.

Então, eu estou querendo saber se existe uma maneira prática de gerenciar isso no Emacs, ou existe um pacote Lisp para conseguir algo assim?

ReneFroger
fonte
Uma sobreposição com um rosto seria a mais fácil na minha opinião - semelhante a destacar uma região específica - você pode escolher a cor e a prioridade. Por exemplo, dê uma olhada nas funções isearch-highlighteisearch-dehighlight
lawlist

Respostas:

4
  1. Você pode usar a biblioteca Destaque para destacar uma região usando uma sobreposição ou propriedades de texto - em particular, propriedade face. Para destacar o plano de fundo, use uma face que use atributo, backgroundmas não foreground.

    Se você usar a propriedade text face, também poderá copiar propriedades de algum texto e colá-las em outro texto. Portanto, se sua definição mudar e aumentar, basta copiar parte da parte destacada e colar sua propriedade facena parte não destacada .

    Você também pode usar as funções definidas na biblioteca para executar automaticamente (por exemplo, um gancho de troca de buffer ou periodicamente, em um temporizador) estender o realce de um defun para acomodar alterações nele.

    Se você usar uma sobreposição, poderá usar os comandos de exclusão de destaque (por exemplo, hlt-eraser) para remover apenas a última face destacada. Arraste o mouse sobre o texto onde deseja remover o realce.

  2. Você pode usar o bloqueio comum de fontes. Inclua um padrão font-lock-keywordsque use uma função que reconheça o início e o fim da sua definição. Consulte o manual Elisp, nó Customizing Keywords , assim como o nó pai, Font-Lock Mode e seus outros filhos.


UPDATE após o seu comentário

Acho que talvez você esteja perguntando sobre destacar não a região, mas as linhas tocadas pela região e estender o realce além do final do texto (incluindo quaisquer caracteres de espaço em branco). É isso? Se sim, tente o seguinte:

(defun hlt-highlight-lines (start end face msgp)
  "Highlight full lines in region, window-wide."
  (interactive (list (save-excursion (goto-char (region-beginning))
                                     (line-beginning-position))
                     (save-excursion (goto-char (region-end))
                                     (line-beginning-position 2))
                     nil
                     t))
  (hlt-highlight-region start end face msgp))
Desenhou
fonte
Drew, obrigado pela sua resposta. Demorou algum tempo para eu responder à sua resposta porque queria experimentar esses aplicativos. No entanto, a highlightbiblioteca não funcionou para mim. Aplica apenas um plano de fundo onde o texto está. Quando o texto termina, para com a cor de fundo. Alguma sugestão?
ReneFroger
1. Acho que talvez você esteja perguntando sobre como estender o realce após o final do texto (incluindo os caracteres em branco após o espaço em branco). É isso? Nesse caso, tente o comando que adicionei acima. 2. Você também tentou a resposta de bloqueio de fonte? Isso deve funcionar também.
Drew
De qualquer forma, adicionei esse comando simples ao arquivo highlight.el. Se isso te ajudar, bom.
Drew
Observe que isso funciona desde que você tenha uma nova linha após a última linha que deseja destacar.
Zck