\input texinfo @c -*-texinfo-*-
@c このファイルは EUCでセーブされていることを期待しています。(makeinfoで処理するため)
@c %**start of header
@setfilename oneliner.info
@settitle Oneliner(Shell-mode hooks for Oneliners)
@c %**end of header

@clear jp
@clear us
@set us

@ifset jp
@c Oneliner の texinfo
@c Copyright (C) 2001-2003 西山清香
@c M-x texinfo-format-buffer で info にしてください。
@end ifset
@ifset us
@c Texinfo for Oneliner
@c Copyright (C) 2001-2003 Kiyoka Nishiyama
@c Try "M-x texinfo-format-buffer" or makeinfo to get the Info.
@end ifset

@set version 0.3.x
@set modified 2003/10/15

@titlepage
@sp 10
@center
@subtitle Shell-mode hooks for Oneliners
@ifset jp
@title 『Oneliner』
@subtitle // ワンライナ //
@author Copyright @copyright{}2001-2003 西山清香
@end ifset
@ifset us
@title Oneliner
@author Copyright @copyright{}2001-2003 Kiyoka Nishiyama
@end ifset
@end titlepage

@ifset jp
@dircategory Emacs
@direntry
* Oneliner-J: (oneliner.jis.info).     Shell-mode hooks for Oneliners
@end direntry
@end ifset

@ifset us
@dircategory Emacs
@direntry
* Oneliner: (oneliner.info).           Shell-mode hooks for Oneliners
@end direntry
@end ifset

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Top
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@ifinfo

@node Top, Overview, (dir), (dir)
@ifset jp
@top Oneliner マニュアル
@end ifset
@ifset us
@top Oneliner Manual
@end ifset

@flushright
@ifset jp
西山清香
作成 2001/06/12
更新@value{modified}
@end ifset
@ifset us
Kiyoka Nishiyama
Created 2001/06/12
Modified@value{modified}
@end ifset
@end flushright

