Przez „zdobiony sznurek” mam na myśli coś takiego
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... w przeciwieństwie do „zwykłego ciągu”
"foo"
(Jeśli kod Elisp odczytuje ciąg bezpośrednio z bufora, może być ozdobiony w ten sposób.)
Jaki jest najprostszy sposób przekonwertowania ozdobnego sznurka na zwykły (poprzez usunięcie wszystkich ozdób)?
Odpowiedzi:
[Twój łańcuch znaków wygląda źle - być może źle go skopiowałeś.
foo
ma tylko 3 znaki, więc nie można go czcionki w znakach od 0 do 4 (tj. znaki 0, 1, 2 i 3 - to 4 znaki). W tym przykładzie używam 3 zamiast 4.]Zobacz instrukcję Elisp, węzeł Zmiana właściwości . Tam zobaczysz to, w funkcji
remove-text-properties
(której możesz również użyć do wykonania zadania):Jak wspomniano @Dan, możesz także użyć
substring-no-properties
, ale pamiętaj, że zwraca nowy ciąg. Nie modyfikuje przekazanego obiektu ciąg znaków. Zarównoremove-text-properties
iset-text-properties
zmień ciąg, który im przekazujesz.Na przykład:
Zarówno
foo
abar
teraz po prostu"foo"
, bez żadnych właściwości.Ale:
Teraz
foo
nie ma właściwości, alebar
nadal je ma.źródło