diff options
author | Daniel Hahler <git@thequod.de> | 2019-06-18 00:48:09 +0200 |
---|---|---|
committer | Daniel Hahler <git@thequod.de> | 2019-06-18 00:51:08 +0200 |
commit | d0e1417254099eb8f8bee066e84d5a49246e737f (patch) | |
tree | aa162c0dcd29f0330381a3980a3f62f267670bb2 /src/nvim/eval.c | |
parent | d43cf02186d10d96e325704e0bb146e3fd91a11d (diff) | |
download | rneovim-d0e1417254099eb8f8bee066e84d5a49246e737f.tar.gz rneovim-d0e1417254099eb8f8bee066e84d5a49246e737f.tar.bz2 rneovim-d0e1417254099eb8f8bee066e84d5a49246e737f.zip |
vim-patch:8.0.1274: setbufline() fails when using folding
Problem: setbufline() fails when using folding.
Solution: Set "curwin" if needed. (Ozaki Kiichi, closes vim/vim#2293)
https://github.com/vim/vim/commit/0c4dc88a637a5027209aa00226996af84e248636
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r-- | src/nvim/eval.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 5ab1e0ebbe..1d34af2230 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -14851,7 +14851,8 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T *lines, listitem_T *li = NULL; long added = 0; linenr_T lcount; - buf_T *curbuf_save; + buf_T *curbuf_save = NULL; + win_T *curwin_save = NULL; int is_curbuf = buf == curbuf; // When using the current buffer ml_mfp will be set if needed. Useful when @@ -14862,8 +14863,19 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T *lines, return; } - curbuf_save = curbuf; - curbuf = buf; + if (!is_curbuf) { + wininfo_T *wip; + + curbuf_save = curbuf; + curwin_save = curwin; + curbuf = buf; + for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next) { + if (wip->wi_win != NULL) { + curwin = wip->wi_win; + break; + } + } + } lcount = curbuf->b_ml.ml_line_count; @@ -14926,7 +14938,10 @@ static void set_buffer_lines(buf_T *buf, linenr_T lnum, typval_T *lines, appended_lines_mark(lcount, added); } - curbuf = curbuf_save; + if (!is_curbuf) { + curbuf = curbuf_save; + curwin = curwin_save; + } } /// "setbufline()" function |