• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1:mod:`readline` --- GNU readline interface
2==========================================
3
4.. module:: readline
5   :platform: Unix
6   :synopsis: GNU readline support for Python.
7
8.. sectionauthor:: Skip Montanaro <skip@pobox.com>
9
10--------------
11
12The :mod:`readline` module defines a number of functions to facilitate
13completion and reading/writing of history files from the Python interpreter.
14This module can be used directly, or via the :mod:`rlcompleter` module, which
15supports completion of Python identifiers at the interactive prompt.  Settings
16made using  this module affect the behaviour of both the interpreter's
17interactive prompt  and the prompts offered by the built-in :func:`input`
18function.
19
20Readline keybindings may be configured via an initialization file, typically
21``.inputrc`` in your home directory.  See `Readline Init File
22<https://tiswww.cwru.edu/php/chet/readline/rluserman.html#SEC9>`_
23in the GNU Readline manual for information about the format and
24allowable constructs of that file, and the capabilities of the
25Readline library in general.
26
27.. note::
28
29  The underlying Readline library API may be implemented by
30  the ``libedit`` library instead of GNU readline.
31  On macOS the :mod:`readline` module detects which library is being used
32  at run time.
33
34  The configuration file for ``libedit`` is different from that
35  of GNU readline. If you programmatically load configuration strings
36  you can check for the text "libedit" in :const:`readline.__doc__`
37  to differentiate between GNU readline and libedit.
38
39  If you use *editline*/``libedit`` readline emulation on macOS, the
40  initialization file located in your home directory is named
41  ``.editrc``. For example, the following content in ``~/.editrc`` will
42  turn ON *vi* keybindings and TAB completion::
43
44    python:bind -v
45    python:bind ^I rl_complete
46
47
48Init file
49---------
50
51The following functions relate to the init file and user configuration:
52
53
54.. function:: parse_and_bind(string)
55
56   Execute the init line provided in the *string* argument. This calls
57   :c:func:`rl_parse_and_bind` in the underlying library.
58
59
60.. function:: read_init_file([filename])
61
62   Execute a readline initialization file. The default filename is the last filename
63   used. This calls :c:func:`rl_read_init_file` in the underlying library.
64
65
66Line buffer
67-----------
68
69The following functions operate on the line buffer:
70
71
72.. function:: get_line_buffer()
73
74   Return the current contents of the line buffer (:c:data:`rl_line_buffer`
75   in the underlying library).
76
77
78.. function:: insert_text(string)
79
80   Insert text into the line buffer at the cursor position.  This calls
81   :c:func:`rl_insert_text` in the underlying library, but ignores
82   the return value.
83
84
85.. function:: redisplay()
86
87   Change what's displayed on the screen to reflect the current contents of the
88   line buffer.  This calls :c:func:`rl_redisplay` in the underlying library.
89
90
91History file
92------------
93
94The following functions operate on a history file:
95
96
97.. function:: read_history_file([filename])
98
99   Load a readline history file, and append it to the history list.
100   The default filename is :file:`~/.history`.  This calls
101   :c:func:`read_history` in the underlying library.
102
103
104.. function:: write_history_file([filename])
105
106   Save the history list to a readline history file, overwriting any
107   existing file.  The default filename is :file:`~/.history`.  This calls
108   :c:func:`write_history` in the underlying library.
109
110
111.. function:: append_history_file(nelements[, filename])
112
113   Append the last *nelements* items of history to a file.  The default filename is
114   :file:`~/.history`.  The file must already exist.  This calls
115   :c:func:`append_history` in the underlying library.  This function
116   only exists if Python was compiled for a version of the library
117   that supports it.
118
119   .. versionadded:: 3.5
120
121
122.. function:: get_history_length()
123              set_history_length(length)
124
125   Set or return the desired number of lines to save in the history file.
126   The :func:`write_history_file` function uses this value to truncate
127   the history file, by calling :c:func:`history_truncate_file` in
128   the underlying library.  Negative values imply
129   unlimited history file size.
130
131
132History list
133------------
134
135The following functions operate on a global history list:
136
137
138.. function:: clear_history()
139
140   Clear the current history.  This calls :c:func:`clear_history` in the
141   underlying library.  The Python function only exists if Python was
142   compiled for a version of the library that supports it.
143
144
145.. function:: get_current_history_length()
146
147   Return the number of items currently in the history.  (This is different from
148   :func:`get_history_length`, which returns the maximum number of lines that will
149   be written to a history file.)
150
151
152.. function:: get_history_item(index)
153
154   Return the current contents of history item at *index*.  The item index
155   is one-based.  This calls :c:func:`history_get` in the underlying library.
156
157
158.. function:: remove_history_item(pos)
159
160   Remove history item specified by its position from the history.
161   The position is zero-based.  This calls :c:func:`remove_history` in
162   the underlying library.
163
164
165.. function:: replace_history_item(pos, line)
166
167   Replace history item specified by its position with *line*.
168   The position is zero-based.  This calls :c:func:`replace_history_entry`
169   in the underlying library.
170
171
172.. function:: add_history(line)
173
174   Append *line* to the history buffer, as if it was the last line typed.
175   This calls :c:func:`add_history` in the underlying library.
176
177
178.. function:: set_auto_history(enabled)
179
180   Enable or disable automatic calls to :c:func:`add_history` when reading
181   input via readline.  The *enabled* argument should be a Boolean value
182   that when true, enables auto history, and that when false, disables
183   auto history.
184
185   .. versionadded:: 3.6
186
187   .. impl-detail::
188      Auto history is enabled by default, and changes to this do not persist
189      across multiple sessions.
190
191
192Startup hooks
193-------------
194
195
196.. function:: set_startup_hook([function])
197
198   Set or remove the function invoked by the :c:data:`rl_startup_hook`
199   callback of the underlying library.  If *function* is specified, it will
200   be used as the new hook function; if omitted or ``None``, any function
201   already installed is removed.  The hook is called with no
202   arguments just before readline prints the first prompt.
203
204
205.. function:: set_pre_input_hook([function])
206
207   Set or remove the function invoked by the :c:data:`rl_pre_input_hook`
208   callback of the underlying library.  If *function* is specified, it will
209   be used as the new hook function; if omitted or ``None``, any
210   function already installed is removed.  The hook is called
211   with no arguments after the first prompt has been printed and just before
212   readline starts reading input characters.  This function only exists
213   if Python was compiled for a version of the library that supports it.
214
215
216Completion
217----------
218
219The following functions relate to implementing a custom word completion
220function.  This is typically operated by the Tab key, and can suggest and
221automatically complete a word being typed.  By default, Readline is set up
222to be used by :mod:`rlcompleter` to complete Python identifiers for
223the interactive interpreter.  If the :mod:`readline` module is to be used
224with a custom completer, a different set of word delimiters should be set.
225
226
227.. function:: set_completer([function])
228
229   Set or remove the completer function.  If *function* is specified, it will be
230   used as the new completer function; if omitted or ``None``, any completer
231   function already installed is removed.  The completer function is called as
232   ``function(text, state)``, for *state* in ``0``, ``1``, ``2``, ..., until it
233   returns a non-string value.  It should return the next possible completion
234   starting with *text*.
235
236   The installed completer function is invoked by the *entry_func* callback
237   passed to :c:func:`rl_completion_matches` in the underlying library.
238   The *text* string comes from the first parameter to the
239   :c:data:`rl_attempted_completion_function` callback of the
240   underlying library.
241
242
243.. function:: get_completer()
244
245   Get the completer function, or ``None`` if no completer function has been set.
246
247
248.. function:: get_completion_type()
249
250   Get the type of completion being attempted.  This returns the
251   :c:data:`rl_completion_type` variable in the underlying library as
252   an integer.
253
254
255.. function:: get_begidx()
256              get_endidx()
257
258   Get the beginning or ending index of the completion scope.
259   These indexes are the *start* and *end* arguments passed to the
260   :c:data:`rl_attempted_completion_function` callback of the
261   underlying library.  The values may be different in the same
262   input editing scenario based on the underlying C readline implementation.
263   Ex: libedit is known to behave differently than libreadline.
264
265
266.. function:: set_completer_delims(string)
267              get_completer_delims()
268
269   Set or get the word delimiters for completion.  These determine the
270   start of the word to be considered for completion (the completion scope).
271   These functions access the :c:data:`rl_completer_word_break_characters`
272   variable in the underlying library.
273
274
275.. function:: set_completion_display_matches_hook([function])
276
277   Set or remove the completion display function.  If *function* is
278   specified, it will be used as the new completion display function;
279   if omitted or ``None``, any completion display function already
280   installed is removed.  This sets or clears the
281   :c:data:`rl_completion_display_matches_hook` callback in the
282   underlying library.  The completion display function is called as
283   ``function(substitution, [matches], longest_match_length)`` once
284   each time matches need to be displayed.
285
286
287.. _readline-example:
288
289Example
290-------
291
292The following example demonstrates how to use the :mod:`readline` module's
293history reading and writing functions to automatically load and save a history
294file named :file:`.python_history` from the user's home directory.  The code
295below would normally be executed automatically during interactive sessions
296from the user's :envvar:`PYTHONSTARTUP` file. ::
297
298   import atexit
299   import os
300   import readline
301
302   histfile = os.path.join(os.path.expanduser("~"), ".python_history")
303   try:
304       readline.read_history_file(histfile)
305       # default history len is -1 (infinite), which may grow unruly
306       readline.set_history_length(1000)
307   except FileNotFoundError:
308       pass
309
310   atexit.register(readline.write_history_file, histfile)
311
312This code is actually automatically run when Python is run in
313:ref:`interactive mode <tut-interactive>` (see :ref:`rlcompleter-config`).
314
315The following example achieves the same goal but supports concurrent interactive
316sessions, by only appending the new history. ::
317
318   import atexit
319   import os
320   import readline
321   histfile = os.path.join(os.path.expanduser("~"), ".python_history")
322
323   try:
324       readline.read_history_file(histfile)
325       h_len = readline.get_current_history_length()
326   except FileNotFoundError:
327       open(histfile, 'wb').close()
328       h_len = 0
329
330   def save(prev_h_len, histfile):
331       new_h_len = readline.get_current_history_length()
332       readline.set_history_length(1000)
333       readline.append_history_file(new_h_len - prev_h_len, histfile)
334   atexit.register(save, h_len, histfile)
335
336The following example extends the :class:`code.InteractiveConsole` class to
337support history save/restore. ::
338
339   import atexit
340   import code
341   import os
342   import readline
343
344   class HistoryConsole(code.InteractiveConsole):
345       def __init__(self, locals=None, filename="<console>",
346                    histfile=os.path.expanduser("~/.console-history")):
347           code.InteractiveConsole.__init__(self, locals, filename)
348           self.init_history(histfile)
349
350       def init_history(self, histfile):
351           readline.parse_and_bind("tab: complete")
352           if hasattr(readline, "read_history_file"):
353               try:
354                   readline.read_history_file(histfile)
355               except FileNotFoundError:
356                   pass
357               atexit.register(self.save_history, histfile)
358
359       def save_history(self, histfile):
360           readline.set_history_length(1000)
361           readline.write_history_file(histfile)
362