# HG changeset patch # User Bram Moolenaar # Date 1559818805 -7200 # Node ID a32169a40566bed35872f29cd18c3a0cea747932 # Parent 1583207ec2ab3ad4594d1b1fc6c83d69053650f2 patch 8.1.1475: search string not displayed when 'rightleft' is set commit https://github.com/vim/vim/commit/db294adc65d73ffa5cdf3d0ab45ccbf05b965414 Author: Bram Moolenaar Date: Thu Jun 6 12:49:29 2019 +0200 patch 8.1.1475: search string not displayed when 'rightleft' is set Problem: Search string not displayed when 'rightleft' is set. Solution: Clear the right part of the old text. (closes https://github.com/vim/vim/issues/4488, closes https://github.com/vim/vim/issues/4489) diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -1462,6 +1462,7 @@ do_search( if (curwin->w_p_rl && *curwin->w_p_rlc == 's') { char_u *r; + size_t pat_len; r = reverse_text(msgbuf); if (r != NULL) @@ -1471,9 +1472,13 @@ do_search( // move reversed text to beginning of buffer while (*r != NUL && *r == ' ') r++; - mch_memmove(msgbuf, r, msgbuf + STRLEN(msgbuf) - r); + pat_len = msgbuf + STRLEN(msgbuf) - r; + mch_memmove(msgbuf, r, pat_len); // overwrite old text - vim_memset(r, ' ', msgbuf + STRLEN(msgbuf) - r); + if ((size_t)(r - msgbuf) >= pat_len) + vim_memset(r, ' ', pat_len); + else + vim_memset(msgbuf + pat_len, ' ', r - msgbuf); } } #endif diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -1289,3 +1289,25 @@ func Test_search_match_at_curpos() close! endfunc + +func Test_search_display_pattern() + new + call setline(1, ['foo', 'bar', 'foobar']) + + call cursor(1, 1) + let @/ = 'foo' + let pat = escape(@/, '()*?'. '\s\+') + let g:a = execute(':unsilent :norm! n') + call assert_match(pat, g:a) + + " right-left + if exists("+rightleft") + set rl + call cursor(1, 1) + let @/ = 'foo' + let pat = 'oof/\s\+' + let g:a = execute(':unsilent :norm! n') + call assert_match(pat, g:a) + set norl + endif +endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1475, +/**/ 1474, /**/ 1473,