mirror of
https://github.com/sheumann/hush.git
synced 2025-01-03 00:31:16 +00:00
less: handle yet another Home/End key sequence; expand a comment
This commit is contained in:
parent
e11b4a4705
commit
f5a157615d
@ -48,8 +48,10 @@ enum {
|
|||||||
REAL_KEY_LEFT = 'D',
|
REAL_KEY_LEFT = 'D',
|
||||||
REAL_PAGE_UP = '5',
|
REAL_PAGE_UP = '5',
|
||||||
REAL_PAGE_DOWN = '6',
|
REAL_PAGE_DOWN = '6',
|
||||||
REAL_KEY_HOME = '7',
|
REAL_KEY_HOME = '7', // vt100? linux vt? or what?
|
||||||
REAL_KEY_END = '8',
|
REAL_KEY_END = '8',
|
||||||
|
REAL_KEY_HOME_ALT = '1', // ESC [1~ (vt100? linux vt? or what?)
|
||||||
|
REAL_KEY_END_ALT = '4', // ESC [4~
|
||||||
REAL_KEY_HOME_XTERM = 'H',
|
REAL_KEY_HOME_XTERM = 'H',
|
||||||
REAL_KEY_END_XTERM = 'F',
|
REAL_KEY_END_XTERM = 'F',
|
||||||
|
|
||||||
@ -213,9 +215,12 @@ static void read_lines(void)
|
|||||||
if (errno == EAGAIN && !yielded) {
|
if (errno == EAGAIN && !yielded) {
|
||||||
/* We can hit EAGAIN while searching for regexp match.
|
/* We can hit EAGAIN while searching for regexp match.
|
||||||
* Yield is not 100% reliable solution in general,
|
* Yield is not 100% reliable solution in general,
|
||||||
* but for less it should be good enough.
|
* but for less it should be good enough -
|
||||||
* We give stdin supplier some CPU time to produce more.
|
* we give stdin supplier some CPU time to produce
|
||||||
* We do it just once. */
|
* more input. We do it just once.
|
||||||
|
* Currently, we do not stop when we found the Nth
|
||||||
|
* occurrence we were looking for. We read till end
|
||||||
|
* (or double EAGAIN). TODO? */
|
||||||
sched_yield();
|
sched_yield();
|
||||||
yielded = 1;
|
yielded = 1;
|
||||||
goto read_again;
|
goto read_again;
|
||||||
@ -638,8 +643,12 @@ static int less_getch(void)
|
|||||||
return 24 + i;
|
return 24 + i;
|
||||||
if (input[2] == REAL_KEY_HOME_XTERM)
|
if (input[2] == REAL_KEY_HOME_XTERM)
|
||||||
return KEY_HOME;
|
return KEY_HOME;
|
||||||
|
if (input[2] == REAL_KEY_HOME_ALT)
|
||||||
|
return KEY_HOME;
|
||||||
if (input[2] == REAL_KEY_END_XTERM)
|
if (input[2] == REAL_KEY_END_XTERM)
|
||||||
return KEY_END;
|
return KEY_END;
|
||||||
|
if (input[2] == REAL_KEY_END_ALT)
|
||||||
|
return KEY_END;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* Reject almost all control chars */
|
/* Reject almost all control chars */
|
||||||
|
Loading…
Reference in New Issue
Block a user