aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/mapping.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-11-09 19:36:58 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-11-09 21:34:04 +0800
commitd4dbfb092b370bced6728e07a38661a579ff5e4b (patch)
treed54d08345dda447f1538af58de476f427c843373 /src/nvim/mapping.c
parent2dfcd5a22b8f26091aa7398fdb8b0ea70ed7b28d (diff)
downloadrneovim-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.c14
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];