Ich habe ein Gesicht, das so erschaffen wurde:
(defface test-face
'((t . (:height 2.0)))
"A face for testing.")
Ich möchte etwas Text mit diesem Gesicht einfügen. Aber diese Möglichkeiten fügen den Text ohne das Gesicht ein:
(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))
Und selbst wenn Sie zuerst den Text einfügen und dann zurückgehen, um das Gesicht darauf zu setzen, funktioniert das nicht:
(progn
(insert "text to insert")
(add-text-properties
(save-excursion
(backward-word 3)
(point))
(point)
'(face test-face)))
Das Problem ist nicht die Definition des Gesichts, denn wenn ich es anpasse, wird es bereits doppelt so groß angezeigt. Trotzdem funktioniert das Inlinen des Gesichts nicht:
(insert (propertize "to insert" 'face '(:height 2.0)))
Wie kann ich also einen Text mit einem bestimmten Gesicht einfügen? Ich weiß, dass ich eine Überlagerung verwenden kann, aber das scheint übertrieben, weil es ausführlicher ist, und erfordert, dass der Text zuerst eingefügt wird (also müssen wir die Größe und Position des zu überlagernden Texts herausfinden) und dass mehr Müll erzeugt wird gesammelt.
face
zur Syntaxhervorhebung von Code verwendet wird, sodass die Eigenschaft face ersetzt wird. Ich bin mir sicher, dass es eine Möglichkeit geben muss, die Schriftsperre für einen bestimmten Text zu deaktivieren, aber ich muss den Code ein wenig recherchieren (momentan keine Zeit). Vielleichtfont-lock.el
würde das Lesen von Code einen Hinweis gebenAntworten:
Es gibt ein Problem mit dem Code:
put-text-property
wird auf ein Objekt angewendet. In diesem Fall Ihre Zeichenfolge. Sie müssen es als letzten Parameter übergeben.put-text-property
beginnt bei null zu zählen.font-lock-mode
aktiviert, wird jeglicher Text derface
Eigenschaft entfernt.Der folgende Code funktioniert, wenn der Schriftsperrmodus deaktiviert ist:
Wenn Sie dies mit aktivierter Schriftsperre verwenden möchten, können Sie
font-lock-face
stattdessen die Eigenschaft festlegen . Es hat den gleichen Effekt, ist aber nicht betroffen vonfont-lock
.quelle