Emacs: expression régulière remplaçant pour changer la casse

De temps en temps je veux remplacer toutes les instances de valeurs comme:

 

avec

  

c’est-à-dire faire une expression régulière remplaçant toutes les choses entre crochets par son équivalent en minuscule.

Quelqu’un a un joli extrait de Lisp qui fait ça? On peut supposer que nous ne traitons que des valeurs ASCII. Des points bonus pour tout ce qui est suffisamment générique pour prendre une expression régulière complète, et ne se contente pas de gérer l’exemple des crochets. Encore plus de bonus pointe vers une réponse qui utilise simplement Mx query-replace-regexp .

Merci,

Dom

Essayez Mx query-replace-regexp avec "<\([^>]+\)>" comme chaîne de recherche et "<\,(downcase \1)>" comme remplacement.

Cela devrait fonctionner pour Emacs 22 et les versions ultérieures, consultez cet article de Steve Yegge pour plus de détails sur la manière dont les expressions Lisp peuvent être utilisées dans la chaîne de remplacement.

Pour les versions antérieures d’Emacs, vous pourriez essayer quelque chose comme ceci:

 (defun tags-to-lower-case () (interactive) (save-excursion (goto-char (point-min)) (while (re-search-forward "<[^>]+>" nil t) (replace-match (downcase (match-ssortingng 0)) t))))