commit 61bc5cd817ca25f2a1b2c3d10f739772376d1dbe
parent 58f897fead53d15621029d5f76a68500588a23af
Author: sin <sin@2f30.org>
Date: Tue, 21 Oct 2014 15:13:21 +0100
Add 'c' command to change into a destination directory by typing the path
Diffstat:
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/README b/README
@@ -35,8 +35,9 @@ You can navigate the list using the following keybinds (hardcoded):
| l | RIGHT | ^M | open file / directory (see section "File opening")
| h | LEFT | ^? | navigate up one directory
| / | & | | filter output
-| q | | | exit program
| ! | | | spawn shell in current directory
+| c | | | type and change into destination directory
+| q | | | exit program
+------+-------+-------+---------------------------------------------------
File opening
diff --git a/noice.c b/noice.c
@@ -204,6 +204,7 @@ enum {
SEL_GOIN,
SEL_FLTR,
SEL_SH,
+ SEL_CD,
};
int
@@ -258,6 +259,8 @@ nextsel(int *cur, int max)
break;
case '!':
return SEL_SH;
+ case 'c':
+ return SEL_CD;
}
return 0;
@@ -604,6 +607,28 @@ nochange:
if (chdir(ipath) == -1)
printwarn();
break;
+ case SEL_CD:
+ /* Read target dir */
+ printmsg("");
+ move(LINES - 1, 0);
+ printw("chdir: ");
+ tmp = readln();
+ if (tmp == NULL) {
+ printmsg("");
+ goto nochange;
+ }
+ if (testopendir(tmp) == 0) {
+ printwarn();
+ goto nochange;
+ } else {
+ free(path);
+ path = strdup(tmp);
+ free(filter);
+ filter = strdup(ifilter); /* Reset filter */
+ DPRINTF_S(path);
+ cur = 0;
+ goto out;
+ }
}
}