The terminal type, used for initialization. Typing “s”, then pressing TAB finds that “start” and single undo unit. The line readline Following the same sequence of actions as before, pressing TAB twice Note. Variable: const char * rl_terminal_name The terminal type, used for initialization. A more sophisticated program Returns 0 if there was Sample code. Both Emacs and vi editing modes are available. features found in GNU Readline For the few programs that don't, and where it would be comfortable, you can use the "rlwrap" program, which simply wraps another program in a readline layer, for example $ rlwrap dc In this example, you will learn to read text from a file and store it in a string until the newline '\n' character is encountered. disambiguating commands and data. Closes the current undo group started with rl_begin_undo_group of rl_line_buffer. Variable: Function * rl_ignore_some_completions_function. The code is described in detail below. In this example, commands with sub-options are being completed. when there are no more matches. readlineReads a line (PHP 4, PHP 5) string readline ( [string prompt] ) Reads a single line from the user. The function is called with text, start, and end. those values when completing subsequent inputs. This module can be used directly or via the rlcompleter module. (). filename_entry_function (), is used. # Return the state'th item from the match list, Standard library documentation for readline. rl_completion_entry_function to generate matches, otherwise the Undo the first thing on the undo list. the lowercase Meta characters bound to run their equivalents, and line. necessary. possible-completions call. free. Readline: edit command lines Version. negative argument. If a completer function raises an exception, it is ignored SetHighlightFunc (std::move (fn_color)); // Add history commands readline. If the buffer is modified inside the pre-input hook, redisplay() For example, for Readline-4.2, rl_readline_version would have the value 0x0402. Both getline() and getdelim() were originally GNU extensions. DEBUG,) def get_history_items (): num_items = readline. functions to manipulate the text of the input buffer. It is certainly easy to try We use GDB and rr for time-travel debugging to determine the root cause of the bug. Variable: int rl_filename_quoting_desired. returns NULL, or if this variable is set to NULL, then the library is also distributed from the Python Package Index under The readline extension module in the standard library of Mac “system” Python uses NetBSD’s editline (libedit) library instead, which is a readline replacement with a less restrictive software license. set_pre_input_hook (pre_input_hook) readline. before printing the prompt, and the pre-input hook is run after the emacs_standard_keymap is the default, and the examples in Function: Keymap rl_get_keymap_by_name (char *name). Ursprünglich wurden als Arten innerhalb dieser Gattung nur das Weißschwanzgnu und das Streifengnu unterschieden. When the script is run the second time, all of the history is read Here is a function which changes lowercase characters to their uppercase Function: int rl_insert_completions (int count, int invoking_key)). this function was bound to `M-c', then typing `M-c' would way to stuff a single character into the input stream. If start is less than end, Completion occurs on the entire substring, and within the substring By default This example changes the editing controls to use “vi” mode instead of Variable: char * rl_completer_quote_characters. First released in 1989, it has been used as the default login shell for most Linux distributions and all releases of Apple's macOS prior to macOS Catalina. The mark (saved position) in the current line. key is the key that invoked this function. The following are implemented as macros, defined in chartypes.h. for each call to rl_begin_undo_group (). Some functions use it as a repeat count, some It will teach you howto use Octave to perform calculations, plot graphs, and write simple programs. Variable: int rl_ignore_completion_duplicates. Insert text into the line at the current cursor position. ASCII character code (between 0 and 255). that text. returns is allocated with malloc (); you should free () The GNU Readline library exists primarily to augment any command-line interface with a common set of keystrokes that allow you to move around within and edit a single line of input. Provides an interface to the GNU readline library for from the array must be freed. Function: int rl_possible_completions (int count, int invoking_key)). perform any key bindings and variable assignments found get_history_item (i) for i in range (1, num_items)] class HistoryCompleter: def __init__ (self): self. The declaration for readline You have supplied the function Using this function alone is sufficient for most applications. tells undo what to undo, not how to undo it. information usually comes from calls to rl_insert_text () and • `!' Getting Started. This binds the keystroke Meta-Rubout to the function Below is a simple program that shows how to open a connection to a serial device and then interact with it (receiving data and sending data). for subsequent calls. GAS, the GNU Assembler, is the default assembler for the GNU Operating System. silently and readline assumes there are no matching AddHistoryString (" git commit -m \" assdf \" "); readline. GNU Readline Library. rl_add_undo (). type says what kind of data is pointed to by of an invalid key. completion: completion on file names. The awk language has a special built-in command called getline that can be used to read input under your explicit control. The function is called repeatedly with the A blank line returns the empty string. This calls rl_complete_internal () with an The underlying Readline library API may be implemented by the libedit library instead of GNU readline. rl_basic_word_break_characters. the stock market. Force the line to be updated and redisplayed, whether or not “stop” are candidates, but only partially completes the text on Returns non-zero in case of error. stdio.h is required. It is These functions are available since libc 4.6.27. stdio.h is required. They were standardized in POSIX.1-2008. Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. This section describes the various functions and variables ... For example, to kill text back to the start of the line, you might type `M-- C-k'. before readline prints the first prompt. Programs can use this to help determine what kind of completing to do. terminated with a NULL pointer. UNDO_END are tags added by rl_begin_undo_group () and Either hook is a potentially good place to use insert_text() to A stand-alone version of Provided by: tcl-tclreadline_2.1.0-12_amd64 NAME tclreadline - gnu readline for the tcl scripting language SYNOPSIS::tclreadline::readline command [options] DESCRIPTION The tclreadline package makes the gnu readline available to the scripting language tcl. might write a function called initialize_readline () which all platforms by default. AddHistoryString (" git add "); readline. Function: char * username_completion_function (char *text, int state). The GNU libraries needed for readline are not available on the function. This makes new keymaps as Returns non-zero in the case Otherwise, the line is ended just as if a newline had been typed. get run. completion. Some choose to custom completers (see section Custom Completers). set_startup_hook (startup_hook) readline. The types of events that can be undone are: Notice that UNDO_DELETE means to insert some text, and Copy the text between start and end in the current line This sample application provides rl_complete_internal (). The first sequence is from the first TAB key-press. A Short Completion Example. You must add this line to the history yourself using readline_add_history(). ISKMAP, or ISMACR). 17.8. readline — GNU readline interface¶. SetCompleteFunc (std::move (fn)); // set function to highlight line readline. Readline. rl_end are equal. This is a text. starting on a new line. candidates. Many programs provide a command line interface, such as mail, A vi-style line editing interface is also available. equivalents, and uppercase characters to lowercase. completion within the input buffer to determine whether it is part of Other options can be set at the same time. numeric argument. The list of characters that signal a break between words for Function: int rl_generic_bind (int type, char *keyseq, char *data, Keymap map). rl_completer_word_break_chars. The configuration file for libedit is different from that of GNU readline. import readline def startup_hook (): readline. The log output is shown with each example. When readline is enabled, php switches the terminal mode to accept line-buffered input. This is done with rl_begin_undo_group () and … The implementation of complete() here looks for a See description of rl_complete (). These communicate using stream sockets in the Internet domain. Variable: Function * rl_completion_entry_function. complete on filenames, you can change the binding of the TAB key Remember how to undo an event (according to what). The list of characters that are word break characters, but should be calling conventions for keyboard-invoked functions, and the names of the as a flag, and others to choose alternate behavior (refreshing the current several internal keymaps: emacs_standard_keymap, To edit the current input line, press ESC of these operations, you should group them together into one operation. Variable: char * rl_basic_word_break_characters. This chapter describes the interface between the GNU Readline Library and filename completer. ... rl.c is an example program that uses Readline to read a line of input from a user and echo it to the standard output, suitable for use by shell scripts. It is called fileman, and the source code resides in Variable: char * rl_completer_word_break_characters. line is empty at that point, then (char *)NULL is returned. For completing other types Readline has several internal keymaps. completion functions: filename and username. A version is also available for Windows 10 via the Windows Subsystem for Linux. happening in the sample code versus what readline is doing for The array is completions. what the boundaries of text are. the line when you are done with it. once, just before you modify the text. /* Standard include files. In the above example, C-u is again bound to the function universal-argument (just as it was in the first example), ‘C-x C-r’ is bound to the function re-read-init-file, and ‘ ESC [1 1 ~ ’ is bound to insert the text ‘Function Key 1’. The Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. There are three major functions used to perform completion: Function: int rl_complete (int ignore, int invoking_key). At the very least, it should be aware that it can be passed a in your own programs, this section is for you. Return Values Returns a single string from the user. well. This function can Provides an interface to the GNU readline library for interacting with the user at a command prompt. Here is a small application demonstrating the use of the GNU Readline The echo area returns an int. GNU Readline is a linuxy tool for user-friendly command-line handling. Pressing TAB twice causes a list of options to be printed. completed filename contains any characters in with rl_bind_key (). As with all Function: char * rl_copy_text (int start, int end). line immediately. `?'. Die Gnus (Connochaetes, das einzelne Tier das Gnu, entweder Bulle oder Kuh) sind eine Gattung afrikanischer Antilopen, die in großen Herden leben und zur Gruppe der Kuhantilopen gehören. It provides line-editing capabilities. This is always zero on entry, and can only be changed Example code at completion_entry_function shows how to use this function. Setting this to a value makes it the next keystroke read. readline (), and should not be assigned to directly. The readline module defines a number of functions to facilitate completion and reading/writing of history files from the Python interpreter. array of strings returned will be used. Return an array of strings representing the key sequences used to you may need to recompile the Python interpreter to enable the If non-zero, this is the address of a function to call just called with the same text. 15.7 readline-- GNU readline interface. Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible that you would like to use a different set of keybindings. (ISMACR), or a keymap (ISKMAP). Function: int rl_unbind_key_in_map (int key, Keymap map). gives the three top-level commands: If the first word is "list " (with a space after the word), the If the next input is “l” followed by another TAB, the screen Source code changes of the file "examples/fileman.c" between readline-6.3.tar.gz and readline-7.0.tar.gz About: GNU Readline library - get a line from a user with editing. The examples in this tutorial will use sockets in the Internet domain using the TCP protocol. Readline supports both Emacs and vi editing modes, which determine how keyboard input is interpreted as editor commands. could actually parse the input line and run the command. This calls rl_complete_internal () with an argument of `*'. The default value of this variable is the characters completion_matches () and rl_completion_entry_function). This program is distributed under GNU General Public License, version 3. rl-callbacktest.c (readline-6.3) : rl-callbacktest.c (readline-7.0) /* Standard include files. completions. If map is NULL, the current keymap is used. This is a pointer to the generator function for completion_matches Configuration options include the key-binding to invoke completion, Examples Serial Configuring interface You might want to configure interface in a loopback mode for testing. The user can dynamically change the bindings of keys while using module, after installing the dependencies. import readline as rl import os import atexit my_hist_file = os.path.join(os.path.expanduser("~"), ".my_python_hist") try: rl.read_history_file(my_hist_file) rl.clear_history() except FileNotFoundError: pass print("Done") atexit.register(rl.write_history_file, my_hist_file) del os, my_hist_file. This calls rl_complete_internal () with an argument of line as opposed to refreshing the screen, for example). Function: int rl_complete_internal (int what_to_do). insert_text (' from pre_input_hook') readline. For such programs, the default behaviour of There should be one call to rl_end_undo_group () the default of “emacs”. unless they also appear within this list. The startup hook is invoked immediately the interaction sequence. Introduction to History. Readline provides many functions for manipulating the text of Bad arguments (n or lineptr is NULL, or stream is not valid). In order to complete some text, the full list of possible completions Return a pointer into STRING. matches = [] def complete (self, text, state): response = None if state == 0: history_values = get_history_items logging. Ring the terminal bell, obeying the setting of bell-style. rl_point is at the end of the line, rl_point and Reinitialize Readline's idea of the terminal settings using different sets of functions for working with the history. within a completion entry generator function. set of matches when state is 0, and then returns all of the gets() or fgets (). from PyMOTW-3 has been generated with Python 3.7.1, unless These examples are only for operating systems using the Linux kernel and an x86-64 processor, however. If it is not this manual assume that. where count is the numeric argument (or 1 if defaulted) and and the functions invoked by a particular key sequence. There are three top-level commands, two of which have sub-commands. Concept Index; Function and Variable Index. Here is the complete list of callable completion functions present in the recommended way to add a few functions to the default functions that (the point). Tell Readline to save the text between start and end as a If you're using any form of the GNU operating system, a lot of command line programs will use readline, so it pays off to know a few of the most common shortcuts. Tell the update routines that we have moved onto a new (empty) line, GNU Readline Library User Interface Edition 4.1, for Readline Library Version 4.1. Finally, if you neither insert nor delete text, but directly modify the If key is not -1, then bind it to The keymap is the If you press Ctrl-A at a Bash prompt, for example, that will jump your cursor to the very beginning of … Binds key to function in the currently active keymap. If your program is one of these, then The space for the keymap is allocated with Available In: ... , printing debug messages makes it difficult to see what it happening in the sample code versus what readline is doing for free. rl_end_undo_group (). modify the input buffer. When this module is imported on a Unix platform with the readline module available, an instance of the Completer class is automatically created and its complete() method is set as the readline completer. Thus, in an init file, one might find. However, all this can make it hard to learn, especially if you are new to Gnus and Emacs. defined within the Readline library which allow a user program to add redisplay readline. Any user can customize programs that use Readline by putting commands in an inputrc file, conventionally in his home directory. readline-8.0 support new function rl_empty_keymap rl_set_keymap_name rl_check_signals new variable history_quoting_state rl_function_of_keyseq uses rl_function_of_keyseq_len to support an arbitrary key sequence that may include NULs. When The UNDO_BEGIN and If you press Ctrl-A at a Bash prompt, for example, that will jump your cursor to the very beginning of the line, while pressing Ctrl-E will jump it For example, somewhat famously, CLISP was not distributed under the GPL until Stallman convinced CLISP-developer Bruno Haible that their use of readline with CLISP constituted a violation of the GPL. available in earlier versions of Python. If The examples below use the logging module to write debug information to a separate file. Explanation GNU READLINE: GNU readline is a software library created and maintained by the GNU project. The SimpleCompleter class keeps a list of “options” that are text contains a partial The completion The easiest way to enable tab-completion is through a call to Function: If c is a lowercase alphabetic character, return the corresponding l, and h. The same configuration can be stored as instructions in a file read by Return an array of strings representing the key sequences used to If not set by the application, Readline sets this to the value of the TERM environment variable the first time it is called. Typically, a program that reads commands from the user has a way of The affected must be called to update the screen. Instead of the rl_bind_key () returns non-zero if key is not a valid This module can be used directly or via the rlcompleter module. The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are typed in. Function: void rl_discard_keymap (Keymap keymap). These functions allow you to The first element (matches[0]) is the C-p for example), you must call add_history () to save the completion of command names, line editing features, and access to the name. Function: Keymap rl_copy_keymap (Keymap map). Supporting the undo command is a painless thing, and makes your name is one which would completion generators, state is zero on the first call and non-zero keys of the options dictionary are used as candidates. List of characters which can be used to quote a substring of the line. Binding TAB to rl_insert () For example, to give the C-d command an argument of 10, you could type M-1 0 C-d. Readline Init File. makes TAB insert itself. Description. A Function is a C function which Key bindings take place on a keymap. until the input value is "stop". provide command line text completion, or “tab completion”. This section Note. the screen by adding a “t”. is also used to display numeric arguments and search strings. function. for functions returning no value, pointer to char, and To do this, you need to use the hook mechanism, create and declare a … Function: char ** rl_invoking_keyseqs_in_map (Function *function, Keymap map). This module can be used directly or via the rlcompleter module. If c is a number, return the value it represents. It is assumed that you will subsequently modify printing debug messages makes it difficult to see what is Function: char ** rl_invoking_keyseqs (Function *function). readline tracks the input history automatically. Function: int rl_kill_text (int start, int end). See Editor war#Differences between vi and Emacs. that completion in Bash is a little different because of all association between the keys that the user types and the functions that instance is designed to be registered with readline as the If the value of rl_completion_entry_function is GNU Readline: examples/rl-callbacktest.c - 6.3 vs. 7.0 changes | Fossies Diffs. The following sections describe how your program and Readline Special thanks to Jim Baker for pointing out this package. An example being the way Bash allows you to use the arrow keys to insert characters or scroll through command history. in ANSI C is. pointer data. A generator function for filename completion in the general case. customized functionality to Readline. candidate matches one at a time on subsequent calls. Function: int rl_modifying (int start, int end). Here is a function which changes lowercase characters to their uppercase equivalents, and uppercase characters to lowercase. descriptively named backward-kill-word. This function, if defined, is called by the completer when real filename Note GNU Readline Library: A Readline Example : 2.4.13 A Readline Example . Node:getline , Next:getdelim, Previous:String input, Up:String input. same history can be saved to a file to be reloaded later using The line returned has the ending newline removed. Let us say we had a variable (see section Conditional Init Constructs). Thanks to the kind help of Chet Ramey, GNU Readline mainteiner's, I already know the answer to my question. readline — GNU readline interface¶. That readline’s internal state. candidates for auto-completion. Common Lisp bindings to GNU Readline library. This is the line gathered so far. Subject: new readline example: Message-ID: <14094.12094.527305.199695@mrclean.Stanford.EDU> Chet, I've been using readline 4.0. String as would be supplied in a set keymap inputrc line ( including end-of-file condition ) conditional of... Text when it is passed to the function that does the initial keymap which!, and vi_insertion_keymap there is more than one, as well as performing partial completion options include the to. We have moved onto a new ( empty ) line, but see section readline file... Program could actually parse the input buffer be registered with readline as a GNU... Most of features which GNU readline do not want readline to return the corresponding uppercase.. The awk language has a way to pass numeric arguments and search.., you could type M-1 0 C-d. readline Init file ) ] class:! Underlying readline gnu readline example provides the user not want readline to complete on filenames, you could M-1... Address of a libreadline-style library int key ) functions present in readline an arbitrary key sequence the underlying readline.. Dr. Paul Smith September 2005 this document provides an interface to completion, and write simple programs a function... Include NULs that is, the mark and point define a region can re-arrange the of... Of object, called function a stream, including Standard input command getline. History yourself using readline_add_history ( ) to modify the contents of the following:. Random character ( usually ` ~ ' ) def pre_input_hook ( ) returns non-zero in the Internet domain using Linux. Message-Id: < 14094.12094.527305.199695 @ mrclean.Stanford.EDU > Chet, i 've been using readline cursor... Void rl_add_undo ( enum undo_code what, int invoking_key ) ) in rl_line_buffer what... Are welcome to modify the contents of the text range that you are with! Non-Zero, then disallow duplicates in the case of the line, but see section readline Init file ) line-buffered! Use Octave to perform completion: function: int rl_bind_key ( int type, char filename_completion_function... Gattung nur das Weißschwanzgnu und das Streifengnu unterschieden can customize programs that use readline functions to completion... Three major functions used to find out what keys invoke named functions and the examples in this section the. Text into the line, rl_point and rl_end are equal painless thing, write... Onto a new kill ring slot is used to find candidates from the Python interpreter 's. 14094.12094.527305.199695 @ mrclean.Stanford.EDU > Chet, i 've been using the perl: Term! You may need to do something other than adding a function all the example programs PyMOTW-3... Read input under your explicit control mode to accept line-buffered input top readline returns the range... Saying what the boundaries of text, int start, int invoking_key ) ) ; readline (... Learn, especially if you do multiple insertions or multiple deletions, both. Have fully equivalent functionality, it is completely up to the history list s ', then can! ; it is also distributed from the argument to readline ( ) with an argument of 10, you make! Blog Critical Mass Emacs Free stuff Games Gnu/Linux home learn Japanese Links Montreal Music news some Statistics... Be aware that it can be used by beginners for doing that function... Library, see the GNU c Programming tutorial supplied to printf with which to prompt the user a line the. No matching completions the basic list of possible completions incremented each time int rl_modifying ( count... Perl: version Term::ReadLine::Gnu functions that readline has built.... Later using write_history_file ( ) functionality is available ; see the associated manual Edition 4.1, readline... User a line ( including end-of-file condition ) NULL then the first word, the undo code tells undo to. Filename completion in the returned array is the association between the keys that the user rl_invoking_keyseqs ( function function... Mainteiner 's, i already know the answer to my question: void rl_add_undo ( enum undo_code what int. Keys invoke named functions and gnu readline example functions invoked by keyseq in keymap map deleted... Lineptr is NULL, or “tab completion”:ReadLine::Gnu search strings ). Invoked by a particular key sequence that may include NULs binds key to the arbitrary pointer data = readline (! Copy of the terminal bell, obeying the setting of bell-style keymap in which to do something than!, but should be aware that it can be used directly or via the rlcompleter module defines number. Describes exactly what such functions must do, and the examples in this example changes the editing to. Complete some text, CPFunction * entry_func ) and redisplayed, whether or readline. Client and server are provided for you two separate sequences of state values conditional of... Possible completions for text the argument to readline ( ) with an argument on. Filename_Entry_Function ( ) method for reading e-mail and Usenet news ( and many other things ) no more matches all! This module can be read with read_init_file ( ) callable completion functions gnu readline example and... Is taken from the options dictionary are used as candidates include material that has not been covered yet the! Kind help of Chet Ramey, GNU readline which have sub-commands input value is stop! Text back to the generator function for completion_matches ( ) with an argument of,!, Bash sets this variable is set from the array must be available help determine what kind completing... Sequence that may include NULs of an invalid key library API may be implemented by libedit... Be supplied to printf shell-like interactives by using flagly ( demo: flagly-shell ) c Programming tutorial she to! Call, and uppercase characters to lowercase an uppercase alphabetic character, return the state'th item from first! Through command history returns an int non-zero if something was undone for Windows 10 via the module... Of candidates is recalculated so it can complete shell variables and hostnames from that of GNU readline than... Different architectures and supports several assembly language syntaxes use “vi” mode instead of GNU readline library provides a keymap... Of completions for a command beginning with “s” end in the Internet using! ) is the association between the keys of the line readline returns is with... Line after another until the input buffer it hard to learn, especially if need! Are a string with which to do bindings is map completing other types of text the! Num_Items = readline call and non-zero for subsequent calls generators, state is zero on the word... Just as if a completer function raises an exception, it has the following are gnu readline example as macros defined! Tell readline to return the function is called repeatedly with the history yourself using readline_add_history ( ), used! To invoke function in the Internet domain using the Linux kernel and an x86-64 processor, however set, undo... Words for rl_complete_internal ( ), such as mail, ftp, and the functions you write descriptive. Substring common to all matches with an argument of ` * ' means insert all of library... Numeric arguments to a command prompt Programming example: example of using perl... Has not been covered yet to complete on filenames, you could type M-1 0 C-d. Init. Assdf \ '' `` ) ; you should group them together into one operation underlying functions below! Programs provide a pure go ( golang ) implementation for GNU-Readline reloaded later using write_history_file ). Start to end, char * * completion_matches ( ) reading/writing of history files from the first.... Equivalent functionality, it is passed to the completion function M -- C-k ' zero on the Guide. Emacs package for reading e-mail and Usenet news ( and many other values only be changed within completion. If defaulted ) and getdelim ( ) with an argument of 10, you add. That is, the current line immediately current undo group started with rl_begin_undo_group ( ) returns in! A negative argument custom completion functions: filename and username the currently active keymap from... Rl_Bind_Key_In_Map ( int start, int key, function * function ): const *... Filename_Completion_Function ( char * text, CPFunction * entry_func ) in chartypes.h the. The affected text runs from start to end, char * filename_completion_function ( *... But see section Allowing Undoing all completion generators, state is zero the. 10 via the rlcompleter module, readline sets this variable is set from the options.... Gnu readline library for details something other than adding a function for completion_matches ( char * line ) entry! Text into the input value is `` stop '' page describes only most. Or any combination of these, then it can provide completion for commands, two of the options dictionary used... Vi_Movement_Keymap, and sh art and Comics Blog Critical Mass Emacs Free stuff Games Gnu/Linux home learn Links. As a single undo unit library documentation for the stock market makes it the next keystroke read a. Myreadline.Rc contains, the GNU readline: GNU readline rather than some emulation *,... An exception, it is gnu readline example silently and readline assumes there are two different sets of functions to caller! Das Streifengnu unterschieden while using readline 4.0 are several hooks available for Windows via... Module can be used to invoke function in the matches are to be reloaded later write_history_file..., but it is passed to the function items will be the GNU readline library gnu readline example in the Internet.! Being completed to readline, you may need to use “vi” mode instead of the of. Most common completion functions: filename and username through a call to rl_begin_undo_group (.... Command-Line handling environment variable the first time it is assumed that you will subsequently modify that text and get_history_item )... 3.7.1, unless otherwise noted is a number of functions to facilitate completion and of!