summaryrefslogtreecommitdiffstats
path: root/Lib/_pyrepl
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-05-21 21:16:06 (GMT)
committerGitHub <noreply@github.com>2024-05-21 21:16:06 (GMT)
commit8860f83e4b451181e46b0400a4c5019387776b1d (patch)
tree0f6d3222116d80bf2fc50de50e83c8fb022b2f5b /Lib/_pyrepl
parent256b791fd6bf894e788231431ae54ea877898dce (diff)
downloadcpython-8860f83e4b451181e46b0400a4c5019387776b1d.zip
cpython-8860f83e4b451181e46b0400a4c5019387776b1d.tar.gz
cpython-8860f83e4b451181e46b0400a4c5019387776b1d.tar.bz2
[3.13] gh-119035: Add Ctrl+← and Ctrl+→ word-skipping keybindings to new repl (GH-119248) (#119323)
add word-skipping ctrl keybindings to new repl (cherry picked from commit 0398d9339217aa0710c0de45a7e9b587136e7129) Co-authored-by: Alastair Stanley <alastairstanley@ntlworld.com>
Diffstat (limited to 'Lib/_pyrepl')
-rw-r--r--Lib/_pyrepl/keymap.py9
-rw-r--r--Lib/_pyrepl/reader.py2
2 files changed, 8 insertions, 3 deletions
diff --git a/Lib/_pyrepl/keymap.py b/Lib/_pyrepl/keymap.py
index 31a0264..9f1aff8 100644
--- a/Lib/_pyrepl/keymap.py
+++ b/Lib/_pyrepl/keymap.py
@@ -177,9 +177,12 @@ def _parse_key1(key, s):
ret = key[s]
s += 1
if ctrl:
- if len(ret) > 1:
- raise KeySpecError("\\C- must be followed by a character")
- ret = chr(ord(ret) & 0x1F) # curses.ascii.ctrl()
+ if len(ret) == 1:
+ ret = chr(ord(ret) & 0x1F) # curses.ascii.ctrl()
+ elif ret in {"left", "right"}:
+ ret = f"ctrl {ret}"
+ else:
+ raise KeySpecError("\\C- followed by invalid key")
if meta:
ret = ["\033", ret]
else:
diff --git a/Lib/_pyrepl/reader.py b/Lib/_pyrepl/reader.py
index d15a150..2c8c9e7 100644
--- a/Lib/_pyrepl/reader.py
+++ b/Lib/_pyrepl/reader.py
@@ -136,7 +136,9 @@ default_keymap: tuple[tuple[KeySpec, CommandName], ...] = tuple(
(r"\<up>", "up"),
(r"\<down>", "down"),
(r"\<left>", "left"),
+ (r"\C-\<left>", "backward-word"),
(r"\<right>", "right"),
+ (r"\C-\<right>", "forward-word"),
(r"\<delete>", "delete"),
(r"\<backspace>", "backspace"),
(r"\M-\<backspace>", "backward-kill-word"),