aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-03-11 17:52:38 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2020-03-11 17:52:38 +0530
commitf527dd1c6a6f2065ce9cdfb4337399021265631f (patch)
treeaeba9045479232bb6e240b8bd4a2c7cf7834601c /src
parent29fe67b7995d0db5e96df6f949acc06c94a54e82 (diff)
downloadnnn-f527dd1c6a6f2065ce9cdfb4337399021265631f.tar.gz
Integrate batch renamer plugin
Diffstat (limited to 'src')
-rw-r--r--src/nnn.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/nnn.c b/src/nnn.c
index d237063..c99af5a 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -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();