Mam twarz stworzoną w ten sposób:
(defface test-face
'((t . (:height 2.0)))
"A face for testing.")
Chciałbym wstawić tekst z tą twarzą. Ale te sposoby wstawiają tekst bez twarzy:
(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))
Nawet wstawianie najpierw tekstu, a potem powrót do niego, nie działa:
(progn
(insert "text to insert")
(add-text-properties
(save-excursion
(backward-word 3)
(point))
(point)
'(face test-face)))
Problemem nie jest definicja twarzy, ponieważ jeśli pójdę ją dostosować, to już pokazuje wysokość dwa razy większą. Mimo to pochylenie twarzy również nie działa:
(insert (propertize "to insert" 'face '(:height 2.0)))
Jak mogę wstawić tekst z określoną twarzą? Wiem, że mogę użyć nakładki, ale to wydaje się przesadne, ponieważ jest bardziej szczegółowe, wymaga najpierw wstawienia tekstu (więc musimy ustalić rozmiar i położenie tekstu do nałożenia) i wymaga zrobienia większej ilości śmieci Zebrane.
face
kodu podświetlania składni, więc zastępuje on właściwość twarzy. Jestem pewien, że musi istnieć jakiś sposób, aby wyłączyć blokadę czcionek dla danego tekstu, ale będę musiał trochę zbadać kod (teraz nie ma czasu). Być może odczytaniefont-lock.el
kodu dałoby jakąś wskazówkęOdpowiedzi:
Istnieje pewien problem z kodem:
put-text-property
jest stosowany do obiektu. W tym przypadku twój ciąg. Musisz przekazać go jako ostatni parametr.put-text-property
zaczyna liczenie od zera.font-lock-mode
jest włączony, spowoduje usunięcie dowolnego tekstuface
właściwości.Poniższy fragment kodu działa, jeśli tryb blokowania czcionek jest wyłączony:
Jeśli chcesz tego używać z włączoną blokadą czcionek, możesz
font-lock-face
zamiast tego ustawić właściwość . Ma ten sam efekt, ale nie ma na niego wpływufont-lock
.źródło