lib/mp-readline: Make it easy to exit auto-indent mode by pressing enter.
This patch allows you to stop auto-indent by pressing enter on a second blank line. Easier than having to use backspace, and prevents new users from getting stuck in auto-indent mode.gcollect-auto-setjmp
parent
e6dccaf18e
commit
b7ca945877
|
@ -49,6 +49,10 @@ Finally type ``print(i)``, press RETURN, press BACKSPACE and press RETURN again:
|
||||||
3
|
3
|
||||||
>>>
|
>>>
|
||||||
|
|
||||||
|
Auto-indent won't be applied if the previous two lines were all spaces. This
|
||||||
|
means that you can finish entering a compound statment by pressing RETURN
|
||||||
|
twice, and then a third press will finish and execute.
|
||||||
|
|
||||||
Auto-completion
|
Auto-completion
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,18 @@ STATIC void readline_auto_indent(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// i=start of line; j=first non-space
|
// i=start of line; j=first non-space
|
||||||
|
if (i > 0 && j + 1 == line->len) {
|
||||||
|
// previous line is not first line and is all spaces
|
||||||
|
for (size_t k = i - 1; k > 0; --k) {
|
||||||
|
if (line->buf[k - 1] == '\n') {
|
||||||
|
// don't auto-indent if last 2 lines are all spaces
|
||||||
|
return;
|
||||||
|
} else if (line->buf[k - 1] != ' ') {
|
||||||
|
// 2nd previous line is not all spaces
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
int n = (j - i) / 4;
|
int n = (j - i) / 4;
|
||||||
if (line->buf[line->len - 2] == ':') {
|
if (line->buf[line->len - 2] == ':') {
|
||||||
n += 1;
|
n += 1;
|
||||||
|
|
Loading…
Reference in New Issue