fakevim: implement 's' in visual block mode

Cursor positioning after the operation is wrong, but bearable.
This commit is contained in:
hjk
2010-12-21 15:14:24 +01:00
parent dcd57ab2df
commit e9f5bb8d77

View File

@@ -2407,6 +2407,18 @@ EventResult FakeVimHandler::Private::handleCommandMode(const Input &input)
updateMiniBuffer();
} else if (input.isControl('r')) {
redo();
} else if (input.is('s') && isVisualBlockMode()) {
Range range(position(), anchor(), RangeBlockMode);
int beginLine = lineForPosition(anchor());
int endLine = lineForPosition(position());
m_visualInsertCount = qAbs(endLine - beginLine);
setPosition(qMin(position(), anchor()));
yankText(range, m_register);
removeText(range);
setDotCommand("%1s", count());
setUndoPosition(position());
breakEditBlock();
enterInsertMode();
} else if (input.is('s')) {
leaveVisualMode();
if (atEndOfLine())