From ad24921de8075073af9106e74e3559a1d234bcc5 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Mon, 19 Jul 2021 18:07:17 +0200 Subject: [PATCH 1/2] Rename findDerivationFilename -> findPackageFilename It does not operate on a derivation and does not return a derivation path. Instead it works at the language level, where a distinct term "package" is more appropriate to distinguish the parent object of `meta.position`; an attribute which doesn't even make it into the derivation. --- src/libexpr/attr-path.cc | 2 +- src/libexpr/attr-path.hh | 2 +- src/nix/edit.cc | 2 +- src/nix/repl.cc | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libexpr/attr-path.cc b/src/libexpr/attr-path.cc index 867eb13a5..c50c6d92b 100644 --- a/src/libexpr/attr-path.cc +++ b/src/libexpr/attr-path.cc @@ -100,7 +100,7 @@ std::pair findAlongAttrPath(EvalState & state, const string & attr } -Pos findDerivationFilename(EvalState & state, Value & v, std::string what) +Pos findPackageFilename(EvalState & state, Value & v, std::string what) { Value * v2; try { diff --git a/src/libexpr/attr-path.hh b/src/libexpr/attr-path.hh index d9d74ab2d..2ee3ea089 100644 --- a/src/libexpr/attr-path.hh +++ b/src/libexpr/attr-path.hh @@ -14,7 +14,7 @@ std::pair findAlongAttrPath(EvalState & state, const string & attr Bindings & autoArgs, Value & vIn); /* Heuristic to find the filename and lineno or a nix value. */ -Pos findDerivationFilename(EvalState & state, Value & v, std::string what); +Pos findPackageFilename(EvalState & state, Value & v, std::string what); std::vector parseAttrPath(EvalState & state, std::string_view s); diff --git a/src/nix/edit.cc b/src/nix/edit.cc index b26417b18..fc48db0d7 100644 --- a/src/nix/edit.cc +++ b/src/nix/edit.cc @@ -31,7 +31,7 @@ struct CmdEdit : InstallableCommand auto [v, pos] = installable->toValue(*state); try { - pos = findDerivationFilename(*state, *v, installable->what()); + pos = findPackageFilename(*state, *v, installable->what()); } catch (NoPositionInfo &) { } diff --git a/src/nix/repl.cc b/src/nix/repl.cc index bf3b2c401..5d3dbbcd9 100644 --- a/src/nix/repl.cc +++ b/src/nix/repl.cc @@ -454,7 +454,7 @@ bool NixRepl::processLine(string line) pos = v.lambda.fun->pos; } else { // assume it's a derivation - pos = findDerivationFilename(*state, v, arg); + pos = findPackageFilename(*state, v, arg); } // Open in EDITOR From 3bbf5558e00e816fae0a78ff54249646ea1bac4e Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Mon, 19 Jul 2021 18:08:36 +0200 Subject: [PATCH 2/2] nix repl: Update :edit help text It supports functions as well. Also change `package` to `derivation` because it operates at the language level and does not open the derivation (which would be useful but not nearly as much). --- src/nix/repl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nix/repl.cc b/src/nix/repl.cc index 5d3dbbcd9..07bbd461f 100644 --- a/src/nix/repl.cc +++ b/src/nix/repl.cc @@ -412,7 +412,7 @@ bool NixRepl::processLine(string line) << " = Bind expression to variable\n" << " :a Add attributes from resulting set to scope\n" << " :b Build derivation\n" - << " :e Open the derivation in $EDITOR\n" + << " :e Open package or function in $EDITOR\n" << " :i Build derivation, then install result into current profile\n" << " :l Load Nix expression and add it to scope\n" << " :p Evaluate and print expression recursively\n"