mirror of
https://github.com/jarun/nnn.git
synced 2024-12-03 20:06:51 +00:00
Remove filter as you type mode
Nobody uses it and adds additional complexity.
This commit is contained in:
parent
d909de605c
commit
9f6d1cfb33
|
@ -32,8 +32,6 @@ struct key bindings[] = {
|
||||||
/* Filter */
|
/* Filter */
|
||||||
{ '/', SEL_FLTR },
|
{ '/', SEL_FLTR },
|
||||||
{ '&', SEL_FLTR },
|
{ '&', SEL_FLTR },
|
||||||
/* Filter as you type */
|
|
||||||
{ '?', SEL_TYPE },
|
|
||||||
/* Next */
|
/* Next */
|
||||||
{ 'j', SEL_NEXT },
|
{ 'j', SEL_NEXT },
|
||||||
{ KEY_DOWN, SEL_NEXT },
|
{ KEY_DOWN, SEL_NEXT },
|
||||||
|
|
2
noice.1
2
noice.1
|
@ -47,8 +47,6 @@ Open file or enter directory.
|
||||||
Back up one directory level.
|
Back up one directory level.
|
||||||
.It Ic / or &
|
.It Ic / or &
|
||||||
Change filter (see below for more information).
|
Change filter (see below for more information).
|
||||||
.It Ic \&?
|
|
||||||
Enter filter-as-you-type mode.
|
|
||||||
.It Ic c
|
.It Ic c
|
||||||
Change into the given directory.
|
Change into the given directory.
|
||||||
.It Ic t
|
.It Ic t
|
||||||
|
|
94
noice.c
94
noice.c
|
@ -50,7 +50,6 @@ enum action {
|
||||||
SEL_BACK,
|
SEL_BACK,
|
||||||
SEL_GOIN,
|
SEL_GOIN,
|
||||||
SEL_FLTR,
|
SEL_FLTR,
|
||||||
SEL_TYPE,
|
|
||||||
SEL_NEXT,
|
SEL_NEXT,
|
||||||
SEL_PREV,
|
SEL_PREV,
|
||||||
SEL_PGDN,
|
SEL_PGDN,
|
||||||
|
@ -355,58 +354,6 @@ readln(void)
|
||||||
return ln[0] ? strdup(ln) : NULL;
|
return ln[0] ? strdup(ln) : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Read one key and modify the provided string accordingly.
|
|
||||||
* Returns 0 when more input is expected and 1 on completion.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
readmore(char **str)
|
|
||||||
{
|
|
||||||
int c, ret = 0;
|
|
||||||
int i;
|
|
||||||
char *ln = *str;
|
|
||||||
|
|
||||||
timeout(-1);
|
|
||||||
if (ln != NULL)
|
|
||||||
i = strlen(ln);
|
|
||||||
else
|
|
||||||
i = 0;
|
|
||||||
DPRINTF_D(i);
|
|
||||||
|
|
||||||
curs_set(TRUE);
|
|
||||||
|
|
||||||
c = getch();
|
|
||||||
switch (c) {
|
|
||||||
case KEY_ENTER:
|
|
||||||
case '\r':
|
|
||||||
ret = 1;
|
|
||||||
break;
|
|
||||||
case KEY_BACKSPACE:
|
|
||||||
case CONTROL('H'):
|
|
||||||
i--;
|
|
||||||
if (i > 0) {
|
|
||||||
ln = xrealloc(ln, (i + 1) * sizeof(*ln));
|
|
||||||
ln[i] = '\0';
|
|
||||||
} else {
|
|
||||||
free(ln);
|
|
||||||
ln = NULL;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
i++;
|
|
||||||
ln = xrealloc(ln, (i + 1) * sizeof(*ln));
|
|
||||||
ln[i - 1] = c;
|
|
||||||
ln[i] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
curs_set(FALSE);
|
|
||||||
|
|
||||||
*str = ln;
|
|
||||||
timeout(1000);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
canopendir(char *path)
|
canopendir(char *path)
|
||||||
{
|
{
|
||||||
|
@ -627,25 +574,18 @@ browse(const char *ipath, const char *ifilter)
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
regex_t re;
|
regex_t re;
|
||||||
int r, fd;
|
int r, fd;
|
||||||
int nowtyping = 0;
|
|
||||||
|
|
||||||
strlcpy(path, ipath, sizeof(path));
|
strlcpy(path, ipath, sizeof(path));
|
||||||
strlcpy(fltr, ifilter, sizeof(fltr));
|
strlcpy(fltr, ifilter, sizeof(fltr));
|
||||||
begin:
|
begin:
|
||||||
r = populate();
|
r = populate();
|
||||||
if (r == -1) {
|
if (r == -1) {
|
||||||
if (!nowtyping) {
|
|
||||||
printwarn();
|
printwarn();
|
||||||
goto nochange;
|
goto nochange;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
redraw();
|
redraw();
|
||||||
|
|
||||||
/* Handle filter-as-you-type mode */
|
|
||||||
if (nowtyping)
|
|
||||||
goto moretyping;
|
|
||||||
nochange:
|
nochange:
|
||||||
switch (nextsel(&run, &env)) {
|
switch (nextsel(&run, &env)) {
|
||||||
case SEL_QUIT:
|
case SEL_QUIT:
|
||||||
|
@ -734,40 +674,6 @@ nochange:
|
||||||
if (n > 0)
|
if (n > 0)
|
||||||
mkpath(path, dents[cur].name, oldpath, sizeof(oldpath));
|
mkpath(path, dents[cur].name, oldpath, sizeof(oldpath));
|
||||||
goto begin;
|
goto begin;
|
||||||
case SEL_TYPE:
|
|
||||||
nowtyping = 1;
|
|
||||||
tmp = NULL;
|
|
||||||
moretyping:
|
|
||||||
printprompt("type: ");
|
|
||||||
if (tmp != NULL)
|
|
||||||
printw("%s", tmp);
|
|
||||||
r = readmore(&tmp);
|
|
||||||
DPRINTF_D(r);
|
|
||||||
DPRINTF_S(tmp);
|
|
||||||
if (r == 1)
|
|
||||||
nowtyping = 0;
|
|
||||||
/* Check regex errors */
|
|
||||||
if (tmp != NULL) {
|
|
||||||
r = setfilter(&re, tmp);
|
|
||||||
if (r != 0)
|
|
||||||
if (nowtyping) {
|
|
||||||
goto moretyping;
|
|
||||||
} else {
|
|
||||||
free(tmp);
|
|
||||||
goto nochange;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Copy or reset filter */
|
|
||||||
if (tmp != NULL)
|
|
||||||
strlcpy(fltr, tmp, sizeof(fltr));
|
|
||||||
else
|
|
||||||
strlcpy(fltr, ifilter, sizeof(fltr));
|
|
||||||
/* Save current */
|
|
||||||
if (n > 0)
|
|
||||||
mkpath(path, dents[cur].name, oldpath, sizeof(oldpath));
|
|
||||||
if (!nowtyping)
|
|
||||||
free(tmp);
|
|
||||||
goto begin;
|
|
||||||
case SEL_NEXT:
|
case SEL_NEXT:
|
||||||
if (cur < n - 1)
|
if (cur < n - 1)
|
||||||
cur++;
|
cur++;
|
||||||
|
|
Loading…
Reference in a new issue