forked from qt-creator/qt-creator
fakevim: implement 'R' for overwriting in current line
This commit is contained in:
@@ -796,6 +796,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, const QString &text)
|
|||||||
} else if (key == 'r') {
|
} else if (key == 'r') {
|
||||||
m_submode = ReplaceSubMode;
|
m_submode = ReplaceSubMode;
|
||||||
m_dotCommand = "r";
|
m_dotCommand = "r";
|
||||||
|
} else if (key == 'R') {
|
||||||
|
m_mode = InsertMode;
|
||||||
|
m_submode = ReplaceSubMode;
|
||||||
|
m_dotCommand = "R";
|
||||||
} else if (key == control('r')) {
|
} else if (key == control('r')) {
|
||||||
redo();
|
redo();
|
||||||
} else if (key == 's') {
|
} else if (key == 's') {
|
||||||
@@ -888,15 +892,18 @@ bool FakeVimHandler::Private::handleInsertMode(int key, const QString &text)
|
|||||||
m_tc.movePosition(Left, MoveAnchor, 1);
|
m_tc.movePosition(Left, MoveAnchor, 1);
|
||||||
m_lastInsertion.clear();
|
m_lastInsertion.clear();
|
||||||
} else if (key == Key_Down) {
|
} else if (key == Key_Down) {
|
||||||
|
m_submode = NoSubMode;
|
||||||
m_tc.movePosition(Down, MoveAnchor, 1);
|
m_tc.movePosition(Down, MoveAnchor, 1);
|
||||||
m_lastInsertion.clear();
|
m_lastInsertion.clear();
|
||||||
} else if (key == Key_Up) {
|
} else if (key == Key_Up) {
|
||||||
|
m_submode = NoSubMode;
|
||||||
m_tc.movePosition(Up, MoveAnchor, 1);
|
m_tc.movePosition(Up, MoveAnchor, 1);
|
||||||
m_lastInsertion.clear();
|
m_lastInsertion.clear();
|
||||||
} else if (key == Key_Right) {
|
} else if (key == Key_Right) {
|
||||||
m_tc.movePosition(Right, MoveAnchor, 1);
|
m_tc.movePosition(Right, MoveAnchor, 1);
|
||||||
m_lastInsertion.clear();
|
m_lastInsertion.clear();
|
||||||
} else if (key == Key_Return) {
|
} else if (key == Key_Return) {
|
||||||
|
m_submode = NoSubMode;
|
||||||
m_tc.insertBlock();
|
m_tc.insertBlock();
|
||||||
m_lastInsertion += "\n";
|
m_lastInsertion += "\n";
|
||||||
} else if (key == Key_Backspace || key == control('h')) {
|
} else if (key == Key_Backspace || key == control('h')) {
|
||||||
@@ -917,6 +924,12 @@ bool FakeVimHandler::Private::handleInsertMode(int key, const QString &text)
|
|||||||
m_tc.insertText(str);
|
m_tc.insertText(str);
|
||||||
} else if (!text.isEmpty()) {
|
} else if (!text.isEmpty()) {
|
||||||
m_lastInsertion.append(text);
|
m_lastInsertion.append(text);
|
||||||
|
if (m_submode == ReplaceSubMode) {
|
||||||
|
if (atEol())
|
||||||
|
m_submode = NoSubMode;
|
||||||
|
else
|
||||||
|
m_tc.deleteChar();
|
||||||
|
}
|
||||||
m_tc.insertText(text);
|
m_tc.insertText(text);
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user