about summary refs log tree commit diff
path: root/third_party/nix/src/nix/edit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/nix/src/nix/edit.cc')
-rw-r--r--third_party/nix/src/nix/edit.cc105
1 files changed, 48 insertions, 57 deletions
diff --git a/third_party/nix/src/nix/edit.cc b/third_party/nix/src/nix/edit.cc
index a6169f1183..8f31e19a10 100644
--- a/third_party/nix/src/nix/edit.cc
+++ b/third_party/nix/src/nix/edit.cc
@@ -1,81 +1,72 @@
+#include <unistd.h>
+#include "attr-path.hh"
 #include "command.hh"
-#include "shared.hh"
 #include "eval.hh"
-#include "attr-path.hh"
 #include "progress-bar.hh"
-
-#include <unistd.h>
+#include "shared.hh"
 
 using namespace nix;
 
-struct CmdEdit : InstallableCommand
-{
-    std::string name() override
-    {
-        return "edit";
-    }
+struct CmdEdit : InstallableCommand {
+  std::string name() override { return "edit"; }
 
-    std::string description() override
-    {
-        return "open the Nix expression of a Nix package in $EDITOR";
-    }
+  std::string description() override {
+    return "open the Nix expression of a Nix package in $EDITOR";
+  }
 
-    Examples examples() override
-    {
-        return {
-            Example{
-                "To open the Nix expression of the GNU Hello package:",
-                "nix edit nixpkgs.hello"
-            },
-        };
-    }
+  Examples examples() override {
+    return {
+        Example{"To open the Nix expression of the GNU Hello package:",
+                "nix edit nixpkgs.hello"},
+    };
+  }
 
-    void run(ref<Store> store) override
-    {
-        auto state = getEvalState();
+  void run(ref<Store> store) override {
+    auto state = getEvalState();
 
-        auto v = installable->toValue(*state);
+    auto v = installable->toValue(*state);
 
-        Value * v2;
-        try {
-            auto dummyArgs = state->allocBindings(0);
-            v2 = findAlongAttrPath(*state, "meta.position", *dummyArgs, *v);
-        } catch (Error &) {
-            throw Error("package '%s' has no source location information", installable->what());
-        }
+    Value* v2;
+    try {
+      auto dummyArgs = state->allocBindings(0);
+      v2 = findAlongAttrPath(*state, "meta.position", *dummyArgs, *v);
+    } catch (Error&) {
+      throw Error("package '%s' has no source location information",
+                  installable->what());
+    }
 
-        auto pos = state->forceString(*v2);
-        debug("position is %s", pos);
+    auto pos = state->forceString(*v2);
+    debug("position is %s", pos);
 
-        auto colon = pos.rfind(':');
-        if (colon == std::string::npos)
-            throw Error("cannot parse meta.position attribute '%s'", pos);
+    auto colon = pos.rfind(':');
+    if (colon == std::string::npos)
+      throw Error("cannot parse meta.position attribute '%s'", pos);
 
-        std::string filename(pos, 0, colon);
-        int lineno;
-        try {
-            lineno = std::stoi(std::string(pos, colon + 1));
-        } catch (std::invalid_argument & e) {
-            throw Error("cannot parse line number '%s'", pos);
-        }
+    std::string filename(pos, 0, colon);
+    int lineno;
+    try {
+      lineno = std::stoi(std::string(pos, colon + 1));
+    } catch (std::invalid_argument& e) {
+      throw Error("cannot parse line number '%s'", pos);
+    }
 
-        auto editor = getEnv("EDITOR", "cat");
+    auto editor = getEnv("EDITOR", "cat");
 
-        auto args = tokenizeString<Strings>(editor);
+    auto args = tokenizeString<Strings>(editor);
 
-        if (editor.find("emacs") != std::string::npos ||
-            editor.find("nano") != std::string::npos ||
-            editor.find("vim") != std::string::npos)
-            args.push_back(fmt("+%d", lineno));
+    if (editor.find("emacs") != std::string::npos ||
+        editor.find("nano") != std::string::npos ||
+        editor.find("vim") != std::string::npos)
+      args.push_back(fmt("+%d", lineno));
 
-        args.push_back(filename);
+    args.push_back(filename);
 
-        stopProgressBar();
+    stopProgressBar();
 
-        execvp(args.front().c_str(), stringsToCharPtrs(args).data());
+    execvp(args.front().c_str(), stringsToCharPtrs(args).data());
 
-        throw SysError("cannot run editor '%s'", editor);
-    }
+    throw SysError("cannot run editor '%s'", editor);
+  }
 };
 
 static RegisterCommand r1(make_ref<CmdEdit>());