From 008cac1096acce3384465ad8c4d6eb07296c5f2b Mon Sep 17 00:00:00 2001 From: upstream Date: Wed, 23 Sep 2026 06:25:40 +0200 Subject: [PATCH] Upstream vscode-neovim/vscode-neovim state of the touched files before e9738b53f2 --- src/test/integ/multi-byte-chars.test.ts | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/test/integ/multi-byte-chars.test.ts b/src/test/integ/multi-byte-chars.test.ts index 5f843e7..73354ce 100644 --- a/src/test/integ/multi-byte-chars.test.ts +++ b/src/test/integ/multi-byte-chars.test.ts @@ -305,4 +305,34 @@ describe("Multi-width characters", () => { await sendEscapeKey(); }); + + it("Works - visual mode over consecutive non-BMP chars", async () => { + await openTextDocument({ content: ["a๐•œ๐•b"].join("\n") }); + + await sendVSCodeKeys("v"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 1)] }, client); + + await sendVSCodeKeys("ll"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 5)] }, client); + + await sendVSCodeKeys("l"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 6)] }, client); + + await sendEscapeKey(); + }); + + it("Works - visual mode across mixed BMP and non-BMP chars", async () => { + await openTextDocument({ content: ["aแตฉ๐•œb"].join("\n") }); + + await sendVSCodeKeys("v"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 1)] }, client); + + await sendVSCodeKeys("ll"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 3)] }, client); + + await sendVSCodeKeys("l"); + await assertContent({ vsCodeSelections: [new vscode.Selection(0, 0, 0, 5)] }, client); + + await sendEscapeKey(); + }); });