]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-119035: Add Ctrl+← and Ctrl+→ word-skipping keybindings to new repl (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 21 May 2024 21:16:06 +0000 (23:16 +0200)
committerGitHub <noreply@github.com>
Tue, 21 May 2024 21:16:06 +0000 (17:16 -0400)
add word-skipping ctrl keybindings to new repl
(cherry picked from commit 0398d9339217aa0710c0de45a7e9b587136e7129)

Co-authored-by: Alastair Stanley <alastairstanley@ntlworld.com>
Lib/_pyrepl/keymap.py
Lib/_pyrepl/reader.py

index 31a02642ce8ceb6e1367a43675ba93850417ce33..9f1aff88e06f6a003519170e74c73fedfdad0035 100644 (file)
@@ -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:
index d15a150180811d6cf77fc12732c42bb8825646e0..2c8c9e7dc4b5dad6946f846d3b6f07cae1ba50c7 100644 (file)
@@ -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"),