mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.2271: ml_get error when changing hidden buffer in Python
Problem: ml_get error when changing hidden buffer in Python. Solution: Block updating folds. (closes #7598)
This commit is contained in:
parent
38a434f7ba
commit
3e0107ea16
@ -807,6 +807,9 @@ f_setline(typval_T *argvars, typval_T *rettv)
|
|||||||
switch_buffer(bufref_T *save_curbuf, buf_T *buf)
|
switch_buffer(bufref_T *save_curbuf, buf_T *buf)
|
||||||
{
|
{
|
||||||
block_autocmds();
|
block_autocmds();
|
||||||
|
#ifdef FEAT_FOLDING
|
||||||
|
++disable_fold_update;
|
||||||
|
#endif
|
||||||
set_bufref(save_curbuf, curbuf);
|
set_bufref(save_curbuf, curbuf);
|
||||||
--curbuf->b_nwindows;
|
--curbuf->b_nwindows;
|
||||||
curbuf = buf;
|
curbuf = buf;
|
||||||
@ -821,6 +824,9 @@ switch_buffer(bufref_T *save_curbuf, buf_T *buf)
|
|||||||
restore_buffer(bufref_T *save_curbuf)
|
restore_buffer(bufref_T *save_curbuf)
|
||||||
{
|
{
|
||||||
unblock_autocmds();
|
unblock_autocmds();
|
||||||
|
#ifdef FEAT_FOLDING
|
||||||
|
--disable_fold_update;
|
||||||
|
#endif
|
||||||
// Check for valid buffer, just in case.
|
// Check for valid buffer, just in case.
|
||||||
if (bufref_valid(save_curbuf))
|
if (bufref_valid(save_curbuf))
|
||||||
{
|
{
|
||||||
|
@ -4016,4 +4016,37 @@ func Test_python3_non_utf8_string()
|
|||||||
sunmap <Esc>@
|
sunmap <Esc>@
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_python3_fold_hidden_buffer()
|
||||||
|
CheckFeature folding
|
||||||
|
|
||||||
|
set fdm=expr fde=Fde(v:lnum)
|
||||||
|
let b:regex = '^'
|
||||||
|
func Fde(lnum)
|
||||||
|
let ld = [{}]
|
||||||
|
let lines = bufnr('%')->getbufline(1, '$')
|
||||||
|
let was_import = 0
|
||||||
|
for lnum in range(1, len(lines))
|
||||||
|
let line = lines[lnum]
|
||||||
|
call add(ld, {'a': b:regex})
|
||||||
|
let ld[lnum].foldexpr = was_import ? 1 : '>1'
|
||||||
|
let was_import = 1
|
||||||
|
endfor
|
||||||
|
return ld[a:lnum].foldexpr
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
call setline(1, repeat([''], 15) + repeat(['from'], 3))
|
||||||
|
eval repeat(['x'], 17)->writefile('Xa.txt')
|
||||||
|
split Xa.txt
|
||||||
|
py3 import vim
|
||||||
|
py3 b = vim.current.buffer
|
||||||
|
py3 aaa = b[:]
|
||||||
|
hide
|
||||||
|
py3 b[:] = aaa
|
||||||
|
|
||||||
|
call delete('Xa.txt')
|
||||||
|
set fdm& fde&
|
||||||
|
delfunc Fde
|
||||||
|
bwipe! Xa.txt
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@ -750,6 +750,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 */
|
||||||
|
/**/
|
||||||
|
2271,
|
||||||
/**/
|
/**/
|
||||||
2270,
|
2270,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user