diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2020-03-11 17:52:38 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2020-03-11 17:52:38 +0530 |
commit | f527dd1c6a6f2065ce9cdfb4337399021265631f (patch) | |
tree | aeba9045479232bb6e240b8bd4a2c7cf7834601c /src | |
parent | 29fe67b7995d0db5e96df6f949acc06c94a54e82 (diff) | |
download | nnn-f527dd1c6a6f2065ce9cdfb4337399021265631f.tar.gz |
Integrate batch renamer plugin
Diffstat (limited to 'src')
-rw-r--r-- | src/nnn.c | 25 |
1 files changed, 16 insertions, 9 deletions
@@ -431,6 +431,7 @@ static uchar g_states; #define UTIL_FZY 16 #define UTIL_NTFY 17 #define UTIL_CBCP 18 +#define UTIL_BATCHRENAME 19 /* Utilities to open files, run actions */ static char * const utils[] = { @@ -469,6 +470,7 @@ static char * const utils[] = { "fzy", ".ntfy", ".cbcp", + "batchrename", }; /* Common strings */ @@ -681,7 +683,7 @@ static void move_cursor(int target, int ignore_scrolloff); static inline bool getutil(char *util); static size_t mkpath(const char *dir, const char *name, char *out); static char *xgetenv(const char *name, char *fallback); -static void plugscript(const char *plugin, char *newpath, uchar flags); +static bool plugscript(const char *plugin, char *newpath, const char *path, uchar flags); /* Functions */ @@ -4206,11 +4208,15 @@ static bool run_selected_plugin(char **path, const char *file, char *newpath, ch return TRUE; } -static void plugscript(const char *plugin, char *newpath, uchar flags) +static bool plugscript(const char *plugin, char *newpath, const char *path, uchar flags) { mkpath(plugindir, plugin, newpath); - if (!access(newpath, X_OK)) - spawn(newpath, NULL, NULL, NULL, flags); + if (!access(newpath, X_OK)) { + spawn(newpath, NULL, NULL, path, flags); + return TRUE; + } + + return FALSE; } static void launch_app(const char *path, char *newpath) @@ -5601,7 +5607,8 @@ nochange: case SEL_RENAMEMUL: endselection(); - if (!batch_rename(path)) { + if (!plugscript(utils[UTIL_BATCHRENAME], newpath, path, F_CLI) + && !batch_rename(path)) { printwait(messages[MSG_FAILED], &presel); goto nochange; } @@ -5657,7 +5664,7 @@ nochange: } if (cfg.x11) - plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE); + plugscript(utils[UTIL_CBCP], newpath, NULL, F_NOWAIT | F_NOTRACE); if (!nselected) unlink(selpath); @@ -5733,7 +5740,7 @@ nochange: writesel(pselbuf, selbufpos - 1); /* Truncate NULL from end */ if (cfg.x11) - plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE); + plugscript(utils[UTIL_CBCP], newpath, NULL, F_NOWAIT | F_NOTRACE); continue; case SEL_SELEDIT: r = editselection(); @@ -5742,7 +5749,7 @@ nochange: printwait(messages[r], &presel); } else { if (cfg.x11) - plugscript(utils[UTIL_CBCP], newpath, F_NOWAIT | F_NOTRACE); + plugscript(utils[UTIL_CBCP], newpath, NULL, F_NOWAIT | F_NOTRACE); cfg.filtermode ? presel = FILTER : statusbar(path); } goto nochange; @@ -5788,7 +5795,7 @@ nochange: /* Show notification on operation complete */ if (cfg.x11) - plugscript(utils[UTIL_NTFY], newpath, F_NOWAIT | F_NOTRACE); + plugscript(utils[UTIL_NTFY], newpath, NULL, F_NOWAIT | F_NOTRACE); if (ndents) copycurname(); |