mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-08 09:41:14 +02:00
better wrap around for cursor movement widgets; avoid flicker when leaving menu-selection (10978)
This commit is contained in:
parent
df82526ec8
commit
a35472cb31
2 changed files with 51 additions and 6 deletions
|
@ -1,5 +1,8 @@
|
||||||
2000-04-27 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
|
2000-04-27 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
|
||||||
|
|
||||||
|
* 10978: Src/Zle/complist.c: better wrap around for cursor
|
||||||
|
movement widgets; avoid flicker when leaving menu-selection
|
||||||
|
|
||||||
* 10977: and Andrej: 10976: Completion/User/_make: use $words[1]
|
* 10977: and Andrej: 10976: Completion/User/_make: use $words[1]
|
||||||
to call make in _make and throw away stderr and use _call
|
to call make in _make and throw away stderr and use _call
|
||||||
|
|
||||||
|
|
|
@ -1458,7 +1458,7 @@ complistmatches(Hookdef dummy, Chdata dat)
|
||||||
amatches = oamatches;
|
amatches = oamatches;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (inselect)
|
if (inselect || mlbeg >= 0)
|
||||||
clearflag = 0;
|
clearflag = 0;
|
||||||
|
|
||||||
mscroll = 0;
|
mscroll = 0;
|
||||||
|
@ -1571,7 +1571,7 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
Thingy cmd;
|
Thingy cmd;
|
||||||
Menustack u = NULL;
|
Menustack u = NULL;
|
||||||
int i = 0, acc = 0, wishcol = 0, setwish = 0, oe = onlyexpl, wasnext = 0;
|
int i = 0, acc = 0, wishcol = 0, setwish = 0, oe = onlyexpl, wasnext = 0;
|
||||||
int space, lbeg = 0, step = 1;
|
int space, lbeg = 0, step = 1, wrap;
|
||||||
char *s;
|
char *s;
|
||||||
|
|
||||||
if (fdat || (dummy && (!(s = getsparam("MENUSELECT")) ||
|
if (fdat || (dummy && (!(s = getsparam("MENUSELECT")) ||
|
||||||
|
@ -1809,10 +1809,15 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
cmd == Th(z_downlineorhistory) ||
|
cmd == Th(z_downlineorhistory) ||
|
||||||
cmd == Th(z_downlineorsearch) ||
|
cmd == Th(z_downlineorsearch) ||
|
||||||
cmd == Th(z_vidownlineorhistory)) {
|
cmd == Th(z_vidownlineorhistory)) {
|
||||||
|
wrap = 0;
|
||||||
|
|
||||||
|
down:
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (mline == mlines - 1) {
|
if (mline == mlines - 1) {
|
||||||
p -= mline * mcols;
|
p -= mline * mcols;
|
||||||
mline = 0;
|
mline = 0;
|
||||||
|
wrap |= 1;
|
||||||
} else {
|
} else {
|
||||||
mline++;
|
mline++;
|
||||||
p += mcols;
|
p += mcols;
|
||||||
|
@ -1820,14 +1825,22 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
if (adjust_mcol(wishcol, &p, NULL))
|
if (adjust_mcol(wishcol, &p, NULL))
|
||||||
continue;
|
continue;
|
||||||
} while (!*p);
|
} while (!*p);
|
||||||
|
|
||||||
|
if (wrap == 1)
|
||||||
|
goto right;
|
||||||
} else if (cmd == Th(z_uphistory) ||
|
} else if (cmd == Th(z_uphistory) ||
|
||||||
cmd == Th(z_uplineorhistory) ||
|
cmd == Th(z_uplineorhistory) ||
|
||||||
cmd == Th(z_uplineorsearch) ||
|
cmd == Th(z_uplineorsearch) ||
|
||||||
cmd == Th(z_viuplineorhistory)) {
|
cmd == Th(z_viuplineorhistory)) {
|
||||||
|
wrap = 0;
|
||||||
|
|
||||||
|
up:
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (!mline) {
|
if (!mline) {
|
||||||
mline = mlines - 1;
|
mline = mlines - 1;
|
||||||
p += mline * mcols;
|
p += mline * mcols;
|
||||||
|
wrap |= 1;
|
||||||
} else {
|
} else {
|
||||||
mline--;
|
mline--;
|
||||||
p -= mcols;
|
p -= mcols;
|
||||||
|
@ -1835,6 +1848,9 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
if (adjust_mcol(wishcol, &p, NULL))
|
if (adjust_mcol(wishcol, &p, NULL))
|
||||||
continue;
|
continue;
|
||||||
} while (!*p);
|
} while (!*p);
|
||||||
|
|
||||||
|
if (wrap == 1)
|
||||||
|
goto left;
|
||||||
} else if (cmd == Th(z_emacsforwardword) ||
|
} else if (cmd == Th(z_emacsforwardword) ||
|
||||||
cmd == Th(z_viforwardword) ||
|
cmd == Th(z_viforwardword) ||
|
||||||
cmd == Th(z_viforwardwordend) ||
|
cmd == Th(z_viforwardwordend) ||
|
||||||
|
@ -1893,7 +1909,9 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
} else if (cmd == Th(z_beginningofhistory)) {
|
} else if (cmd == Th(z_beginningofhistory)) {
|
||||||
int ll;
|
int ll;
|
||||||
Cmatch **lp;
|
Cmatch **lp;
|
||||||
|
|
||||||
top:
|
top:
|
||||||
|
|
||||||
ll = mline;
|
ll = mline;
|
||||||
lp = p;
|
lp = p;
|
||||||
while (mline) {
|
while (mline) {
|
||||||
|
@ -1911,7 +1929,9 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
} else if (cmd == Th(z_endofhistory)) {
|
} else if (cmd == Th(z_endofhistory)) {
|
||||||
int ll;
|
int ll;
|
||||||
Cmatch **lp;
|
Cmatch **lp;
|
||||||
|
|
||||||
bottom:
|
bottom:
|
||||||
|
|
||||||
ll = mline;
|
ll = mline;
|
||||||
lp = p;
|
lp = p;
|
||||||
while (mline < mlines - 1) {
|
while (mline < mlines - 1) {
|
||||||
|
@ -1927,33 +1947,55 @@ domenuselect(Hookdef dummy, Chdata dat)
|
||||||
mline = ll;
|
mline = ll;
|
||||||
p = lp;
|
p = lp;
|
||||||
} else if (cmd == Th(z_forwardchar) || cmd == Th(z_viforwardchar)) {
|
} else if (cmd == Th(z_forwardchar) || cmd == Th(z_viforwardchar)) {
|
||||||
int omcol = mcol;
|
int omcol;
|
||||||
Cmatch *op = *p;
|
Cmatch *op;
|
||||||
|
|
||||||
|
wrap = 0;
|
||||||
|
|
||||||
|
right:
|
||||||
|
|
||||||
|
omcol = mcol;
|
||||||
|
op = *p;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (mcol == mcols - 1) {
|
if (mcol == mcols - 1) {
|
||||||
p -= mcol;
|
p -= mcol;
|
||||||
mcol = 0;
|
mcol = 0;
|
||||||
|
wrap |= 2;
|
||||||
} else {
|
} else {
|
||||||
mcol++;
|
mcol++;
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
} while (!*p || (mcol != omcol && *p == op));
|
} while (!*p || (mcol != omcol && *p == op));
|
||||||
wishcol = mcol;
|
wishcol = mcol;
|
||||||
|
|
||||||
|
if (wrap == 2)
|
||||||
|
goto down;
|
||||||
} else if (cmd == Th(z_backwardchar) || cmd == Th(z_vibackwardchar)) {
|
} else if (cmd == Th(z_backwardchar) || cmd == Th(z_vibackwardchar)) {
|
||||||
int omcol = mcol;
|
int omcol;
|
||||||
Cmatch *op = *p;
|
Cmatch *op;
|
||||||
|
|
||||||
|
wrap = 0;
|
||||||
|
|
||||||
|
left:
|
||||||
|
|
||||||
|
omcol = mcol;
|
||||||
|
op = *p;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (!mcol) {
|
if (!mcol) {
|
||||||
mcol = mcols - 1;
|
mcol = mcols - 1;
|
||||||
p += mcol;
|
p += mcol;
|
||||||
|
wrap |= 2;
|
||||||
} else {
|
} else {
|
||||||
mcol--;
|
mcol--;
|
||||||
p--;
|
p--;
|
||||||
}
|
}
|
||||||
} while (!*p || (mcol != omcol && *p == op));
|
} while (!*p || (mcol != omcol && *p == op));
|
||||||
wishcol = mcol;
|
wishcol = mcol;
|
||||||
|
|
||||||
|
if (wrap == 2)
|
||||||
|
goto up;
|
||||||
} else if (cmd == Th(z_beginningofbufferorhistory) ||
|
} else if (cmd == Th(z_beginningofbufferorhistory) ||
|
||||||
cmd == Th(z_beginningofline) ||
|
cmd == Th(z_beginningofline) ||
|
||||||
cmd == Th(z_beginningoflinehist) ||
|
cmd == Th(z_beginningoflinehist) ||
|
||||||
|
|
Loading…
Reference in a new issue