Bladeren bron

Implement dir auto-select in nav-as-you-type mode.

If only one entry matches regex filter and it it a directory, cd into it.
master
Arun Prakash Jana 6 jaren geleden
bovenliggende
commit
bf36462a2b
Geen bekende sleutel gevonden voor deze handtekening in de database GPG sleutel-ID: A75979F35C080412
3 gewijzigde bestanden met toevoegingen van 19 en 0 verwijderingen
  1. +2
    -0
      README.md
  2. +2
    -0
      nnn.1
  3. +15
    -0
      nnn.c

+ 2
- 0
README.md Bestand weergeven

@@ -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 case of only one match and it's a directory, `nnn` auto selects the directory and enters it in this mode.

#### File indicators

The following indicators are used in the detail view:


+ 2
- 0
nnn.1 Bestand weergeven

@@ -206,6 +206,8 @@ is invoked as root or the environment variable \fBNNN_SHOW_HIDDEN\fR is set the
.Pp
In the \fInavigate-as-you-type\fR mode directories are opened in filter mode,
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
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).


+ 15
- 0
nnn.c Bestand weergeven

@@ -1161,6 +1161,21 @@ filterentries(char *path)
ndents = total;
if (matches(pln) == -1)
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);
printprompt(ln);
}


Laden…
Annuleren
Opslaan