FakeVim: Remove Utils dependencies from fakevimhandler.cpp

There have been requests to easily re-use FakeVim in other projects.
To make that easy, cut the few explicit ties to libUtils in
fakevimhandler.cpp.

Change-Id: I090d50fb1fd4e62d97e9430e94a84d1f267773a4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2018-04-11 12:03:04 +02:00
parent b3d16f4465
commit 3290de7a4e

View File

@@ -58,9 +58,6 @@
#include "fakevimactions.h" #include "fakevimactions.h"
#include "fakevimtr.h" #include "fakevimtr.h"
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <QDebug> #include <QDebug>
#include <QFile> #include <QFile>
#include <QObject> #include <QObject>
@@ -105,8 +102,6 @@
# define UNDO_DEBUG(s) # define UNDO_DEBUG(s)
#endif #endif
using namespace Utils;
namespace FakeVim { namespace FakeVim {
namespace Internal { namespace Internal {
@@ -132,8 +127,12 @@ namespace Internal {
#define EDITOR(s) (m_textedit ? m_textedit->s : m_plaintextedit->s) #define EDITOR(s) (m_textedit ? m_textedit->s : m_plaintextedit->s)
#define MetaModifier // Use HostOsInfo::controlModifier() instead
#define ControlModifier // Use HostOsInfo::controlModifier() instead #ifdef Q_OS_DARWIN
#define ControlModifier Qt::MetaModifier
#else
#define ControlModifier Qt::ControlModifier
#endif
/* Clipboard MIME types used by Vim. */ /* Clipboard MIME types used by Vim. */
static const QString vimMimeText = "_VIM_TEXT"; static const QString vimMimeText = "_VIM_TEXT";
@@ -759,14 +758,20 @@ static void setClipboardData(const QString &content, RangeMode mode,
static QByteArray toLocalEncoding(const QString &text) static QByteArray toLocalEncoding(const QString &text)
{ {
return HostOsInfo::isWindowsHost() ? QString(text).replace("\n", "\r\n").toLocal8Bit() #if defined(Q_OS_WIN)
: text.toLocal8Bit(); return QString(text).replace("\n", "\r\n").toLocal8Bit();
#else
return text.toLocal8Bit();
#endif
} }
static QString fromLocalEncoding(const QByteArray &data) static QString fromLocalEncoding(const QByteArray &data)
{ {
return HostOsInfo::isWindowsHost() ? QString::fromLocal8Bit(data).replace("\n", "\r\n") #if defined(Q_OS_WIN)
: QString::fromLocal8Bit(data); return QString::fromLocal8Bit(data).replace("\n", "\r\n");
#else
return QString::fromLocal8Bit(data);
#endif
} }
static QString getProcessOutput(const QString &command, const QString &input) static QString getProcessOutput(const QString &command, const QString &input)
@@ -880,7 +885,7 @@ static const QMap<QString, int> &vimKeyNames()
static bool isOnlyControlModifier(const Qt::KeyboardModifiers &mods) static bool isOnlyControlModifier(const Qt::KeyboardModifiers &mods)
{ {
return (mods ^ HostOsInfo::controlModifier()) == Qt::NoModifier; return (mods ^ ControlModifier) == Qt::NoModifier;
} }
@@ -943,7 +948,10 @@ QString quoteUnprintable(const QString &ba)
static bool startsWithWhitespace(const QString &str, int col) static bool startsWithWhitespace(const QString &str, int col)
{ {
QTC_ASSERT(str.size() >= col, return false); if (col > str.size()) {
qWarning("Wrong column");
return false;
}
for (int i = 0; i < col; ++i) { for (int i = 0; i < col; ++i) {
uint u = str.at(i).unicode(); uint u = str.at(i).unicode();
if (u != ' ' && u != '\t') if (u != ' ' && u != '\t')
@@ -1001,7 +1009,7 @@ public:
} }
// Set text only if input is ascii key without control modifier. // Set text only if input is ascii key without control modifier.
if (m_text.isEmpty() && k >= 0 && k <= 0x7f && (m & HostOsInfo::controlModifier()) == 0) { if (m_text.isEmpty() && k >= 0 && k <= 0x7f && (m & ControlModifier) == 0) {
QChar c = QChar(k); QChar c = QChar(k);
if (c.isLetter()) if (c.isLetter())
m_text = isShift() ? c.toUpper() : c; m_text = isShift() ? c.toUpper() : c;
@@ -1281,7 +1289,7 @@ static Input parseVimKeyName(const QString &keyName)
if (key == "S") if (key == "S")
mods |= Qt::ShiftModifier; mods |= Qt::ShiftModifier;
else if (key == "C") else if (key == "C")
mods |= HostOsInfo::controlModifier(); mods |= ControlModifier;
else else
return Input(); return Input();
} }
@@ -2391,7 +2399,10 @@ void FakeVimHandler::Private::fixExternalCursorPosition(bool focus)
void FakeVimHandler::Private::enterFakeVim() void FakeVimHandler::Private::enterFakeVim()
{ {
QTC_ASSERT(!m_inFakeVim, qDebug() << "enterFakeVim() shouldn't be called recursively!"; return); if (m_inFakeVim) {
qWarning("enterFakeVim() shouldn't be called recursively!");
return;
}
if (!m_buffer->currentHandler) if (!m_buffer->currentHandler)
m_buffer->currentHandler = this; m_buffer->currentHandler = this;
@@ -2409,7 +2420,10 @@ void FakeVimHandler::Private::enterFakeVim()
void FakeVimHandler::Private::leaveFakeVim(bool needUpdate) void FakeVimHandler::Private::leaveFakeVim(bool needUpdate)
{ {
QTC_ASSERT(m_inFakeVim, qDebug() << "enterFakeVim() not called before leaveFakeVim()!"; return); if (!m_inFakeVim) {
qWarning("enterFakeVim() not called before leaveFakeVim()!");
return;
}
// The command might have destroyed the editor. // The command might have destroyed the editor.
if (m_textedit || m_plaintextedit) { if (m_textedit || m_plaintextedit) {
@@ -3174,8 +3188,6 @@ void FakeVimHandler::Private::commitCursor()
++anc; ++anc;
else if (!editor()->hasFocus() || isCommandLineMode()) else if (!editor()->hasFocus() || isCommandLineMode())
m_fixCursorTimer.start(); m_fixCursorTimer.start();
} else {
QTC_CHECK(false);
} }
tc.setPosition(anc); tc.setPosition(anc);
@@ -3672,7 +3684,6 @@ void FakeVimHandler::Private::updateMiniBuffer()
} else if (g.mode == ReplaceMode) { } else if (g.mode == ReplaceMode) {
msg = "-- REPLACE --"; msg = "-- REPLACE --";
} else { } else {
QTC_CHECK(g.mode == CommandMode && g.subsubmode != SearchSubSubMode);
if (g.returnToMode == CommandMode) if (g.returnToMode == CommandMode)
msg = "-- COMMAND --"; msg = "-- COMMAND --";
else if (g.returnToMode == InsertMode) else if (g.returnToMode == InsertMode)
@@ -5730,7 +5741,6 @@ bool FakeVimHandler::Private::handleExSetCommand(const ExCommand &cmd)
return false; return false;
clearMessage(); clearMessage();
QTC_CHECK(!cmd.args.isEmpty()); // Handled by plugin.
if (cmd.args.contains('=')) { if (cmd.args.contains('=')) {
// Non-boolean config to set. // Non-boolean config to set.
@@ -7168,8 +7178,10 @@ void FakeVimHandler::Private::insertText(QTextCursor &tc, const QString &text)
void FakeVimHandler::Private::insertText(const Register &reg) void FakeVimHandler::Private::insertText(const Register &reg)
{ {
QTC_ASSERT(reg.rangemode == RangeCharMode, if (reg.rangemode != RangeCharMode) {
qDebug() << "WRONG INSERT MODE: " << reg.rangemode; return); qWarning() << "WRONG INSERT MODE: " << reg.rangemode;
return;
}
setAnchor(); setAnchor();
m_cursor.insertText(reg.contents); m_cursor.insertText(reg.contents);
//dump("AFTER INSERT"); //dump("AFTER INSERT");
@@ -7643,8 +7655,10 @@ void FakeVimHandler::Private::beginEditBlock(bool largeEditBlock)
void FakeVimHandler::Private::endEditBlock() void FakeVimHandler::Private::endEditBlock()
{ {
UNDO_DEBUG("END EDIT BLOCK" << m_buffer->editBlockLevel); UNDO_DEBUG("END EDIT BLOCK" << m_buffer->editBlockLevel);
QTC_ASSERT(m_buffer->editBlockLevel > 0, if (m_buffer->editBlockLevel <= 0) {
qDebug() << "beginEditBlock() not called before endEditBlock()!"; return); qWarning("beginEditBlock() not called before endEditBlock()!");
return;
}
--m_buffer->editBlockLevel; --m_buffer->editBlockLevel;
if (m_buffer->editBlockLevel == 0 && m_buffer->undoState.isValid()) { if (m_buffer->editBlockLevel == 0 && m_buffer->undoState.isValid()) {
m_buffer->undo.push(m_buffer->undoState); m_buffer->undo.push(m_buffer->undoState);
@@ -7893,7 +7907,10 @@ void FakeVimHandler::Private::enterInsertMode()
void FakeVimHandler::Private::enterInsertOrReplaceMode(Mode mode) void FakeVimHandler::Private::enterInsertOrReplaceMode(Mode mode)
{ {
QTC_ASSERT(mode == InsertMode || mode == ReplaceMode, return); if (mode != InsertMode && mode != ReplaceMode) {
qWarning("Unexpected mode");
return;
}
if (g.mode == mode) if (g.mode == mode)
return; return;
@@ -8380,7 +8397,10 @@ bool FakeVimHandler::Private::changeNumberTextObject(int count)
uvalue = num.toULongLong(&ok, base); uvalue = num.toULongLong(&ok, base);
else else
value = num.toLongLong(&ok, base); value = num.toLongLong(&ok, base);
QTC_ASSERT(ok, qDebug() << "Cannot parse number:" << num << "base:" << base; return false); if (!ok) {
qWarning() << "Cannot parse number:" << num << "base:" << base;
return false;
}
// negative decimal number // negative decimal number
if (!octal && !hex && pos > 0 && lineText[pos - 1] == '-') { if (!octal && !hex && pos > 0 && lineText[pos - 1] == '-') {