Por uma "corda decorada" quero dizer algo como
#("foo" 0 4 (fontified t face font-lock-function-name-face))
... em oposição à "sequência simples"
"foo"
(Se o código Elisp lê uma string diretamente de um buffer, ela pode ser decorada assim.)
Qual é a maneira mais simples de converter uma corda decorada em uma simples (removendo todas as decorações)?
Respostas:
[Sua corda propertizada parece errada - talvez você tenha copiado errado.
foo
possui apenas 3 caracteres, portanto, é impossível que ele seja tipificado nos caracteres 0 a 4 (ou seja, caracteres 0, 1, 2 e 3 - são 4 caracteres). Eu uso 3 em vez de 4 no exemplo aqui.]Consulte o manual do Elisp, nó Alterando propriedades . Lá você verá isso, na função
remove-text-properties
(que você também pode usar para fazer o trabalho):Como o @Dan mencionou, você também pode usar
substring-no-properties
, mas saiba que ele retorna uma nova string. Ele não modifica o objeto de cadeia real que você o transmite. Ambosremove-text-properties
eset-text-properties
altere a string que você os passa.Por exemplo:
Ambos
foo
ebar
agora são justos"foo"
, sem propriedades.Mas:
Agora
foo
não tem propriedades, masbar
ainda as possui.fonte