Question

Je souhaite accéder au contenu de la région actuelle en tant que chaîne dans une fonction. Par exemple:

(concat "stringa" (get-region-as-string) "stringb")

Merci

Ed

Était-ce utile?

La solution

sous-chaîne tampon ainsi que début de région et fin de région peuvent le faire.

Autres conseils

Comme le dit starblue, (tampon-sous-chaîne (marque) (point)) renvoie le contenu de la région, si la marque est définie. Si vous ne souhaitez pas utiliser les propriétés de chaîne , vous pouvez utiliser la variante 'buffer-substring-no-properties .

Toutefois, si vous écrivez une commande interactive , il existe un meilleur moyen d'obtenir les points de terminaison de la région, en utilisant le formulaire (interactive "r") . . Voici un exemple tiré de simple.el :

(defun count-lines-region (start end)
  "Print number of lines and characters in the region."
  (interactive "r")
  (message "Region has %d lines, %d characters"
       (count-lines start end) (- end start)))

Lorsqu’il est appelé depuis le code Lisp, le formulaire (interactive ...) est ignoré. Vous pouvez donc utiliser cette fonction pour compter les lignes dans toute partie du tampon. , pas seulement la région, en passant les arguments appropriés: par exemple, (nombre-lignes-région (point-min) (point-max)) pour compter les lignes dans la partie réduite du tampon . Mais lorsqu'il est appelé de manière interactive, le formulaire (interactif ...) est évalué et le code "r" fournit le point et la marque, sous forme de deux arguments numériques, le plus petit. premier.

Voir le manuel Lisp d'Emacs, sections 21.2.1 Utilisation d'Interactive et 21.2.2 Code Caractères pour interactif .

Si vous souhaitez copier le contenu d'une région dans un code Lisp vers une structure de données accessible à l'utilisateur, telle que kill-ring, le presse-papier X ou le registre, le manuel Emacs Lisp vous recommande d'utiliser filtre-tampon-sous-chaîne au lieu de simplement < code> tampon-sous-chaîne . Avant la copie, la fonction applique les fonctions de filtrage à partir d'une variable de liste appelée fonctions de filtrage-tampon-sous-chaîne . La fonction a été ajoutée à la version 22.3 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top