\section{\module{rlcompleter} ---
         GNU readline向け補完関数}

\declaremodule{standard}{rlcompleter}
  \platform{Unix}
\sectionauthor{Moshe Zadka}{moshez@zadka.site.co.il}
\modulesynopsis{GNU readline ライブラリ向けのPython識別子補完}

\module{rlcompleter}モジュールではPythonの識別子やキーワードを定義した
\refmodule{readline}モジュール向けの補完関数を定義しています。

このモジュールが \UNIX プラットフォームでimportされ、\module{readline} が利用できる
ときには、\class{Completer} クラスのインスタンスが自動的に作成され、
\method{complete}メソッドが \module{readline}補完に設定されます。

使用例:

\begin{verbatim}
>>> import rlcompleter
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> readline. <TAB PRESSED>
readline.__doc__          readline.get_line_buffer  readline.read_init_file
readline.__file__         readline.insert_text      readline.set_completer
readline.__name__         readline.parse_and_bind
>>> readline.
\end{verbatim}


\module{rlcompleter}モジュールは Pythonの対話モードで利用する為にデザイ
ンされています。ユーザは以下の命令を初期化ファイル
(環境変数\envvar{PYTHONSTARTUP}によって定義されます)に書き込むことで、
\kbd{Tab}キーによる補完を利用できます:

\begin{verbatim}
try:
    import readline
except ImportError:
    print "Module readline not available."
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")
\end{verbatim}

\module{readline}のないプラットフォームでも、このモジュールで
定義される\class{Completer}クラスは独自の目的に使えます。


\subsection{Completerオブジェクト \label{completer-objects}}

Completerオブジェクトは以下のメソッドを持っています:

\begin{methoddesc}[Completer]{complete}{text, state}
\var{text}の\var{state}番目の補完候補を返します。


もし\var{text}がピリオド(\character{.})を含まない場合、
\refmodule[main]{__main__}、\refmodule[builtin]{__builtin__}で定義されて
いる名前か、キーワード ( \refmodule{keyword} モジュールで定義されている)
から補完されます。

ピリオドを含む名前の場合、副作用を出さずに名前を最後まで評価しようとしま
 す(関数を明示的に呼び出しはしませんが、\method{__getattr__()}を呼んでし
 まうことはあります)そして、\function{dir()}関数でマッチする語を見つけま
 す。
\end{methoddesc}
