aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRebecca Turner <rbt@sent.as>2024-09-08 15:49:08 -0700
committerRebecca Turner <rbt@sent.as>2024-09-09 15:34:50 -0700
commit6de6cae3e70caba0ff8fe3d2d6cb7c4fd0022618 (patch)
treed34c2908dd76d4fe255165ce2817371e0eed5df1
parente9505dcc5a0ff259b9e284e9e617486e81a1ff6f (diff)
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
-rw-r--r--doc/manual/rl-next/alt-left-and-alt-right-in-repl.md10
-rw-r--r--package.nix29
2 files changed, 38 insertions, 1 deletions
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 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 { };