Eu tenho uma coluna em uma tabela de modo organizacional com números em cada célula. Gostaria de alterar a cor de fundo da célula para vermelho se o número estiver abaixo de 1 ou acima de 2.
Como eu posso fazer isso?
org-table
formatting
formula
Trevoke
fonte
fonte
org-table-edit-formulas
akaC-c '
e oorg-table-toggle-coordinate-overlays
akaC-c }
fornecem dicas sobre como implementar esse tipo de recurso de destaque. Talvez um guru elisp forneça algumas dicas ou exemplos adicionais.Respostas:
Eu tenho a formatação de tabela inteira para trabalhar com alguns Elisp:
Uma fórmula é avaliada pelo conteúdo das células e convertida em uma cor usando um gradiente.
Arquivo organizacional, incluindo código:
fonte
cs/itpl
faz interpolação linear simples ecs/gradient
usa isso para interpolar uma cor usando uma lista de pontos de dados e paradas de cores. A partir daí, apenas adiciona uma sobreposição, como na sua resposta. O exemplo é um pouco não trivial, pois consulta dados de outros lugares da tabela.org-table-map-tables
.Usar uma sobreposição é como eu vou querer fazer isso. Eu posso ligar para org-ctrl-c-ctrl-c-hook. Isso significa que eu posso pressionar Cc Cc para executar a verificação.
Preciso verificar corretamente se estou dentro de uma tabela e executar isso para todas as células.
Então eu provavelmente preciso conectar a função de alinhamento para refazer as sobreposições ou pelo menos limpá-las.
Esse código tornará o fundo da célula vermelho para a célula em que estou, se o valor for menor que 1 ou maior que 2 quando eu pressionar Cc Cc ... Mas ainda é um buggy e limpará as sobreposições se um deles não ' Não corresponde às regras.
fonte
Isso ainda não é uma resposta, mas quero acompanhar as coisas que descubro aqui, pois elas podem dar uma idéia a outra pessoa.
É possível modificar condicionalmente o valor da própria célula :
Podemos criar uma função de formatação no elisp e chamá-la da linha de fórmula:
E pode ser usado assim:
Eu acho que o que eu quero pode exigir a criação de uma sobreposição.
fonte
O Emacs fornece a função
hi-lock-face-buffer
M-s h rque destaca uma expressão regular no buffer enquanto você digita.Tudo o que precisamos é de uma expressão regular que corresponda a qualquer número que não seja 1 ou 2 e esteja dentro da célula de uma tabela. Tente o seguinte:
(Você pode recuperar expressões anteriores com M-ne M-p.)
fonte