lineedit: match local directories when searching PATH
When tab-completing a command we search PATH if the partial text doesn't include a slash. Also match subdirectories of the current directory, in case the user intends to run a binary from one of them. function old new delta complete_cmd_dir_file 894 917 +23 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/0 up/down: 23/0) Total: 23 bytes Signed-off-by: Ron Yorston <rmy@pobox.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
8506dd6730
commit
8baa643a34
@ -753,7 +753,7 @@ static int path_parse(char ***p)
|
||||
return 1;
|
||||
|
||||
tmp = (char*)pth;
|
||||
npth = 1; /* path component count */
|
||||
npth = 2; /* path component count */
|
||||
while (1) {
|
||||
tmp = strchr(tmp, ':');
|
||||
if (!tmp)
|
||||
@ -776,6 +776,8 @@ static int path_parse(char ***p)
|
||||
break; /* :<empty> */
|
||||
res[npth++] = tmp;
|
||||
}
|
||||
/* special case: match subdirectories of the current directory */
|
||||
res[npth++] = NULL;
|
||||
return npth;
|
||||
}
|
||||
|
||||
@ -843,6 +845,11 @@ static NOINLINE unsigned complete_cmd_dir_file(const char *command, int type)
|
||||
struct stat st;
|
||||
char *found;
|
||||
|
||||
if (paths[i] == NULL) {
|
||||
type = FIND_DIR_ONLY;
|
||||
paths[i] = (char *)".";
|
||||
}
|
||||
|
||||
dir = opendir(paths[i]);
|
||||
if (!dir)
|
||||
continue; /* don't print an error */
|
||||
|
Loading…
Reference in New Issue
Block a user