Function: filesets-run-cmd
filesets-run-cmd is an interactive and byte-compiled function defined
in filesets.el.gz.
Signature
(filesets-run-cmd &optional CMD-NAME FILESET MODE)
Documentation
Run CMD-NAME (see filesets-commands) on FILESET.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/filesets.el.gz
(defun filesets-run-cmd (&optional cmd-name fileset mode)
"Run CMD-NAME (see `filesets-commands') on FILESET."
(interactive)
(let* ((cmd-name (or cmd-name
(completing-read "Select command: " filesets-commands
nil t)))
(name (or fileset
(completing-read "Select fileset: " filesets-data nil t))))
(when (and cmd-name name)
(let* ((event (if (equal cmd-name "Grep <<selection>>")
'on-grep
'on-cmd))
(files (if (and fileset
(or (equal mode :ingroup)
(equal mode :tree)))
(filesets-get-filelist fileset mode event)
(filesets-get-filelist
(filesets-get-fileset-from-name name)
mode event))))
(when files
(let ((fn (filesets-cmd-get-fn cmd-name))
(args
(dlet ((filesets--files files))
(filesets-cmd-get-args cmd-name))))
(if (memq fn '(multi-isearch-files multi-isearch-files-regexp))
(apply fn args)
(dolist (this files nil)
(save-excursion
(save-restriction
(let ((buffer (filesets-find-file this)))
(when buffer
(goto-char (point-min))
(cond
((stringp fn)
(let* ((args
(mapconcat
(lambda (this)
(filesets-run-cmd--repl-fn
this
(lambda (this)
(format "%s" this))))
args
" "))
(cmd (concat fn " " args)))
(filesets-cmd-show-result
cmd (shell-command-to-string cmd))))
((symbolp fn)
(apply fn
(mapcan (lambda (this)
(filesets-run-cmd--repl-fn
this
'list))
args))))))))))))))))