Por ejemplo, quiero hacer que todo el texto entre paréntesis,(), UPCASE. Es trivial para hacer la siguiente forma interactiva:Emacs: ¿cómo puedo reemplazar-regexp con una función lisp en un defun?
M-x query-replace-regexp
replace: "(\(.+?\))"
with : "(\,(upcase \1))"
lugar quiero escribir un defun
que hará que:
(defun upcs()
(interactive)
(goto-char 1)
(while (search-forward "(\\(.+?\\))" nil t) (replace-match "(\\,(upcase \\1))" t nil)))
pero no funciona! Mientras que las siguientes obras (que añade foo
y bar
a los textos entre paréntesis):
(defun HOOK()
(interactive)
(goto-char 1)
(while (search-forward-regexp "(\\(.+?\\))" nil t) (replace-match "(foo \\1 bar)" t nil)))
Si quiere eliminar 'put-in-par', puede hacer: (defun upcs-luke() (interactivo) (goto-char 1) (while (search-forward-regexp "(\\ ([^ \\)] + \\)) "nil t) (replace-match (concat" ("(upcase (match-string 1))") ") t nil))) – zev
También usa' format' para este propósito sería más agradable y más flexible en casos más complicados. – ocodo