[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.]
(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
est une fonction intégrée dans C source code
.
(set-text-properties START END PROPERTIES &optional OBJECT)
Remplacez complètement les propriétés du texte de START
à END
.
Le troisième argument PROPERTIES
est la nouvelle liste de propriétés.
Si le quatrième argument facultatif OBJECT
est un tampon (ou nil, ce qui signifie le tampon actuel), START
et END
sont des positions de tampon (entiers ou marqueurs). Si OBJECT
est une chaîne START
et END
contient des indices basés sur 0. Si PROPERTIES
est nul, l'effet est de supprimer toutes les propriétés de la partie désignée de OBJECT.
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):
Pour supprimer toutes les propriétés de texte d'un certain texte, utilisez set-text-properties
et spécifiez nil
la nouvelle liste de propriétés.
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 deux remove-text-properties
et set-text-properties
changez la chaîne que vous leur passez.
Par exemple:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(set-text-properties 0 (length foo) nil foo)
Les deux foo
et bar
sont maintenant justes "foo"
, sans propriétés.
Mais:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(setq foo (substring-no-properties foo))
N'a maintenant foo
aucune propriété mais bar
en possède toujours.