2016-11-04

Filtering text through a shell command in Emacs - Stack Overflow

(defun generalized-shell-command (command arg)

"Unifies `shell-command' and `shell-command-on-region'. If no region is

selected, run a shell command just like M-x shell-command (M-!). If

no region is selected and an argument is a passed, run a shell command

and place its output after the mark as in C-u M-x `shell-command' (C-u

M-!). If a region is selected pass the text of that region to the

shell and replace the text in that region with the output of the shell

command as in C-u M-x `shell-command-on-region' (C-u M-|). If a region

is selected AND an argument is passed (via C-u) send output to another

buffer instead of replacing the text in region."

(interactive (list (read-from-minibuffer "Shell command: " nil nil nil 'shell-command-history)

current-prefix-arg))

(let ((p (if mark-active (region-beginning) 0))

(m (if mark-active (region-end) 0)))

(if (= p m)

;; No active region

(if (eq arg nil)

(shell-command command)

(shell-command command t))

;; Active region

(if (eq arg nil)

(shell-command-on-region p m command t t)

(shell-command-on-region p m command)))))



--
Johan Pettersson computer administrator KTH / ITM
Tel: +46 (0)8 790 9542 XMPP/SIP: gud (a) kth.se Skype: p1ersson_kth
Telegram: @p1ersson
Visiting adress: Brinellvägen 68, 100 44 Stockholm
WebRTC: https://appear.in/iip

Inga kommentarer: