diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-09-13 06:23:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-13 06:23:33 +0800 |
commit | 907fc8ac373226556b84c2fdc4fe26525bbdb2c4 (patch) | |
tree | 42fc5a92284c1b52c0fbdda07964245dee57edf5 /src/nvim/eval/funcs.c | |
parent | 91a150d0a9f81d8db34ba45de2a8a270010e2f3a (diff) | |
download | rneovim-907fc8ac373226556b84c2fdc4fe26525bbdb2c4.tar.gz rneovim-907fc8ac373226556b84c2fdc4fe26525bbdb2c4.tar.bz2 rneovim-907fc8ac373226556b84c2fdc4fe26525bbdb2c4.zip |
vim-patch:9.0.0449: there is no easy way to translate a key code into a string (#20168)
Problem: There is no easy way to translate a string with a key code into a
readable string.
Solution: Add the keytrans() function. (closes vim/vim#11114)
https://github.com/vim/vim/commit/cdc839353f68ca43db6446e1b727fc7ba657b738
vim-patch:7b2d87220c6c
Add missing part of patch
https://github.com/vim/vim/commit/7b2d87220c6c974d5cdae672b6f9620a6bcbd1dc
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 3c08acc10b..b5ae24953f 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -4673,6 +4673,20 @@ static void f_json_encode(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) rettv->vval.v_string = encode_tv2json(&argvars[0], NULL); } +/// "keytrans()" function +static void f_keytrans(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) +{ + rettv->v_type = VAR_STRING; + if (tv_check_for_string_arg(argvars, 0) == FAIL + || argvars[0].vval.v_string == NULL) { + return; + } + // Need to escape K_SPECIAL for mb_unescape(). + char *escaped = vim_strsave_escape_ks(argvars[0].vval.v_string); + rettv->vval.v_string = str2special_save(escaped, true, true); + xfree(escaped); +} + /// "last_buffer_nr()" function. static void f_last_buffer_nr(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { |