summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0786
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0786')
-rw-r--r--data/vim/patches/8.1.0786133
1 files changed, 133 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0786 b/data/vim/patches/8.1.0786
new file mode 100644
index 000000000..4d756e7ee
--- /dev/null
+++ b/data/vim/patches/8.1.0786
@@ -0,0 +1,133 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0786
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0786
+Problem: ml_get error when updating the status line and a terminal had its
+ scrollback cleared. (Chris Patuzzo)
+Solution: Check the cursor position when drawing the status line.
+ (closes #3830)
+Files: src/buffer.c, src/testdir/test_terminal.vim
+
+
+*** ../vim-8.1.0785/src/buffer.c 2019-01-20 15:30:36.881328770 +0100
+--- src/buffer.c 2019-01-20 18:21:30.211582673 +0100
+***************
+*** 3869,3874 ****
+--- 3869,3876 ----
+ struct stl_hlrec *hltab, /* return: HL attributes (can be NULL) */
+ struct stl_hlrec *tabtab) /* return: tab page nrs (can be NULL) */
+ {
++ linenr_T lnum;
++ size_t len;
+ char_u *p;
+ char_u *s;
+ char_u *t;
+***************
+*** 3943,3957 ****
+ fillchar = '-';
+ #endif
+
+! /* Get line & check if empty (cursorpos will show "0-1"). Note that
+! * p will become invalid when getting another buffer line. */
+! p = ml_get_buf(wp->w_buffer, wp->w_cursor.lnum, FALSE);
+ empty_line = (*p == NUL);
+
+! /* Get the byte value now, in case we need it below. This is more
+! * efficient than making a copy of the line. */
+! if (wp->w_cursor.col > (colnr_T)STRLEN(p))
+ byteval = 0;
+ else
+ #ifdef FEAT_MBYTE
+ byteval = (*mb_ptr2char)(p + wp->w_cursor.col);
+--- 3945,3977 ----
+ fillchar = '-';
+ #endif
+
+! // The cursor in windows other than the current one isn't always
+! // up-to-date, esp. because of autocommands and timers.
+! lnum = wp->w_cursor.lnum;
+! if (lnum > wp->w_buffer->b_ml.ml_line_count)
+! {
+! lnum = wp->w_buffer->b_ml.ml_line_count;
+! wp->w_cursor.lnum = lnum;
+! }
+!
+! // Get line & check if empty (cursorpos will show "0-1"). Note that
+! // p will become invalid when getting another buffer line.
+! p = ml_get_buf(wp->w_buffer, lnum, FALSE);
+ empty_line = (*p == NUL);
+
+! // Get the byte value now, in case we need it below. This is more efficient
+! // than making a copy of the line.
+! len = STRLEN(p);
+! if (wp->w_cursor.col > (colnr_T)len)
+! {
+! // Line may have changed since checking the cursor column, or the lnum
+! // was adjusted above.
+! wp->w_cursor.col = (colnr_T)len;
+! #ifdef FEAT_VIRTUALEDIT
+! wp->w_cursor.coladd = 0;
+! #endif
+ byteval = 0;
++ }
+ else
+ #ifdef FEAT_MBYTE
+ byteval = (*mb_ptr2char)(p + wp->w_cursor.col);
+*** ../vim-8.1.0785/src/testdir/test_terminal.vim 2019-01-19 18:20:41.918390095 +0100
+--- src/testdir/test_terminal.vim 2019-01-20 18:21:24.023624845 +0100
+***************
+*** 1719,1721 ****
+--- 1719,1746 ----
+
+ exe term . 'bwipe!'
+ endfunc
++
++ " When drawing the statusline the cursor position may not have been updated
++ " yet.
++ " 1. create a terminal, make it show 2 lines
++ " 2. 0.5 sec later: leave terminal window, execute "i"
++ " 3. 0.5 sec later: clear terminal window, now it's 1 line
++ " 4. 0.5 sec later: redraw, including statusline (used to trigger bug)
++ " 4. 0.5 sec later: should be done, clean up
++ func Test_terminal_statusline()
++ if !has('unix')
++ return
++ endif
++ set statusline=x
++ terminal
++ let tbuf = bufnr('')
++ call term_sendkeys(tbuf, "clear; echo a; echo b; sleep 1; clear\n")
++ call timer_start(500, { tid -> feedkeys("\<C-w>j", 'tx') })
++ call timer_start(1500, { tid -> feedkeys("\<C-l>", 'tx') })
++ au BufLeave * if &buftype == 'terminal' | silent! normal i | endif
++
++ sleep 2
++ exe tbuf . 'bwipe!'
++ au! BufLeave
++ set statusline=
++ endfunc
+*** ../vim-8.1.0785/src/version.c 2019-01-20 15:30:36.897328669 +0100
+--- src/version.c 2019-01-20 17:47:47.781180067 +0100
+***************
+*** 793,794 ****
+--- 793,796 ----
+ { /* Add new patch number below this line */
++ /**/
++ 786,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+271. You collect hilarious signatures from all 250 mailing lists you
+ are subscribed to.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///