@@ -1,5 +1,7 @@ | |||||
n() | n() | ||||
{ | { | ||||
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set) | |||||
# To cd on quit only on ^G, export NNN_TMPFILE after the call to nnn | |||||
export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd | export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd | ||||
nnn "$@" | nnn "$@" | ||||
@@ -1,3 +1,7 @@ | |||||
# NOTE: set NNN_TMPFILE correctly if you use 'XDG_CONFIG_HOME' | # NOTE: set NNN_TMPFILE correctly if you use 'XDG_CONFIG_HOME' | ||||
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set) | |||||
# To cd on quit only on ^G, export NNN_TMPFILE after the call to nnn | |||||
set NNN_TMPFILE=~/.config/nnn/.lastd | set NNN_TMPFILE=~/.config/nnn/.lastd | ||||
alias n 'nnn; source "$NNN_TMPFILE"; rm "$NNN_TMPFILE"' | alias n 'nnn; source "$NNN_TMPFILE"; rm "$NNN_TMPFILE"' |
@@ -3,6 +3,8 @@ | |||||
# or, add the lines to the 'config.fish' file. | # or, add the lines to the 'config.fish' file. | ||||
function n --description 'support nnn quit and change directory' | function n --description 'support nnn quit and change directory' | ||||
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set) | |||||
# To cd on quit only on ^G, export NNN_TMPFILE after the call to nnn | |||||
if test -n "$XDG_CONFIG_HOME" | if test -n "$XDG_CONFIG_HOME" | ||||
set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd" | set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd" | ||||
else | else | ||||
@@ -1,5 +1,7 @@ | |||||
n() | n() | ||||
{ | { | ||||
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set) | |||||
# To cd on quit only on ^G, export NNN_TMPFILE after the call to nnn | |||||
export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd | export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd | ||||
nnn "$@" | nnn "$@" | ||||
@@ -95,11 +95,6 @@ supports the following options: | |||||
uses \fIxdg-open\fR (on Linux) and \fIopen(1)\fR (on macOS) as the desktop opener. | uses \fIxdg-open\fR (on Linux) and \fIopen(1)\fR (on macOS) as the desktop opener. | ||||
.Pp | .Pp | ||||
There is no configuration file. Associated files are stored in \fB${XDG_CONFIG_HOME:-$HOME/.config}/nnn/\fR. Settings work on environment variables. See ENVIRONMENT section below. | There is no configuration file. Associated files are stored in \fB${XDG_CONFIG_HOME:-$HOME/.config}/nnn/\fR. Settings work on environment variables. See ENVIRONMENT section below. | ||||
.Pp | |||||
Configuring | |||||
.Nm | |||||
to change to the last visited directory on quit requires shell integration in a | |||||
few easy steps. Look up NNN_TMPFILE in the ENVIRONMENT section below. | |||||
.Sh CONTEXTS | .Sh CONTEXTS | ||||
Contexts serve the purpose of exploring multiple directories simultaneously. 4 contexts | Contexts serve the purpose of exploring multiple directories simultaneously. 4 contexts | ||||
are available. The status of the contexts are shown in the top left corner: | are available. The status of the contexts are shown in the top left corner: | ||||
@@ -4603,9 +4603,42 @@ nochange: | |||||
} | } | ||||
if (!(r == CTX_MAX || r == '\r')) | if (!(r == CTX_MAX || r == '\r')) | ||||
break; | break; // fallthrough | ||||
case SEL_QUITCTX: | |||||
if (sel == SEL_QUITCTX) { | |||||
fd = cfg.curctx; /* fd used as tmp var */ | |||||
for (r = (fd + 1) & ~CTX_MAX; | |||||
(r != fd) && !g_ctx[r].c_cfg.ctxactive; | |||||
r = ((r + 1) & ~CTX_MAX)) { | |||||
}; | |||||
if (r != fd) { | |||||
bool selmode = cfg.selmode ? TRUE : FALSE; | |||||
g_ctx[fd].c_cfg.ctxactive = 0; | |||||
/* Switch to next active context */ | |||||
path = g_ctx[r].c_path; | |||||
lastdir = g_ctx[r].c_last; | |||||
lastname = g_ctx[r].c_name; | |||||
/* Switch light/detail mode */ | |||||
if (cfg.showdetail != g_ctx[r].c_cfg.showdetail) | |||||
/* Set the reverse */ | |||||
printptr = cfg.showdetail ? | |||||
&printent : &printent_long; | |||||
cfg = g_ctx[r].c_cfg; | |||||
/* Continue selection mode */ | |||||
cfg.selmode = selmode; | |||||
cfg.curctx = r; | |||||
setdirwatch(); | |||||
goto begin; | |||||
} | |||||
} | |||||
if (sel == SEL_QUITCD) { | if (sel == SEL_QUITCD || getenv("NNN_TMPFILE")) { | ||||
/* In vim picker mode, clear selection and exit */ | /* In vim picker mode, clear selection and exit */ | ||||
if (cfg.picker) { | if (cfg.picker) { | ||||
/* Picker mode: reset buffer or clear file */ | /* Picker mode: reset buffer or clear file */ | ||||
@@ -4617,37 +4650,6 @@ nochange: | |||||
} | } | ||||
} | } | ||||
return; | return; | ||||
case SEL_QUITCTX: | |||||
fd = cfg.curctx; /* fd used as tmp var */ | |||||
for (r = (fd + 1) & ~CTX_MAX; | |||||
(r != fd) && !g_ctx[r].c_cfg.ctxactive; | |||||
r = ((r + 1) & ~CTX_MAX)) { | |||||
}; | |||||
if (r != fd) { | |||||
bool selmode = cfg.selmode ? TRUE : FALSE; | |||||
g_ctx[fd].c_cfg.ctxactive = 0; | |||||
/* Switch to next active context */ | |||||
path = g_ctx[r].c_path; | |||||
lastdir = g_ctx[r].c_last; | |||||
lastname = g_ctx[r].c_name; | |||||
/* Switch light/detail mode */ | |||||
if (cfg.showdetail != g_ctx[r].c_cfg.showdetail) | |||||
/* Set the reverse */ | |||||
printptr = cfg.showdetail ? &printent : &printent_long; | |||||
cfg = g_ctx[r].c_cfg; | |||||
/* Continue selection mode */ | |||||
cfg.selmode = selmode; | |||||
cfg.curctx = r; | |||||
setdirwatch(); | |||||
goto begin; | |||||
} | |||||
return; | |||||
default: | default: | ||||
if (xlines != LINES || xcols != COLS) { | if (xlines != LINES || xcols != COLS) { | ||||
idle = 0; | idle = 0; | ||||