diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/wee-command.c | 8 | ||||
-rw-r--r-- | src/core/wee-eval.c | 43 |
2 files changed, 41 insertions, 10 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c index fb1778996..cf942f510 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -7571,9 +7571,10 @@ command_init () "\"if:condition?value_if_true:value_if_false\")\n" " 17. result of an expression with parentheses and operators " "+ - * / // % ** (format: \"calc:xxx\")\n" - " 18. an option (format: \"file.section.option\")\n" - " 19. a local variable in buffer\n" - " 20. a hdata name/variable (the value is automatically converted " + " 18. a translated string (format: \"translate:xxx\")\n" + " 19. an option (format: \"file.section.option\")\n" + " 20. a local variable in buffer\n" + " 21. a hdata name/variable (the value is automatically converted " "to string), by default \"window\" and \"buffer\" point to current " "window/buffer.\n" "Format for hdata can be one of following:\n" @@ -7617,6 +7618,7 @@ command_init () " /eval -n ${calc:(5+2)*3} ==> 21\n" " /eval -n ${base_encode:64,test} ==> dGVzdA==\n" " /eval -n ${base_decode:64,dGVzdA==} ==> test\n" + " /eval -n ${translate:Plugin} ==> Extension\n" "\n" "Examples (conditions):\n" " /eval -n -c ${window.buffer.number} > 2 ==> 0\n" diff --git a/src/core/wee-eval.c b/src/core/wee-eval.c index c8f82d890..52c43d9e0 100644 --- a/src/core/wee-eval.c +++ b/src/core/wee-eval.c @@ -726,6 +726,25 @@ eval_string_if (const char *text, struct t_eval_context *eval_context) } /* + * Translates text. + * + * Note: result must be freed after use. + */ + +char * +eval_translate (const char *text) +{ + const char *ptr_string; + + if (!text || !text[0]) + return strdup (""); + + ptr_string = gettext (text); + + return strdup ((ptr_string) ? ptr_string : ""); +} + +/* * Gets value of hdata using "path" to a variable. * * Note: result must be freed after use. @@ -1034,10 +1053,11 @@ end: * 18. an environment variable (format: env:XXX) * 19. a ternary operator (format: if:condition?value_if_true:value_if_false) * 20. calculate result of an expression (format: calc:xxx) - * 21. an option (format: file.section.option) - * 22. a buffer local variable - * 23. a pointer name from hashtable "pointers" - * 24. a hdata variable (format: hdata.var1.var2 or hdata[list].var1.var2 + * 21. a translated string (format: translate:xxx) + * 22. an option (format: file.section.option) + * 23. a buffer local variable + * 24. a pointer name from hashtable "pointers" + * 25. a hdata variable (format: hdata.var1.var2 or hdata[list].var1.var2 * or hdata[ptr].var1.var2 or hdata[ptr_name].var1.var2) * * See /help in WeeChat for examples. @@ -1285,7 +1305,16 @@ eval_replace_vars_cb (void *data, const char *text) goto end; } - /* 21. option: if found, return this value */ + /* + * 21. translated text + */ + if (strncmp (text, "translate:", 10) == 0) + { + value = eval_translate (text + 10); + goto end; + } + + /* 22. option: if found, return this value */ if (strncmp (text, "sec.data.", 9) == 0) { ptr_value = hashtable_get (secure_hashtable_data, text + 9); @@ -1328,7 +1357,7 @@ eval_replace_vars_cb (void *data, const char *text) } } - /* 22. local variable in buffer */ + /* 23. local variable in buffer */ ptr_buffer = hashtable_get (eval_context->pointers, "buffer"); if (ptr_buffer) { @@ -1340,7 +1369,7 @@ eval_replace_vars_cb (void *data, const char *text) } } - /* 23. hdata */ + /* 24. hdata */ value = eval_string_hdata (text, eval_context); end: |