forked from qt-creator/qt-creator
Fixes: fakevim: rough Ctrl-O/Ctrl-I implementation
This commit is contained in:
@@ -348,6 +348,10 @@ public:
|
|||||||
|
|
||||||
QPointer<QObject> m_extraData;
|
QPointer<QObject> m_extraData;
|
||||||
int m_cursorWidth;
|
int m_cursorWidth;
|
||||||
|
|
||||||
|
void recordJump();
|
||||||
|
QList<int> m_jumpListUndo;
|
||||||
|
QList<int> m_jumpListRedo;
|
||||||
};
|
};
|
||||||
|
|
||||||
FakeVimHandler::Private::Private(FakeVimHandler *parent, QWidget *widget)
|
FakeVimHandler::Private::Private(FakeVimHandler *parent, QWidget *widget)
|
||||||
@@ -797,6 +801,7 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
|
|||||||
m_lastSearchForward = (key == '*');
|
m_lastSearchForward = (key == '*');
|
||||||
updateMiniBuffer();
|
updateMiniBuffer();
|
||||||
search(needle, m_lastSearchForward);
|
search(needle, m_lastSearchForward);
|
||||||
|
recordJump();
|
||||||
} else if (key == '\'') {
|
} else if (key == '\'') {
|
||||||
m_subsubmode = TickSubSubMode;
|
m_subsubmode = TickSubSubMode;
|
||||||
} else if (key == '|') {
|
} else if (key == '|') {
|
||||||
@@ -946,6 +951,11 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
|
|||||||
moveToStartOfLine();
|
moveToStartOfLine();
|
||||||
else
|
else
|
||||||
moveToFirstNonBlankOnLine();
|
moveToFirstNonBlankOnLine();
|
||||||
|
} else if (key == control('i')) {
|
||||||
|
if (!m_jumpListRedo.isEmpty()) {
|
||||||
|
m_jumpListUndo.append(position());
|
||||||
|
m_tc.setPosition(m_jumpListRedo.takeLast());
|
||||||
|
}
|
||||||
} else if (key == 'j' || key == Key_Down) {
|
} else if (key == 'j' || key == Key_Down) {
|
||||||
int savedColumn = m_desiredColumn;
|
int savedColumn = m_desiredColumn;
|
||||||
if (m_submode == NoSubMode || m_submode == ZSubMode
|
if (m_submode == NoSubMode || m_submode == ZSubMode
|
||||||
@@ -1001,8 +1011,10 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
|
|||||||
finishMovement();
|
finishMovement();
|
||||||
} else if (key == 'n') {
|
} else if (key == 'n') {
|
||||||
search(lastSearchString(), m_lastSearchForward);
|
search(lastSearchString(), m_lastSearchForward);
|
||||||
|
recordJump();
|
||||||
} else if (key == 'N') {
|
} else if (key == 'N') {
|
||||||
search(lastSearchString(), !m_lastSearchForward);
|
search(lastSearchString(), !m_lastSearchForward);
|
||||||
|
recordJump();
|
||||||
} else if (key == 'o' || key == 'O') {
|
} else if (key == 'o' || key == 'O') {
|
||||||
recordBeginGroup();
|
recordBeginGroup();
|
||||||
recordMove();
|
recordMove();
|
||||||
@@ -1018,6 +1030,11 @@ bool FakeVimHandler::Private::handleCommandMode(int key, int unmodified,
|
|||||||
recordInsertText(QString(indentDist(), ' '));
|
recordInsertText(QString(indentDist(), ' '));
|
||||||
else
|
else
|
||||||
recordInsertText(QString(numSpaces, ' '));
|
recordInsertText(QString(numSpaces, ' '));
|
||||||
|
} else if (key == control('o')) {
|
||||||
|
if (!m_jumpListUndo.isEmpty()) {
|
||||||
|
m_jumpListRedo.append(position());
|
||||||
|
m_tc.setPosition(m_jumpListUndo.takeLast());
|
||||||
|
}
|
||||||
} else if (key == 'p' || key == 'P') {
|
} else if (key == 'p' || key == 'P') {
|
||||||
recordBeginGroup();
|
recordBeginGroup();
|
||||||
QString text = m_registers[m_register];
|
QString text = m_registers[m_register];
|
||||||
@@ -1298,6 +1315,7 @@ bool FakeVimHandler::Private::handleMiniBufferModes(int key, int unmodified,
|
|||||||
m_searchHistory.append(m_commandBuffer);
|
m_searchHistory.append(m_commandBuffer);
|
||||||
m_lastSearchForward = (m_mode == SearchForwardMode);
|
m_lastSearchForward = (m_mode == SearchForwardMode);
|
||||||
search(lastSearchString(), m_lastSearchForward);
|
search(lastSearchString(), m_lastSearchForward);
|
||||||
|
recordJump();
|
||||||
}
|
}
|
||||||
enterCommandMode();
|
enterCommandMode();
|
||||||
updateMiniBuffer();
|
updateMiniBuffer();
|
||||||
@@ -2106,6 +2124,13 @@ void FakeVimHandler::Private::quit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void FakeVimHandler::Private::recordJump()
|
||||||
|
{
|
||||||
|
m_jumpListUndo.append(position());
|
||||||
|
m_jumpListRedo.clear();
|
||||||
|
//qDebug() << m_jumpListUndo;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// FakeVimHandler
|
// FakeVimHandler
|
||||||
|
|||||||
Reference in New Issue
Block a user