[3.13] gh-123024: Correctly prepare/restore around help and show-history commands (GH-124485) (#129155)

gh-123024: Correctly prepare/restore around help and show-history commands (GH-124485)
(cherry picked from commit 5a9afe2362)

Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
Co-authored-by: Emily Morehouse <emily@cuttlesoft.com>
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
This commit is contained in:
Miss Islington (bot) 2025-01-21 23:15:57 +01:00 committed by GitHub
parent 3048dcd15a
commit 0ddcb61ffe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 77 additions and 57 deletions

View file

@ -77,7 +77,7 @@ REPL_COMMANDS = {
"exit": _sitebuiltins.Quitter('exit', ''),
"quit": _sitebuiltins.Quitter('quit' ,''),
"copyright": _sitebuiltins._Printer('copyright', sys.copyright),
"help": "help",
"help": _sitebuiltins._Helper(),
"clear": _clear_screen,
"\x1a": _sitebuiltins.Quitter('\x1a', ''),
}
@ -124,18 +124,10 @@ def run_multiline_interactive_console(
reader.history.pop() # skip internal commands in history
command = REPL_COMMANDS[statement]
if callable(command):
command()
# Make sure that history does not change because of commands
with reader.suspend_history():
command()
return True
if isinstance(command, str):
# Internal readline commands require a prepared reader like
# inside multiline_input.
reader.prepare()
reader.refresh()
reader.do_cmd((command, [statement]))
reader.restore()
return True
return False
while 1: