Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
;; This file:
;;   http://anggtwu.net/elisp/query-replace-list-1.el.html
;;   http://anggtwu.net/elisp/query-replace-list-1.el
;;          (find-angg "elisp/query-replace-list-1.el")
;; Author: Eduardo Ochs <eduardoochs@gmail.com>
;;
;; `query-replace-list', version 1.
;; Based on this question:
;;   https://lists.gnu.org/archive/html/help-gnu-emacs/2023-12/msg00064.html
;; Superseded by:
;;   (find-eev "eev-qrl.el")
;;
;; (eval-buffer)
;; (load (buffer-file-name))
;; (defun e () (interactive) (find-angg "elisp/query-replace-list-1.el"))
;;
;; High-level tests:
;;   (find-elinks-elisp '((qrl "from1" "to1" "from2" "to2") "from2from1"))
;;   (find-elinks-elisp '((qrl "a" "bb" "b" "aa")                "abcde"))
;;   (find-elinks-elisp '((qrl)                              "{\"foo\"}"))
;; Low-level tests:
;;   (ee-qrl-as)
;;   (ee-qrl-regexp)
;;   (ee-qrl-r0 "{")
;;   (ee-qrl-r1 "foo\\&bar")
;;   (ee-qrl-r2 "\\")

(defvar ee-qrl-plist0
  '("\"" "\\\""
    "\\" "\\\\"
    "{"  "{<}"
    "}"  "{>}"))
(defvar ee-qrl-plist ee-qrl-plist0)

(defun ee-qrl-as     () (cl-loop for (a b) on ee-qrl-plist by 'cddr collect a))
(defun ee-qrl-regexp () (mapconcat 'regexp-quote (ee-qrl-as) "\\|"))
(defun ee-qrl-r0    (s) (plist-get ee-qrl-plist (ee-no-properties s) 'equal))
(defun ee-qrl-r1    (s) (replace-regexp-in-string "\\\\" "\\\\\\\\" s))
(defun ee-qrl-r2    (s) (ee-qrl-r1 (ee-qrl-r0 s)))
(defun ee-qrl-r3  (a b) (ee-qrl-r2 (match-string 0)))

(defun ee-qrl0 (&rest plist)
  (interactive)
  (let ((ee-qrl-plist (or plist ee-qrl-plist)))
    (query-replace-regexp (ee-qrl-regexp) (list 'ee-qrl-r3 nil))
    "Done"))

(defun ee-qrl-narrow (&rest plist)
  (interactive)
  (save-excursion
    (save-restriction
      (narrow-to-region (point) (mark))
      (goto-char (point-min))
      (apply 'ee-qrl0 plist))))

(defun ee-qrl (&rest plist)
  (interactive)
  (if (region-active-p)
      (apply 'ee-qrl-narrow plist)
    (apply 'ee-qrl0 plist)))

(defalias 'qrl0 'ee-qrl0)
(defalias 'qrl  'ee-qrl)




;; Local Variables:
;; coding:  utf-8-unix
;; End: