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 自体そろそろ捨てか。