From kde-commits Fri Jun 17 08:18:10 2016 From: Simon St James Date: Fri, 17 Jun 2016 08:18:10 +0000 To: kde-commits Subject: [ktexteditor] src/vimode: Begin preparations to remove EmulatedCommandBar::CompletionType in favour Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=146615203022736 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 o= f 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/emulatedcommand= bar.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 =3D None; m_mode =3D mode; m_isActive =3D true; m_wasAborted =3D true; @@ -725,25 +724,26 @@ EmulatedCommandBar::Completer::Completer ( EmulatedCo= mmandBar* emulatedCommandBa = void EmulatedCommandBar::Completer::startCompletion ( const EmulatedComman= dBar::CompletionStartParams& completionStartParams ) { - if (completionStartParams.shouldStart) + if (completionStartParams.completionType !=3D EmulatedCommandBar::Comp= letionStartParams::None) { m_completionModel->setStringList(completionStartParams.completions= ); const QString completionPrefix =3D m_edit->text().mid(completionSt= artParams.wordStartPos, m_edit->cursorPosition() - completionStartParams.wo= rdStartPos); m_completer->setCompletionPrefix(completionPrefix); m_completer->complete(); m_currentCompletionStartParams =3D completionStartParams; + m_currentCompletionType =3D completionStartParams.completionType; } } = void EmulatedCommandBar::Completer::deactivateCompletion() { m_completer->popup()->hide(); - m_currentCompletionType =3D None; + m_currentCompletionType =3D EmulatedCommandBar::CompletionStartParams:= :None; } = bool EmulatedCommandBar::Completer::isCompletionActive() const { - return m_currentCompletionType !=3D None; + return m_currentCompletionType !=3D EmulatedCommandBar::CompletionStar= tParams::None; } = bool EmulatedCommandBar::Completer::isNextTextChangeDueToCompletionChange(= ) const @@ -758,7 +758,7 @@ bool EmulatedCommandBar::Completer::completerHandledKey= press ( const QKeyEvent* = if (keyEvent->modifiers() =3D=3D Qt::ControlModifier && (keyEvent->key= () =3D=3D Qt::Key_C || keyEvent->key() =3D=3D Qt::Key_BracketLeft)) { - if (m_currentCompletionType !=3D None && m_completer->popup()->isV= isible()) + if (m_currentCompletionType !=3D EmulatedCommandBar::CompletionSta= rtParams::None && m_completer->popup()->isVisible()) { abortCompletionAndResetToPreCompletion(); return true; @@ -773,7 +773,7 @@ bool EmulatedCommandBar::Completer::completerHandledKey= press ( const QKeyEvent* if (!m_completer->popup()->isVisible()) { const CompletionStartParams completionStartParams =3D m_curren= tMode->completionInvoked(CompletionInvocation::ExtraContext); startCompletion(completionStartParams); - if (m_currentCompletionType !=3D None) { + if (m_currentCompletionType !=3D EmulatedCommandBar::Completio= nStartParams::None) { setCompletionIndex(0); } } else { @@ -802,7 +802,7 @@ bool EmulatedCommandBar::Completer::completerHandledKey= press ( const QKeyEvent* return true; } if (keyEvent->key() =3D=3D Qt::Key_Enter || keyEvent->key() =3D=3D Qt:= :Key_Return) { - if (!m_completer->popup()->isVisible() || m_currentCompletionType = !=3D EmulatedCommandBar::WordFromDocument) { + if (!m_completer->popup()->isVisible() || m_currentCompletionType = !=3D EmulatedCommandBar::CompletionStartParams::WordFromDocument) { m_currentMode->completionChosen(); } deactivateCompletion(); @@ -824,7 +824,7 @@ void EmulatedCommandBar::Completer::editTextChanged ( c= onst QString& newText ) deactivateCompletion(); } = - if (m_currentCompletionType !=3D None && !m_isNextTextChangeDueToCompl= etionChange) { + if (m_currentCompletionType !=3D EmulatedCommandBar::CompletionStartPa= rams::None && !m_isNextTextChangeDueToCompletionChange) { updateCompletionPrefix(); } } @@ -876,7 +876,7 @@ void EmulatedCommandBar::Completer::updateCompletionPre= fix() = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::Completer::a= ctivateWordFromDocumentCompletion() { - m_currentCompletionType =3D WordFromDocument; + m_currentCompletionType =3D EmulatedCommandBar::CompletionStartParams:= :WordFromDocument; QRegExp wordRegEx(QLatin1String("\\w{1,}")); QStringList foundWords; // Narrow the range of lines we search around the cursor so that we do= n't die on huge files. @@ -893,7 +893,7 @@ EmulatedCommandBar::CompletionStartParams EmulatedComma= ndBar::Completer::activat foundWords =3D QSet::fromList(foundWords).toList(); qSort(foundWords.begin(), foundWords.end(), caseInsensitiveLessThan); CompletionStartParams completionStartParams; - completionStartParams.shouldStart =3D true; + completionStartParams.completionType =3D EmulatedCommandBar::Completio= nStartParams::WordFromDocument; completionStartParams.completions =3D foundWords; completionStartParams.wordStartPos =3D wordBeforeCursorBegin(); return completionStartParams; @@ -1123,12 +1123,7 @@ void EmulatedCommandBar::SearchMode::completionChose= n() = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::SearchMode::= activateSearchHistoryCompletion() { - setCompletionMode(KateVi::EmulatedCommandBar::SearchHistory); - CompletionStartParams completionStartParams; - completionStartParams.completions =3D reversed(m_viInputModeManager->g= lobalState()->searchHistory()->items()); - completionStartParams.shouldStart =3D true; - completionStartParams.wordStartPos =3D 0; - return completionStartParams; + return CompletionStartParams::createModeSpecific(reversed(m_viInputMod= eManager->globalState()->searchHistory()->items()), 0); } = void EmulatedCommandBar::SearchMode::setBarBackground ( EmulatedCommandBar= ::SearchMode::BarBackgroundStatus status ) @@ -1473,50 +1468,36 @@ void EmulatedCommandBar::CommandMode::replaceComman= dBeforeCursorWith ( const QSt = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::CommandMode:= :activateCommandCompletion() { - setCompletionMode(Commands); - CompletionStartParams completionStartParams; - completionStartParams.completions =3D m_cmdCompletion.items(); - completionStartParams.shouldStart =3D true; - completionStartParams.wordStartPos =3D commandBeforeCursorBegin(); - return completionStartParams; + return CompletionStartParams::createModeSpecific(m_cmdCompletion.items= (), commandBeforeCursorBegin()); } = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::CommandMode:= :activateCommandHistoryCompletion() { - CompletionStartParams completionStartParams; - completionStartParams.completions =3D reversed(m_viInputModeManager->g= lobalState()->commandHistory()->items()); - completionStartParams.shouldStart =3D true; - completionStartParams.wordStartPos =3D 0; - setCompletionMode(CommandHistory); - return completionStartParams; + return CompletionStartParams::createModeSpecific(reversed(m_viInputMod= eManager->globalState()->commandHistory()->items()), 0); } = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::CommandMode:= :activateSedFindHistoryCompletion() { - CompletionStartParams completionStartParams; - if (!m_viInputModeManager->globalState()->searchHistory()->isEmpty()) { - completionStartParams.completions =3D reversed(m_viInputModeManage= r->globalState()->searchHistory()->items()); - completionStartParams.shouldStart =3D true; - completionStartParams.completionTransform =3D [this] (const QStri= ng& completion) -> QString { return withCaseSensitivityMarkersStripped(with= SedDelimiterEscaped(completion)); }; - CommandMode::ParsedSedExpression parsedSedExpression =3D parseAsSe= dExpression(); - completionStartParams.wordStartPos =3D parsedSedExpression.findBeg= inPos; - setCompletionMode(KateVi::EmulatedCommandBar::SedFindHistory); + if (m_viInputModeManager->globalState()->searchHistory()->isEmpty()) + { + return CompletionStartParams::invalid(); } - return completionStartParams; + CommandMode::ParsedSedExpression parsedSedExpression =3D parseAsSedExp= ression(); + return CompletionStartParams::createModeSpecific(reversed(m_viInputMod= eManager->globalState()->searchHistory()->items()), + parsedSedExpression.f= indBeginPos, + [this] (const QStrin= g& completion) -> QString { return withCaseSensitivityMarkersStripped(withS= edDelimiterEscaped(completion)); }); } = EmulatedCommandBar::CompletionStartParams EmulatedCommandBar::CommandMode:= :activateSedReplaceHistoryCompletion() { - CompletionStartParams completionStartParams; - if (!m_viInputModeManager->globalState()->replaceHistory()->isEmpty())= { - completionStartParams.completions =3D reversed(m_viInputModeManage= r->globalState()->replaceHistory()->items()); - completionStartParams.shouldStart =3D true; - completionStartParams.completionTransform =3D [this] (const QStri= ng& completion) -> QString { return withCaseSensitivityMarkersStripped(with= SedDelimiterEscaped(completion)); }; - CommandMode::ParsedSedExpression parsedSedExpression =3D parseAsSe= dExpression(); - completionStartParams.wordStartPos =3D parsedSedExpression.replace= BeginPos; - setCompletionMode(SedReplaceHistory); + if (m_viInputModeManager->globalState()->replaceHistory()->isEmpty()) + { + return CompletionStartParams::invalid(); } - return completionStartParams; + CommandMode::ParsedSedExpression parsedSedExpression =3D parseAsSedExp= ression(); + return CompletionStartParams::createModeSpecific(reversed(m_viInputMod= eManager->globalState()->replaceHistory()->items()), + parsedSedExpression.r= eplaceBeginPos, + [this] (const QStrin= g& completion) -> QString { return withCaseSensitivityMarkersStripped(withS= edDelimiterEscaped(completion)); }); } = KTextEditor::Command* EmulatedCommandBar::CommandMode::queryCommand ( cons= t QString& cmd ) const diff --git a/src/vimode/emulatedcommandbar.h b/src/vimode/emulatedcommandba= r.h index 18c98ca..fbdadd7 100644 --- a/src/vimode/emulatedcommandbar.h +++ b/src/vimode/emulatedcommandbar.h @@ -99,10 +99,25 @@ private: }; QScopedPointer m_matchHighligher; = - enum CompletionType { None, SearchHistory, WordFromDocument, Commands,= CommandHistory, SedFindHistory, SedReplaceHistory }; struct CompletionStartParams { - bool shouldStart =3D false; + static CompletionStartParams createModeSpecific(const QStringList&= completions, int wordStartPos, std::function comp= letionTransform =3D std::function()) + { + CompletionStartParams completionStartParams; + completionStartParams.completionType =3D ModeSpecific; + completionStartParams.completions =3D completions; + completionStartParams.wordStartPos =3D wordStartPos; + completionStartParams.completionTransform =3D completionTransf= orm; + return completionStartParams; + } + static CompletionStartParams invalid() + { + CompletionStartParams completionStartParams; + completionStartParams.completionType =3D None; + return completionStartParams; + } + enum CompletionType { None, ModeSpecific, WordFromDocument }; + CompletionType completionType =3D None; int wordStartPos =3D -1; QStringList completions; std::function completionTransform; @@ -120,7 +135,6 @@ private: bool completerHandledKeypress(const QKeyEvent* keyEvent); void editTextChanged(const QString &newText); void setCurrentMode(ActiveMode* currentMode); - CompletionType m_currentCompletionType =3D None; private: QLineEdit *m_edit; KTextEditor::ViewPrivate *m_view; @@ -140,6 +154,7 @@ private: int m_cursorPosToRevertToIfCompletionAborted; bool m_isNextTextChangeDueToCompletionChange =3D false; CompletionStartParams m_currentCompletionStartParams; + CompletionStartParams::CompletionType m_currentCompletionType =3D = CompletionStartParams::None; }; QScopedPointer 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 =3D= completionType; - }; // TODO - ultimately remove this - eventually, the upcoming Com= pletion class will store the mode, and it will be one of None, WordUnderCur= sor, and ModeSpecific. void startCompletion(const CompletionStartParams& completionStartP= arams); EmulatedCommandBar *m_emulatedCommandBar; private: