[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [ktexteditor] src/vimode: Begin preparations to remove EmulatedCommandBar::CompletionType in favour
From: Simon St James <kdedevel () etotheipiplusone ! com>
Date: 2016-06-17 8:18:10
Message-ID: E1bDoyg-0002ZN-A2 () scm ! kde ! org
[Download RAW message or body]
Git commit 4a8aa020a5e6acb1f5f8a78f2bccd32603d026ca by Simon St James.
Committed on 17/06/2016 at 08:14.
Pushed by sstjames into branch 'master'.
Begin preparations to remove EmulatedCommandBar::CompletionType in favour of a more \
generic version contained in CompletionStartParams.
M +27 -46 src/vimode/emulatedcommandbar.cpp
M +18 -7 src/vimode/emulatedcommandbar.h
http://commits.kde.org/ktexteditor/4a8aa020a5e6acb1f5f8a78f2bccd32603d026ca
diff --git a/src/vimode/emulatedcommandbar.cpp b/src/vimode/emulatedcommandbar.cpp
index 7b404bf..7f5fab4 100644
--- a/src/vimode/emulatedcommandbar.cpp
+++ b/src/vimode/emulatedcommandbar.cpp
@@ -362,7 +362,6 @@ EmulatedCommandBar::~EmulatedCommandBar()
void EmulatedCommandBar::init(EmulatedCommandBar::Mode mode, const QString \
&initialText) {
- m_completer->m_currentCompletionType = None;
m_mode = mode;
m_isActive = true;
m_wasAborted = true;
@@ -725,25 +724,26 @@ EmulatedCommandBar::Completer::Completer ( EmulatedCommandBar* \
emulatedCommandBa
void EmulatedCommandBar::Completer::startCompletion ( const \
EmulatedCommandBar::CompletionStartParams& completionStartParams ) {
- if (completionStartParams.shouldStart)
+ if (completionStartParams.completionType != \
EmulatedCommandBar::CompletionStartParams::None) {
m_completionModel->setStringList(completionStartParams.completions);
const QString completionPrefix = \
m_edit->text().mid(completionStartParams.wordStartPos, m_edit->cursorPosition() - \
completionStartParams.wordStartPos); \
m_completer->setCompletionPrefix(completionPrefix); m_completer->complete();
m_currentCompletionStartParams = completionStartParams;
+ m_currentCompletionType = completionStartParams.completionType;
}
}
void EmulatedCommandBar::Completer::deactivateCompletion()
{
m_completer->popup()->hide();
- m_currentCompletionType = None;
+ m_currentCompletionType = EmulatedCommandBar::CompletionStartParams::None;
}
bool EmulatedCommandBar::Completer::isCompletionActive() const
{
- return m_currentCompletionType != None;
+ return m_currentCompletionType != \
EmulatedCommandBar::CompletionStartParams::None; }
bool EmulatedCommandBar::Completer::isNextTextChangeDueToCompletionChange() const
@@ -758,7 +758,7 @@ bool EmulatedCommandBar::Completer::completerHandledKeypress ( \
const QKeyEvent*
if (keyEvent->modifiers() == Qt::ControlModifier && (keyEvent->key() == \
Qt::Key_C || keyEvent->key() == Qt::Key_BracketLeft)) {
- if (m_currentCompletionType != None && m_completer->popup()->isVisible())
+ if (m_currentCompletionType != \
EmulatedCommandBar::CompletionStartParams::None && m_completer->popup()->isVisible()) \
{ abortCompletionAndResetToPreCompletion();
return true;
@@ -773,7 +773,7 @@ bool EmulatedCommandBar::Completer::completerHandledKeypress ( \
const QKeyEvent* if (!m_completer->popup()->isVisible()) {
const CompletionStartParams completionStartParams = \
m_currentMode->completionInvoked(CompletionInvocation::ExtraContext); \
startCompletion(completionStartParams);
- if (m_currentCompletionType != None) {
+ if (m_currentCompletionType != \
EmulatedCommandBar::CompletionStartParams::None) { setCompletionIndex(0);
}
} else {
@@ -802,7 +802,7 @@ bool EmulatedCommandBar::Completer::completerHandledKeypress ( \
const QKeyEvent* return true;
}
if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return) {
- if (!m_completer->popup()->isVisible() || m_currentCompletionType != \
EmulatedCommandBar::WordFromDocument) { + if \
(!m_completer->popup()->isVisible() || m_currentCompletionType != \
EmulatedCommandBar::CompletionStartParams::WordFromDocument) { \
m_currentMode->completionChosen(); }
deactivateCompletion();
@@ -824,7 +824,7 @@ void EmulatedCommandBar::Completer::editTextChanged ( const \
QString& newText ) deactivateCompletion();
}
- if (m_currentCompletionType != None && !m_isNextTextChangeDueToCompletionChange) \
{ + if (m_currentCompletionType != EmulatedCommandBar::CompletionStartParams::None \
&& !m_isNextTextChangeDueToCompletionChange) { updateCompletionPrefix();
}
}
@@ -876,7 +876,7 @@ void EmulatedCommandBar::Completer::updateCompletionPrefix()
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::Completer::activateWordFromDocumentCompletion() {
- m_currentCompletionType = WordFromDocument;
+ m_currentCompletionType = \
EmulatedCommandBar::CompletionStartParams::WordFromDocument; QRegExp \
wordRegEx(QLatin1String("\\w{1,}")); QStringList foundWords;
// Narrow the range of lines we search around the cursor so that we don't die on \
huge files. @@ -893,7 +893,7 @@ EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::Completer::activat foundWords = \
QSet<QString>::fromList(foundWords).toList(); qSort(foundWords.begin(), \
foundWords.end(), caseInsensitiveLessThan); CompletionStartParams \
completionStartParams;
- completionStartParams.shouldStart = true;
+ completionStartParams.completionType = \
EmulatedCommandBar::CompletionStartParams::WordFromDocument; \
completionStartParams.completions = foundWords; completionStartParams.wordStartPos = \
wordBeforeCursorBegin(); return completionStartParams;
@@ -1123,12 +1123,7 @@ void EmulatedCommandBar::SearchMode::completionChosen()
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::SearchMode::activateSearchHistoryCompletion() {
- setCompletionMode(KateVi::EmulatedCommandBar::SearchHistory);
- CompletionStartParams completionStartParams;
- completionStartParams.completions = \
reversed(m_viInputModeManager->globalState()->searchHistory()->items());
- completionStartParams.shouldStart = true;
- completionStartParams.wordStartPos = 0;
- return completionStartParams;
+ return CompletionStartParams::createModeSpecific(reversed(m_viInputModeManager->globalState()->searchHistory()->items()), \
0); }
void EmulatedCommandBar::SearchMode::setBarBackground ( \
EmulatedCommandBar::SearchMode::BarBackgroundStatus status ) @@ -1473,50 +1468,36 @@ \
void EmulatedCommandBar::CommandMode::replaceCommandBeforeCursorWith ( const QSt
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::activateCommandCompletion() {
- setCompletionMode(Commands);
- CompletionStartParams completionStartParams;
- completionStartParams.completions = m_cmdCompletion.items();
- completionStartParams.shouldStart = true;
- completionStartParams.wordStartPos = commandBeforeCursorBegin();
- return completionStartParams;
+ return CompletionStartParams::createModeSpecific(m_cmdCompletion.items(), \
commandBeforeCursorBegin()); }
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::activateCommandHistoryCompletion() {
- CompletionStartParams completionStartParams;
- completionStartParams.completions = \
reversed(m_viInputModeManager->globalState()->commandHistory()->items());
- completionStartParams.shouldStart = true;
- completionStartParams.wordStartPos = 0;
- setCompletionMode(CommandHistory);
- return completionStartParams;
+ return CompletionStartParams::createModeSpecific(reversed(m_viInputModeManager->globalState()->commandHistory()->items()), \
0); }
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::activateSedFindHistoryCompletion() {
- CompletionStartParams completionStartParams;
- if (!m_viInputModeManager->globalState()->searchHistory()->isEmpty()) {
- completionStartParams.completions = \
reversed(m_viInputModeManager->globalState()->searchHistory()->items());
- completionStartParams.shouldStart = true;
- completionStartParams.completionTransform = [this] (const QString& \
completion) -> QString { return \
withCaseSensitivityMarkersStripped(withSedDelimiterEscaped(completion)); \
};
- CommandMode::ParsedSedExpression parsedSedExpression = \
parseAsSedExpression();
- completionStartParams.wordStartPos = parsedSedExpression.findBeginPos;
- setCompletionMode(KateVi::EmulatedCommandBar::SedFindHistory);
+ if (m_viInputModeManager->globalState()->searchHistory()->isEmpty())
+ {
+ return CompletionStartParams::invalid();
}
- return completionStartParams;
+ CommandMode::ParsedSedExpression parsedSedExpression = parseAsSedExpression();
+ return CompletionStartParams::createModeSpecific(reversed(m_viInputModeManager->globalState()->searchHistory()->items()),
+ \
parsedSedExpression.findBeginPos, + \
[this] (const QString& completion) -> QString { return \
withCaseSensitivityMarkersStripped(withSedDelimiterEscaped(completion)); }); }
EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::activateSedReplaceHistoryCompletion() {
- CompletionStartParams completionStartParams;
- if (!m_viInputModeManager->globalState()->replaceHistory()->isEmpty()) {
- completionStartParams.completions = \
reversed(m_viInputModeManager->globalState()->replaceHistory()->items());
- completionStartParams.shouldStart = true;
- completionStartParams.completionTransform = [this] (const QString& \
completion) -> QString { return \
withCaseSensitivityMarkersStripped(withSedDelimiterEscaped(completion)); \
};
- CommandMode::ParsedSedExpression parsedSedExpression = \
parseAsSedExpression();
- completionStartParams.wordStartPos = parsedSedExpression.replaceBeginPos;
- setCompletionMode(SedReplaceHistory);
+ if (m_viInputModeManager->globalState()->replaceHistory()->isEmpty())
+ {
+ return CompletionStartParams::invalid();
}
- return completionStartParams;
+ CommandMode::ParsedSedExpression parsedSedExpression = parseAsSedExpression();
+ return CompletionStartParams::createModeSpecific(reversed(m_viInputModeManager->globalState()->replaceHistory()->items()),
+ \
parsedSedExpression.replaceBeginPos, + \
[this] (const QString& completion) -> QString { return \
withCaseSensitivityMarkersStripped(withSedDelimiterEscaped(completion)); }); }
KTextEditor::Command* EmulatedCommandBar::CommandMode::queryCommand ( const QString& \
cmd ) const
diff --git a/src/vimode/emulatedcommandbar.h b/src/vimode/emulatedcommandbar.h
index 18c98ca..fbdadd7 100644
--- a/src/vimode/emulatedcommandbar.h
+++ b/src/vimode/emulatedcommandbar.h
@@ -99,10 +99,25 @@ private:
};
QScopedPointer<MatchHighlighter> m_matchHighligher;
- enum CompletionType { None, SearchHistory, WordFromDocument, Commands, \
CommandHistory, SedFindHistory, SedReplaceHistory }; struct CompletionStartParams
{
- bool shouldStart = false;
+ static CompletionStartParams createModeSpecific(const QStringList& \
completions, int wordStartPos, std::function<QString(const QString&)> \
completionTransform = std::function<QString(const QString&)>()) + {
+ CompletionStartParams completionStartParams;
+ completionStartParams.completionType = ModeSpecific;
+ completionStartParams.completions = completions;
+ completionStartParams.wordStartPos = wordStartPos;
+ completionStartParams.completionTransform = completionTransform;
+ return completionStartParams;
+ }
+ static CompletionStartParams invalid()
+ {
+ CompletionStartParams completionStartParams;
+ completionStartParams.completionType = None;
+ return completionStartParams;
+ }
+ enum CompletionType { None, ModeSpecific, WordFromDocument };
+ CompletionType completionType = None;
int wordStartPos = -1;
QStringList completions;
std::function<QString(const QString&)> completionTransform;
@@ -120,7 +135,6 @@ private:
bool completerHandledKeypress(const QKeyEvent* keyEvent);
void editTextChanged(const QString &newText);
void setCurrentMode(ActiveMode* currentMode);
- CompletionType m_currentCompletionType = None;
private:
QLineEdit *m_edit;
KTextEditor::ViewPrivate *m_view;
@@ -140,6 +154,7 @@ private:
int m_cursorPosToRevertToIfCompletionAborted;
bool m_isNextTextChangeDueToCompletionChange = false;
CompletionStartParams m_currentCompletionStartParams;
+ CompletionStartParams::CompletionType m_currentCompletionType = \
CompletionStartParams::None; };
QScopedPointer<Completer> m_completer;
@@ -173,10 +188,6 @@ private:
void updateMatchHighlight(const KTextEditor::Range &matchRange);
void close(bool wasAborted);
void closeWithStatusMessage(const QString& exitStatusMessage);
- void setCompletionMode(CompletionType completionType)
- {
- m_emulatedCommandBar->m_completer->m_currentCompletionType = \
completionType;
- }; // TODO - ultimately remove this - eventually, the upcoming Completion \
class will store the mode, and it will be one of None, WordUnderCursor, and \
ModeSpecific.
void startCompletion(const CompletionStartParams& completionStartParams);
EmulatedCommandBar *m_emulatedCommandBar;
private:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic