--- /dev/null
+# 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
+ }
+}