@ifset jp
この Info は Oneliner バージョン@value{version} について解説します。この Info 
の他に、Oneliner に関する有益な情報は Oneliner の公式ホームページ
(http://oneliner-elisp.sourceforge.net/)から得られるかもしれません。
@end ifset
@ifset us
This Info documents Oneliner version @value{version}. In addition to this
Info, you may find useful information about Oneliner from Oneliner's official home
page(http://oneliner-elisp.sourceforge.net/)
@end ifset

@end ifinfo

@menu
@ifset jp
* Overview::                    はじめに読んでね
* Start::                       さぁ始めよう！
* E-Pipe::                      e-パイプによるシェルとEmacsの統合
* El-Command::                  el コマンドによるシェルとEmacsの統合
* KeyOperation::                キー操作
* Customize::                   自分好みのOnelinerにするには
* Example::                     応用・キメ技
* Avail::                       入手方法とメーリングリスト
@end ifset
@ifset us
* Overview::                    Overview
* Start::                       Let's get started
* E-Pipe::                      Integration with e-pipe 
* El-Command::                  Integration with @samp{el} command
* KeyOperation::                Key operation
* Customize::                   How to customize as you like
* Example::                     Examples (various oneliner technique)
* Avail::                       Availability and mailing-list
@end ifset
@end menu

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Overview
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node Overview, Start, Top, Top
@ifset jp
@chapter はじめに読んでね
@end ifset
@ifset us
@chapter Overview(Read me first)
@end ifset

@ifset jp
Oneliner とは、Emacs標準 shell-mode へのフック集です。
シェルでワンライナをキメる UNIXユーザーのための便利な拡張を集めました。
@end ifset
@ifset us
Oneliner is hooks of Emacs standard shell-mode.
We gathered nice extension for UNIX shell geeks who loves one line script.
@end ifset

@ifset jp
Oneliner バージョン @value{version} の特長を以下に示します。
@end ifset
@ifset us
The features of Oneliner @value{version} are as follows:
@end ifset

@itemize @minus
@item
@ifset jp
簡単な操作で、Oneliner shell-modeの標準入出力を Emacsのバッファに接続できます。
@end ifset
@ifset us
You can connect standard input/output to/from Emacs-buffer with easy operation.
@end ifset

@item
@ifset jp
Emacsとシェルプロセスのカレントディレクトリを完全かつ自動的に同期します。
@end ifset
@ifset us
You can synchronize currect directory between oneliner-mode and shell process.
@end ifset

@item
@ifset jp
コマンドの完了をbeepで通知します。
@end ifset
@ifset us
Oneliner gives you notice with beep when command execution was done.
@end ifset

@item
@ifset jp
@samp{*Oneliner shell*}バッファに出力されたコントロールコードの処理を行ないます。
@end ifset
@ifset us
Oneliner can handle some control codes.
@end ifset
@end itemize

@ifset jp
対応する Emacsバージョンは以下の通りです。
@end ifset
@ifset us
You can use these versions of Emacs.
@end ifset

@itemize @minus
@item
FSF Emacs 20.7 or later
@item
XEmacs Emacs 21.1.14 or later
@item
Meadow 1.14 or later ( You must use it with cygwin )
@end itemize

@ifset jp
Oneliner には以下のライブラリが必要とします。
@end ifset
@ifset us
Oneliner needs libraries as follows:
@end ifset

@itemize @minus
@item
apel 10.6 or later
@end itemize

@ifset jp
付属の 'el'スクリプトを使うためには以下のプログラムが必要です。
@end ifset
@ifset us
If you use the Oneliner's accessories 'el' scripts, You need programs as follows:
@end ifset

@itemize @minus
@item
perl5 or later
@end itemize

@ifset jp
以下のシェルを使うことができます。
@end ifset
@ifset us
You can use these shell programs.
@end ifset

@itemize @minus
@item
bash
@item
csh
@item
tcsh
@item
zsh
@end itemize

@ifset jp
beta リリースである Emacs (たとえば Emacs 21)をサポートすることもあり
ますが、正式リリースになって仕様が変わったときは、正式リリースである
Emacs の仕様に合わせます。
@end ifset
@ifset us
Oneliner may support beta versions of Emacs (e.g. Emacs 21) but
Oneliner conforms the spec of official release when available.
@end ifset

@ifset jp
このマニュアルで単に Emacs と言った場合には、サポートしているすべての
プラットフォームを意味します。
@end ifset
@ifset us
Throughout this manual, "Emacs" means all supported platforms. 
@end ifset

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Start
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node Start, E-Pipe, Overview, Top
@ifset jp
@chapter さぁ始めよう！
@end ifset
@ifset us
@chapter Let's get started
@end ifset

@ifset jp
Oneliner の起動は @samp{M-x oneliner} です。

Onelinerをインストールしてもオリジナルのshell-mode の挙動は変わりません。
@end ifset
@ifset us
To start Oneliner, do @samp{M-x oneliner}.

If you install the Oneliner, action of original shell-mode is never changed.
@end ifset

@ifset jp
Oneliner を起動した際には、@samp{*Oneliner shell*}バッファと@samp{*Oneliner pipe*0}
バッファがオープンします。@samp{*Oneliner pipe*0}バッファ に Onelinerの起動
メッセージが出ればインストール成功です。
@end ifset
@ifset us
When Oneliner is started, @samp{*Oneliner shell*} buffer and @samp{*Oneliner pipe*0}
buffer appers. If you see the Oneliner's title message in
@samp{*Oneliner pipe*0} buffer, installing is success.
@end ifset

@ifset jp
もし Oneliner が起動しない場合は、@file{oneliner.el} がインストールさ
れているか、また以下が組織の設定ファイルか自分の .emacs で設定されてい
るか確かめて下さい。
@end ifset
@ifset us
If Oneliner is not started, see whether or not Oneliner is installed
and/or whether or not the following configurations are put into a site
configuration file or your ".emacs".
@end ifset

@example
(require 'oneliner)
@end example

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	E-Pipe
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node E-Pipe, e-pipe, Start, Top
@ifset jp
@chapter e-パイプによるシェルとEmacsの統合
@end ifset
@ifset us
@chapter To integrate shell with Emacs.
@end ifset

@ifset jp
Onelinerはe-パイプという機能でシェルとEmacsを統合します。
@end ifset
@ifset us
You can integrate shell with Emacs with @samp{e-pipe}.
@end ifset

@menu
@ifset jp
* e-pipe::                      e-パイプとパイプバッファ
* syntax::                      シンタックス
@end ifset
@ifset us
* e-pipe::                      e-pipe and pipe-buffer
* syntax::                      syntax
@end ifset
@end menu

@c %%%%%%%%%%%%%%%%%
@node e-pipe, syntax, E-Pipe, E-Pipe

@ifset jp
@section e-パイプ
@end ifset
@ifset us
@section e-Pipe
@end ifset

@ifset jp
通常 UNIXシェルでは、コマンド間の入出力をパイプ@samp{|} 記号で接続できます。
@end ifset
@ifset us
Almost UNIX shell can connect the command's stdout with the another command's stdin with @samp{|} syntax.
@end ifset

@ifset jp
一方、Onelinerはパイプ@samp{|} 記号を使って、コマンドの標準出力を Emacsバッファに接続したり、Emacsバッファをコマンドの標準入力に接続したりできます。
これを e-パイプと呼びます。下記の図はイメージ図です。
@end ifset
@ifset us
On the other hand,
Oneliner can connect the command's stdout with the Emacs-buffer, and it can connect the Emacs-buffer with the command's stdin, with @samp{|} syntax.
We call the syntax by the name of 'e-pipe'. The image diagram is as follows:
@end ifset

@example
@code{(Emacs Buffer) -> | commands | -> (Emacs Buffer)}
@end example

@ifset jp
@section パイプバッファ
@end ifset
@ifset us
@section PipeBuffer
@end ifset

@ifset jp
Onelinerではパイプバッファを頻繁に使います。

パイプバッファは @samp{|}(e-パイプ)を使って コマンドと接続できます。

以下のような単純な操作で 自動的にパイプバッファが用意されます。

@example
@code{commands |}
@end example

また、パイプバッファは番号を持っており、
複数のパイプバッファから番号で選択することができます。

用語を次のように定義します。
@end ifset
@ifset us
You will use 'pipe-buffer' frequently on Oneliner.

'pipe-buffer' can be connected command with @samp{|}(e-pipe).

'pipe-buffer' is appeared with simple operation as follows:

@example
@code{commands |}
@end example

'pipe-buffer' has the number.
When you append the number, you can select one 'pipe-buffer' from some 'pipe-buffer's.

We defined terms as follows:
@end ifset

@itemize @minus
@item
@ifset jp
バッファ@samp{*Oneliner pipe*N} をパイプバッファと呼びます。( Nは0〜 )
@end ifset
@ifset us
We call the buffer @samp{*Oneliner pipe*N} by the name of 'pipe-buffer'. ( N is 0 ... )
@end ifset

@item
@ifset jp
バッファ@samp{*Oneliner pipe*0} をデフォルトバイプバッファと呼びます。
@end ifset
@ifset us
We call the buffer @samp{*Oneliner pipe*0} by the name of 'default-pipe-buffer'.
@end ifset
@end itemize

@c %%%%%%%%%%%%%%%%%
@node syntax, El-Command, e-pipe, E-Pipe

@ifset jp
@subsection e-パイプのシンタックス
@end ifset
@ifset us
@subsection syntax of 'e-pipe'
@end ifset

@ifset jp
@subsubsection e-パイプシンタックスについて解説します。[]内は省略可能です。
@end ifset
@ifset us
@section This is an explanation of 'e-pipe' syntax. You can omit the syntax in '[]'.
@end ifset

@example
@code{[buf-spec]| commands [+]|[buf-spec][!]}
@end example

@ifset jp
[]内のシンタックスについて解説します。
@end ifset
@ifset us
This is explanations syntax in '[]'.
@end ifset

@table @samp
@item buf-spec
@ifset jp
@table @samp
@item 省略時
デフォルトパイプバッファの指定を意味します。
@item 番号指定時
指定番号のパイプバッファの指定を意味します。
@item @@バッファ名
この形式ではパイプバッファではなく既存のEmacsバッファの指定を意味します。
バッファ名の前後には余分な空白などを入れないように注意してください。
@end table
@end ifset
@ifset us
@table @samp
@item When omited.
It means the default pipe-buffer.
@item When specified a number.
It means the numbered pipe-buffer.
@item When specified @samp{@@buffer-name}
It means a Emacs-buffer( This is not a pipe-buffer ).
Do not insert space character at around the buffer name.
@end table
@end ifset

@item +
@ifset jp
出力バッファに対しての追記を意味します。
@end ifset
@ifset us
It means addition to pipe-buffer.
@end ifset

@item !
@ifset jp
出力後のバッファ全体をS式として評価します。
@end ifset
@ifset us
It means a request of evaluation of output pipe-buffer.
The action starts after output process was done.
@end ifset
@end table

@ifset jp
実際の記述例は以下のようになります。:
@end ifset
@ifset us
Some examples with 'e-pipe' syntax is as follows:
@end ifset
@example
@code{ find ./ -name \*.c | }
@code{ | wc }
@code{ | sort | }
@code{ 1| awk '@{print $1@}' | grep 10 | sort -n |9 }
@code{ cat file +| }
@code{ cat file +|@@*scratch* }
@code{ @@sample.c| wc }
@code{ echo "(emacs-version)" |! }
@code{ echo "(find-file \"a.c\")" |! }
@end example

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	el command
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node El-Command, el-command, syntax, Top
@ifset jp
@chapter elコマンドによるシェルとEmacsの統合
@end ifset
@ifset us
@chapter Integration with @samp{el} command
@end ifset

@ifset jp
Onelinerにはelというperlスクリプトが付属しています。よりshellとEmacsを深く統合します。
@end ifset
@ifset us
Oneliner has a perl script the name of @samp{el}.
You can more integrate shell with Emacs with @samp{el} command.
@end ifset

@menu
@ifset jp
* el-command::                  elコマンドとは？
* el-command-man::              elコマンドマニュアル
* try-el-command::              elコマンドを使ってみよう
@end ifset
@ifset us
* el-command::                  What is @samp{el} command?
* el-command-man::              Manual of @samp{el} command
* try-el-command::              Let's try @samp{el} command
@end ifset
@end menu

@c %%%%%%%%%%%%%%%%%
@node el-command, el-command-man, El-Command, El-Command

@ifset jp
@section elコマンドとは？
@end ifset
@ifset us
@section What is @samp{el} command ?
@end ifset

@ifset jp
elコマンドを使えばOneliner専用のshellコマンドを簡単に作ることができます。
elコマンドはshellバッファからS式をEmacsに送ったり、そのS式の実行を依頼したりできます。
つまり、shellコマンドからEmacsの機能を起動できます。
また、お好みのshellコマンドと Emacsの動作を連係させることができます。
@end ifset
@ifset us
You can make a tuned shell-command for Oneliner with @samp{el} command.
The @samp{el} command can send S-exp to Emacs, and it can make Emacs to evaluate it, too.
In other words, You can execute Emacs's function from shell-commands.
And you can make Emacs to work in closer cooperation with your favorite shell-commands.
@end ifset

@ifset jp
例えば、以下のような芸当もできます。(shellバッファで以下のように入力するとEmacsがa.cというファイルを自動的にオープンします。)
@end ifset
@ifset us
For example, You can perform a technique as follows:
(If you input the follows, Emacs opens a file ``a.c'' automatically.)
@end ifset

@example
$ find-file a.c
@end example

@ifset jp
さて、それを実現するためにはどうやれば良いのでしょうか？elを利用して次のようなaliasを定義します。
(bash,zshを想定しています。)
@end ifset
@ifset us
How do we implement to do it ?  Let's define an alias with @samp{el} as follows:
@end ifset

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

@c %%%%%%%%%%%%%%%%%
@node el-command-man, try-el-command, el-command, El-Command
@ifset jp
@section elコマンドマニュアル
@end ifset
@ifset us
@section Manual of @samp{el} command
@end ifset

@ifset jp
ここでは、elコマンドの詳細を解説します。
ここでの動作例は全てデフォルトパイプバッファに以下のデータが入っているものとします。
@end ifset
@ifset us
Here is explanation for @samp{el} command.
We assume that a default pipe-buffer has data as follows on all examples:
@end ifset

@example
1 2
3 4
@end example

@ifset jp
基本的な動作は、与えられたコマンドライン引数や標準入出力のデータからS式を組み立てて表示するものです。
以下に例を示します。
@end ifset
@ifset us
The primary actions are building S-exp from command line arguments and stdin. And then, display it.
@end ifset

@example
$ 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")
@end example

@ifset jp
elコマンドは多くのコマンドラインスイッチを持っています。
各スイッチの解説を行ないます。
@end ifset
@ifset us
@samp{el} command has many command line switches.
Here is explanation of switches.
@end ifset

@table @samp
@item -c (--command cmd)
@ifset jp
@samp{cmd}はElisp関数であると指定します。
コマンドライン引数や標準入力からはのデータは@samp{cmd}の引数とみなします。
-cスイッチだけを指定した場合は標準入力の1行につき1つのS式を出力します。
@end ifset
@ifset us
@samp{cmd} means a function of Elisp.
Command line arguments and data from stdin means arguments of @samp{cmd}.
If you specify the only -c switch, @samp{el} output one S-exp by one line of stdin.
@end ifset

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

@item -a (--args n)
@ifset jp
-cスイッチで指定したElisp関数が取る引数の最大数を指定します。
@end ifset
@ifset us
Specifies the maximum number of arguments of a Elisp function with @samp{-c} switch.
@end ifset

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

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

@end ifset

@example
$ | 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")
@end example

@item -x (--execute)
@ifset jp
S式を@samp{*Oneliner auto-eval*}というバッファで評価することをOnelinerにリクエストします。
@end ifset
@ifset us
Requests to Oneliner to evaluate the S-exp to use @samp{*Oneliner auto-eval*} buffer.
@end ifset

@item -i (--inpipe buf)
@ifset jp
入力先のパイプバッファ番号またはバッファ名を指定します。
@end ifset
@ifset us
Gets input from pipe-buffer. You can specify a number of pipe-buffer, too.
@end ifset

@item -o (--outpipe buf)
@ifset jp
出力先のパイプバッファ番号またはバッファ名を指定します。
@end ifset
@ifset us
Puts output to pipe-buffer. You can specify a number of pipe-buffer, too.
@end ifset

@item -s (--serial)
@ifset jp
標準入力からの複数行を1行にシリアライズします。
@end ifset
@ifset us
Makes @samp{el} to serialize multiple lines to one line.
@end ifset

@example
$ | 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")
@end example

@item -h (--help)
@ifset jp
ヘルプの表示を行ないます。
@end ifset
@ifset us
Display help message.
@end ifset

@item -V (--version)
@ifset jp
バージョン番号の表示を行ないます。
@end ifset
Display version identifiers.
@ifset us

@end ifset

@item -d (--debug)
@ifset jp
デバッグ情報の出力機能を有効にします。
@end ifset
@ifset us
Enable debugging state.
@end ifset

@end table

@c %%%%%%%%%%%%%%%%%
@node try-el-command, KeyOperation, el-command-man, El-Command

@ifset jp
@section elコマンドを使ってみよう
@end ifset
@ifset us
@section Let's try @samp{el} command
@end ifset

@ifset jp
@subsubsection 便利なaliasの紹介
@end ifset
@ifset us
@subsubsection Useful aliases
@end ifset

@table @code
@item alias find-file="el -x -f '(display-buffer (find-file-noselect \"%s\"))'"
@ifset jp
指定ファイルをEmacsにオープンさせます。以下のようなことができます。
@end ifset
@ifset us
Make Emacs to open files as follows:
@end ifset

@example
@code{ find-file file.c }
@code{ find ./ -name \*.c | find-file }
@end example

@item find-dired="el -x -f '(find-dired \"%s\" \"-name %s\")'"
@ifset jp
Emacsのfind-diredを指定パラメータで起動します。
@end ifset
@ifset us
Start a Emacs's function @samp{find-dired} with parameters which you specify.
@end ifset

@example
@code{ find-dired ./ \*.c }
@end example

@item alias dired='el -x -a 1 -c dired'
@ifset jp
指定パスでdiredを起動します。
@end ifset
@ifset us
Start @samp{dired} with directory path which you specify.
@end ifset

@example
@code{ dired /etc }
@end example

@item alias ediff-files='el -x -s -a 2 -c ediff-files'
@ifset jp
2つのファイル名を指定して、ediff-filesを起動します。
@end ifset
@ifset us
Start @samp{ediff-files} with two file names which you specify.
@end ifset

@example
@code{ ediff-files a.c b.c }
@end example

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

@end ifset

@example
@code{ w3m-find-file index.html }
@end example

@item alias cvs-update="el -x -f '(cvs-update \"%s\" nil)'"
@ifset jp
指定パスでpcl-cvsのcvs-update関数を起動します。
@end ifset
@ifset us
Start cvs-update function of pcl-cvs package with directory path which you specify.
@end ifset

@example
@code{ cvs-update . }
@end example

@item alias google="echo nil | el -x -f '(w3m \"http://www.google.co.jp/\" %s)'"
@ifset jp
emacs-w3mでgoogleのトップページを開きます。
@end ifset
@ifset us
Open the top page of google with emacs-w3m.
@end ifset

@example
@code{ google }
@end example
@end table

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c      KeyOperation
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node KeyOperation, Customize, try-el-command, Top
@ifset jp
@chapter キー操作
@end ifset
@ifset us
@chapter Key Operation
@end ifset

@ifset jp
Onelinerで定義されているキーバインドの解説をします。
@end ifset
@ifset us
These are Oneliner's key bindings.
@end ifset

@table @kbd
@item C-c C-s
@ifset jp
shellと@samp{*Oneliner shell*}バッファのカレントディレクトリを強制的に同期させます。

カスタマイズ変数の @samp{oneliner-sync-default-directory-after-prompt} を non-nil
にするとこのキー操作は不要になります。(詳細は 「自分好みのOnelinerにするには」を参照のこと)
@end ifset
@ifset us
Force synchronize the current directory of buffer @samp{*Oneliner shell*} with the shell's current directoy.

If you set the customize variable @samp{oneliner-sync-default-directory-after-prompt} to 'non-nil',
you do not need to do this operaton.
@end ifset

@item C-c C-b
@ifset jp
@samp{*Oneliner pipe*0} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*0} buffer on the another window.
@end ifset

@item C-c C-0
@ifset jp
@samp{*Oneliner pipe*0} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*0} buffer on the another window.
@end ifset

@item C-c C-1
@ifset jp
@samp{*Oneliner pipe*1} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*1} buffer on the another window.
@end ifset

