Problem: Buffer no longer unloaded when adding text properties to it.
Solution: Do not create the memfile. (closes #4808)
When text is deleted and a text property no longer includes any text, it is
deleted. However, a text property that was defined as zero-width will remain,
unless the whole line is deleted.
+` *E275*
+When a buffer is unloaded, all the text properties are gone. There is no way
+to store the properties in a file. You can only re-create them. When a
+buffer is hidden the text is preserved and so are the text properties. It is
+not possible to add text properties to an unloaded buffer.
When using replace mode, the text properties stay on the same character
positions, even though the characters themselves change.
bwipe! x
close
endfunc
+
+func Test_textprop_in_unloaded_buf()
+ edit Xaaa
+ call setline(1, 'aaa')
+ write
+ edit Xbbb
+ call setline(1, 'bbb')
+ write
+ let bnr = bufnr('')
+ edit Xaaa
+
+ call prop_type_add('ErrorMsg', #{highlight:'ErrorMsg'})
+ call assert_fails("call prop_add(1, 1, #{end_lnum: 1, endcol: 2, type: 'ErrorMsg', bufnr: bnr})", 'E275:')
+ exe 'buf ' .. bnr
+ call assert_equal('bbb', getline(1))
+ call assert_equal(0, prop_list(1)->len())
+
+ bwipe! Xaaa
+ bwipe! Xbbb
+ cal delete('Xaaa')
+ cal delete('Xbbb')
+endfunc
}
if (buf->b_ml.ml_mfp == NULL)
- ml_open(buf);
+ {
+ emsg(_("E275: Cannot add text property to unloaded buffer"));
+ return;
+ }
for (lnum = start_lnum; lnum <= end_lnum; ++lnum)
{
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1844,
/**/
1843,
/**/