Skip to content

Commit 2af5dc1

Browse files
committed
fix , in visual mode
1 parent 7238948 commit 2af5dc1

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

src/vim.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2681,11 +2681,9 @@ export function initVim(CM) {
26812681
var repeat = motionArgs.repeat;
26822682
var forward = motionArgs.forward === lastSearch.forward;
26832683
var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1);
2684-
cm.moveH(-increment, 'char');
26852684
motionArgs.inclusive = forward ? true : false;
2686-
var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter);
2685+
var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter, offsetCursor(head, 0, -increment));
26872686
if (!curEnd) {
2688-
cm.moveH(increment, 'char');
26892687
return head;
26902688
}
26912689
curEnd.ch += increment;

test/vim_test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3871,6 +3871,23 @@ testVim('vFT', function(cm, vim, helpers) {
38713871
helpers.doKeys('F', '1');
38723872
helpers.assertCursorAt(0, 0);
38733873
}, { value: '1123 123 123'});
3874+
testVim('vf,;', function(cm, vim, helpers) {
3875+
helpers.doKeys('0', 'v')
3876+
helpers.doKeys('f', '.');
3877+
eq('ab.', cm.getSelection());
3878+
helpers.doKeys(';');
3879+
eq('ab.cd.', cm.getSelection());
3880+
helpers.doKeys(';');
3881+
eq('ab.cd.ef.', cm.getSelection());
3882+
helpers.doKeys(',');
3883+
eq('ab.cd.', cm.getSelection());
3884+
helpers.doKeys(';');
3885+
eq('ab.cd.ef.', cm.getSelection());
3886+
helpers.doKeys('2', ',');
3887+
eq('ab.', cm.getSelection());
3888+
helpers.doKeys('2', ',');
3889+
eq('ab.', cm.getSelection());
3890+
}, { value: 'ab.cd.ef.g'});
38743891
testVim('page_motions', function(cm, vim, helpers) {
38753892
var value = "x".repeat(200).split("").map((_, i)=>i).join("\n");
38763893
cm.setValue(value);

0 commit comments

Comments
 (0)