Tengo una cara, creada de esta manera:
(defface test-face
'((t . (:height 2.0)))
"A face for testing.")
Me gustaría insertar un texto con esa cara. Pero estas formas insertan el texto sin la cara:
(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 incluso insertar el texto primero, luego volver para ponerle la cara no funciona:
(progn
(insert "text to insert")
(add-text-properties
(save-excursion
(backward-word 3)
(point))
(point)
'(face test-face)))
El problema no es la definición de la cara, porque si voy a personalizarla, ya se muestra con una altura dos veces mayor. Aun así, alinear la cara tampoco funciona:
(insert (propertize "to insert" 'face '(:height 2.0)))
Entonces, ¿cómo puedo poner un texto con la cara específica? Sé que puedo usar una superposición, pero eso parece excesivo porque es más detallado, requiere que el texto se inserte primero (por lo que tenemos que averiguar el tamaño y la posición del texto que se superpondrá) y requiere que se haga más basura. recogido.
face
para el código de resaltado de sintaxis, por lo que está reemplazando la propiedad de la cara. Estoy seguro de que debe haber alguna forma de deshabilitar el bloqueo de fuente para un texto determinado, pero tendré que investigar un poco el código (no hay tiempo ahora). Quizás leer elfont-lock.el
código daría alguna pistaRespuestas:
Hay algún problema con el código:
put-text-property
se aplica a un objeto. En este caso tu cadena. Debe pasarlo como el último parámetro.put-text-property
comienza a contar en cero.font-lock-mode
está habilitado, eliminará cualquier texto de laface
propiedad.El siguiente código funciona, si el modo de bloqueo de fuente está desactivado:
Si desea usar esto con el bloqueo de fuente habilitado, puede configurar la propiedad en su
font-lock-face
lugar. Tiene el mismo efecto pero no le afectafont-lock
.fuente