• 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.
262
263
264.. function:: set_completer_delims(string)
265              get_completer_delims()
266
267   Set or get the word delimiters for completion.  These determine the
268   start of the word to be considered for completion (the completion scope).
269   These functions access the :c:data:`rl_completer_word_break_characters`
270   variable in the underlying library.
271
272
273.. function:: set_completion_display_matches_hook([function])
274
275   Set or remove the completion display function.  If *function* is
276   specified, it will be used as the new completion display function;
277   if omitted or ``None``, any completion display function already
278   installed is removed.  This sets or clears the
279   :c:data:`rl_completion_display_matches_hook` callback in the
280   underlying library.  The completion display function is called as
281   ``function(substitution, [matches], longest_match_length)`` once
282   each time matches need to be displayed.
283
284
285.. _readline-example:
286
287Example
288-------
289
290The following example demonstrates how to use the :mod:`readline` module's
291history reading and writing functions to automatically load and save a history
292file named :file:`.python_history` from the user's home directory.  The code
293below would normally be executed automatically during interactive sessions
294from the user's :envvar:`PYTHONSTARTUP` file. ::
295
296   import atexit
297   import os
298   import readline
299
300   histfile = os.path.join(os.path.expanduser("~"), ".python_history")
301   try:
302       readline.read_history_file(histfile)
303       # default history len is -1 (infinite), which may grow unruly
304       readline.set_history_length(1000)
305   except FileNotFoundError:
306       pass
307
308   atexit.register(readline.write_history_file, histfile)
309
310This code is actually automatically run when Python is run in
311:ref:`interactive mode <tut-interactive>` (see :ref:`rlcompleter-config`).
312
313The following example achieves the same goal but supports concurrent interactive
314sessions, by only appending the new history. ::
315
316   import atexit
317   import os
318   import readline
319   histfile = os.path.join(os.path.expanduser("~"), ".python_history")
320
321   try:
322       readline.read_history_file(histfile)
323       h_len = readline.get_current_history_length()
324   except FileNotFoundError:
325       open(histfile, 'wb').close()
326       h_len = 0
327
328   def save(prev_h_len, histfile):
329       new_h_len = readline.get_current_history_length()
330       readline.set_history_length(1000)
331       readline.append_history_file(new_h_len - prev_h_len, histfile)
332   atexit.register(save, h_len, histfile)
333
334The following example extends the :class:`code.InteractiveConsole` class to
335support history save/restore. ::
336
337   import atexit
338   import code
339   import os
340   import readline
341
342   class HistoryConsole(code.InteractiveConsole):
343       def __init__(self, locals=None, filename="<console>",
344                    histfile=os.path.expanduser("~/.console-history")):
345           code.InteractiveConsole.__init__(self, locals, filename)
346           self.init_history(histfile)
347
348       def init_history(self, histfile):
349           readline.parse_and_bind("tab: complete")
350           if hasattr(readline, "read_history_file"):
351               try:
352                   readline.read_history_file(histfile)
353               except FileNotFoundError:
354                   pass
355               atexit.register(self.save_history, histfile)
356
357       def save_history(self, histfile):
358           readline.set_history_length(1000)
359           readline.write_history_file(histfile)
360