Eu tenho um rosto, criado desta maneira:
(defface test-face
'((t . (:height 2.0)))
"A face for testing.")
Eu gostaria de inserir algum texto com esse rosto. Mas estas formas inserem o texto sem o rosto:
(insert (propertize "text to insert" 'face 'test-face))
(let ((current-string "text to insert"))
(put-text-property 1 (length current-string) 'face 'test-face)
(insert current-string))
E até mesmo inserir o texto primeiro e depois voltar a colocar o rosto não está funcionando:
(progn
(insert "text to insert")
(add-text-properties
(save-excursion
(backward-word 3)
(point))
(point)
'(face test-face)))
O problema não é a definição do rosto, porque se eu for personalizá-lo, ele já estará aparecendo com a altura duas vezes maior. Mesmo assim, embutir o rosto também não funciona:
(insert (propertize "to insert" 'face '(:height 2.0)))
Então, como posso inserir algum texto com o rosto específico? Eu sei que posso usar uma sobreposição, mas isso parece exagero, porque é mais detalhado, requer que o texto seja inserido primeiro (portanto, precisamos descobrir o tamanho e a posição do texto a ser sobreposto) e exige que mais lixo seja coletados.
face
para destacar o código de sintaxe, substituindo sua propriedade de face. Estou certo de que deve haver alguma maneira de desativar o bloqueio de fonte para um determinado texto, mas terei que pesquisar um pouco o código (não há tempo agora). Talvez lendofont-lock.el
código poderia dar alguma pistaRespostas:
Há algum problema com o código:
put-text-property
é aplicado a um objeto. Nesse caso, sua string. Você precisa passá-lo como o último parâmetro.put-text-property
começa a contar em zero.font-lock-mode
estiver ativado, ele removerá qualquer texto daface
propriedade.O seguinte trecho de código funciona, se o modo de bloqueio de fonte estiver desativado:
Se você quiser usar isso com o bloqueio de fonte ativado, poderá definir a propriedade
font-lock-face
. Tem o mesmo efeito, mas não é afetado porfont-lock
.fonte