blob: 16c28cf7d02fb958137c23e77533f39c8f442ce2 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`readline` --- GNU readline interface
2==========================================
3
4.. module:: readline
5 :platform: Unix
6 :synopsis: GNU readline support for Python.
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007
Christian Heimes895627f2007-12-08 17:28:33 +00008.. sectionauthor:: Skip Montanaro <skip@pobox.com>
Georg Brandl116aa622007-08-15 14:28:22 +00009
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040010--------------
Georg Brandl116aa622007-08-15 14:28:22 +000011
12The :mod:`readline` module defines a number of functions to facilitate
13completion and reading/writing of history files from the Python interpreter.
Martin Panter0f767392016-04-05 07:37:22 +000014This module can be used directly, or via the :mod:`rlcompleter` module, which
15supports completion of Python identifiers at the interactive prompt. Settings
Georg Brandl116aa622007-08-15 14:28:22 +000016made using this module affect the behaviour of both the interpreter's
Georg Brandl96593ed2007-09-07 14:15:41 +000017interactive prompt and the prompts offered by the built-in :func:`input`
18function.
Georg Brandl116aa622007-08-15 14:28:22 +000019
Zvezdan Petkovicc2f082e2018-05-17 02:45:10 -040020Readline keybindings may be configured via an initialization file, typically
21``.inputrc`` in your home directory. See `Readline Init File
22<https://cnswww.cns.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
Ezio Melotti6e40e272010-01-04 09:29:10 +000027.. note::
Ronald Oussoren2efd9242009-09-20 14:53:22 +000028
Martin Panter0f767392016-04-05 07:37:22 +000029 The underlying Readline library API may be implemented by
Ronald Oussoren2efd9242009-09-20 14:53:22 +000030 the ``libedit`` library instead of GNU readline.
Zvezdan Petkovicc2f082e2018-05-17 02:45:10 -040031 On macOS the :mod:`readline` module detects which library is being used
Martin Panter0f767392016-04-05 07:37:22 +000032 at run time.
Ronald Oussoren2efd9242009-09-20 14:53:22 +000033
34 The configuration file for ``libedit`` is different from that
Georg Brandl6faee4e2010-09-21 14:48:28 +000035 of GNU readline. If you programmatically load configuration strings
Ronald Oussoren2efd9242009-09-20 14:53:22 +000036 you can check for the text "libedit" in :const:`readline.__doc__`
37 to differentiate between GNU readline and libedit.
38
Zvezdan Petkovicc2f082e2018-05-17 02:45:10 -040039 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
Martin Panter553245c2016-06-10 00:27:46 +000046
Ronald Oussoren2efd9242009-09-20 14:53:22 +000047
Martin Panter0f767392016-04-05 07:37:22 +000048Init file
49---------
50
51The following functions relate to the init file and user configuration:
Georg Brandl116aa622007-08-15 14:28:22 +000052
53
54.. function:: parse_and_bind(string)
55
Martin Panter0f767392016-04-05 07:37:22 +000056 Execute the init line provided in the *string* argument. This calls
57 :c:func:`rl_parse_and_bind` in the underlying library.
Georg Brandl116aa622007-08-15 14:28:22 +000058
59
60.. function:: read_init_file([filename])
61
Martin Panter0f767392016-04-05 07:37:22 +000062 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:
Georg Brandl116aa622007-08-15 14:28:22 +000095
96
97.. function:: read_history_file([filename])
98
Martin Panter0f767392016-04-05 07:37:22 +000099 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000102
103
104.. function:: write_history_file([filename])
105
Martin Panter0f767392016-04-05 07:37:22 +0000106 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000109
110
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600111.. function:: append_history_file(nelements[, filename])
112
Martin Panter0f767392016-04-05 07:37:22 +0000113 Append the last *nelements* items of history to a file. The default filename is
114 :file:`~/.history`. The file must already exist. This calls
Martin Panter6afbc652016-06-14 08:45:43 +0000115 :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.
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600118
119 .. versionadded:: 3.5
120
121
Martin Panter0f767392016-04-05 07:37:22 +0000122.. 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
Georg Brandl116aa622007-08-15 14:28:22 +0000138.. function:: clear_history()
139
Martin Panter0f767392016-04-05 07:37:22 +0000140 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000143
144
145.. function:: get_current_history_length()
146
Martin Panter0f767392016-04-05 07:37:22 +0000147 Return the number of items currently in the history. (This is different from
Georg Brandl116aa622007-08-15 14:28:22 +0000148 :func:`get_history_length`, which returns the maximum number of lines that will
149 be written to a history file.)
150
Georg Brandl116aa622007-08-15 14:28:22 +0000151
152.. function:: get_history_item(index)
153
Martin Panter0f767392016-04-05 07:37:22 +0000154 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000156
Georg Brandl116aa622007-08-15 14:28:22 +0000157
158.. function:: remove_history_item(pos)
159
160 Remove history item specified by its position from the history.
Martin Panter0f767392016-04-05 07:37:22 +0000161 The position is zero-based. This calls :c:func:`remove_history` in
162 the underlying library.
Georg Brandl116aa622007-08-15 14:28:22 +0000163
Georg Brandl116aa622007-08-15 14:28:22 +0000164
165.. function:: replace_history_item(pos, line)
166
Martin Panter0f767392016-04-05 07:37:22 +0000167 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000170
Georg Brandl116aa622007-08-15 14:28:22 +0000171
Martin Panter0f767392016-04-05 07:37:22 +0000172.. function:: add_history(line)
Georg Brandl116aa622007-08-15 14:28:22 +0000173
Martin Panter0f767392016-04-05 07:37:22 +0000174 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
Martin Panterf0dbf7a2016-05-15 01:26:25 +0000178.. 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
Serhiy Storchaka7d6dda42016-10-19 18:36:51 +0300182 that when true, enables auto history, and that when false, disables
Martin Panterf0dbf7a2016-05-15 01:26:25 +0000183 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
Martin Panter0f767392016-04-05 07:37:22 +0000192Startup hooks
193-------------
Georg Brandl116aa622007-08-15 14:28:22 +0000194
Georg Brandl116aa622007-08-15 14:28:22 +0000195
196.. function:: set_startup_hook([function])
197
Martin Panter0f767392016-04-05 07:37:22 +0000198 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
Georg Brandl116aa622007-08-15 14:28:22 +0000202 arguments just before readline prints the first prompt.
203
204
205.. function:: set_pre_input_hook([function])
206
Martin Panter0f767392016-04-05 07:37:22 +0000207 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
Georg Brandl116aa622007-08-15 14:28:22 +0000211 with no arguments after the first prompt has been printed and just before
Martin Panter6afbc652016-06-14 08:45:43 +0000212 readline starts reading input characters. This function only exists
213 if Python was compiled for a version of the library that supports it.
Georg Brandl116aa622007-08-15 14:28:22 +0000214
215
Martin Panter0f767392016-04-05 07:37:22 +0000216Completion
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
Georg Brandl116aa622007-08-15 14:28:22 +0000227.. 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
Martin Panter0f767392016-04-05 07:37:22 +0000236 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
Georg Brandl116aa622007-08-15 14:28:22 +0000242
243.. function:: get_completer()
244
245 Get the completer function, or ``None`` if no completer function has been set.
246
Georg Brandl116aa622007-08-15 14:28:22 +0000247
Thomas Wouters89d996e2007-09-08 17:39:28 +0000248.. function:: get_completion_type()
249
Martin Panter0f767392016-04-05 07:37:22 +0000250 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.
Thomas Wouters89d996e2007-09-08 17:39:28 +0000253
Thomas Wouters89d996e2007-09-08 17:39:28 +0000254
Georg Brandl116aa622007-08-15 14:28:22 +0000255.. function:: get_begidx()
Martin Panter0f767392016-04-05 07:37:22 +0000256 get_endidx()
Georg Brandl116aa622007-08-15 14:28:22 +0000257
Martin Panter0f767392016-04-05 07:37:22 +0000258 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000262
263
264.. function:: set_completer_delims(string)
Martin Panter0f767392016-04-05 07:37:22 +0000265 get_completer_delims()
Georg Brandl116aa622007-08-15 14:28:22 +0000266
Martin Panter0f767392016-04-05 07:37:22 +0000267 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.
Georg Brandl116aa622007-08-15 14:28:22 +0000271
Georg Brandl6554cb92007-12-02 23:15:43 +0000272
Thomas Wouters89d996e2007-09-08 17:39:28 +0000273.. 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
Martin Panter0f767392016-04-05 07:37:22 +0000278 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
Thomas Wouters89d996e2007-09-08 17:39:28 +0000281 ``function(substitution, [matches], longest_match_length)`` once
282 each time matches need to be displayed.
283
Georg Brandl116aa622007-08-15 14:28:22 +0000284
Georg Brandl116aa622007-08-15 14:28:22 +0000285.. _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
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200292file 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. ::
Georg Brandl116aa622007-08-15 14:28:22 +0000295
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200296 import atexit
Georg Brandl116aa622007-08-15 14:28:22 +0000297 import os
Georg Brandla102ae32010-10-06 05:08:32 +0000298 import readline
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200299
300 histfile = os.path.join(os.path.expanduser("~"), ".python_history")
Georg Brandl116aa622007-08-15 14:28:22 +0000301 try:
302 readline.read_history_file(histfile)
Ezio Melotti7c018aa2016-01-11 23:30:56 +0200303 # default history len is -1 (infinite), which may grow unruly
304 readline.set_history_length(1000)
Antoine Pitrou62ab10a02011-10-12 20:10:51 +0200305 except FileNotFoundError:
Georg Brandl116aa622007-08-15 14:28:22 +0000306 pass
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200307
Georg Brandl116aa622007-08-15 14:28:22 +0000308 atexit.register(readline.write_history_file, histfile)
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200309
310This code is actually automatically run when Python is run in
311:ref:`interactive mode <tut-interactive>` (see :ref:`rlcompleter-config`).
Georg Brandl116aa622007-08-15 14:28:22 +0000312
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600313The following example achieves the same goal but supports concurrent interactive
314sessions, by only appending the new history. ::
315
316 import atexit
317 import os
Berker Peksag964ec8b2015-11-01 00:55:12 +0300318 import readline
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600319 histfile = os.path.join(os.path.expanduser("~"), ".python_history")
320
321 try:
322 readline.read_history_file(histfile)
Brad Smitheeb5ffd2017-10-10 17:52:58 -0400323 h_len = readline.get_current_history_length()
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600324 except FileNotFoundError:
325 open(histfile, 'wb').close()
326 h_len = 0
327
328 def save(prev_h_len, histfile):
Brad Smitheeb5ffd2017-10-10 17:52:58 -0400329 new_h_len = readline.get_current_history_length()
Ezio Melotti7c018aa2016-01-11 23:30:56 +0200330 readline.set_history_length(1000)
Benjamin Peterson33f8f152014-11-26 13:58:16 -0600331 readline.append_history_file(new_h_len - prev_h_len, histfile)
332 atexit.register(save, h_len, histfile)
333
Georg Brandl116aa622007-08-15 14:28:22 +0000334The following example extends the :class:`code.InteractiveConsole` class to
335support history save/restore. ::
336
Georg Brandl116aa622007-08-15 14:28:22 +0000337 import atexit
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200338 import code
Georg Brandl116aa622007-08-15 14:28:22 +0000339 import os
Antoine Pitrou1a6cb302013-05-04 20:08:35 +0200340 import readline
Georg Brandl116aa622007-08-15 14:28:22 +0000341
342 class HistoryConsole(code.InteractiveConsole):
343 def __init__(self, locals=None, filename="<console>",
344 histfile=os.path.expanduser("~/.console-history")):
Georg Brandlee8783d2009-09-16 16:00:31 +0000345 code.InteractiveConsole.__init__(self, locals, filename)
Georg Brandl116aa622007-08-15 14:28:22 +0000346 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)
Antoine Pitrou62ab10a02011-10-12 20:10:51 +0200353 except FileNotFoundError:
Georg Brandl116aa622007-08-15 14:28:22 +0000354 pass
355 atexit.register(self.save_history, histfile)
356
357 def save_history(self, histfile):
Ezio Melotti7c018aa2016-01-11 23:30:56 +0200358 readline.set_history_length(1000)
Georg Brandl116aa622007-08-15 14:28:22 +0000359 readline.write_history_file(histfile)