summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1375
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1375')
-rw-r--r--data/vim/patches/8.1.1375401
1 files changed, 401 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1375 b/data/vim/patches/8.1.1375
new file mode 100644
index 000000000..e2456dbad
--- /dev/null
+++ b/data/vim/patches/8.1.1375
@@ -0,0 +1,401 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1375
+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.1375
+Problem: Without "TS" in 'shortmess' get a hit-enter prompt often.
+Solution: Always truncate the search message. Also avoid putting it in the
+ message history. (closes #4413)
+Files: src/search.c, src/main.c, src/testdir/test_search_stat.vim
+
+
+*** ../vim-8.1.1374/src/search.c 2019-05-23 21:35:44.455922641 +0200
+--- src/search.c 2019-05-24 13:05:13.405227544 +0200
+***************
+*** 1381,1390 ****
+--- 1381,1409 ----
+ && !cmd_silent && msg_silent == 0)
+ {
+ char_u *trunc;
++ char_u off_buf[40];
++ int off_len = 0;
+
+ // Compute msg_row early.
+ msg_start();
+
++ // Get the offset, so we know how long it is.
++ if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
++ {
++ p = off_buf;
++ *p++ = dirc;
++ if (spats[0].off.end)
++ *p++ = 'e';
++ else if (!spats[0].off.line)
++ *p++ = 's';
++ if (spats[0].off.off > 0 || spats[0].off.line)
++ *p++ = '+';
++ *p = NUL;
++ if (spats[0].off.off != 0 || spats[0].off.line)
++ sprintf((char *)p, "%ld", spats[0].off.off);
++ off_len = STRLEN(off_buf);
++ }
++
+ if (*searchstr == NUL)
+ p = spats[0].pat;
+ else
+***************
+*** 1393,1411 ****
+ if (!shortmess(SHM_SEARCHCOUNT))
+ {
+ // Reserve enough space for the search pattern + offset +
+! // search stat.
+ if (msg_scrolled != 0)
+ // Use all the columns.
+ len = (int)(Rows - msg_row) * Columns - 1;
+ else
+ // Use up to 'showcmd' column.
+ len = (int)(Rows - msg_row - 1) * Columns + sc_col - 1;
+! if (len < STRLEN(p) + 40 + SEARCH_STAT_BUF_LEN + 1)
+! len = STRLEN(p) + 40 + SEARCH_STAT_BUF_LEN + 1;
+ }
+ else
+ // Reserve enough space for the search pattern + offset.
+! len = STRLEN(p) + 40;
+
+ msgbuf = alloc((int)len);
+ if (msgbuf != NULL)
+--- 1412,1432 ----
+ if (!shortmess(SHM_SEARCHCOUNT))
+ {
+ // Reserve enough space for the search pattern + offset +
+! // search stat. Use all the space available, so that the
+! // search state is right aligned. If there is not enough space
+! // msg_strtrunc() will shorten in the middle.
+ if (msg_scrolled != 0)
+ // Use all the columns.
+ len = (int)(Rows - msg_row) * Columns - 1;
+ else
+ // Use up to 'showcmd' column.
+ len = (int)(Rows - msg_row - 1) * Columns + sc_col - 1;
+! if (len < STRLEN(p) + off_len + SEARCH_STAT_BUF_LEN + 3)
+! len = STRLEN(p) + off_len + SEARCH_STAT_BUF_LEN + 3;
+ }
+ else
+ // Reserve enough space for the search pattern + offset.
+! len = STRLEN(p) + off_len + 3;
+
+ msgbuf = alloc((int)len);
+ if (msgbuf != NULL)
+***************
+*** 1422,1446 ****
+ }
+ else
+ mch_memmove(msgbuf + 1, p, STRLEN(p));
+! if (spats[0].off.line || spats[0].off.end || spats[0].off.off)
+! {
+! p = msgbuf + STRLEN(p) + 1;
+! *p++ = dirc;
+! if (spats[0].off.end)
+! *p++ = 'e';
+! else if (!spats[0].off.line)
+! *p++ = 's';
+! if (spats[0].off.off > 0 || spats[0].off.line)
+! *p++ = '+';
+! if (spats[0].off.off != 0 || spats[0].off.line)
+! {
+! int l = 0;
+! l = sprintf((char *)p, "%ld", spats[0].off.off);
+! p[l] = ' '; // remove NUL from sprintf
+! }
+! }
+
+! trunc = msg_strtrunc(msgbuf, FALSE);
+ if (trunc != NULL)
+ {
+ vim_free(msgbuf);
+--- 1443,1452 ----
+ }
+ else
+ mch_memmove(msgbuf + 1, p, STRLEN(p));
+! if (off_len > 0)
+! mch_memmove(msgbuf + STRLEN(p) + 1, off_buf, off_len);
+
+! trunc = msg_strtrunc(msgbuf, TRUE);
+ if (trunc != NULL)
+ {
+ vim_free(msgbuf);
+***************
+*** 5028,5035 ****
+ lbuf = curbuf;
+ lastpos = p;
+
+! // keep the message even after redraw
+ give_warning(msgbuf, FALSE);
+ }
+ p_ws = save_ws;
+ }
+--- 5034,5043 ----
+ lbuf = curbuf;
+ lastpos = p;
+
+! // keep the message even after redraw, but don't put in history
+! msg_hist_off = TRUE;
+ give_warning(msgbuf, FALSE);
++ msg_hist_off = FALSE;
+ }
+ p_ws = save_ws;
+ }
+*** ../vim-8.1.1374/src/main.c 2019-05-23 21:35:44.455922641 +0200
+--- src/main.c 2019-05-24 12:38:14.310483062 +0200
+***************
+*** 1271,1281 ****
+ {
+ char_u *p;
+
+! /* msg_attr_keep() will set keep_msg to NULL, must free the
+! * string here. Don't reset keep_msg, msg_attr_keep() uses it
+! * to check for duplicates. */
+ p = keep_msg;
+ msg_attr((char *)p, keep_msg_attr);
+ vim_free(p);
+ }
+ if (need_fileinfo) /* show file info after redraw */
+--- 1271,1283 ----
+ {
+ char_u *p;
+
+! // msg_attr_keep() will set keep_msg to NULL, must free the
+! // string here. Don't reset keep_msg, msg_attr_keep() uses it
+! // to check for duplicates. Never put this message in history.
+ p = keep_msg;
++ msg_hist_off = TRUE;
+ msg_attr((char *)p, keep_msg_attr);
++ msg_hist_off = FALSE;
+ vim_free(p);
+ }
+ if (need_fileinfo) /* show file info after redraw */
+*** ../vim-8.1.1374/src/testdir/test_search_stat.vim 2019-05-18 19:26:25.973151461 +0200
+--- src/testdir/test_search_stat.vim 2019-05-24 12:47:41.903233016 +0200
+***************
+*** 11,31 ****
+ " Append 50 lines with text to search for, "foobar" appears 20 times
+ call append(0, repeat(['foobar', 'foo', 'fooooobar', 'foba', 'foobar'], 10))
+
+! " 1) match at second line
+ call cursor(1, 1)
+ let @/ = 'fo*\(bar\?\)\?'
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[2/50\]'
+ let pat = escape(@/, '()*?'). '\s\+'
+ call assert_match(pat .. stat, g:a)
+
+! " 2) Match at last line
+ call cursor(line('$')-2, 1)
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[50/50\]'
+ call assert_match(pat .. stat, g:a)
+
+! " 3) No search stat
+ set shortmess+=S
+ call cursor(1, 1)
+ let stat = '\[2/50\]'
+--- 11,34 ----
+ " Append 50 lines with text to search for, "foobar" appears 20 times
+ call append(0, repeat(['foobar', 'foo', 'fooooobar', 'foba', 'foobar'], 10))
+
+! " match at second line
+ call cursor(1, 1)
++ let messages_before = execute('messages')
+ let @/ = 'fo*\(bar\?\)\?'
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[2/50\]'
+ let pat = escape(@/, '()*?'). '\s\+'
+ call assert_match(pat .. stat, g:a)
++ " didn't get added to message history
++ call assert_equal(messages_before, execute('messages'))
+
+! " Match at last line
+ call cursor(line('$')-2, 1)
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[50/50\]'
+ call assert_match(pat .. stat, g:a)
+
+! " No search stat
+ set shortmess+=S
+ call cursor(1, 1)
+ let stat = '\[2/50\]'
+***************
+*** 33,39 ****
+ call assert_notmatch(pat .. stat, g:a)
+ set shortmess-=S
+
+! " 4) Many matches
+ call cursor(line('$')-2, 1)
+ let @/ = '.'
+ let pat = escape(@/, '()*?'). '\s\+'
+--- 36,42 ----
+ call assert_notmatch(pat .. stat, g:a)
+ set shortmess-=S
+
+! " Many matches
+ call cursor(line('$')-2, 1)
+ let @/ = '.'
+ let pat = escape(@/, '()*?'). '\s\+'
+***************
+*** 45,51 ****
+ let stat = '\[1/>99\] W'
+ call assert_match(pat .. stat, g:a)
+
+! " 5) Many matches
+ call cursor(1, 1)
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[2/>99\]'
+--- 48,54 ----
+ let stat = '\[1/>99\] W'
+ call assert_match(pat .. stat, g:a)
+
+! " Many matches
+ call cursor(1, 1)
+ let g:a = execute(':unsilent :norm! n')
+ let stat = '\[2/>99\]'
+***************
+*** 55,61 ****
+ let stat = '\[>99/>99\] W'
+ call assert_match(pat .. stat, g:a)
+
+! " 6) right-left
+ if exists("+rightleft")
+ set rl
+ call cursor(1,1)
+--- 58,64 ----
+ let stat = '\[>99/>99\] W'
+ call assert_match(pat .. stat, g:a)
+
+! " right-left
+ if exists("+rightleft")
+ set rl
+ call cursor(1,1)
+***************
+*** 67,73 ****
+ set norl
+ endif
+
+! " 7) right-left bottom
+ if exists("+rightleft")
+ set rl
+ call cursor('$',1)
+--- 70,76 ----
+ set norl
+ endif
+
+! " right-left bottom
+ if exists("+rightleft")
+ set rl
+ call cursor('$',1)
+***************
+*** 78,84 ****
+ set norl
+ endif
+
+! " 8) right-left back at top
+ if exists("+rightleft")
+ set rl
+ call cursor('$',1)
+--- 81,87 ----
+ set norl
+ endif
+
+! " right-left back at top
+ if exists("+rightleft")
+ set rl
+ call cursor('$',1)
+***************
+*** 90,96 ****
+ set norl
+ endif
+
+! " 9) normal, back at bottom
+ call cursor(1,1)
+ let @/ = 'foobar'
+ let pat = '?foobar\s\+'
+--- 93,99 ----
+ set norl
+ endif
+
+! " normal, back at bottom
+ call cursor(1,1)
+ let @/ = 'foobar'
+ let pat = '?foobar\s\+'
+***************
+*** 100,106 ****
+ call assert_match('search hit TOP, continuing at BOTTOM', g:a)
+ call assert_match('\[20/20\] W', Screenline(&lines))
+
+! " 10) normal, no match
+ call cursor(1,1)
+ let @/ = 'zzzzzz'
+ let g:a = ''
+--- 103,109 ----
+ call assert_match('search hit TOP, continuing at BOTTOM', g:a)
+ call assert_match('\[20/20\] W', Screenline(&lines))
+
+! " normal, no match
+ call cursor(1,1)
+ let @/ = 'zzzzzz'
+ let g:a = ''
+***************
+*** 114,120 ****
+ call assert_false(1)
+ endtry
+
+! " 11) normal, n comes from a mapping
+ " Need to move over more than 64 lines to trigger char_avail(.
+ nnoremap n nzv
+ call cursor(1,1)
+--- 117,123 ----
+ call assert_false(1)
+ endtry
+
+! " normal, n comes from a mapping
+ " Need to move over more than 64 lines to trigger char_avail(.
+ nnoremap n nzv
+ call cursor(1,1)
+***************
+*** 130,136 ****
+ call assert_match(pat .. stat, g:b)
+ unmap n
+
+! " 11) normal, but silent
+ call cursor(1,1)
+ let @/ = 'find this'
+ let pat = '/find this\s\+'
+--- 133,139 ----
+ call assert_match(pat .. stat, g:b)
+ unmap n
+
+! " normal, but silent
+ call cursor(1,1)
+ let @/ = 'find this'
+ let pat = '/find this\s\+'
+*** ../vim-8.1.1374/src/version.c 2019-05-24 11:45:18.987591736 +0200
+--- src/version.c 2019-05-24 12:34:50.371607742 +0200
+***************
+*** 769,770 ****
+--- 769,772 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1375,
+ /**/
+
+--
+I have a drinking problem -- I can't afford it.
+
+ /// 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 ///