noice

small file browser
git clone git://git.2f30.org/noice.git
Log | Files | Refs | README | LICENSE

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:
README | 3++-
noice.c | 25+++++++++++++++++++++++++
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; + } } }