]> Sergey Matveev's repositories - nnn.git/commitdiff
Refactor cp, mv, cp-mv as, rm
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 19 Oct 2019 07:55:50 +0000 (13:25 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 19 Oct 2019 07:55:50 +0000 (13:25 +0530)
src/.clang-tidy
src/nnn.c

index 9a418ec812df92b9afcd3be66fb994f05ac7b8e1..a2815f0610a383acbe1734bc773b68ae16929326 100644 (file)
@@ -11,5 +11,5 @@ CheckOptions:
   - key:             fuchsia-restrict-system-includes.Includes
     value:           '*,-stdint.h,-stdbool.h'
   - key:             readability-function-size.StatementThreshold
-    value:           '1000'
+    value:           '950'
 ...
index cfee8dd0608924a15fea040e476953bc73e0dc4c..d10b94352d737b643df930593a8946ab384cad3d 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1360,6 +1360,55 @@ finish:
        return ret;
 }
 
+static bool cpmvrm_selection(enum action sel, char *path, int *presel)
+{
+       int r;
+
+       endselection();
+
+       if (!selsafe()) {
+               *presel = MSGWAIT;
+               return FALSE;
+       }
+
+       switch (sel) {
+       case SEL_CP:
+               opstr(g_buf, cp);
+               break;
+       case SEL_MV:
+               opstr(g_buf, mv);
+               break;
+       case SEL_CPMVAS:
+               r = get_input("'c'p / 'm'v as?");
+               if (r != 'c' && r != 'm') {
+                       if (cfg.filtermode)
+                               *presel = FILTER;
+                       return FALSE;
+               }
+
+               if (!cpmv_rename(r, path)) {
+                       printwait(messages[OPERATION_FAILED], presel);
+                       return FALSE;
+               }
+               break;
+       default: /* SEL_RMMUL */
+               rmmulstr(g_buf);
+               break;
+       }
+
+       if (sel != SEL_CPMVAS)
+               spawn(utils[SH_EXEC], g_buf, NULL, path, F_CLI);
+
+       /* Clear selection on move or delete */
+       if (sel != SEL_CP)
+               clearselection();
+
+       if (cfg.filtermode)
+               *presel = FILTER;
+
+       return TRUE;
+}
+
 static bool batch_rename(const char *path)
 {
        int fd1, fd2, i;
@@ -4592,49 +4641,11 @@ nochange:
                case SEL_CPMVAS: // fallthrough
                case SEL_RMMUL:
                {
-                       endselection();
-
-                       if (!selsafe()) {
-                               presel = MSGWAIT;
+                       if (!cpmvrm_selection(sel, path, &presel))
                                goto nochange;
-                       }
-
-                       switch (sel) {
-                       case SEL_CP:
-                               opstr(g_buf, cp);
-                               break;
-                       case SEL_MV:
-                               opstr(g_buf, mv);
-                               break;
-                       case SEL_CPMVAS:
-                               r = get_input("'c'p / 'm'v as?");
-                               if (r != 'c' && r != 'm') {
-                                       if (cfg.filtermode)
-                                               presel = FILTER;
-                                       goto nochange;
-                               }
-
-                               if (!cpmv_rename(r, path)) {
-                                       printwait(messages[OPERATION_FAILED], &presel);
-                                       goto nochange;
-                               }
-                               break;
-                       default: /* SEL_RMMUL */
-                               rmmulstr(g_buf);
-                               break;
-                       }
-
-                       if (sel != SEL_CPMVAS)
-                               spawn(utils[SH_EXEC], g_buf, NULL, path, F_CLI);
-
-                       /* Clear selection on move or delete */
-                       if (sel != SEL_CP)
-                               clearselection();
 
                        if (ndents)
                                copycurname();
-                       if (cfg.filtermode)
-                               presel = FILTER;
                        goto begin;
                }
                case SEL_RM:
@@ -5019,7 +5030,7 @@ nochange:
                                }
                        }
                        return;
-        case SEL_SESSIONS:
+               case SEL_SESSIONS:
                        r = get_input("'s'(ave) / 'l'(oad) / 'r'(estore) session?");
 
                        if (r == 's') {