Patch 8.1.1681
Problem:    Insert stray "{" when listener gets buffer line. (Paul Jolly)
Solution:   Flush the cached line after invoking listeners. (closes #4455)
Files:      src/memline.c, src/testdir/test_listener.vim


*** ../vim-8.1.1680/src/memline.c       2019-06-18 22:53:19.018129835 +0200
--- src/memline.c       2019-07-13 20:11:02.755661155 +0200
***************
*** 2836,2843 ****
  
  #ifdef FEAT_EVAL
      // When inserting above recorded changes: flush the changes before 
changing
!     // the text.
      may_invoke_listeners(buf, lnum + 1, lnum + 1, 1);
  #endif
  
  #ifdef FEAT_TEXT_PROP
--- 2836,2845 ----
  
  #ifdef FEAT_EVAL
      // When inserting above recorded changes: flush the changes before 
changing
!     // the text.  Then flush the cached line, it may become invalid.
      may_invoke_listeners(buf, lnum + 1, lnum + 1, 1);
+     if (curbuf->b_ml.ml_line_lnum != 0)
+       ml_flush_line(curbuf);
  #endif
  
  #ifdef FEAT_TEXT_PROP
*** ../vim-8.1.1680/src/testdir/test_listener.vim       2019-06-20 
03:45:31.175536929 +0200
--- src/testdir/test_listener.vim       2019-07-13 20:10:35.639776461 +0200
***************
*** 242,244 ****
--- 242,270 ----
    delfunc MyListener
    bwipe!
  endfunc
+ 
+ " This verifies the fix for issue #4455
+ func Test_listener_caches_buffer_line()
+   new
+   inoremap <silent> <CR> <CR><Esc>O
+ 
+   function EchoChanges(bufnr, start, end, added, changes)
+     for l:change in a:changes
+       let text = getbufline(a:bufnr, l:change.lnum, 
l:change.end-1+l:change.added)
+     endfor
+   endfunction
+   let lid = listener_add("EchoChanges")
+   set autoindent
+   set cindent
+ 
+   call setline(1, ["{", "\tif true {}", "}"])
+   exe "normal /{}\nl"
+   call feedkeys("i\r\e", 'xt')
+   call assert_equal(["{", "\tif true {", "", "\t}", "}"], getline(1, 5))
+ 
+   bwipe!
+   delfunc EchoChanges
+   call listener_remove(lid)
+   iunmap <CR>
+   set nocindent
+ endfunc
*** ../vim-8.1.1680/src/version.c       2019-07-13 18:17:20.448328434 +0200
--- src/version.c       2019-07-13 19:48:30.488967986 +0200
***************
*** 779,780 ****
--- 779,782 ----
  {   /* Add new patch number below this line */
+ /**/
+     1681,
  /**/

-- 
TALL KNIGHT: We are now no longer the Knights Who Say Ni!
ONE KNIGHT:  Ni!
OTHERS:      Sh!
ONE KNIGHT:  (whispers) Sorry.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/201907131815.x6DIF0nW003021%40masaka.moolenaar.net.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui