mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(bufupdate): send events when inserting with virtualedit
Problem first raised https://github.com/nvim-treesitter/nvim-treesitter/issues/1304
This commit is contained in:
		| @@ -14,6 +14,7 @@ | ||||
| #include "nvim/misc1.h" | ||||
| #include "nvim/move.h" | ||||
| #include "nvim/screen.h" | ||||
| #include "nvim/extmark.h" | ||||
| #include "nvim/state.h" | ||||
| #include "nvim/vim.h" | ||||
| #include "nvim/ascii.h" | ||||
| @@ -181,7 +182,7 @@ static int coladvance2( | ||||
|         memset(newline + idx, ' ', (size_t)correct); | ||||
|  | ||||
|         ml_replace(pos->lnum, newline, false); | ||||
|         changed_bytes(pos->lnum, (colnr_T)idx); | ||||
|         inserted_bytes(pos->lnum, (colnr_T)idx, 0, correct); | ||||
|         idx += correct; | ||||
|         col = wcol; | ||||
|       } else { | ||||
| @@ -206,7 +207,7 @@ static int coladvance2( | ||||
|         memcpy(newline + idx + csize, line + idx + 1, n); | ||||
|  | ||||
|         ml_replace(pos->lnum, newline, false); | ||||
|         changed_bytes(pos->lnum, idx); | ||||
|         inserted_bytes(pos->lnum, idx, 1, csize); | ||||
|         idx += (csize - 1 + correct); | ||||
|         col += correct; | ||||
|       } | ||||
|   | ||||
| @@ -936,6 +936,26 @@ describe('lua: nvim_buf_attach on_bytes', function() | ||||
|       } | ||||
|     end) | ||||
|  | ||||
|     it("virtual edit", function () | ||||
|       local check_events = setup_eventcheck(verify, { "", "	" }) | ||||
|  | ||||
|       meths.set_option("virtualedit", "all") | ||||
|  | ||||
|       feed [[<Right><Right>iab<ESC>]] | ||||
|  | ||||
|       check_events { | ||||
|         { "test1", "bytes", 1, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2 }; | ||||
|         { "test1", "bytes", 1, 4, 0, 2, 2, 0, 0, 0, 0, 2, 2 }; | ||||
|       } | ||||
|  | ||||
|       feed [[j<Right><Right>iab<ESC>]] | ||||
|  | ||||
|       check_events { | ||||
|         { "test1", "bytes", 1, 5, 1, 0, 5, 0, 1, 1, 0, 8, 8 }; | ||||
|         { "test1", "bytes", 1, 6, 1, 5, 10, 0, 0, 0, 0, 2, 2 }; | ||||
|       } | ||||
|     end) | ||||
|  | ||||
|     it("block visual paste", function() | ||||
|       local check_events = setup_eventcheck(verify, {"AAA", | ||||
|                                                      "BBB", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Thomas Vigouroux
					Thomas Vigouroux