Browse Source

End selection mode when an operation is run

master
Arun Prakash Jana 5 years ago
parent
commit
b046157b61
No known key found for this signature in database GPG Key ID: A75979F35C080412
3 changed files with 28 additions and 10 deletions
  1. BIN
      CHANGELOG
  2. +26
    -8
      src/nnn.c
  3. +2
    -2
      src/nnn.h

BIN
CHANGELOG View File


+ 26
- 8
src/nnn.c View File

@@ -887,6 +887,21 @@ static bool listselfile(void)
return TRUE;
}

/* Finish selection procedure before an operation */
static void endselection(void)
{
if (!cfg.selmode)
return;

cfg.selmode = 0;

if (selbufpos) { /* File path(s) written to the buffer */
writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */
spawn(copier, NULL, NULL, NULL, F_NOTRACE);
selbufpos = 0;
}
}

static bool selsafe(void)
{
/* Fail if selection file path not generated */
@@ -895,12 +910,6 @@ static bool selsafe(void)
return FALSE;
}

/* Warn if selection not completed */
if (cfg.selmode) {
printmsg("finish selection first");
return FALSE;
}

/* Fail if selection file path isn't accessible */
if (access(g_selpath, R_OK | W_OK) == -1) {
errno == ENOENT ? printmsg(messages[NONE_SELECTED]) : printwarn(NULL);
@@ -3998,7 +4007,7 @@ nochange:
if (!ndents)
break; // fallthrough
case SEL_REDRAW: // fallthrough
case SEL_RENAMEALL: // fallthrough
case SEL_RENAMEMUL: // fallthrough
case SEL_HELP: // fallthrough
case SEL_LOCK:
{
@@ -4017,7 +4026,9 @@ nochange:
if (ndents)
copycurname();
goto begin;
case SEL_RENAMEALL:
case SEL_RENAMEMUL:
endselection();

if (!batch_rename(path)) {
printwait("batch rename failed", &presel);
goto nochange;
@@ -4185,6 +4196,8 @@ nochange:
case SEL_MV:
case SEL_RMMUL:
{
endselection();

if (!selsafe()) {
presel = MSGWAIT;
goto nochange;
@@ -4242,10 +4255,13 @@ nochange:
case SEL_ARCHIVE:
r = get_input("archive selection (else current)? [y/Y confirms]");
if (r == 'y' || r == 'Y') {
endselection();

if (!selsafe()) {
presel = MSGWAIT;
goto nochange;
}

tmp = NULL;
} else if (!ndents) {
printwait("no files", &presel);
@@ -4409,6 +4425,8 @@ nochange:
case SEL_PLUGIN: // fallthrough
case SEL_LAUNCH: // fallthrough
case SEL_RUNCMD:
endselection();

switch (sel) {
case SEL_EXEC:
if (!execute_file(cur, path, newpath, &presel))


+ 2
- 2
src/nnn.h View File

@@ -84,7 +84,7 @@ enum action {
SEL_OPENWITH,
SEL_NEW,
SEL_RENAME,
SEL_RENAMEALL,
SEL_RENAMEMUL,
SEL_SSHFS,
SEL_UMOUNT,
SEL_HELP,
@@ -220,7 +220,7 @@ static struct key bindings[] = {
{ CONTROL('R'), SEL_RENAME },
{ KEY_F(2), SEL_RENAME },
/* Rename contents of current dir */
{ 'r', SEL_RENAMEALL },
{ 'r', SEL_RENAMEMUL },
/* Connect to server over SSHFS */
{ 'c', SEL_SSHFS },
/* Disconnect a SSHFS mount point */


Loading…
Cancel
Save