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