]> Sergey Matveev's repositories - nnn.git/commitdiff
quitcd script for Elvish shell > 0.17.0
authorSlIdE42 <17254419+SlIdE42@users.noreply.github.com>
Sun, 17 Apr 2022 11:29:51 +0000 (13:29 +0200)
committerGitHub <noreply@github.com>
Sun, 17 Apr 2022 11:29:51 +0000 (13:29 +0200)
misc/quitcd/quitcd.elv [new file with mode: 0644]

diff --git a/misc/quitcd/quitcd.elv b/misc/quitcd/quitcd.elv
new file mode 100644 (file)
index 0000000..b6514cd
--- /dev/null
@@ -0,0 +1,39 @@
+# Append this file to ~/.elvish/rc.elv (Elvish > 0.17.0)
+
+use path
+
+fn n {|@a|
+       # Block nesting of nnn in subshells
+       if (has-env NNNLVL) {
+               try {
+                       if (>= $E:NNNLVL 1) {
+                               echo "nnn is already running"
+                               return
+                       }
+               } catch e {
+                       nop
+               }
+       }
+
+       # The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set)
+  # If NNN_TMPFILE is set to a custom path, it must be exported for nnn to
+  # see.
+  if (has-env XDG_CONFIG_HOME) {
+               set-env NNN_TMPFILE $E:XDG_CONFIG_HOME/nnn/.lastd
+       } else {
+               set-env NNN_TMPFILE $E:HOME/.config/nnn/.lastd
+       }
+
+       # Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
+  # stty start undef
+  # stty stop undef
+  # stty lwrap undef
+  # stty lnext undef
+
+       e:nnn $@a
+
+       if (path:is-regular $E:NNN_TMPFILE) {
+               eval (slurp < $E:NNN_TMPFILE)
+               rm $E:NNN_TMPFILE
+       }
+}