mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06: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:
parent
c46d981461
commit
237175cf20
@ -14,6 +14,7 @@
|
|||||||
#include "nvim/misc1.h"
|
#include "nvim/misc1.h"
|
||||||
#include "nvim/move.h"
|
#include "nvim/move.h"
|
||||||
#include "nvim/screen.h"
|
#include "nvim/screen.h"
|
||||||
|
#include "nvim/extmark.h"
|
||||||
#include "nvim/state.h"
|
#include "nvim/state.h"
|
||||||
#include "nvim/vim.h"
|
#include "nvim/vim.h"
|
||||||
#include "nvim/ascii.h"
|
#include "nvim/ascii.h"
|
||||||
@ -181,7 +182,7 @@ static int coladvance2(
|
|||||||
memset(newline + idx, ' ', (size_t)correct);
|
memset(newline + idx, ' ', (size_t)correct);
|
||||||
|
|
||||||
ml_replace(pos->lnum, newline, false);
|
ml_replace(pos->lnum, newline, false);
|
||||||
changed_bytes(pos->lnum, (colnr_T)idx);
|
inserted_bytes(pos->lnum, (colnr_T)idx, 0, correct);
|
||||||
idx += correct;
|
idx += correct;
|
||||||
col = wcol;
|
col = wcol;
|
||||||
} else {
|
} else {
|
||||||
@ -206,7 +207,7 @@ static int coladvance2(
|
|||||||
memcpy(newline + idx + csize, line + idx + 1, n);
|
memcpy(newline + idx + csize, line + idx + 1, n);
|
||||||
|
|
||||||
ml_replace(pos->lnum, newline, false);
|
ml_replace(pos->lnum, newline, false);
|
||||||
changed_bytes(pos->lnum, idx);
|
inserted_bytes(pos->lnum, idx, 1, csize);
|
||||||
idx += (csize - 1 + correct);
|
idx += (csize - 1 + correct);
|
||||||
col += correct;
|
col += correct;
|
||||||
}
|
}
|
||||||
|
@ -936,6 +936,26 @@ describe('lua: nvim_buf_attach on_bytes', function()
|
|||||||
}
|
}
|
||||||
end)
|
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()
|
it("block visual paste", function()
|
||||||
local check_events = setup_eventcheck(verify, {"AAA",
|
local check_events = setup_eventcheck(verify, {"AAA",
|
||||||
"BBB",
|
"BBB",
|
||||||
|
Loading…
Reference in New Issue
Block a user