From 7cd7ada4ff26f9f9e23167f3ead714a8c38865df Mon Sep 17 00:00:00 2001 From: Stefan Fehrenbach Date: Sun, 19 Feb 2023 13:41:34 +0100 Subject: [PATCH] frink: generate rlwrap helper files for tab completion Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com> --- pkgs/development/tools/frink/default.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/development/tools/frink/default.nix b/pkgs/development/tools/frink/default.nix index 803fb63c5e6c..eb61e4b23114 100644 --- a/pkgs/development/tools/frink/default.nix +++ b/pkgs/development/tools/frink/default.nix @@ -18,6 +18,8 @@ stdenv.mkDerivation rec { dontUnpack = true; + nativeBuildInputs = [ jdk ]; + buildInputs = [ jdk rlwrap ]; installPhase = '' @@ -27,9 +29,18 @@ stdenv.mkDerivation rec { cp ${src} $out/lib/frink.jar + # Generate rlwrap helper files. + # See https://frinklang.org/fsp/colorize.fsp?f=listUnits.frink + # and https://frinklang.org/fsp/colorize.fsp?f=listFunctions.frink + java -classpath "$out/lib/frink.jar" frink.gui.FrinkStarter -e 'joinln[lexicalSort[units[]]]' > $out/lib/unitnames.txt + java -classpath "$out/lib/frink.jar" frink.gui.FrinkStarter -e 'joinln[map[{|f| + f =~ %s/\s+//g + return "$f$" + }, lexicalSort[functions[]]]]' > $out/lib/functionnames.txt + cat > "$out/bin/frink" << EOF #!${stdenv.shell} - exec ${rlwrap}/bin/rlwrap ${jdk}/bin/java -classpath "$out/lib/frink.jar" frink.gui.FrinkStarter "\$@" + exec ${rlwrap}/bin/rlwrap -f $out/lib/unitnames.txt -b '$' -f $out/lib/functionnames.txt ${jdk}/bin/java -classpath "$out/lib/frink.jar" frink.gui.FrinkStarter "\$@" EOF chmod a+x "$out/bin/frink"