forked from aniani/vim
patch 8.2.4911: the mode #defines are not clearly named
Problem: The mode #defines are not clearly named. Solution: Prepend MODE_. Renumber them to put the mapped modes first.
This commit is contained in:
189
src/map.c
189
src/map.c
@@ -31,7 +31,7 @@ static int maphash_valid = FALSE;
|
||||
* Returns a value between 0 and 255, index in maphash.
|
||||
* Put Normal/Visual mode mappings mostly separately from Insert/Cmdline mode.
|
||||
*/
|
||||
#define MAP_HASH(mode, c1) (((mode) & (NORMAL + VISUAL + SELECTMODE + OP_PENDING + TERMINAL)) ? (c1) : ((c1) ^ 0x80))
|
||||
#define MAP_HASH(mode, c1) (((mode) & (MODE_NORMAL | MODE_VISUAL | MODE_SELECT | MODE_OP_PENDING | MODE_TERMINAL)) ? (c1) : ((c1) ^ 0x80))
|
||||
|
||||
/*
|
||||
* Get the start of the hashed map list for "state" and first character "c".
|
||||
@@ -101,32 +101,33 @@ map_mode_to_chars(int mode)
|
||||
|
||||
ga_init2(&mapmode, 1, 7);
|
||||
|
||||
if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
|
||||
if ((mode & (MODE_INSERT | MODE_CMDLINE)) == (MODE_INSERT | MODE_CMDLINE))
|
||||
ga_append(&mapmode, '!'); // :map!
|
||||
else if (mode & INSERT)
|
||||
else if (mode & MODE_INSERT)
|
||||
ga_append(&mapmode, 'i'); // :imap
|
||||
else if (mode & LANGMAP)
|
||||
else if (mode & MODE_LANGMAP)
|
||||
ga_append(&mapmode, 'l'); // :lmap
|
||||
else if (mode & CMDLINE)
|
||||
else if (mode & MODE_CMDLINE)
|
||||
ga_append(&mapmode, 'c'); // :cmap
|
||||
else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
|
||||
== NORMAL + VISUAL + SELECTMODE + OP_PENDING)
|
||||
else if ((mode
|
||||
& (MODE_NORMAL | MODE_VISUAL | MODE_SELECT | MODE_OP_PENDING))
|
||||
== (MODE_NORMAL | MODE_VISUAL | MODE_SELECT | MODE_OP_PENDING))
|
||||
ga_append(&mapmode, ' '); // :map
|
||||
else
|
||||
{
|
||||
if (mode & NORMAL)
|
||||
if (mode & MODE_NORMAL)
|
||||
ga_append(&mapmode, 'n'); // :nmap
|
||||
if (mode & OP_PENDING)
|
||||
if (mode & MODE_OP_PENDING)
|
||||
ga_append(&mapmode, 'o'); // :omap
|
||||
if (mode & TERMINAL)
|
||||
if (mode & MODE_TERMINAL)
|
||||
ga_append(&mapmode, 't'); // :tmap
|
||||
if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
|
||||
if ((mode & (MODE_VISUAL | MODE_SELECT)) == (MODE_VISUAL | MODE_SELECT))
|
||||
ga_append(&mapmode, 'v'); // :vmap
|
||||
else
|
||||
{
|
||||
if (mode & VISUAL)
|
||||
if (mode & MODE_VISUAL)
|
||||
ga_append(&mapmode, 'x'); // :xmap
|
||||
if (mode & SELECTMODE)
|
||||
if (mode & MODE_SELECT)
|
||||
ga_append(&mapmode, 's'); // :smap
|
||||
}
|
||||
}
|
||||
@@ -297,21 +298,21 @@ map_add(
|
||||
* arg is pointer to any arguments. Note: arg cannot be a read-only string,
|
||||
* it will be modified.
|
||||
*
|
||||
* for :map mode is NORMAL + VISUAL + SELECTMODE + OP_PENDING
|
||||
* for :map! mode is INSERT + CMDLINE
|
||||
* for :cmap mode is CMDLINE
|
||||
* for :imap mode is INSERT
|
||||
* for :lmap mode is LANGMAP
|
||||
* for :nmap mode is NORMAL
|
||||
* for :vmap mode is VISUAL + SELECTMODE
|
||||
* for :xmap mode is VISUAL
|
||||
* for :smap mode is SELECTMODE
|
||||
* for :omap mode is OP_PENDING
|
||||
* for :tmap mode is TERMINAL
|
||||
* for :map mode is MODE_NORMAL | MODE_VISUAL | MODE_SELECT | MODE_OP_PENDING
|
||||
* for :map! mode is MODE_INSERT | MODE_CMDLINE
|
||||
* for :cmap mode is MODE_CMDLINE
|
||||
* for :imap mode is MODE_INSERT
|
||||
* for :lmap mode is MODE_LANGMAP
|
||||
* for :nmap mode is MODE_NORMAL
|
||||
* for :vmap mode is MODE_VISUAL | MODE_SELECT
|
||||
* for :xmap mode is MODE_VISUAL
|
||||
* for :smap mode is MODE_SELECT
|
||||
* for :omap mode is MODE_OP_PENDING
|
||||
* for :tmap mode is MODE_TERMINAL
|
||||
*
|
||||
* for :abbr mode is INSERT + CMDLINE
|
||||
* for :iabbr mode is INSERT
|
||||
* for :cabbr mode is CMDLINE
|
||||
* for :abbr mode is MODE_INSERT | MODE_CMDLINE
|
||||
* for :iabbr mode is MODE_INSERT
|
||||
* for :cabbr mode is MODE_CMDLINE
|
||||
*
|
||||
* Return 0 for success
|
||||
* 1 for invalid arguments
|
||||
@@ -872,30 +873,31 @@ get_map_mode(char_u **cmdp, int forceit)
|
||||
p = *cmdp;
|
||||
modec = *p++;
|
||||
if (modec == 'i')
|
||||
mode = INSERT; // :imap
|
||||
mode = MODE_INSERT; // :imap
|
||||
else if (modec == 'l')
|
||||
mode = LANGMAP; // :lmap
|
||||
mode = MODE_LANGMAP; // :lmap
|
||||
else if (modec == 'c')
|
||||
mode = CMDLINE; // :cmap
|
||||
mode = MODE_CMDLINE; // :cmap
|
||||
else if (modec == 'n' && *p != 'o') // avoid :noremap
|
||||
mode = NORMAL; // :nmap
|
||||
mode = MODE_NORMAL; // :nmap
|
||||
else if (modec == 'v')
|
||||
mode = VISUAL + SELECTMODE; // :vmap
|
||||
mode = MODE_VISUAL | MODE_SELECT; // :vmap
|
||||
else if (modec == 'x')
|
||||
mode = VISUAL; // :xmap
|
||||
mode = MODE_VISUAL; // :xmap
|
||||
else if (modec == 's')
|
||||
mode = SELECTMODE; // :smap
|
||||
mode = MODE_SELECT; // :smap
|
||||
else if (modec == 'o')
|
||||
mode = OP_PENDING; // :omap
|
||||
mode = MODE_OP_PENDING; // :omap
|
||||
else if (modec == 't')
|
||||
mode = TERMINAL; // :tmap
|
||||
mode = MODE_TERMINAL; // :tmap
|
||||
else
|
||||
{
|
||||
--p;
|
||||
if (forceit)
|
||||
mode = INSERT + CMDLINE; // :map !
|
||||
mode = MODE_INSERT | MODE_CMDLINE; // :map !
|
||||
else
|
||||
mode = VISUAL + SELECTMODE + NORMAL + OP_PENDING;// :map
|
||||
mode = MODE_VISUAL | MODE_SELECT | MODE_NORMAL | MODE_OP_PENDING;
|
||||
// :map
|
||||
}
|
||||
|
||||
*cmdp = p;
|
||||
@@ -1002,21 +1004,21 @@ mode_str2flags(char_u *modechars)
|
||||
int mode = 0;
|
||||
|
||||
if (vim_strchr(modechars, 'n') != NULL)
|
||||
mode |= NORMAL;
|
||||
mode |= MODE_NORMAL;
|
||||
if (vim_strchr(modechars, 'v') != NULL)
|
||||
mode |= VISUAL + SELECTMODE;
|
||||
mode |= MODE_VISUAL | MODE_SELECT;
|
||||
if (vim_strchr(modechars, 'x') != NULL)
|
||||
mode |= VISUAL;
|
||||
mode |= MODE_VISUAL;
|
||||
if (vim_strchr(modechars, 's') != NULL)
|
||||
mode |= SELECTMODE;
|
||||
mode |= MODE_SELECT;
|
||||
if (vim_strchr(modechars, 'o') != NULL)
|
||||
mode |= OP_PENDING;
|
||||
mode |= MODE_OP_PENDING;
|
||||
if (vim_strchr(modechars, 'i') != NULL)
|
||||
mode |= INSERT;
|
||||
mode |= MODE_INSERT;
|
||||
if (vim_strchr(modechars, 'l') != NULL)
|
||||
mode |= LANGMAP;
|
||||
mode |= MODE_LANGMAP;
|
||||
if (vim_strchr(modechars, 'c') != NULL)
|
||||
mode |= CMDLINE;
|
||||
mode |= MODE_CMDLINE;
|
||||
|
||||
return mode;
|
||||
}
|
||||
@@ -1192,9 +1194,10 @@ set_context_in_map_cmd(
|
||||
expand_mapmodes = get_map_mode(&cmd, forceit || isabbrev);
|
||||
else
|
||||
{
|
||||
expand_mapmodes = INSERT + CMDLINE;
|
||||
expand_mapmodes = MODE_INSERT | MODE_CMDLINE;
|
||||
if (!isabbrev)
|
||||
expand_mapmodes += VISUAL + SELECTMODE + NORMAL + OP_PENDING;
|
||||
expand_mapmodes += MODE_VISUAL | MODE_SELECT | MODE_NORMAL
|
||||
| MODE_OP_PENDING;
|
||||
}
|
||||
expand_isabbrev = isabbrev;
|
||||
xp->xp_context = EXPAND_MAPPINGS;
|
||||
@@ -1864,75 +1867,76 @@ makemap(
|
||||
cmd = "map";
|
||||
switch (mp->m_mode)
|
||||
{
|
||||
case NORMAL + VISUAL + SELECTMODE + OP_PENDING:
|
||||
case MODE_NORMAL | MODE_VISUAL | MODE_SELECT
|
||||
| MODE_OP_PENDING:
|
||||
break;
|
||||
case NORMAL:
|
||||
case MODE_NORMAL:
|
||||
c1 = 'n';
|
||||
break;
|
||||
case VISUAL:
|
||||
case MODE_VISUAL:
|
||||
c1 = 'x';
|
||||
break;
|
||||
case SELECTMODE:
|
||||
case MODE_SELECT:
|
||||
c1 = 's';
|
||||
break;
|
||||
case OP_PENDING:
|
||||
case MODE_OP_PENDING:
|
||||
c1 = 'o';
|
||||
break;
|
||||
case NORMAL + VISUAL:
|
||||
case MODE_NORMAL | MODE_VISUAL:
|
||||
c1 = 'n';
|
||||
c2 = 'x';
|
||||
break;
|
||||
case NORMAL + SELECTMODE:
|
||||
case MODE_NORMAL | MODE_SELECT:
|
||||
c1 = 'n';
|
||||
c2 = 's';
|
||||
break;
|
||||
case NORMAL + OP_PENDING:
|
||||
case MODE_NORMAL | MODE_OP_PENDING:
|
||||
c1 = 'n';
|
||||
c2 = 'o';
|
||||
break;
|
||||
case VISUAL + SELECTMODE:
|
||||
case MODE_VISUAL | MODE_SELECT:
|
||||
c1 = 'v';
|
||||
break;
|
||||
case VISUAL + OP_PENDING:
|
||||
case MODE_VISUAL | MODE_OP_PENDING:
|
||||
c1 = 'x';
|
||||
c2 = 'o';
|
||||
break;
|
||||
case SELECTMODE + OP_PENDING:
|
||||
case MODE_SELECT | MODE_OP_PENDING:
|
||||
c1 = 's';
|
||||
c2 = 'o';
|
||||
break;
|
||||
case NORMAL + VISUAL + SELECTMODE:
|
||||
case MODE_NORMAL | MODE_VISUAL | MODE_SELECT:
|
||||
c1 = 'n';
|
||||
c2 = 'v';
|
||||
break;
|
||||
case NORMAL + VISUAL + OP_PENDING:
|
||||
case MODE_NORMAL | MODE_VISUAL | MODE_OP_PENDING:
|
||||
c1 = 'n';
|
||||
c2 = 'x';
|
||||
c3 = 'o';
|
||||
break;
|
||||
case NORMAL + SELECTMODE + OP_PENDING:
|
||||
case MODE_NORMAL | MODE_SELECT | MODE_OP_PENDING:
|
||||
c1 = 'n';
|
||||
c2 = 's';
|
||||
c3 = 'o';
|
||||
break;
|
||||
case VISUAL + SELECTMODE + OP_PENDING:
|
||||
case MODE_VISUAL | MODE_SELECT | MODE_OP_PENDING:
|
||||
c1 = 'v';
|
||||
c2 = 'o';
|
||||
break;
|
||||
case CMDLINE + INSERT:
|
||||
case MODE_CMDLINE | MODE_INSERT:
|
||||
if (!abbr)
|
||||
cmd = "map!";
|
||||
break;
|
||||
case CMDLINE:
|
||||
case MODE_CMDLINE:
|
||||
c1 = 'c';
|
||||
break;
|
||||
case INSERT:
|
||||
case MODE_INSERT:
|
||||
c1 = 'i';
|
||||
break;
|
||||
case LANGMAP:
|
||||
case MODE_LANGMAP:
|
||||
c1 = 'l';
|
||||
break;
|
||||
case TERMINAL:
|
||||
case MODE_TERMINAL:
|
||||
c1 = 't';
|
||||
break;
|
||||
default:
|
||||
@@ -2495,9 +2499,10 @@ get_map_mode_string(char_u *mode_string, int abbr)
|
||||
int mode = 0;
|
||||
int tmode;
|
||||
int modec;
|
||||
const int MASK_V = VISUAL + SELECTMODE;
|
||||
const int MASK_MAP = VISUAL + SELECTMODE + NORMAL + OP_PENDING;
|
||||
const int MASK_BANG = INSERT + CMDLINE;
|
||||
const int MASK_V = MODE_VISUAL | MODE_SELECT;
|
||||
const int MASK_MAP = MODE_VISUAL | MODE_SELECT | MODE_NORMAL
|
||||
| MODE_OP_PENDING;
|
||||
const int MASK_BANG = MODE_INSERT | MODE_CMDLINE;
|
||||
|
||||
if (*p == NUL)
|
||||
p = (char_u *)" "; // compatibility
|
||||
@@ -2505,14 +2510,14 @@ get_map_mode_string(char_u *mode_string, int abbr)
|
||||
{
|
||||
switch (modec)
|
||||
{
|
||||
case 'i': tmode = INSERT; break;
|
||||
case 'l': tmode = LANGMAP; break;
|
||||
case 'c': tmode = CMDLINE; break;
|
||||
case 'n': tmode = NORMAL; break;
|
||||
case 'x': tmode = VISUAL; break;
|
||||
case 's': tmode = SELECTMODE; break;
|
||||
case 'o': tmode = OP_PENDING; break;
|
||||
case 't': tmode = TERMINAL; break;
|
||||
case 'i': tmode = MODE_INSERT; break;
|
||||
case 'l': tmode = MODE_LANGMAP; break;
|
||||
case 'c': tmode = MODE_CMDLINE; break;
|
||||
case 'n': tmode = MODE_NORMAL; break;
|
||||
case 'x': tmode = MODE_VISUAL; break;
|
||||
case 's': tmode = MODE_SELECT; break;
|
||||
case 'o': tmode = MODE_OP_PENDING; break;
|
||||
case 't': tmode = MODE_TERMINAL; break;
|
||||
case 'v': tmode = MASK_V; break;
|
||||
case '!': tmode = MASK_BANG; break;
|
||||
case ' ': tmode = MASK_MAP; break;
|
||||
@@ -2672,7 +2677,7 @@ f_mapset(typval_T *argvars, typval_T *rettv UNUSED)
|
||||
|
||||
#if defined(MSWIN) || defined(MACOS_X)
|
||||
|
||||
# define VIS_SEL (VISUAL+SELECTMODE) // abbreviation
|
||||
# define VIS_SEL (MODE_VISUAL | MODE_SELECT) // abbreviation
|
||||
|
||||
/*
|
||||
* Default mappings for some often used keys.
|
||||
@@ -2688,9 +2693,9 @@ struct initmap
|
||||
static struct initmap initmappings[] =
|
||||
{
|
||||
// paste, copy and cut
|
||||
{(char_u *)"<S-Insert> \"*P", NORMAL},
|
||||
{(char_u *)"<S-Insert> \"*P", MODE_NORMAL},
|
||||
{(char_u *)"<S-Insert> \"-d\"*P", VIS_SEL},
|
||||
{(char_u *)"<S-Insert> <C-R><C-O>*", INSERT+CMDLINE},
|
||||
{(char_u *)"<S-Insert> <C-R><C-O>*", MODE_INSERT | MODE_CMDLINE},
|
||||
{(char_u *)"<C-Insert> \"*y", VIS_SEL},
|
||||
{(char_u *)"<S-Del> \"*d", VIS_SEL},
|
||||
{(char_u *)"<C-Del> \"*d", VIS_SEL},
|
||||
@@ -2703,24 +2708,24 @@ static struct initmap initmappings[] =
|
||||
// Use the Windows (CUA) keybindings. (Console)
|
||||
static struct initmap cinitmappings[] =
|
||||
{
|
||||
{(char_u *)"\316w <C-Home>", NORMAL+VIS_SEL},
|
||||
{(char_u *)"\316w <C-Home>", INSERT+CMDLINE},
|
||||
{(char_u *)"\316u <C-End>", NORMAL+VIS_SEL},
|
||||
{(char_u *)"\316u <C-End>", INSERT+CMDLINE},
|
||||
{(char_u *)"\316w <C-Home>", MODE_NORMAL | VIS_SEL},
|
||||
{(char_u *)"\316w <C-Home>", MODE_INSERT | MODE_CMDLINE},
|
||||
{(char_u *)"\316u <C-End>", MODE_NORMAL | VIS_SEL},
|
||||
{(char_u *)"\316u <C-End>", MODE_INSERT | MODE_CMDLINE},
|
||||
|
||||
// paste, copy and cut
|
||||
# ifdef FEAT_CLIPBOARD
|
||||
{(char_u *)"\316\324 \"*P", NORMAL}, // SHIFT-Insert is "*P
|
||||
{(char_u *)"\316\324 \"*P", MODE_NORMAL}, // SHIFT-Insert is "*P
|
||||
{(char_u *)"\316\324 \"-d\"*P", VIS_SEL}, // SHIFT-Insert is "-d"*P
|
||||
{(char_u *)"\316\324 \022\017*", INSERT}, // SHIFT-Insert is ^R^O*
|
||||
{(char_u *)"\316\324 \022\017*", MODE_INSERT}, // SHIFT-Insert is ^R^O*
|
||||
{(char_u *)"\316\325 \"*y", VIS_SEL}, // CTRL-Insert is "*y
|
||||
{(char_u *)"\316\327 \"*d", VIS_SEL}, // SHIFT-Del is "*d
|
||||
{(char_u *)"\316\330 \"*d", VIS_SEL}, // CTRL-Del is "*d
|
||||
{(char_u *)"\030 \"*d", VIS_SEL}, // CTRL-X is "*d
|
||||
# else
|
||||
{(char_u *)"\316\324 P", NORMAL}, // SHIFT-Insert is P
|
||||
{(char_u *)"\316\324 P", MODE_NORMAL}, // SHIFT-Insert is P
|
||||
{(char_u *)"\316\324 \"-dP", VIS_SEL}, // SHIFT-Insert is "-dP
|
||||
{(char_u *)"\316\324 \022\017\"", INSERT}, // SHIFT-Insert is ^R^O"
|
||||
{(char_u *)"\316\324 \022\017\"", MODE_INSERT}, // SHIFT-Insert is ^R^O"
|
||||
{(char_u *)"\316\325 y", VIS_SEL}, // CTRL-Insert is y
|
||||
{(char_u *)"\316\327 d", VIS_SEL}, // SHIFT-Del is d
|
||||
{(char_u *)"\316\330 d", VIS_SEL}, // CTRL-Del is d
|
||||
@@ -2733,9 +2738,9 @@ static struct initmap initmappings[] =
|
||||
{
|
||||
// Use the Standard MacOS binding.
|
||||
// paste, copy and cut
|
||||
{(char_u *)"<D-v> \"*P", NORMAL},
|
||||
{(char_u *)"<D-v> \"*P", MODE_NORMAL},
|
||||
{(char_u *)"<D-v> \"-d\"*P", VIS_SEL},
|
||||
{(char_u *)"<D-v> <C-R>*", INSERT+CMDLINE},
|
||||
{(char_u *)"<D-v> <C-R>*", MODE_INSERT | MODE_CMDLINE},
|
||||
{(char_u *)"<D-c> \"*y", VIS_SEL},
|
||||
{(char_u *)"<D-x> \"*d", VIS_SEL},
|
||||
{(char_u *)"<Backspace> \"-d", VIS_SEL},
|
||||
|
||||
Reference in New Issue
Block a user