1
0
forked from aniani/vim

patch 8.1.1844: buffer no longer unloaded when adding text properties

Problem:    Buffer no longer unloaded when adding text properties to it.
Solution:   Do not create the memfile. (closes #4808)
This commit is contained in:
Bram Moolenaar
2019-08-13 22:27:32 +02:00
parent f077db2423
commit 45311b5274
4 changed files with 33 additions and 1 deletions

View File

@@ -322,6 +322,11 @@ will move accordingly.
When text is deleted and a text property no longer includes any text, it is 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, deleted. However, a text property that was defined as zero-width will remain,
unless the whole line is deleted. 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 When using replace mode, the text properties stay on the same character
positions, even though the characters themselves change. positions, even though the characters themselves change.

View File

@@ -823,3 +823,25 @@ func Test_textprop_remove_from_buf()
bwipe! x bwipe! x
close close
endfunc 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

View File

@@ -256,7 +256,10 @@ prop_add_common(
} }
if (buf->b_ml.ml_mfp == NULL) 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) for (lnum = start_lnum; lnum <= end_lnum; ++lnum)
{ {

View File

@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1844,
/**/ /**/
1843, 1843,
/**/ /**/