rlcompleter --- GNU readline の補完機能

ソースコード: Lib/rlcompleter.py


rlcompleter モジュールは、readline モジュールの set_completer() に渡すのに適した補完関数を定義しています。

readline モジュールが利用可能な Unix プラットフォームでこのモジュールをインポートすると、Completer クラスのインスタンスが自動的に作成され、その complete() メソッドが readline の補完関数 に設定されます。 このメソッドは有効な Python の 識別子とキーワード を補完します。

以下はプログラム例です:

>>> 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.

rlcompleter モジュールは、Python の 対話モード で使うよう設計されています。 -S オプション付きで Python を実行した場合を除き、自動的にインポートされ、設定されます (readline の設定 を参照)。

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

class rlcompleter.Completer

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

complete(text, state)

text の次の補完候補を返します。

readline モジュールから呼び出されるときは、None を返すまで state == 0, 1, 2, ... で順に呼び出されます。

もし text がピリオド('.')を含まない場合、 __main__ 、 builtins で定義されている名前か、キーワード (keyword モジュールで定義されている) から補完されます。

ドットで区切られた名前に対して呼び出された場合、明らかな副作用がない範囲で最後の部分より前を評価し、残りの部分にマッチするものを dir() 関数で探します。 関数は評価しませんが、__getattr__() が呼び出されることはあります。 式の評価中に発生した例外はすべて捕捉して抑制し、None を返します。