[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. elコマンドによるシェルとEmacsの統合

Onelinerにはelというperlスクリプトが付属しています。よりshellとEmacsを深く統合します。

4.1 elコマンドとは?  
4.2 elコマンドマニュアル  
4.3 elコマンドを使ってみよう  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 elコマンドとは?

elコマンドを使えばOneliner専用のshellコマンドを簡単に作ることができます。 elコマンドはshellバッファからS式をEmacsに送ったり、そのS式の実行を依頼したりできます。 つまり、shellコマンドからEmacsの機能を起動できます。 また、お好みのshellコマンドと Emacsの動作を連係させることができます。

例えば、以下のような芸当もできます。(shellバッファで以下のように入力するとEmacsがa.cというファイルを自動的にオープンします。)

 
$ find-file a.c

さて、それを実現するためにはどうやれば良いのでしょうか?elを利用して次のようなaliasを定義します。 (bash,zshを想定しています。)

 
alias find-file="el -x -f '(display-buffer (find-file-noselect \"%s\"))'"


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.2 elコマンドマニュアル

ここでは、elコマンドの詳細を解説します。 ここでの動作例は全てデフォルトパイプバッファに以下のデータが入っているものとします。

 
1 2
3 4

基本的な動作は、与えられたコマンドライン引数や標準入出力のデータからS式を組み立てて表示するものです。 以下に例を示します。

 
$ el 1 2 3 4
(1 "2" "3" "4")
$ echo 1 2 3 4 | el
(1 "2" "3" "4")
$ echo 1 2 | el 3 4
(3 "4")
$ | el
(1 "2")
(3 "4")

elコマンドは多くのコマンドラインスイッチを持っています。 各スイッチの解説を行ないます。

`-c (--command cmd)'
`cmd'はElisp関数であると指定します。 コマンドライン引数や標準入力からはのデータは`cmd'の引数とみなします。 -cスイッチだけを指定した場合は標準入力の1行につき1つのS式を出力します。

 
$ | el -c elisp-func
(elisp-func "1" "2")
(elisp-func "3" "4")

`-a (--args n)'
-cスイッチで指定したElisp関数が取る引数の最大数を指定します。

 
$ | el -a 1 -c elisp-func
(elisp-func "1")
(elisp-func "2")
(elisp-func "3")
(elisp-func "4")

`-f (--format fmt)'
S式の組み立てにprintfのフォーマット文字列を使う Allows you to use format string of printf for making a S-exp.

 
$ | el -f '(elisp-func "%s")'
(elisp-func "1")
(elisp-func "2")
(elisp-func "3")
(elisp-func "4")
$ | el -f '(elisp-func "%s" "%s")'
(elisp-func "1" "2")
(elisp-func "3" "4")

`-x (--execute)'
S式を`*Oneliner auto-eval*'というバッファで評価することをOnelinerにリクエストします。

`-i (--inpipe buf)'
入力先のパイプバッファ番号またはバッファ名を指定します。

`-o (--outpipe buf)'
出力先のパイプバッファ番号またはバッファ名を指定します。

`-s (--serial)'
標準入力からの複数行を1行にシリアライズします。

 
$ | el -s -c elisp-func
(elisp-func "1" "2" "3" "4")
$ | el -s -a 3 -c elisp-func
(elisp-func "1" "2" "3")
(elisp-func "4")

`-h (--help)'
ヘルプの表示を行ないます。

`-V (--version)'
バージョン番号の表示を行ないます。 Display version identifiers.

`-d (--debug)'
デバッグ情報の出力機能を有効にします。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.3 elコマンドを使ってみよう


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.3.0.1 便利なaliasの紹介

alias find-file="el -x -f '(display-buffer (find-file-noselect \"%s\"))'"
指定ファイルをEmacsにオープンさせます。以下のようなことができます。

 
 find-file file.c 
 find ./ -name \*.c | find-file 

find-dired="el -x -f '(find-dired \"%s\" \"-name %s\")'"
Emacsのfind-diredを指定パラメータで起動します。

 
 find-dired ./ \*.c 

alias dired='el -x -a 1 -c dired'
指定パスでdiredを起動します。

 
 dired /etc 

alias ediff-files='el -x -s -a 2 -c ediff-files'
2つのファイル名を指定して、ediff-filesを起動します。

 
 ediff-files a.c b.c 

alias w3m-find-file='el -x -a 1 -c w3m-find-file'
emacs-w3mで指定htmlファイルをオープンします。 Start w3m-find-file with a html file with you specify.

 
 w3m-find-file index.html 

alias cvs-update="el -x -f '(cvs-update \"%s\" nil)'"
指定パスでpcl-cvsのcvs-update関数を起動します。

 
 cvs-update . 

alias google="echo nil | el -x -f '(w3m \"http://www.google.co.jp/\" %s)'"
emacs-w3mでgoogleのトップページを開きます。

 
 google 


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Kiyoka Nishiyama on December, 7 2003 using texi2html