Mercurial > vim
changeset 17694:6f9cde96ee3c v8.1.1844
patch 8.1.1844: buffer no longer unloaded when adding text properties
commit https://github.com/vim/vim/commit/45311b5274a6ac6e44235dfd4588c6b1bf0d4850
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Aug 13 22:27:32 2019 +0200
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 https://github.com/vim/vim/issues/4808)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 13 Aug 2019 22:30:06 +0200 |
parents | cefb7da6a32c |
children | f06c184d5a5f |
files | runtime/doc/textprop.txt src/testdir/test_textprop.vim src/textprop.c src/version.c |
diffstat | 4 files changed, 33 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/textprop.txt +++ b/runtime/doc/textprop.txt @@ -322,6 +322,11 @@ will move accordingly. 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.
--- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -823,3 +823,25 @@ func Test_textprop_remove_from_buf() 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