Add a function to easily swap strings in a file

This commit is contained in:
Gergely Polonkai 2018-03-19 12:12:52 +01:00
parent dbe501a258
commit 489591702b
1 changed files with 22 additions and 0 deletions

View File

@ -49,6 +49,28 @@ DELIMITED, START, and END are passed down verbatim to `perform-replace'."
,from-string))
t t delimited nil nil start end))
;; From https://emacs.stackexchange.com/a/27170/507
(defun query-swap-strings (from-string to-string &optional delimited start end)
"Swap occurrences of FROM-STRING and TO-STRING.
DELIMITED, START, and END are passed to `replace-eval-replacement' verbatim."
(interactive
(let ((common
(query-replace-read-args
(concat "Query swap"
(if current-prefix-arg
(if (eq current-prefix-arg '-) " backward" " word")
"")
(if (use-region-p) " in region" ""))
nil)))
(list (nth 0 common) (nth 1 common) (nth 2 common)
(if (use-region-p) (region-beginning))
(if (use-region-p) (region-end)))))
(perform-replace
(concat "\\(" (regexp-quote from-string) "\\)\\|" (regexp-quote to-string))
`(replace-eval-replacement replace-quote (if (match-string 1) ,to-string ,from-string))
t t delimited nil nil start end))
(provide 'text-manip)
;;; text-manip.el ends here