aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuri Linkov2008-07-24 00:09:01 +0000
committerJuri Linkov2008-07-24 00:09:01 +0000
commit67c18958a50592d2ed96487d3c92d13814a5f852 (patch)
tree64ed27b34cc5d0dbc3547f0793f8e31a660368de
parent1fbb8c2e7d23e83a5492e73e0208abf47bf5c95e (diff)
downloademacs-67c18958a50592d2ed96487d3c92d13814a5f852.tar.gz
emacs-67c18958a50592d2ed96487d3c92d13814a5f852.zip
(filesets-commands): Add commands for "Isearch" and
"Isearch (regexp)". Replace `query-replace' and `query-replace-regexp' with `perform-replace' using `filesets-cmd-query-replace-regexp-getargs'. (filesets-run-cmd): Call `fn' only once if it is `multi-isearch-files' or `multi-isearch-files-regexp'. (filesets-cmd-query-replace-getargs): Call standard function `query-replace-read-args' to read `query-replace' arguments. Add `multi-query-replace-map'. (filesets-cmd-query-replace-regexp-getargs) (filesets-cmd-isearch-getargs): New functions.
-rw-r--r--lisp/filesets.el103
1 files changed, 57 insertions, 46 deletions
diff --git a/lisp/filesets.el b/lisp/filesets.el
index 064cfbfb0e1..a8d70df36d5 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -565,12 +565,18 @@ including directory trees to the menu can take a lot of memory."
565 :group 'filesets) 565 :group 'filesets)
566 566
567(defcustom filesets-commands 567(defcustom filesets-commands
568 `(("Query Replace" 568 `(("Isearch"
569 query-replace 569 multi-isearch-files
570 (filesets-cmd-isearch-getargs))
571 ("Isearch (regexp)"
572 multi-isearch-files-regexp
573 (filesets-cmd-isearch-getargs))
574 ("Query Replace"
575 perform-replace
570 (filesets-cmd-query-replace-getargs)) 576 (filesets-cmd-query-replace-getargs))
571 ("Query Replace (regexp)" 577 ("Query Replace (regexp)"
572 query-replace-regexp 578 perform-replace
573 (filesets-cmd-query-replace-getargs)) 579 (filesets-cmd-query-replace-regexp-getargs))
574 ("Grep <<selection>>" 580 ("Grep <<selection>>"
575 "grep" 581 "grep"
576 ("-n " filesets-get-quoted-selection " " "<<file-name>>")) 582 ("-n " filesets-get-quoted-selection " " "<<file-name>>"))
@@ -1623,38 +1629,40 @@ Replace <file-name> or <<file-name>> with filename."
1623 (when files 1629 (when files
1624 (let ((fn (filesets-cmd-get-fn cmd-name)) 1630 (let ((fn (filesets-cmd-get-fn cmd-name))
1625 (args (filesets-cmd-get-args cmd-name))) 1631 (args (filesets-cmd-get-args cmd-name)))
1626 (dolist (this files nil) 1632 (if (memq fn '(multi-isearch-files multi-isearch-files-regexp))
1627 (save-excursion 1633 (apply fn args)
1628 (save-restriction 1634 (dolist (this files nil)
1629 (let ((buffer (filesets-find-file this))) 1635 (save-excursion
1630 (when buffer 1636 (save-restriction
1631 (goto-char (point-min)) 1637 (let ((buffer (filesets-find-file this)))
1632 (let () 1638 (when buffer
1633 (cond 1639 (goto-char (point-min))
1634 ((stringp fn) 1640 (let ()
1635 (let* ((args 1641 (cond
1636 (let ((txt "")) 1642 ((stringp fn)
1637 (dolist (this args txt) 1643 (let* ((args
1638 (setq txt 1644 (let ((txt ""))
1639 (concat txt 1645 (dolist (this args txt)
1640 (filesets-run-cmd--repl-fn 1646 (setq txt
1641 this 1647 (concat txt
1642 (lambda (this) 1648 (filesets-run-cmd--repl-fn
1643 (if (equal txt "") "" " ") 1649 this
1644 (format "%s" this)))))))) 1650 (lambda (this)
1645 (cmd (concat fn " " args))) 1651 (if (equal txt "") "" " ")
1646 (filesets-cmd-show-result 1652 (format "%s" this))))))))
1647 cmd (shell-command-to-string cmd)))) 1653 (cmd (concat fn " " args)))
1648 ((symbolp fn) 1654 (filesets-cmd-show-result
1649 (let ((args 1655 cmd (shell-command-to-string cmd))))
1650 (let ((argl nil)) 1656 ((symbolp fn)
1651 (dolist (this args argl) 1657 (let ((args
1652 (setq argl 1658 (let ((argl nil))
1653 (append argl 1659 (dolist (this args argl)
1654 (filesets-run-cmd--repl-fn 1660 (setq argl
1655 this 1661 (append argl
1656 'list))))))) 1662 (filesets-run-cmd--repl-fn
1657 (apply fn args)))))))))))))))) 1663 this
1664 'list)))))))
1665 (apply fn args)))))))))))))))))
1658 1666
1659(defun filesets-get-cmd-menu () 1667(defun filesets-get-cmd-menu ()
1660 "Create filesets command menu." 1668 "Create filesets command menu."
@@ -1668,16 +1676,19 @@ Replace <file-name> or <<file-name>> with filename."
1668;;; sample commands 1676;;; sample commands
1669(defun filesets-cmd-query-replace-getargs () 1677(defun filesets-cmd-query-replace-getargs ()
1670 "Get arguments for `query-replace' and `query-replace-regexp'." 1678 "Get arguments for `query-replace' and `query-replace-regexp'."
1671 (let* ((from-string (read-string "Filesets query replace: " 1679 (let ((common (query-replace-read-args "Filesets query replace" nil t)))
1672 "" 1680 (list (nth 0 common) (nth 1 common) t nil (nth 2 common) nil
1673 'query-replace-history)) 1681 multi-query-replace-map)))
1674 (to-string (read-string 1682
1675 (format "Filesets query replace %s with: " from-string) 1683(defun filesets-cmd-query-replace-regexp-getargs ()
1676 "" 1684 "Get arguments for `query-replace' and `query-replace-regexp'."
1677 'query-replace-history)) 1685 (let ((common (query-replace-read-args "Filesets query replace" t t)))
1678 (delimited (y-or-n-p 1686 (list (nth 0 common) (nth 1 common) t t (nth 2 common) nil
1679 "Filesets query replace: respect word boundaries? "))) 1687 multi-query-replace-map)))
1680 (list from-string to-string delimited))) 1688
1689(defun filesets-cmd-isearch-getargs ()
1690 "Get arguments for `multi-isearch-files' and `multi-isearch-files-regexp'."
1691 (list files))
1681 1692
1682(defun filesets-cmd-shell-command-getargs () 1693(defun filesets-cmd-shell-command-getargs ()
1683 "Get arguments for `filesets-cmd-shell-command'." 1694 "Get arguments for `filesets-cmd-shell-command'."