Question

Je veux copier un texte d'un tampon à l'autre avec des propriétés de texte. J'ai donc

(with-current-buffer from-buffer
  (setq text-to-copy (buffer-substring beg end)))

Comment puis-je insérer le texte à copier à un autre tampon avec toutes les propriétés de texte? Je suis particulièrement intéressé dans les propriétés « face ».

La fonction tampon-chaîne renvoie une liste, par exemple ("substring" 42 51 (face font-lock-keyword-face) 52 59 (face font-lock-function-name-face))

Si je passe cette liste à (insert text-to-copy) il semble qu'il ne tient pas compte des propriétés de texte

Était-ce utile?

La solution

Si font-lock-mode est activée dans le tampon cible d'insertion, la propriété du visage sera remis à zéro une fois que les coups de pied fontification. Je pense que vous devez soit désactiver font-lock-mode, ou munge les propriétés du texte pour remplacer « face » avec 'font-lock-face' avant l'insertion.

Autres conseils

La fonction « insert » doit gérer les chaînes qui incluent des propriétés de texte, tel quel. Depuis buffer-substring par défaut retourne une chaîne avec texte-propriétés si elle est présente, « (insert text-to-copy) » devrait être tout ce que vous devez faire.

Si d'autre part vous voulez extraire la chaîne sans le texte-propriétés, vous voulez être en utilisant à la place buffer-substring-no-properties

Cela devrait fonctionner. Ceci est d'Emacs 23.1.1:

buffer-substring is a built-in function in `C source code'.

(buffer-substring start end)

Return the contents of part of the current buffer as a string.
The two arguments start and end are character positions;
they can be in either order.
The string returned is multibyte if the buffer is multibyte.

This function copies the text properties of that part of the buffer
into the result string; if you don't want the text properties,
use `buffer-substring-no-properties' instead.

Vous pouvez utiliser la commande interactive describe-text-properties pour voir ce que vous avez réellement obtenu:

describe-text-properties is an interactive compiled Lisp function in
`descr-text.el'.

It is bound to <C-down-mouse-2> <dp>, <menu-bar> <edit> <props> <dp>.
(describe-text-properties pos &optional output-buffer)

Describe widgets, buttons, overlays and text properties at pos.
Interactively, describe them for the character after point.
If optional second argument output-buffer is non-nil,
insert the output into that buffer, and don't initialize or clear it
otherwise.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top