FakeVim: Use a bool to indicate recording, not QString::isNull

Change-Id: I30f996aa61b357dc6b83f3f313abb0448e7f0fc3
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
hjk
2014-10-21 12:53:29 +02:00
parent 3f24bd1e95
commit 22c15b3ea8

View File

@@ -2138,6 +2138,7 @@ public:
, highlightsCleared(false) , highlightsCleared(false)
, findPending(false) , findPending(false)
, returnToMode(CommandMode) , returnToMode(CommandMode)
, isRecording(false)
, currentRegister(0) , currentRegister(0)
, lastExecutedRegister(0) , lastExecutedRegister(0)
{ {
@@ -2206,8 +2207,9 @@ public:
// Return to insert/replace mode after single command (<C-O>). // Return to insert/replace mode after single command (<C-O>).
Mode returnToMode; Mode returnToMode;
// Currently recorded macro (not recording if null string). // Currently recorded macro
QString recording; bool isRecording;
QString recorded;
int currentRegister; int currentRegister;
int lastExecutedRegister; int lastExecutedRegister;
} g; } g;
@@ -3527,8 +3529,8 @@ void FakeVimHandler::Private::updateMiniBuffer()
msg = _("-- (replace) --"); msg = _("-- (replace) --");
} }
if (!g.recording.isNull() && msg.startsWith(_("--"))) if (g.isRecording && msg.startsWith(_("--")))
msg.append(_("recording")); msg.append(QLatin1Char(' ' ) + _("Recording"));
emit q->commandBufferChanged(msg, cursorPos, anchorPos, messageLevel, q); emit q->commandBufferChanged(msg, cursorPos, anchorPos, messageLevel, q);
@@ -4341,14 +4343,14 @@ bool FakeVimHandler::Private::handleNoSubMode(const Input &input)
setDotCommand(_("%1p"), count()); setDotCommand(_("%1p"), count());
finishMovement(); finishMovement();
} else if (input.is('q')) { } else if (input.is('q')) {
if (g.recording.isNull()) { if (g.isRecording) {
// Stop recording.
stopRecording();
} else {
// Recording shouldn't work in mapping or while executing register. // Recording shouldn't work in mapping or while executing register.
handled = g.mapStates.empty(); handled = g.mapStates.empty();
if (handled) if (handled)
g.submode = MacroRecordSubMode; g.submode = MacroRecordSubMode;
} else {
// Stop recording.
stopRecording();
} }
} else if (input.is('r')) { } else if (input.is('r')) {
g.submode = ReplaceSubMode; g.submode = ReplaceSubMode;
@@ -5127,7 +5129,8 @@ bool FakeVimHandler::Private::startRecording(const Input &input)
QChar reg = input.asChar(); QChar reg = input.asChar();
if (reg == QLatin1Char('"') || reg.isLetterOrNumber()) { if (reg == QLatin1Char('"') || reg.isLetterOrNumber()) {
g.currentRegister = reg.unicode(); g.currentRegister = reg.unicode();
g.recording = QLatin1String(""); g.isRecording = true;
g.recorded.clear();
return true; return true;
} }
@@ -5136,17 +5139,18 @@ bool FakeVimHandler::Private::startRecording(const Input &input)
void FakeVimHandler::Private::record(const Input &input) void FakeVimHandler::Private::record(const Input &input)
{ {
if ( !g.recording.isNull() ) if (g.isRecording)
g.recording.append(input.toString()); g.recorded.append(input.toString());
} }
void FakeVimHandler::Private::stopRecording() void FakeVimHandler::Private::stopRecording()
{ {
// Remove q from end (stop recording command). // Remove q from end (stop recording command).
g.recording.remove(g.recording.size() - 1, 1); g.isRecording = false;
setRegister(g.currentRegister, g.recording, g.rangemode); g.recorded.chop(1);
setRegister(g.currentRegister, g.recorded, g.rangemode);
g.currentRegister = 0; g.currentRegister = 0;
g.recording = QString(); g.recorded.clear();
} }
bool FakeVimHandler::Private::executeRegister(int reg) bool FakeVimHandler::Private::executeRegister(int reg)