0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 9.0.0002: map functionality outside of map.c

Problem:    Map functionality outside of map.c.
Solution:   Move f_hasmapto() to map.c.  Rename a function. (closes #10611)
This commit is contained in:
zeertzjq
2022-06-29 10:37:40 +01:00
committed by Bram Moolenaar
parent 75417d960b
commit c207fd2535
5 changed files with 45 additions and 43 deletions

View File

@@ -1004,8 +1004,8 @@ free_buffer_stuff(
#ifdef FEAT_NETBEANS_INTG #ifdef FEAT_NETBEANS_INTG
netbeans_file_killed(buf); netbeans_file_killed(buf);
#endif #endif
map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE); // clear local mappings map_clear_mode(buf, MAP_ALL_MODES, TRUE, FALSE); // clear local mappings
map_clear_int(buf, MAP_ALL_MODES, TRUE, TRUE); // clear local abbrevs map_clear_mode(buf, MAP_ALL_MODES, TRUE, TRUE); // clear local abbrevs
VIM_CLEAR(buf->b_start_fenc); VIM_CLEAR(buf->b_start_fenc);
} }

View File

@@ -75,7 +75,6 @@ static void f_getregtype(typval_T *argvars, typval_T *rettv);
static void f_gettagstack(typval_T *argvars, typval_T *rettv); static void f_gettagstack(typval_T *argvars, typval_T *rettv);
static void f_gettext(typval_T *argvars, typval_T *rettv); static void f_gettext(typval_T *argvars, typval_T *rettv);
static void f_haslocaldir(typval_T *argvars, typval_T *rettv); static void f_haslocaldir(typval_T *argvars, typval_T *rettv);
static void f_hasmapto(typval_T *argvars, typval_T *rettv);
static void f_hlID(typval_T *argvars, typval_T *rettv); static void f_hlID(typval_T *argvars, typval_T *rettv);
static void f_hlexists(typval_T *argvars, typval_T *rettv); static void f_hlexists(typval_T *argvars, typval_T *rettv);
static void f_hostname(typval_T *argvars, typval_T *rettv); static void f_hostname(typval_T *argvars, typval_T *rettv);
@@ -6653,40 +6652,6 @@ f_haslocaldir(typval_T *argvars, typval_T *rettv)
rettv->vval.v_number = 0; rettv->vval.v_number = 0;
} }
/*
* "hasmapto()" function
*/
static void
f_hasmapto(typval_T *argvars, typval_T *rettv)
{
char_u *name;
char_u *mode;
char_u buf[NUMBUFLEN];
int abbr = FALSE;
if (in_vim9script()
&& (check_for_string_arg(argvars, 0) == FAIL
|| check_for_opt_string_arg(argvars, 1) == FAIL
|| (argvars[1].v_type != VAR_UNKNOWN
&& check_for_opt_bool_arg(argvars, 2) == FAIL)))
return;
name = tv_get_string(&argvars[0]);
if (argvars[1].v_type == VAR_UNKNOWN)
mode = (char_u *)"nvo";
else
{
mode = tv_get_string_buf(&argvars[1], buf);
if (argvars[2].v_type != VAR_UNKNOWN)
abbr = (int)tv_get_bool(&argvars[2]);
}
if (map_to_exists(name, mode, abbr))
rettv->vval.v_number = TRUE;
else
rettv->vval.v_number = FALSE;
}
/* /*
* "highlightID(name)" function * "highlightID(name)" function
*/ */

View File

