Mercurial > vim
comparison src/evalbuffer.c @ 25431:634aed775408 v8.2.3252
patch 8.2.3252: duplicated code for adding buffer lines
Commit: https://github.com/vim/vim/commit/4a15504e911bc90a29d862862f0b7a46d8acd12a
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Fri Jul 30 21:32:45 2021 +0200
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 #8665)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 30 Jul 2021 21:45:02 +0200 |
parents | e8e2c4d33b9b |
children | 13ba00ef7687 |
comparison
equal
deleted
inserted
replaced
25430:e9d147592cfc | 25431:634aed775408 |
---|---|
285 lnum = tv_get_lnum(&argvars[0]); | 285 lnum = tv_get_lnum(&argvars[0]); |
286 set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv); | 286 set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv); |
287 } | 287 } |
288 | 288 |
289 /* | 289 /* |
290 * "appendbufline(buf, lnum, string/list)" function | 290 * Set or append lines to a buffer. |
291 */ | 291 */ |
292 void | 292 static void |
293 f_appendbufline(typval_T *argvars, typval_T *rettv) | 293 buf_set_append_line(typval_T *argvars, typval_T *rettv, int append) |
294 { | 294 { |
295 linenr_T lnum; | 295 linenr_T lnum; |
296 buf_T *buf; | 296 buf_T *buf; |
297 | 297 |
298 if (in_vim9script() | 298 if (in_vim9script() |
305 if (buf == NULL) | 305 if (buf == NULL) |
306 rettv->vval.v_number = 1; // FAIL | 306 rettv->vval.v_number = 1; // FAIL |
307 else | 307 else |
308 { | 308 { |
309 lnum = tv_get_lnum_buf(&argvars[1], buf); | 309 lnum = tv_get_lnum_buf(&argvars[1], buf); |
310 set_buffer_lines(buf, lnum, TRUE, &argvars[2], rettv); | 310 set_buffer_lines(buf, lnum, append, &argvars[2], rettv); |
311 } | 311 } |
312 } | |
313 | |
314 /* | |
315 * "appendbufline(buf, lnum, string/list)" function | |
316 */ | |
317 void | |
318 f_appendbufline(typval_T *argvars, typval_T *rettv) | |
319 { | |
320 buf_set_append_line(argvars, rettv, TRUE); | |
312 } | 321 } |
313 | 322 |
314 /* | 323 /* |
315 * "bufadd(expr)" function | 324 * "bufadd(expr)" function |
316 */ | 325 */ |
835 * "setbufline()" function | 844 * "setbufline()" function |
836 */ | 845 */ |
837 void | 846 void |
838 f_setbufline(typval_T *argvars, typval_T *rettv) | 847 f_setbufline(typval_T *argvars, typval_T *rettv) |
839 { | 848 { |
840 linenr_T lnum; | 849 buf_set_append_line(argvars, rettv, FALSE); |
841 buf_T *buf; | |
842 | |
843 if (in_vim9script() | |
844 && (check_for_buffer_arg(argvars, 0) == FAIL | |
845 || check_for_lnum_arg(argvars, 1) == FAIL | |
846 || check_for_string_or_number_or_list_arg(argvars, 2) == FAIL)) | |
847 return; | |
848 | |
849 buf = tv_get_buf(&argvars[0], FALSE); | |
850 if (buf == NULL) | |
851 rettv->vval.v_number = 1; // FAIL | |
852 else | |
853 { | |
854 lnum = tv_get_lnum_buf(&argvars[1], buf); | |
855 set_buffer_lines(buf, lnum, FALSE, &argvars[2], rettv); | |
856 } | |
857 } | 850 } |
858 | 851 |
859 /* | 852 /* |
860 * "setline()" function | 853 * "setline()" function |
861 */ | 854 */ |