updated for version 7.0056
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 4c9d17d..4c6175b 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -320,9 +320,11 @@
switch (c)
{
case K_RIGHT: c = K_LEFT; break;
+ case K_XRIGHT: c = K_XLEFT; break;
case K_S_RIGHT: c = K_S_LEFT; break;
case K_C_RIGHT: c = K_C_LEFT; break;
case K_LEFT: c = K_RIGHT; break;
+ case K_XLEFT: c = K_XRIGHT; break;
case K_S_LEFT: c = K_S_RIGHT; break;
case K_C_LEFT: c = K_C_RIGHT; break;
}
@@ -354,10 +356,11 @@
/* free old command line when finished moving around in the history
* list */
if (lookfor != NULL
- && c != K_S_DOWN && c != K_S_UP && c != K_DOWN && c != K_UP
+ && c != K_S_DOWN && c != K_S_UP
+ && c != K_DOWN && c != K_UP && c != K_XDOWN && c != K_XUP
&& c != K_PAGEDOWN && c != K_PAGEUP
&& c != K_KPAGEDOWN && c != K_KPAGEUP
- && c != K_LEFT && c != K_RIGHT
+ && c != K_LEFT && c != K_RIGHT && c != K_XLEFT && c != K_XRIGHT
&& (xpc.xp_numfiles > 0 || (c != Ctrl_P && c != Ctrl_N)))
{
vim_free(lookfor);
@@ -375,9 +378,9 @@
/* Special translations for 'wildmenu' */
if (did_wild_list && p_wmnu)
{
- if (c == K_LEFT)
+ if (c == K_LEFT || c == K_XLEFT)
c = Ctrl_P;
- else if (c == K_RIGHT)
+ else if (c == K_RIGHT || c == K_XRIGHT)
c = Ctrl_N;
}
/* Hitting CR after "emenu Name.": complete submenu */
@@ -398,7 +401,8 @@
(void)ExpandOne(&xpc, NULL, NULL, 0, WILD_FREE);
did_wild_list = FALSE;
#ifdef FEAT_WILDMENU
- if (!p_wmnu || (c != K_UP && c != K_DOWN))
+ if (!p_wmnu || (c != K_UP && c != K_DOWN
+ && c != K_XUP && c != K_XDOWN))
#endif
xpc.xp_context = EXPAND_NOTHING;
wim_index = 0;
@@ -443,9 +447,10 @@
if (xpc.xp_context == EXPAND_MENUNAMES && p_wmnu)
{
/* Hitting <Down> after "emenu Name.": complete submenu */
- if (ccline.cmdbuff[ccline.cmdpos - 1] == '.' && c == K_DOWN)
+ if (ccline.cmdbuff[ccline.cmdpos - 1] == '.'
+ && (c == K_DOWN || c == K_XDOWN))
c = p_wc;
- else if (c == K_UP)
+ else if (c == K_UP || c == K_XUP)
{
/* Hitting <Up>: Remove one submenu name in front of the
* cursor */
@@ -492,14 +497,15 @@
upseg[4] = NUL;
if (ccline.cmdbuff[ccline.cmdpos - 1] == PATHSEP
- && c == K_DOWN
+ && (c == K_DOWN || c == K_XDOWN)
&& (ccline.cmdbuff[ccline.cmdpos - 2] != '.'
|| ccline.cmdbuff[ccline.cmdpos - 3] != '.'))
{
/* go down a directory */
c = p_wc;
}
- else if (STRNCMP(xpc.xp_pattern, upseg + 1, 3) == 0 && c == K_DOWN)
+ else if (STRNCMP(xpc.xp_pattern, upseg + 1, 3) == 0
+ && (c == K_DOWN || c == K_XDOWN))
{
/* If in a direct ancestor, strip off one ../ to go down */
int found = FALSE;
@@ -527,7 +533,7 @@
c = p_wc;
}
}
- else if (c == K_UP)
+ else if (c == K_UP || c == K_XUP)
{
/* go up a directory */
int found = FALSE;
@@ -1096,6 +1102,7 @@
continue; /* don't do incremental search now */
case K_RIGHT:
+ case K_XRIGHT:
case K_S_RIGHT:
case K_C_RIGHT:
do
@@ -1114,7 +1121,8 @@
#endif
++ccline.cmdpos;
}
- while ((c == K_S_RIGHT || c == K_C_RIGHT)
+ while ((c == K_S_RIGHT || c == K_C_RIGHT
+ || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL)))
&& ccline.cmdbuff[ccline.cmdpos] != ' ');
#ifdef FEAT_MBYTE
if (has_mbyte)
@@ -1123,6 +1131,7 @@
goto cmdline_not_changed;
case K_LEFT:
+ case K_XLEFT:
case K_S_LEFT:
case K_C_LEFT:
do
@@ -1137,7 +1146,8 @@
#endif
ccline.cmdspos -= cmdline_charsize(ccline.cmdpos);
}
- while ((c == K_S_LEFT || c == K_C_LEFT)
+ while ((c == K_S_LEFT || c == K_C_LEFT
+ || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL)))
&& ccline.cmdbuff[ccline.cmdpos - 1] != ' ');
#ifdef FEAT_MBYTE
if (has_mbyte)
@@ -1320,7 +1330,9 @@
#ifdef FEAT_CMDHIST
case K_UP:
+ case K_XUP:
case K_DOWN:
+ case K_XDOWN:
case K_S_UP:
case K_S_DOWN:
case K_PAGEUP:
@@ -1344,8 +1356,8 @@
for (;;)
{
/* one step backwards */
- if (c == K_UP || c == K_S_UP || c == Ctrl_P ||
- c == K_PAGEUP || c == K_KPAGEUP)
+ if (c == K_UP || c == K_XUP || c == K_S_UP || c == Ctrl_P
+ || c == K_PAGEUP || c == K_KPAGEUP)
{
if (hiscnt == hislen) /* first time */
hiscnt = hisidx[histype];
@@ -1381,7 +1393,8 @@
hiscnt = i;
break;
}
- if ((c != K_UP && c != K_DOWN) || hiscnt == i
+ if ((c != K_UP && c != K_DOWN && c != K_XUP && c != K_XDOWN)
+ || hiscnt == i
|| STRNCMP(history[histype][hiscnt].hisstr,
lookfor, (size_t)j) == 0)
break;