Par "chaîne décorée", je veux dire quelque chose comme
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... par opposition à la "chaîne simple"
"foo"
(Si le code Elisp lit une chaîne directement à partir d'un tampon, elle peut être décorée comme ceci.)
Quelle est la façon la plus simple de convertir une chaîne décorée en une chaîne simple (en supprimant toutes les décorations)?
Réponses:
[Votre chaîne de propriété semble incorrecte - vous l'avez peut-être mal copiée.
foo
ne possède que 3 caractères, il est donc impossible de le faire caractériser sur les caractères 0 à 4 (c'est-à-dire les caractères 0, 1, 2 et 3 - c'est 4 caractères). J'utilise 3 au lieu de 4 dans l'exemple ici.]Voir le manuel Elisp, nœud Changer les propriétés . Là, vous verrez ceci, sous fonction
remove-text-properties
(que vous pouvez également utiliser pour faire le travail):Comme @Dan l'a mentionné, vous pouvez également l'utiliser
substring-no-properties
, mais sachez qu'il renvoie une nouvelle chaîne. Il ne modifie pas l'objet chaîne réel que vous lui transmettez. Les deuxremove-text-properties
etset-text-properties
changez la chaîne que vous leur passez.Par exemple:
Les deux
foo
etbar
sont maintenant justes"foo"
, sans propriétés.Mais:
N'a maintenant
foo
aucune propriété maisbar
en possède toujours.la source