]> granicus.if.org Git - vim/commitdiff
patch 8.1.1387: calling prop_add() in an empty buffer doesn't work v8.1.1387
authorBram Moolenaar <Bram@vim.org>
Fri, 24 May 2019 18:41:55 +0000 (20:41 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 24 May 2019 18:41:55 +0000 (20:41 +0200)
Problem:    Calling prop_add() in an empty buffer doesn't work. (Dominique
            Pelle)
Solution:   Open the memline before adding a text property. (closes #4412)

src/testdir/test_textprop.vim
src/textprop.c
src/version.c

index 08b93dfc941133a82d0e983ce0688cc1df9a2650..4d620eab876c0cb5d90f45d120f218ddb7d70107 100644 (file)
@@ -752,3 +752,11 @@ func Test_textprop_screenshot_visual()
   " Same, but delete four columns
   call RunTestVisualBlock(4, '02')
 endfunc
+
+" Adding a text property to a new buffer should not fail
+func Test_textprop_empty_buffer()
+  call prop_type_add('comment', {'highlight': 'Search'})
+  new
+  call prop_add(1, 1, {'type': 'comment'})
+  close
+endfunc
index e993afce8c3cfe61ec5f647edebd2a2b58c4c580..9011c663e2aa37ea06da8920c2134616acbbbe83 100644 (file)
@@ -12,6 +12,7 @@
  *
  * TODO:
  * - Adjust text property column and length when text is inserted/deleted.
+ *   -> :substitute with multiple matches, issue #4427
  *   -> a :substitute with a multi-line match
  *   -> search for changed_bytes() from misc1.c
  *   -> search for mark_col_adjust()
@@ -238,6 +239,9 @@ f_prop_add(typval_T *argvars, typval_T *rettv UNUSED)
        return;
     }
 
+    if (buf->b_ml.ml_mfp == NULL)
+       ml_open(buf);
+
     for (lnum = start_lnum; lnum <= end_lnum; ++lnum)
     {
        colnr_T col;    // start column
@@ -327,7 +331,7 @@ get_text_props(buf_T *buf, linenr_T lnum, char_u **props, int will_change)
 
     // Be quick when no text property types have been defined or the buffer,
     // unless we are adding one.
-    if (!buf->b_has_textprop && !will_change)
+    if ((!buf->b_has_textprop && !will_change) || buf->b_ml.ml_mfp == NULL)
        return 0;
 
     // Fetch the line to get the ml_line_len field updated.
index 3653b9b613023b0a032600ba6d574086c47c6bbd..ac1c67aca7e0078da54c5c65fb63183a7b538c95 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1387,
 /**/
     1386,
 /**/