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.

facepara 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.elcódigo daría alguna pistaRespuestas:
Hay algún problema con el código:
put-text-propertyse aplica a un objeto. En este caso tu cadena. Debe pasarlo como el último parámetro.put-text-propertycomienza a contar en cero.font-lock-modeestá habilitado, eliminará cualquier texto de lafacepropiedad.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-facelugar. Tiene el mismo efecto pero no le afectafont-lock.fuente