summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvimboss <devnull@localhost>2006-03-18 21:42:09 +0000
committervimboss <devnull@localhost>2006-03-18 21:42:09 +0000
commite1d6aeb9092afe36814d8097dbe3614a88e2c2b1 (patch)
treec03c0062d5180c79b5321f846cd4fc80a9ab4086
parentd3ae6712128e7fd57e29ad9d7c5a54f7d977b2f3 (diff)
downloadvim-e1d6aeb9092afe36814d8097dbe3614a88e2c2b1.tar.gz
updated for version 7.0228v7.0228v7-0228
-rw-r--r--src/eval.c49
1 files changed, 44 insertions, 5 deletions
diff --git a/src/eval.c b/src/eval.c
index 5b8a1b6a..8d275dc8 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -614,6 +614,7 @@ static void f_soundfold __ARGS((typval_T *argvars, typval_T *rettv));
static void f_spellbadword __ARGS((typval_T *argvars, typval_T *rettv));
static void f_spellsuggest __ARGS((typval_T *argvars, typval_T *rettv));
static void f_split __ARGS((typval_T *argvars, typval_T *rettv));
+static void f_str2nr __ARGS((typval_T *argvars, typval_T *rettv));
#ifdef HAVE_STRFTIME
static void f_strftime __ARGS((typval_T *argvars, typval_T *rettv));
#endif
@@ -6978,7 +6979,7 @@ static struct fst
{"globpath", 2, 2, f_globpath},
{"has", 1, 1, f_has},
{"has_key", 2, 2, f_has_key},
- {"hasmapto", 1, 2, f_hasmapto},
+ {"hasmapto", 1, 3, f_hasmapto},
{"highlightID", 1, 1, f_hlID}, /* obsolete */
{"highlight_exists",1, 1, f_hlexists}, /* obsolete */
{"histadd", 2, 2, f_histadd},
@@ -7012,8 +7013,8 @@ static struct fst
{"lispindent", 1, 1, f_lispindent},
{"localtime", 0, 0, f_localtime},
{"map", 2, 2, f_map},
- {"maparg", 1, 2, f_maparg},
- {"mapcheck", 1, 2, f_mapcheck},
+ {"maparg", 1, 3, f_maparg},
+ {"mapcheck", 1, 3, f_mapcheck},
{"match", 2, 4, f_match},
{"matchend", 2, 4, f_matchend},
{"matchlist", 2, 4, f_matchlist},
@@ -7062,6 +7063,7 @@ static struct fst
{"spellbadword", 0, 1, f_spellbadword},
{"spellsuggest", 1, 3, f_spellsuggest},
{"split", 1, 3, f_split},
+ {"str2nr", 1, 2, f_str2nr},
#ifdef HAVE_STRFTIME
{"strftime", 1, 2, f_strftime},
#endif
@@ -10855,14 +10857,19 @@ f_hasmapto(argvars, rettv)
char_u *name;
char_u *mode;
char_u buf[NUMBUFLEN];
+ int abbr = FALSE;
name = get_tv_string(&argvars[0]);
if (argvars[1].v_type == VAR_UNKNOWN)
mode = (char_u *)"nvo";
else
+ {
mode = get_tv_string_buf(&argvars[1], buf);
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ abbr = get_tv_number(&argvars[2]);
+ }
- if (map_to_exists(name, mode))
+ if (map_to_exists(name, mode, abbr))
rettv->vval.v_number = TRUE;
else
rettv->vval.v_number = FALSE;
@@ -11837,6 +11844,7 @@ get_maparg(argvars, rettv, exact)
char_u *rhs;
int mode;
garray_T ga;
+ int abbr = FALSE;
/* return empty string for failure */
rettv->v_type = VAR_STRING;
@@ -11847,7 +11855,11 @@ get_maparg(argvars, rettv, exact)
return;
if (argvars[1].v_type != VAR_UNKNOWN)
+ {
which = get_tv_string_buf_chk(&argvars[1], buf);
+ if (argvars[2].v_type != VAR_UNKNOWN)
+ abbr = get_tv_number(&argvars[2]);
+ }
else
which = (char_u *)"";
if (which == NULL)
@@ -11856,7 +11868,7 @@ get_maparg(argvars, rettv, exact)
mode = get_map_mode(&which, 0);
keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE);
- rhs = check_map(keys, mode, exact, FALSE);
+ rhs = check_map(keys, mode, exact, FALSE, abbr);
vim_free(keys_buf);
if (rhs != NULL)
{
@@ -14612,6 +14624,33 @@ f_split(argvars, rettv)
p_cpo = save_cpo;
}
+/*
+ * "str2nr()" function
+ */
+ static void
+f_str2nr(argvars, rettv)
+ typval_T *argvars;
+ typval_T *rettv;
+{
+ int base = 10;
+ char_u *p;
+ long n;
+
+ if (argvars[1].v_type != VAR_UNKNOWN)
+ {
+ base = get_tv_number(&argvars[1]);
+ if (base != 8 && base != 10 && base != 16)
+ {
+ EMSG(_(e_invarg));
+ return;
+ }
+ }
+
+ p = skipwhite(get_tv_string(&argvars[0]));
+ vim_str2nr(p, NULL, NULL, base == 8 ? 2 : 0, base == 16 ? 2 : 0, &n, NULL);
+ rettv->vval.v_number = n;
+}
+
#ifdef HAVE_STRFTIME
/*
* "strftime({format}[, {time}])" function