Dengan "string yang didekorasi" maksud saya sesuatu seperti
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... sebagai lawan dari "string biasa"
"foo"
(Jika kode Elisp membaca string langsung dari buffer, kode tersebut dapat didekorasi seperti ini.)
Apa cara paling sederhana untuk mengubah string yang didekorasi menjadi yang polos (dengan melepas semua dekorasi)?
Jawaban:
[String propertized Anda terlihat salah - mungkin Anda salah menyalinnya.
foo
hanya memiliki 3 karakter, jadi tidak mungkin untuk diklasifikasi pada karakter 0 hingga 4 (yaitu, karakter 0, 1, 2, dan 3 - itu 4 karakter). Saya menggunakan 3 bukannya 4 dalam contoh di sini.]Lihat manual Elisp, simpul Mengubah Properti . Di sana Anda akan melihat ini, di bawah fungsi
remove-text-properties
(yang juga dapat Anda gunakan untuk melakukan pekerjaan):Seperti yang disebutkan oleh @Dan, Anda juga dapat menggunakan
substring-no-properties
, tetapi ketahuilah bahwa ia mengembalikan string baru. Itu tidak mengubah objek string aktual yang Anda lewati. Keduanyaremove-text-properties
danset-text-properties
ubah string yang Anda lewati.Sebagai contoh:
Keduanya
foo
danbar
sekarang adil"foo"
, tanpa properti.Tapi:
Sekarang
foo
tidak memiliki properti tetapibar
masih memilikinya.sumber