@item C-c C-2
@ifset jp
@samp{*Oneliner pipe*2} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*2} buffer on the another window.
@end ifset

@item C-c C-3
@ifset jp
@samp{*Oneliner pipe*3} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*3} buffer on the another window.
@end ifset

@item C-c C-4
@ifset jp
@samp{*Oneliner pipe*4} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*4} buffer on the another window.
@end ifset

@item C-c C-5
@ifset jp
@samp{*Oneliner pipe*5} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*5} buffer on the another window.
@end ifset

@item C-c C-6
@ifset jp
@samp{*Oneliner pipe*6} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*6} buffer on the another window.
@end ifset

@item C-c C-7
@ifset jp
@samp{*Oneliner pipe*7} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*7} buffer on the another window.
@end ifset

@item C-c C-8
@ifset jp
@samp{*Oneliner pipe*8} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*8} buffer on the another window.
@end ifset

@item C-c C-9
@ifset jp
@samp{*Oneliner pipe*9} バッファをもう一つのウィンドウにポップアップする
@end ifset
@ifset us
Pop up the @samp{*Oneliner pipe*9} buffer on the another window.
@end ifset

@item M-x oneliner-send-cd
@ifset jp
カレントバッファのカレントディレクトリ値を @samp{*Oneliner shell*}にセットする。
(内部では実際に shell に cd コマンドを送る)

