--- help.c 2003-09-08 16:25:33.000000000 +0200 +++ help.c.new 2005-08-24 15:00:17.818478223 +0200 @@ -37,6 +37,7 @@ extern struct mchar mchar_blank, mchar_so; extern unsigned char *blank; extern struct win *wtab[]; +extern int maxwin; static void PadStr __P((char *, int, int, int)); @@ -896,6 +897,23 @@ } static void +exchangeWindow(wlistdata, diff) +struct wlistdata *wlistdata; +int diff; +{ + int pos = wlistdata->pos; + int new = pos+diff; + if (new >= 0 && new < maxwin && wtab[new]) { + struct win *oldwin = wtab[pos]; + wtab[pos] = wtab[new]; + wtab[pos]->w_number = pos; + wtab[new] = oldwin; + wtab[new]->w_number = new; + } + WListMove(diff, -1); /* refresh the screen */ +} + +static void WListProcess(ppbuf, plen) char **ppbuf; int *plen; @@ -930,6 +948,16 @@ case 'k': WListMove(-1, -1); break; + + case 'N': + case 'J': + exchangeWindow(wlistdata, 1); + break; + case 'P': + case 'K': + exchangeWindow(wlistdata, -1); + break; + case 0216: /* down */ case 14: /* ^N like emacs */ case 'j':