16.9. rlcompleter
— GNU readline向け補完関数¶
ソースコード: Lib/rlcompleter.py
rlcompleter
モジュールではPythonの識別子やキーワードを定義した readline
モジュール向けの補完関数を定義しています。
このモジュールが Unixプラットフォームでimportされ、 readline
が利用できるときには、 Completer
クラスのインスタンスが自動的に作成され、 complete()
メソッドが readline
補完に設定されます。
例:
>>> 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の対話モードで利用する為にデザインされています。ユーザは以下の命令を初期化ファイル (環境変数 PYTHONSTARTUP
によって定義されます)に書き込むことで、 Tab
キーによる補完を利用できます:
try:
import readline
except ImportError:
print "Module readline not available."
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
readline
のないプラットフォームでも、このモジュールで定義される Completer
クラスは独自の目的に使えます。
16.9.1. Completerオブジェクト¶
Completerオブジェクトは以下のメソッドを持っています:
-
Completer.
complete
(text, state)¶ text の state 番目の補完候補を返します。
もし text がピリオド(
'.'
)を含まない場合、__main__
、__builtin__
で定義されている名前か、キーワード (keyword
モジュールで定義されている) から補完されます。ピリオドを含む名前の場合、副作用を出さずに名前を最後まで評価しようとします(関数を明示的に呼び出しはしませんが、
__getattr__()
を呼んでしまうことはあります)そして、dir()
関数でマッチする語を見つけます。式を評価中に発生した全ての例外は補足して無視され、None
を返します。