emacsclient で S 式を評価する
今頃になって、Emacs22 の emacsclient に -e オプションなんてのが追加されていることに気づいた。
% emacsclient --help Usage: emacsclient [OPTIONS] FILE... Tell the Emacs server to visit the specified files. Every FILE can be either just a FILENAME or [+LINE[:COLUMN]] FILENAME. The following OPTIONS are accepted: -V, --version Just print a version info and return -H, --help Print this usage information message -n, --no-wait Don't wait for the server to return -e, --eval Evaluate the FILE arguments as ELisp expressions -d, --display=DISPLAY Visit the file in the given display -s, --socket-name=FILENAME Set the filename of the UNIX socket for communication -a, --alternate-editor=EDITOR Editor to fallback to if the server is not running Report bugs to bug-gnu-emacs@gnu.org.
こんなん
% emacsclient -e '(print "Hello")' "Hello"
以前の gnudoit を使ったシェルからの検索も
function se() { dir=. [ $# -gt 2 ] && dir=$3 dir=$(readlink -f $dir) sexp=$(cat <<EOF (progn ;; (grep-tree "$2" "*.$1" "$dir") ;; ちょっと古い版(4/28以前)のビルドはこっち (rgrep "$2" "*.$1" "$dir") ;; 新しい CVS HEAD はこっち (select-window (get-buffer-window "*grep*"))) EOF ) emacsclient -e "$sexp" }
とできる。
これなら gnudoit いらなくなるな。というか gnuserv 自体そろそろ捨てか。