mirror of
https://github.com/jarun/nnn.git
synced 2024-11-27 21:31:30 +00:00
Fix #350: cd on quit if NNN_TMPFILE is set
This commit is contained in:
parent
c99a47d688
commit
d1d491c102
|
@ -1,5 +1,7 @@
|
|||
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
|
||||
|
||||
nnn "$@"
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
# 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
|
||||
|
||||
alias n 'nnn; source "$NNN_TMPFILE"; rm "$NNN_TMPFILE"'
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
# or, add the lines to the 'config.fish' file.
|
||||
|
||||
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"
|
||||
set -x NNN_TMPFILE "$XDG_CONFIG_HOME/nnn/.lastd"
|
||||
else
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
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
|
||||
|
||||
nnn "$@"
|
||||
|
|
5
nnn.1
5
nnn.1
|
@ -95,11 +95,6 @@ supports the following options:
|
|||
uses \fIxdg-open\fR (on Linux) and \fIopen(1)\fR (on macOS) as the desktop opener.
|
||||
.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.
|
||||
.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
|
||||
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:
|
||||
|
|
68
src/nnn.c
68
src/nnn.c
|
@ -4603,9 +4603,42 @@ nochange:
|
|||
}
|
||||
|
||||
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 (sel == SEL_QUITCD) {
|
||||
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 || getenv("NNN_TMPFILE")) {
|
||||
/* In vim picker mode, clear selection and exit */
|
||||
if (cfg.picker) {
|
||||
/* Picker mode: reset buffer or clear file */
|
||||
|
@ -4617,37 +4650,6 @@ nochange:
|
|||
}
|
||||
}
|
||||
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:
|
||||
if (xlines != LINES || xcols != COLS) {
|
||||
idle = 0;
|
||||
|
|
Loading…
Reference in a new issue