diff options
author | zeertzjq <zeertzjq@outlook.com> | 2022-11-05 14:35:46 +0800 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-11-05 14:38:24 +0800 |
commit | 5731f406fa6ddf9c8340329ec1e534cd968df94f (patch) | |
tree | 550411e888a6c8d5f6341bd27e36c04bf1f69d28 /src/nvim/eval/funcs.c | |
parent | 86fe2c8d94d212af098002ce04c87fb73fdf9c52 (diff) | |
download | rneovim-5731f406fa6ddf9c8340329ec1e534cd968df94f.tar.gz rneovim-5731f406fa6ddf9c8340329ec1e534cd968df94f.tar.bz2 rneovim-5731f406fa6ddf9c8340329ec1e534cd968df94f.zip |
vim-patch:8.2.3252: duplicated code for adding buffer lines
Problem: Duplicated code for adding buffer lines.
Solution: Move code to a common function. Also move map functions to map.c.
(Yegappan Lakshmanan, closes vim/vim#8665)
https://github.com/vim/vim/commit/4a15504e911bc90a29d862862f0b7a46d8acd12a
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Diffstat (limited to 'src/nvim/eval/funcs.c')
-rw-r--r-- | src/nvim/eval/funcs.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c index 0e3de29cce..c4d0604b67 100644 --- a/src/nvim/eval/funcs.c +++ b/src/nvim/eval/funcs.c @@ -370,18 +370,24 @@ static void f_append(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) set_buffer_lines(curbuf, lnum, true, &argvars[1], rettv); } -/// "appendbufline(buf, lnum, string/list)" function -static void f_appendbufline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) +/// Set or append lines to a buffer. +static void buf_set_append_line(typval_T *argvars, typval_T *rettv, bool append) { buf_T *const buf = tv_get_buf(&argvars[0], false); if (buf == NULL) { rettv->vval.v_number = 1; // FAIL } else { const linenr_T lnum = tv_get_lnum_buf(&argvars[1], buf); - set_buffer_lines(buf, lnum, true, &argvars[2], rettv); + set_buffer_lines(buf, lnum, append, &argvars[2], rettv); } } +/// "appendbufline(buf, lnum, string/list)" function +static void f_appendbufline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) +{ + buf_set_append_line(argvars, rettv, true); +} + /// "atan2()" function static void f_atan2(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { @@ -7501,16 +7507,7 @@ static void f_serverstop(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) /// "setbufline()" function static void f_setbufline(typval_T *argvars, typval_T *rettv, EvalFuncData fptr) { - linenr_T lnum; - buf_T *buf; - - buf = tv_get_buf(&argvars[0], false); - if (buf == NULL) { - rettv->vval.v_number = 1; // FAIL - } else { - lnum = tv_get_lnum_buf(&argvars[1], buf); - set_buffer_lines(buf, lnum, false, &argvars[2], rettv); - } + buf_set_append_line(argvars, rettv, false); } /// Set the cursor or mark position. |