diff options
| author | 2014-10-21 15:13:21 +0100 | |
|---|---|---|
| committer | 2014-10-21 15:14:04 +0100 | |
| commit | 61bc5cd817ca25f2a1b2c3d10f739772376d1dbe (patch) | |
| tree | e8f3d332e4e94cb72434c56e0d5f50110a22b862 | |
| parent | 58f897fead53d15621029d5f76a68500588a23af (diff) | |
| download | nnn-61bc5cd817ca25f2a1b2c3d10f739772376d1dbe.tar.gz | |
Add 'c' command to change into a destination directory by typing the path
| -rw-r--r-- | README | 3 | ||||
| -rw-r--r-- | noice.c | 25 |
2 files changed, 27 insertions, 1 deletions
@@ -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 @@ -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; + } } } |