[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.]
(let* ((foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(start 0)
(end (length foo)))
(set-text-properties start end nil foo)
foo)
set-text-properties
ist eine eingebaute Funktion in C source code
.
(set-text-properties START END PROPERTIES &optional OBJECT)
Ersetzen Sie die Texteigenschaften von START
bis vollständig END
.
Das dritte Argument PROPERTIES
ist die neue Eigenschaftsliste.
Wenn das optionale vierte Argument OBJECT
ein Puffer ist (oder nil, was den aktuellen Puffer bedeutet) START
und END
Pufferpositionen (ganze Zahlen oder Markierungen) sind. If OBJECT
ist eine Zeichenfolge START
und enthält END
auf 0 basierende Indizes. Ist dies nicht der PROPERTIES
Fall, werden alle Eigenschaften aus dem angegebenen Teil von OBJECT entfernt.
Siehe Elisp-Handbuch, Knoten Eigenschaften ändern . Dort sehen Sie unter Funktion remove-text-properties
(mit der Sie auch die Arbeit erledigen können):
Um alle Texteigenschaften aus einem bestimmten Text zu entfernen , verwenden Sie die neue Eigenschaftenliste set-text-properties
und geben Sie sie nil
an.
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. Beide remove-text-properties
und set-text-properties
ändern Sie die Zeichenfolge, die Sie übergeben.
Beispielsweise:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(set-text-properties 0 (length foo) nil foo)
Beides foo
und bar
jetzt eben "foo"
ohne Eigenschaften.
Aber:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(setq foo (substring-no-properties foo))
Hat jetzt foo
keine Eigenschaften aber bar
hat sie noch.