mirror of
https://github.com/janet-lang/janet
synced 2025-02-10 13:50:02 +00:00
Improve alt keys and at alt-f and alt-b to repl
This commit is contained in:
parent
da70807292
commit
f74e19e673
@ -334,6 +334,16 @@ static void kleft(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void kleftw(void) {
|
||||||
|
while (gbl_pos > 0 && isspace(gbl_buf[gbl_pos - 1])) {
|
||||||
|
gbl_pos--;
|
||||||
|
}
|
||||||
|
while (gbl_pos > 0 && !isspace(gbl_buf[gbl_pos - 1])) {
|
||||||
|
gbl_pos--;
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
static void kright(void) {
|
static void kright(void) {
|
||||||
if (gbl_pos != gbl_len) {
|
if (gbl_pos != gbl_len) {
|
||||||
gbl_pos++;
|
gbl_pos++;
|
||||||
@ -341,6 +351,16 @@ static void kright(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void krightw(void) {
|
||||||
|
while (gbl_pos != gbl_len && !isspace(gbl_buf[gbl_pos])) {
|
||||||
|
gbl_pos++;
|
||||||
|
}
|
||||||
|
while (gbl_pos != gbl_len && isspace(gbl_buf[gbl_pos])) {
|
||||||
|
gbl_pos++;
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
static void kbackspace(int draw) {
|
static void kbackspace(int draw) {
|
||||||
if (gbl_pos > 0) {
|
if (gbl_pos > 0) {
|
||||||
memmove(gbl_buf + gbl_pos - 1, gbl_buf + gbl_pos, gbl_len - gbl_pos);
|
memmove(gbl_buf + gbl_pos - 1, gbl_buf + gbl_pos, gbl_len - gbl_pos);
|
||||||
@ -383,6 +403,13 @@ static int is_symbol_char_gen(uint8_t c) {
|
|||||||
c == '_');
|
c == '_');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void kbackspaceword(void) {
|
||||||
|
while (gbl_pos && is_symbol_char_gen(gbl_buf[gbl_pos - 1])) {
|
||||||
|
kbackspace(0);
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
}
|
||||||
|
|
||||||
static JanetByteView get_symprefix(void) {
|
static JanetByteView get_symprefix(void) {
|
||||||
/* Calculate current partial symbol. Maybe we could actually hook up the Janet
|
/* Calculate current partial symbol. Maybe we could actually hook up the Janet
|
||||||
* parser here...*/
|
* parser here...*/
|
||||||
@ -605,10 +632,7 @@ static int line() {
|
|||||||
refresh();
|
refresh();
|
||||||
break;
|
break;
|
||||||
case 23: /* ctrl-w */
|
case 23: /* ctrl-w */
|
||||||
while (gbl_pos && is_symbol_char_gen(gbl_buf[gbl_pos - 1])) {
|
kbackspaceword();
|
||||||
kbackspace(0);
|
|
||||||
}
|
|
||||||
refresh();
|
|
||||||
break;
|
break;
|
||||||
case 26: /* ctrl-z */
|
case 26: /* ctrl-z */
|
||||||
norawmode();
|
norawmode();
|
||||||
@ -621,8 +645,8 @@ static int line() {
|
|||||||
* Use two calls to handle slow terminals returning the two
|
* Use two calls to handle slow terminals returning the two
|
||||||
* chars at different times. */
|
* chars at different times. */
|
||||||
if (read(STDIN_FILENO, seq, 1) == -1) break;
|
if (read(STDIN_FILENO, seq, 1) == -1) break;
|
||||||
if (read(STDIN_FILENO, seq + 1, 1) == -1) break;
|
|
||||||
if (seq[0] == '[') {
|
if (seq[0] == '[') {
|
||||||
|
if (read(STDIN_FILENO, seq + 1, 1) == -1) break;
|
||||||
if (seq[1] >= '0' && seq[1] <= '9') {
|
if (seq[1] >= '0' && seq[1] <= '9') {
|
||||||
/* Extended escape, read additional byte. */
|
/* Extended escape, read additional byte. */
|
||||||
if (read(STDIN_FILENO, seq + 2, 1) == -1) break;
|
if (read(STDIN_FILENO, seq + 2, 1) == -1) break;
|
||||||
@ -662,18 +686,16 @@ static int line() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (seq[0] == 'O') {
|
} else {
|
||||||
/* Alt codes */
|
/* Check alt-(shift) bindings */
|
||||||
switch (seq[1]) {
|
switch (seq[0]) {
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'b':
|
||||||
gbl_pos = 0;
|
kleftw();
|
||||||
refresh();
|
|
||||||
break;
|
break;
|
||||||
case 'F':
|
case 'f':
|
||||||
gbl_pos = gbl_len;
|
krightw();
|
||||||
refresh();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user