以下のようなグローバルキーバインドに設定すると便利です。
@code{ (global-set-key "\C-cd" 'oneliner-send-cd) }
@end ifset
@ifset us
Set the current directory value of current buffer to the buffer @samp{*Oneliner shell*}.
(Inside of Oneliner: oneliner.el sends 'cd' command to shell process.)

Nice global key is follows, as you like:
@code{ (global-set-key "\C-cd" 'oneliner-send-cd) }
@end ifset

@item M-x oneliner-sync-default-directory
@ifset jp
@samp{*Oneliner shell*}バッファの default-directory をカンレトバッファにセット
する。
@end ifset
@ifset us
You can set the @samp{*Oneliner shell*} buffer's default-directory to current buffer.
@end ifset
@end table

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Customize
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node Customize, Example, KeyOperation, Top
@ifset jp
@chapter 自分好みのOnelinerにするには
@end ifset
@ifset us
@chapter How to customize as you like
@end ifset

@ifset jp
Onelinerのカスタマイズ項目について解説します。
@end ifset
@ifset us
These are customizing variables:
@end ifset


@table @samp

@item oneliner-init-hook
@ifset jp
onelinerの起動時初期化ルーチンへのフック @*
(デフォルト:nil)
@end ifset
@ifset us
Hook of Oneliner's initial routine. @*
(default:nil)
@end ifset

@item oneliner-comint-send-hook
@ifset jp
oneliner-comint-send()用のフック。このフックはoneliner-comint-send()関数の最後で実行される。
(デフォルト:nil)
@end ifset
@ifset us
Hook for oneliner-comint-send(). oneliner-comint-send() runs this hook at last of function.@*
(default:nil)
@end ifset

@item oneliner-keep-temp-file
@ifset jp
Non-nilでテンポラリファイルを消さずに置いておく動作になる@*
(デフォルト:nil)
@end ifset
@ifset us
Non-nil means temporary files will not be deleted.@*
(default:nil)
@end ifset

@item oneliner-show-top-of-pipe-buffer
@ifset jp
Non-nilでパイプバッファ表示時にバッファの先頭に飛ぶ@*
(デフォルト:nil)
@end ifset
@ifset us
Non-nil means you can see the top of the pipe-buffer when you open one. @*
@end ifset

@item oneliner-beep
@ifset jp
Non-nilでコマンドの実行終了時にビープを鳴らす@*
(デフォルト:nil)

全てのコマンドの実行終了時にビープが鳴るわけではありません。
@samp{oneliner-beep-time} も参照してください。
@end ifset
@ifset us
Non-nil means beep after command execution. @*
(default:nil)

See also @samp{oneliner-beep-time}.
@end ifset

@item oneliner-beep-time
@ifset jp
oneliner-beepがNon nilの時、コマンド実行に何秒以上かかったらbeepを鳴らすかを指定する@*
(デフォルト:3)
@end ifset
@ifset us
Minimum interval in second after which @samp{oneliner-beep} will take effect. @*
(default:3)
@end ifset

@item oneliner-pwd-command-on-shell
@ifset jp
シェルがカレントディレクトリを返すコマンド@*
(デフォルト:" \\pwd")

デフォルトで 先頭にスペースを入れている理由は bashのヒストリに残らないようにするためです。
コマンドをエスケープしているのは シェルのエイリアス機能をOFFにするためです。
@end ifset
@ifset us
shell command name that your shell display current directory path. @*
(default:" \\pwd")

The first caracter (space) has a reason.
I don't want to add the record of 'pwd' command to bash's history.
@end ifset

@item oneliner-complement-newline-for-input
@ifset jp
Non-nilで入力パイプバッファの末尾に改行が無ければ補う@*
(デフォルト:nil)

@code{echo -n abc |} 等を実行すると通常改行が出力されません。これでは、そのバッファを出力に
使う時に改行が無くなり、ソフトウェアによっては、1行として認識されないことがあります。
これを補うためにも Non-nilにすることをお勧めします。
@end ifset
@ifset us
Non-nil means complement newline at the end of input data. @*
(default:nil)

You should set this variable to 'non-nil'.
Because when you execute this code @code{echo -n abc |}, 'pipe-buffer' doesn't have newline.
Some program needs newline for input to recognize it as one line.
@end ifset

@item oneliner-sync-default-directory-after-prompt
@ifset jp
Non-nilで プロンプトが出る度に@samp{*Oneliner shell*}バッファとシェルのカレントディレクトリを同期する@*
(デフォルト:nil)

Emacs標準のshell.elでは、 cd コマンドで シンボリックリンクを辿ったり @samp{cd ..} したりした場合、
シェルのカレントディレクトリに@samp{*shell*}バッファが追従するのを失敗することがあります。
Onelinerでは、この機能でカンレントディレクトリの同期に失敗することはありません。
それは、Onelinerがシェルのプロンプトに含まれるカレントディレクトリ文字列を毎回読み込むことで
ディレクトリ同期を実現しているからです。
@end ifset
@ifset us
Non-nil means auto synchronization default-directory after prompt @*
(default:nil)

The original shell.el offen misses to synchronize current directory.
We fixed it on oneliner.el to use directory string in shell prompt.
@end ifset
@item oneliner-indirect-buffer-alist
@ifset jp
指定パイプバッファと通常のバッファをindirect機能で写像する @*
(デフォルト:nil)

パイプバッファの番号と、それを indirectするバッファ名をリストで指定します。

例えば、9番を @samp{*scratch*} にindirectすると、@samp{*Oneliner pipe*9} と @samp{*scratch*} が常に
同じ内容で保たれます。良く使うバッファを写像すると便利です。
@end ifset
@ifset us
Hold pairs of pipe-buffer number and its base buffer name. @*
(default:nil)

e.g. If you specify to indirect the number '9' to @samp{*scratch*}, @samp{*Oneliner pipe*9} and @samp{*scratch*} are keeped same anytime.
@end ifset

@item oneliner-handle-control-codes-flag
@ifset jp
Non-nilで@samp{*Oneliner shell*}バッファに出力されたコントロールコードを処理する@*
(デフォルト:nil)

Emacs標準のshell.elでは、ホームフィード等の文字が表示された場合、表示が乱れますが、
Onelinerではこの機能で正しく処理しています。@*
これによって wget や apt-get の実行時に表示が乱れることを防ぐことができます。
@end ifset
@ifset us
Non-nil means handle control codes in oneliner-mode buffer. @*
(default:nil)

You can execute programs such as 'wget' and 'apt-get' without corrupted screen.
@end ifset

@item oneliner-outpipe-busy-check
@ifset jp
Non-nilでパイプバッファ出力中は、シェルコマンド実行できなくする。
(デフォルト:nil)
@end ifset
@ifset us
Non-nil means block the key input during outpipe busy. @*
(default:nil)
@end ifset

@item oneliner-display-evaled-value-flag
@ifset jp
Non-nilでパイプバッファの評価後、結果を表示する。@*
(デフォルト:nil)
@end ifset
@ifset us
Non-nil means display the evaluated value of pipe-buffer.@*
(default:nil)
@end ifset

@item oneliner-eol-for-write
@ifset jp
テンポラリファイルの改行コードのタイプ。
タイプは[default,unix,dos,mac]より選択可能。
(デフォルト:nil=default)
@end ifset
@ifset us
EOL-TYPE for writing temporary file.
You can select a type from [default,unix,dos,mac].
(default:nil=default)
@end ifset

@end table

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Example
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node Example, Avail, Customize, Top
@ifset jp
@chapter 応用・キメ技
@end ifset
@ifset us
@chapter Examples (various oneliner technique)
@end ifset

@ifset jp
@section コマンドでキメる
@end ifset
@ifset us
@section Make shoot with commands
@end ifset

@table @code
@item dmesg |
@ifset jp
@samp{*oneliner pipe*0} に dmesg の結果を送って読む
@end ifset
@ifset us
Read the dmesg's result with @samp{*oneliner pipe*0}.
@end ifset

@item find ./ -name \*.c |1
@ifset jp
検索した cソースファイル名を @samp{*oneliner pipe*1} に送る

コマンド実行後 @samp{*oneliner pipe*1} から、いらないファイル名を削除する
@end ifset
@ifset us
Send the result which is list of finded c file names to @samp{*oneliner pipe*1}.

And then remove some c file names from @samp{*oneliner pipe*1}.
@end ifset

@item 1| xargs grep main |
@ifset jp
@samp{*oneliner pipe*1} にリストされた全ファイルから main という文字列を検索し、結果を
@samp{*oneliner pipe*0} に送る。
@end ifset
@ifset us
Do 'grep' by string 'main' from the list of file names in @samp{*oneliner pipe*1}, 
and then send the result to @samp{*oneliner pipe*0}.
@end ifset

@item | grep key |
@ifset jp
@samp{*Oneliner pipe*0}の結果を key という文字列でさらに絞り込む
@end ifset
@ifset us
And furthermore, Do 'grep' by string 'key' to narrow the result.
@end ifset

@item seq -f 'get %g' 1 10 +|@@+draft/1
@ifset jp
Mewのドラフトバッファに 1番から10番のメールを取り寄るコマンドリストを追記する。

(※ fmlメーリングリストサーバーを想定)
@end ifset
@ifset us
Append the command strings which is to get from 1st to 10th mail archives to Mew's draft-buffer.

(notice: It was suppose the mailing-list-server 'fml'.)
@end ifset

@item @@*Mew message*0| uudecode
@ifset jp
Mewのメッセージバッファの uuencode された本文をデコードする。(ファイルはカレントディレクトリにセーブされる)
@end ifset
@ifset us
Do 'uuencode' the text in Mew's message buffer.(The result file is saved on current directory.)
@end ifset

@end table

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Avail
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@node Avail, source, Example, Top
@ifset jp
@chapter 入手方法とメーリングリスト
@end ifset
@ifset us
@chapter Availability and mailing-list
@end ifset

@ifset jp
ここでは、Oneliner の入手方法とメーリングリストについて触れます。
@end ifset
@ifset us
This chapter describes how to get Oneliner and related mailing-lists.
@end ifset

@menu
@ifset jp
* source::                      Oneliner の入手方法
* ml::                          メーリングリスト
@end ifset
@ifset us
* source::                      How to get Oneliner?
* ml::                          Mailing list
@end ifset
@end menu 

@c %%%%%%%%%%%%%%%%%
@node source, ml, Avail, Avail
@ifset jp
@section Oneliner の入手方法
@end ifset
@ifset us
@section How to get Oneliner?
@end ifset

@ifset jp
Onelinerの最新バージョンは以下のサイトから入手できます。
@end ifset
@ifset us
The latest Oneliner is available from the following repository.
@end ifset

@example
http://oneliner-elisp.sourceforge.net/
@end example

@c %%%%%%%%%%%%%%%%%
@node ml, , source, Avail
@ifset jp
@section メーリングリスト
@end ifset
@ifset us
@section Mailing list
@end ifset

@ifset jp
Oneliner の質問や議論、開発に関することは

@example
oneliner-el@@netfort.gr.jp
@end example

に日本語で投稿できます。oneliner-el ML へ入りたい人は、本文に

@example
subscribe あなたの名前
@end example

と書いたメッセージを

@example
oneliner-el-ctl@@netfort.gr.jp
@end example

というメールアドレスに送ってください。(自動登録です)

Oneliner の質問は、著者個人宛ではなく、できるだけ oneliner-el ML へお願いします。著
者には受け取ったすべての質問に答えている時間はありません。oneliner-el ML へ質
問すると、他の人が答えてくれることを期待できます。
@end ifset
@ifset us
There is no mailing-list service for English speakers.
If you have any questions, please send them to me directly via e-mail.

@example
kiyoka@@netfort.gr.jp
@end example


@end ifset

@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@c 	Tailer
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@shortcontents
@contents
@bye
