If only one entry matches regex filter and it it a directory, cd into it.master
@@ -276,6 +276,8 @@ If `nnn` is invoked as root or the environment variable `NNN_SHOW_HIDDEN` is set | |||||
In this mode directories are opened in filter mode, allowing continuous navigation. Works best with the **arrow keys**. | In this mode directories are opened in filter mode, allowing continuous navigation. Works best with the **arrow keys**. | ||||
In case of only one match and it's a directory, `nnn` auto selects the directory and enters it in this mode. | |||||
#### File indicators | #### File indicators | ||||
The following indicators are used in the detail view: | The following indicators are used in the detail view: | ||||
@@ -206,6 +206,8 @@ is invoked as root or the environment variable \fBNNN_SHOW_HIDDEN\fR is set the | |||||
.Pp | .Pp | ||||
In the \fInavigate-as-you-type\fR mode directories are opened in filter mode, | In the \fInavigate-as-you-type\fR mode directories are opened in filter mode, | ||||
allowing continuous navigation. Works best with the \fBarrow keys\fR. | allowing continuous navigation. Works best with the \fBarrow keys\fR. | ||||
.br | |||||
In case of only one match and it's a directory, `nnn` auto selects the directory and enters it in this mode. | |||||
.Sh MULTI-COPY MODE | .Sh MULTI-COPY MODE | ||||
The absolute path of a single file can be copied to clipboard by pressing \fI^K\fR if | The absolute path of a single file can be copied to clipboard by pressing \fI^K\fR if | ||||
NNN_COPIER is set (see ENVIRONMENT section below). | NNN_COPIER is set (see ENVIRONMENT section below). | ||||
@@ -1161,6 +1161,21 @@ filterentries(char *path) | |||||
ndents = total; | ndents = total; | ||||
if (matches(pln) == -1) | if (matches(pln) == -1) | ||||
continue; | continue; | ||||
/* If the only match is a dir, auto-select and cd into it */ | |||||
if (cfg.filtermode && ndents == 1 && S_ISDIR(dents[0].mode)) { | |||||
*ch = KEY_ENTER; | |||||
cur = 0; | |||||
goto end; | |||||
} | |||||
/* | |||||
* redraw() should be above the auto-select optimization, for | |||||
* the case where there's an issue with dir auto-select, say, | |||||
* due to a permission problem. The transition is jumpy in | |||||
* case of such an error. However, we optimize for successful | |||||
* cases where the dir has permissions. This skips a redraw(). | |||||
*/ | |||||
redraw(path); | redraw(path); | ||||
printprompt(ln); | printprompt(ln); | ||||
} | } | ||||