diff --git a/doc/manual/rl-next/alt-left-and-alt-right-in-repl.md b/doc/manual/rl-next/alt-left-and-alt-right-in-repl.md new file mode 100644 index 000000000..66e89a15e --- /dev/null +++ b/doc/manual/rl-next/alt-left-and-alt-right-in-repl.md @@ -0,0 +1,10 @@ +--- +synopsis: "`Alt+Left` and `Alt+Right` go back/forwards by words in `nix repl`" +issues: [fj#501] +cls: [1883] +category: Fixes +credits: 9999years +--- + +`nix repl` now recognizes `Alt+Left` and `Alt+Right` for navigating by words +when entering input in `nix repl` on more terminals/platforms. diff --git a/package.nix b/package.nix index eebf222b7..c9341d4cb 100644 --- a/package.nix +++ b/package.nix @@ -22,6 +22,7 @@ doxygen, editline-lix ? __forDefaults.editline-lix, editline, + fetchpatch, git, gtest, jq, @@ -38,6 +39,7 @@ mercurial, meson, ninja, + ncurses, openssl, pegtl, pkg-config, @@ -81,7 +83,32 @@ boehmgc-nix = boehmgc.override { enableLargeConfig = true; }; editline-lix = editline.overrideAttrs (prev: { - configureFlags = prev.configureFlags or [ ] ++ [ (lib.enableFeature true "sigstop") ]; + patches = (prev.patches or [ ]) ++ [ + # Recognize `Alt-Left` and `Alt-Right` for navigating by words in more + # terminals/shells/platforms. + # + # See: https://github.com/troglobit/editline/pull/70/commits + (fetchpatch { + url = "https://github.com/troglobit/editline/pull/70/commits/d0f2a5bc2300b96b2434c7838184c1dfd6a639f5.diff"; + hash = "sha256-0bbtYDUlk1wA0kpTtlaNI6KaCjLmAesZjcWBJZ+DpyQ="; + }) + + (fetchpatch { + url = "https://github.com/troglobit/editline/pull/70/commits/4c4455353a0a88bee09d5f27c28f81f747682fed.diff"; + hash = "sha256-nVezspwVzeB/8zENeKgwPVum0W1MLv4dOW0967WbX5w="; + }) + ]; + + configureFlags = (prev.configureFlags or [ ]) ++ [ + # Enable SIGSTOP (Ctrl-Z) behavior. + (lib.enableFeature true "sigstop") + # Enable ANSI arrow keys. + (lib.enableFeature true "arrow-keys") + # Use termcap library to query terminal size. + (lib.enableFeature (ncurses != null) "termcap") + ]; + + nativeBuildInputs = (prev.nativeBuildInputs or [ ]) ++ [ ncurses ]; }); build-release-notes = callPackage ./maintainers/build-release-notes.nix { };