From 6de6cae3e70caba0ff8fe3d2d6cb7c4fd0022618 Mon Sep 17 00:00:00 2001 From: Rebecca Turner Date: Sun, 8 Sep 2024 15:49:08 -0700 Subject: repl: Patch editline to recognize Meta-Left & Meta-Right This applies https://github.com/troglobit/editline/pull/70 to our build of editline, which translates `meta-left` and `meta-right` into `fd_word` and `bk_word`. This makes `nix repl` soooo much nicer to use! Note: My terminal renders `meta-left` as `\e\e[C` and `meta-right` as `\e\e[D`. Closes https://git.lix.systems/lix-project/lix/issues/501 Change-Id: I048b10cf17231bbf4e6bf38e1d1d8572cedaa194 --- package.nix | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'package.nix') diff --git a/package.nix b/package.nix index e5ab5eff0..29824b183 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 { }; -- cgit v1.2.3