Mit einem "verzierten String" meine ich so etwas wie
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... im Gegensatz zur "normalen Saite"
"foo"
(Wenn Elisp-Code eine Zeichenfolge direkt aus einem Puffer liest, kann dies so aussehen.)
Was ist die einfachste Möglichkeit, eine dekorierte Zeichenfolge in eine einfache Zeichenfolge umzuwandeln (indem alle Dekorationen entfernt werden)?
Antworten:
[Ihre Eigenschaftszeichenfolge sieht falsch aus - vielleicht haben Sie sie falsch kopiert.
foo
Hat nur 3 Zeichen, so dass es unmöglich ist, eine Schriftart für die Zeichen 0 bis 4 zu erstellen (dh Zeichen 0, 1, 2 und 3 - das sind 4 Zeichen). Ich verwende hier im Beispiel 3 statt 4.]Siehe Elisp-Handbuch, Knoten Eigenschaften ändern . Dort sehen Sie unter Funktion
remove-text-properties
(mit der Sie auch die Arbeit erledigen können):Wie bereits erwähnt, können Sie auch @Dan verwenden. Beachten Sie
substring-no-properties
jedoch, dass es eine neue Zeichenfolge zurückgibt. Das tatsächlich übergebene String-Objekt wird nicht geändert. Beideremove-text-properties
undset-text-properties
ändern Sie die Zeichenfolge, die Sie übergeben.Beispielsweise:
Beides
foo
undbar
jetzt eben"foo"
ohne Eigenschaften.Aber:
Hat jetzt
foo
keine Eigenschaften aberbar
hat sie noch.quelle