|
@@ -0,0 +1,51 @@
|
|
|
|
+#!/bin/sh
|
|
|
|
+
|
|
|
|
+EPIPE_EMACS=${EPIPE_EMACS:-emacs}
|
|
|
|
+show="NO"
|
|
|
|
+buffer_name=""
|
|
|
|
+interval=1
|
|
|
|
+
|
|
|
|
+usage() {
|
|
|
|
+ self=$(basename $0)
|
|
|
|
+ echo "$self redirects stdin to an emacs buffer"
|
|
|
|
+ echo -e "Example: 'echo \"foo\" | epipe'"
|
|
|
|
+ echo
|
|
|
|
+ echo -e "\t-e CMD\t Use emacs CMD."
|
|
|
|
+ echo -e "\t-b NAME\t Piped-to buffer should have NAME."
|
|
|
|
+ echo -e "\t-I INT\t Use INT as revert interval."
|
|
|
|
+ echo -e "\t-v\t Verbose mode also prints output to stdout."
|
|
|
|
+ echo -e "\t-h\t Shows this message."
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+while [ $# -gt 0 ]
|
|
|
|
+do
|
|
|
|
+ case $1 in
|
|
|
|
+ -v) show="YES"; shift;;
|
|
|
|
+ -e) shift; EPIPE_EMACS=$1; shift;;
|
|
|
|
+ -b) shift; buffer_name=$1; shift;;
|
|
|
|
+ -I) shift; interval=$1; shift;;
|
|
|
|
+ -h) usage; exit 0; shift;;
|
|
|
|
+ *) echo "Unknown option: '$1'"; usage; exit 1;;
|
|
|
|
+ esac
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+tmpfile=$(mktemp --tmpdir=/tmp epipe.XXXXXX)
|
|
|
|
+elisp="
|
|
|
|
+(let ((find-file-hook
|
|
|
|
+ '((lambda ()
|
|
|
|
+ (turn-on-auto-revert-tail-mode)
|
|
|
|
+ (setq auto-revert-interval ${interval})
|
|
|
|
+ (auto-revert-set-timer)
|
|
|
|
+ (goto-char (point-max))
|
|
|
|
+ (cd \"$(pwd)\")
|
|
|
|
+ (unless (string-empty-p \"$buffer_name\")
|
|
|
|
+ (rename-buffer \"$buffer_name\"))))))
|
|
|
|
+ (find-file \"$tmpfile\"))"
|
|
|
|
+${EPIPE_EMACS} --eval "$elisp" > /dev/null &
|
|
|
|
+
|
|
|
|
+if [ "$show" = "NO" ]
|
|
|
|
+then
|
|
|
|
+ cat > $tmpfile
|
|
|
|
+else
|
|
|
|
+ tee $tmpfile
|
|
|
|
+fi
|