@@ -908,13 +908,13 @@ get_map_mode(char_u **cmdp, int forceit)
} }
/* /*
* Clear all mappings or abbreviations. * Clear all mappings (":mapclear") or abbreviations (":abclear").
* 'abbr' should be FALSE for mappings, TRUE for abbreviations. * "abbr" should be FALSE for mappings, TRUE for abbreviations.
*/ */
static void static void
map_clear( map_clear(
char_u *cmdp, char_u *cmdp,
char_u *arg UNUSED, char_u *arg,
int forceit, int forceit,
int abbr) int abbr)
{ {
@@ -929,14 +929,14 @@ map_clear(
} }
mode = get_map_mode(&cmdp, forceit); mode = get_map_mode(&cmdp, forceit);
map_clear_int(curbuf, mode, local, abbr); map_clear_mode(curbuf, mode, local, abbr);
} }
/* /*
* Clear all mappings in "mode". * Clear all mappings in "mode".
*/ */
void void
map_clear_int( map_clear_mode(
buf_T *buf, // buffer for local mappings buf_T *buf, // buffer for local mappings
int mode, // mode in which to delete int mode, // mode in which to delete
int local, // TRUE for buffer-local mappings int local, // TRUE for buffer-local mappings
@@ -2272,6 +2272,40 @@ check_map(
return NULL; return NULL;
} }
/*
* "hasmapto()" function
*/
void
f_hasmapto(typval_T *argvars, typval_T *rettv)
{
char_u *name;
char_u *mode;
char_u buf[NUMBUFLEN];
int abbr = FALSE;
if (in_vim9script()
&& (check_for_string_arg(argvars, 0) == FAIL
|| check_for_opt_string_arg(argvars, 1) == FAIL
|| (argvars[1].v_type != VAR_UNKNOWN
&& check_for_opt_bool_arg(argvars, 2) == FAIL)))
return;
name = tv_get_string(&argvars[0]);
if (argvars[1].v_type == VAR_UNKNOWN)
mode = (char_u *)"nvo";
else
{
mode = tv_get_string_buf(&argvars[1], buf);
if (argvars[2].v_type != VAR_UNKNOWN)
abbr = (int)tv_get_bool(&argvars[2]);
}
if (map_to_exists(name, mode, abbr))
rettv->vval.v_number = TRUE;
else
rettv->vval.v_number = FALSE;
}
/* /*
* Fill in the empty dictionary with items as defined by maparg builtin. * Fill in the empty dictionary with items as defined by maparg builtin.
*/ */

View File

@@ -3,7 +3,7 @@ mapblock_T *get_maphash_list(int state, int c);
mapblock_T *get_buf_maphash_list(int state, int c); mapblock_T *get_buf_maphash_list(int state, int c);
int is_maphash_valid(void); int is_maphash_valid(void);
int do_map(int maptype, char_u *arg, int mode, int abbrev); int do_map(int maptype, char_u *arg, int mode, int abbrev);
void map_clear_int(buf_T *buf, int mode, int local, int abbr); void map_clear_mode(buf_T *buf, int mode, int local, int abbr);
int mode_str2flags(char_u *modechars); int mode_str2flags(char_u *modechars);
int map_to_exists(char_u *str, char_u *modechars, int abbr); int map_to_exists(char_u *str, char_u *modechars, int abbr);
int map_to_exists_mode(char_u *rhs, int mode, int abbr); int map_to_exists_mode(char_u *rhs, int mode, int abbr);
@@ -17,6 +17,7 @@ int makemap(FILE *fd, buf_T *buf);
int put_escstr(FILE *fd, char_u *strstart, int what); int put_escstr(FILE *fd, char_u *strstart, int what);
void check_map_keycodes(void); void check_map_keycodes(void);
char_u *check_map(char_u *keys, int mode, int exact, int ign_mod, int abbr, mapblock_T **mp_ptr, int *local_ptr); char_u *check_map(char_u *keys, int mode, int exact, int ign_mod, int abbr, mapblock_T **mp_ptr, int *local_ptr);
void f_hasmapto(typval_T *argvars, typval_T *rettv);
void f_maplist(typval_T *argvars, typval_T *rettv); void f_maplist(typval_T *argvars, typval_T *rettv);
void f_maparg(typval_T *argvars, typval_T *rettv); void f_maparg(typval_T *argvars, typval_T *rettv);
void f_mapcheck(typval_T *argvars, typval_T *rettv); void f_mapcheck(typval_T *argvars, typval_T *rettv);

View File

@@ -735,6 +735,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2,
/**/ /**/
1, 1,
/**/ /**/