if (start > lnum)
start = lnum;
lnum = dict_get_number(li->li_tv.vval.v_dict, (char_u *)"end");
- if (lnum > end)
+ if (end < lnum)
end = lnum;
- added = dict_get_number(li->li_tv.vval.v_dict, (char_u *)"added");
+ added += dict_get_number(li->li_tv.vval.v_dict, (char_u *)"added");
}
argv[1].v_type = VAR_NUMBER;
argv[1].vval.v_number = start;
" tests for listener_add() and listener_remove()
-func s:StoreList(s, l)
+func s:StoreList(s, e, a, l)
let s:start = a:s
+ let s:end = a:e
+ let s:added = a:a
let s:text = getline(a:s)
let s:list = a:l
endfunc
new
call setline(1, ['one', 'two'])
let s:list = []
- let id = listener_add({b, s, e, a, l -> s:StoreList(s, l)})
+ let id = listener_add({b, s, e, a, l -> s:StoreList(s, e, a, l)})
call setline(1, 'one one')
call listener_flush()
call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], s:list)
call bufnr()->listener_flush()
call assert_equal([{'lnum': 3, 'end': 3, 'col': 1, 'added': 1},
\ {'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], s:list)
+ call assert_equal(1, s:start)
+ call assert_equal(3, s:end)
+ call assert_equal(1, s:added)
" an insert just above a previous change that was the last one does not get
" merged