]> granicus.if.org Git - vim/commitdiff
patch 8.1.0865: when 'listchars' only contains "nbsp:X" it does not work v8.1.0865
authorBram Moolenaar <Bram@vim.org>
Thu, 31 Jan 2019 20:57:21 +0000 (21:57 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 31 Jan 2019 20:57:21 +0000 (21:57 +0100)
Problem:    When 'listchars' only contains "nbsp:X" it does not work.
Solution:   Set extra_check when lcs_nbsp is set. (Ralf Schandl, closes #3889)

src/screen.c
src/testdir/test_listchars.vim
src/version.c

index 1370773f8f0e8d884c09b3a0d6781e81ef22b6e1..caf6e2c8badb5aaf7c316660d184b07972a5b404 100644 (file)
@@ -1164,8 +1164,6 @@ win_update(win_T *wp)
            mod_bot = wp->w_redraw_bot + 1;
        else
            mod_bot = 0;
-       wp->w_redraw_top = 0;   /* reset for next time */
-       wp->w_redraw_bot = 0;
        if (buf->b_mod_set)
        {
            if (mod_top == 0 || mod_top > buf->b_mod_top)
@@ -1277,6 +1275,8 @@ win_update(win_T *wp)
        if (mod_top != 0 && buf->b_mod_xlines != 0 && wp->w_p_nu)
            mod_bot = MAXLNUM;
     }
+    wp->w_redraw_top = 0;      // reset for next time
+    wp->w_redraw_bot = 0;
 
     /*
      * When only displaying the lines at the top, set top_end.  Used when
@@ -3498,7 +3498,7 @@ win_line(
 
     if (wp->w_p_list)
     {
-       if (lcs_space || lcs_trail)
+       if (lcs_space || lcs_trail || lcs_nbsp)
            extra_check = TRUE;
        /* find start of trailing whitespace */
        if (lcs_trail)
index 4899f59910670bc0061db1348984332e4297a694..2870f2d4ef0aa2305856ffceb85d512929e1b5d0 100644 (file)
@@ -90,6 +90,26 @@ func Test_listchars()
              \ '.....h>-$',
              \ 'iii<<<<><<$', '$'], l)
 
+
+  " test nbsp
+  normal ggdG
+  set listchars=nbsp:X,trail:Y
+  set list
+  " Non-breaking space
+  let nbsp = nr2char(0xa0)
+  call append(0, [ ">".nbsp."<" ])
+
+  let expected = '>X< '
+
+  redraw!
+  call cursor(1, 1)
+  call assert_equal([expected], ScreenLines(1, virtcol('$')))
+
+  set listchars=nbsp:X
+  redraw!
+  call cursor(1, 1)
+  call assert_equal([expected], ScreenLines(1, virtcol('$')))
+
   enew!
   set listchars& ff&
 endfunc
index 7a02fbdca130e71778a9ffc16b68dc4b67a09b72..1bedce16524389d8713511057160de01edcbb0a9 100644 (file)
@@ -783,6 +783,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    865,
 /**/
     864,
 /**/