diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-08-30 15:52:10 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-08-30 15:52:10 +0200 |
commit | 0b39c3fd4c5d1c8ebd2efa85fced7df5e17efd3b (patch) | |
tree | 6d230d3ef3310ad4aa28801d3720d33c29a19a4b /src/evalfunc.c | |
parent | 25859dd74cd5befe964627dc03b8369dfaebe837 (diff) |
patch 8.2.1544: cannot translate messages in a Vim scriptv8.2.1544
Problem: Cannot translate messages in a Vim script.
Solution: Add gettext(). Try it out for a few messages in the options
window.
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r-- | src/evalfunc.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index 62bbb8888d..fff7a89a9a 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -97,6 +97,7 @@ static void f_getreg(typval_T *argvars, typval_T *rettv); static void f_getreginfo(typval_T *argvars, typval_T *rettv); static void f_getregtype(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_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); @@ -667,6 +668,7 @@ static funcentry_T global_functions[] = {"gettabvar", 2, 3, FEARG_1, ret_any, f_gettabvar}, {"gettabwinvar", 3, 4, FEARG_1, ret_any, f_gettabwinvar}, {"gettagstack", 0, 1, FEARG_1, ret_dict_any, f_gettagstack}, + {"gettext", 1, 1, FEARG_1, ret_string, f_gettext}, {"getwininfo", 0, 1, FEARG_1, ret_list_dict_any, f_getwininfo}, {"getwinpos", 0, 1, FEARG_1, ret_list_number, f_getwinpos}, {"getwinposx", 0, 0, 0, ret_number, f_getwinposx}, @@ -3437,6 +3439,26 @@ f_gettagstack(typval_T *argvars, typval_T *rettv) get_tagstack(wp, rettv->vval.v_dict); } +/* + * "gettext()" function + */ + static void +f_gettext(typval_T *argvars, typval_T *rettv) +{ + if (argvars[0].v_type != VAR_STRING + || argvars[0].vval.v_string == NULL + || *argvars[0].vval.v_string == NUL) + { + semsg(_(e_invarg2), tv_get_string(&argvars[0])); + } + else + { + rettv->v_type = VAR_STRING; + rettv->vval.v_string = vim_strsave( + (char_u *)_(argvars[0].vval.v_string)); + } +} + // for VIM_VERSION_ defines #include "version.h" |