# 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

	# The e: prefix allows one to alias n to nnn if desired without making an
	# infinitely recursive alias
	e:nnn $@a

	if (path:is-regular $E:NNN_TMPFILE) {
		eval (slurp < $E:NNN_TMPFILE)
		rm $E:NNN_TMPFILE
	}
}