aboutsummaryrefslogtreecommitdiff
path: root/src/libcmd/repl.cc
diff options
context:
space:
mode:
authorGoldstein <root@goldstein.rs>2024-07-15 23:28:55 +0300
committerMax Siling <root@goldstein.rs>2024-07-30 16:08:26 +0000
commit1a6d7a3af466dad946e6fc0e969927a8f246c13a (patch)
treee44d9559f2545ea233336ce6fe9f2bf91589aead /src/libcmd/repl.cc
parent548c973e8282bbec5b14f3860218b23564dc0381 (diff)
src/libcmd/repl.cc: avoid unneeded reload after :e
If `:edit`ing a store path, don't reload repl afterwards to avoid losing local variables: store is immutable, so "editing" a store path is always just viewing it. Resolves: https://git.lix.systems/lix-project/lix/issues/341 Change-Id: I3747f75ce26e0595e953069c39ddc3ee80699718
Diffstat (limited to 'src/libcmd/repl.cc')
-rw-r--r--src/libcmd/repl.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libcmd/repl.cc b/src/libcmd/repl.cc
index 635b54958..5086e9999 100644
--- a/src/libcmd/repl.cc
+++ b/src/libcmd/repl.cc
@@ -652,9 +652,12 @@ ProcessLineResult NixRepl::processLine(std::string line)
// using runProgram2 to allow editors to display their UI
runProgram2(RunOptions { .program = editor, .searchPath = true, .args = args }).wait();
- // Reload right after exiting the editor
- state->resetFileCache();
- reloadFiles();
+ // Reload right after exiting the editor if path is not in store
+ // Store is immutable, so there could be no changes, so there's no need to reload
+ if (!state->store->isInStore(path.resolveSymlinks().path.abs())) {
+ state->resetFileCache();
+ reloadFiles();
+ }
}
else if (command == ":t") {