diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-11-09 19:36:58 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2023-11-09 21:34:04 +0800 |
commit | d4dbfb092b370bced6728e07a38661a579ff5e4b (patch) | |
tree | d54d08345dda447f1538af58de476f427c843373 /src/nvim/mapping.c | |
parent | 2dfcd5a22b8f26091aa7398fdb8b0ea70ed7b28d (diff) | |
download | rneovim-d4dbfb092b370bced6728e07a38661a579ff5e4b.tar.gz rneovim-d4dbfb092b370bced6728e07a38661a579ff5e4b.tar.bz2 rneovim-d4dbfb092b370bced6728e07a38661a579ff5e4b.zip |
vim-patch:8.2.4825: can only get a list of mappings
Problem: Can only get a list of mappings.
Solution: Add the optional {abbr} argument. (Ernie Rael, closes vim/vim#10277)
Rename to maplist(). Rename test file.
https://github.com/vim/vim/commit/09661203ecefbee6a6f09438afcff1843e9dbfb4
Co-authored-by: Ernie Rael <errael@raelity.com>
Diffstat (limited to 'src/nvim/mapping.c')
-rw-r--r-- | src/nvim/mapping.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/nvim/mapping.c b/src/nvim/mapping.c index 2cc469feec..905e742f51 100644 --- a/src/nvim/mapping.c +++ b/src/nvim/mapping.c @@ -2282,9 +2282,10 @@ void f_mapset(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) } /// "maplist()" function -void f_getmappings(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) +void f_maplist(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { const int flags = REPTERM_FROM_PART | REPTERM_DO_LT; + const bool abbr = argvars[0].v_type != VAR_UNKNOWN && tv_get_bool(&argvars[0]); tv_list_alloc_ret(rettv, kListLenUnknown); @@ -2292,7 +2293,16 @@ void f_getmappings(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) for (int buffer_local = 0; buffer_local <= 1; buffer_local++) { for (int hash = 0; hash < 256; hash++) { mapblock_T *mp; - if (buffer_local) { + if (abbr) { + if (hash > 0) { // there is only one abbr list + break; + } + if (buffer_local) { + mp = curbuf->b_first_abbr; + } else { + mp = first_abbr; + } + } else if (buffer_local) { mp = curbuf->b_maphash[hash]; } else { mp = maphash[hash]; |