[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [ktexteditor] src/vimode: Further work on moving all Completion-related stuff into the Completer cla
From: Simon St James <kdedevel () etotheipiplusone ! com>
Date: 2016-06-17 8:18:10
Message-ID: E1bDoyg-0002ZN-8u () scm ! kde ! org
[Download RAW message or body]
Git commit 5a7b36071365d7e2f00a007d68f44fd943cef6ca by Simon St James.
Committed on 17/06/2016 at 08:14.
Pushed by sstjames into branch 'master'.
Further work on moving all Completion-related stuff into the Completer \
class.
M +78 -70 src/vimode/emulatedcommandbar.cpp
M +16 -11 src/vimode/emulatedcommandbar.h
http://commits.kde.org/ktexteditor/5a7b36071365d7e2f00a007d68f44fd943cef6ca
diff --git a/src/vimode/emulatedcommandbar.cpp \
b/src/vimode/emulatedcommandbar.cpp index f9fa607..7b404bf 100644
--- a/src/vimode/emulatedcommandbar.cpp
+++ b/src/vimode/emulatedcommandbar.cpp
@@ -331,13 +331,13 @@ \
EmulatedCommandBar::EmulatedCommandBar(InputModeManager \
*viInputModeManager, QWi
m_interactiveSedReplaceMode.reset(new InteractiveSedReplaceMode(this, \
m_matchHighligher.data())); \
layout->addWidget(m_interactiveSedReplaceMode->label());
- m_completerTmp.reset(new Completer(this, m_view, m_edit));
+ m_completer.reset(new Completer(this, m_view, m_edit));
m_searchMode.reset(new SearchMode(this, m_matchHighligher.data(), \
m_view, m_edit)); m_searchMode->setViInputModeManager(viInputModeManager);
- m_commandMode.reset(new CommandMode(this, m_matchHighligher.data(), \
m_view, m_edit, m_interactiveSedReplaceMode.data(), \
m_completerTmp.data())); + m_commandMode.reset(new CommandMode(this, \
m_matchHighligher.data(), m_view, m_edit, \
m_interactiveSedReplaceMode.data(), m_completer.data()));
m_edit->installEventFilter(this);
connect(m_edit, SIGNAL(textChanged(QString)), this, \
SLOT(editTextChanged(QString))); @@ -362,7 +362,7 @@ \
EmulatedCommandBar::~EmulatedCommandBar()
void EmulatedCommandBar::init(EmulatedCommandBar::Mode mode, const QString \
&initialText) {
- m_completerTmp->m_currentCompletionType = None;
+ m_completer->m_currentCompletionType = None;
m_mode = mode;
m_isActive = true;
m_wasAborted = true;
@@ -408,7 +408,7 @@ void \
EmulatedCommandBar::setCommandResponseMessageTimeout(long int commandRespon \
void EmulatedCommandBar::closed() {
m_matchHighligher->updateMatchHighlight(KTextEditor::Range::invalid());
- m_completerTmp->m_completer->popup()->hide();
+ m_completer->deactivateCompletion();
m_isActive = false;
m_currentMode->deactivate(m_wasAborted);
@@ -420,70 +420,12 @@ void EmulatedCommandBar::updateMatchHighlightAttrib()
m_matchHighligher->updateMatchHighlightAttrib();
}
-bool EmulatedCommandBar::completerHandledKeypress ( const QKeyEvent* \
keyEvent )
-{
- if (!m_edit->isVisible())
- return false;
- if (keyEvent->modifiers() == Qt::ControlModifier && (keyEvent->key() \
== Qt::Key_C || keyEvent->key() == Qt::Key_BracketLeft))
- {
- if (m_completerTmp->m_currentCompletionType != None && \
m_completerTmp->m_completer->popup()->isVisible())
- {
- m_completerTmp->abortCompletionAndResetToPreCompletion();
- return true;
- }
- }
- if (keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() == \
Qt::Key_Space) {
- CompletionStartParams completionStartParams = \
m_completerTmp->activateWordFromDocumentCompletion();
- m_completerTmp->startCompletion(completionStartParams);
- return true;
- }
- if ((keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() \
== Qt::Key_P) || keyEvent->key() == Qt::Key_Down) {
- if (!m_completerTmp->m_completer->popup()->isVisible()) {
- const CompletionStartParams completionStartParams = \
m_currentMode->completionInvoked(CompletionInvocation::ExtraContext);
- m_completerTmp->startCompletion(completionStartParams);
- if (m_completerTmp->m_currentCompletionType != None) {
- m_completerTmp->setCompletionIndex(0);
- }
- } else {
- // Descend to next row, wrapping around if necessary.
- if (m_completerTmp->m_completer->currentRow() + 1 == \
m_completerTmp->m_completer->completionCount()) {
- m_completerTmp->setCompletionIndex(0);
- } else {
- m_completerTmp->setCompletionIndex(m_completerTmp->m_completer->currentRow() \
+ 1);
- }
- }
- return true;
- }
- if ((keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() \
== Qt::Key_N) || keyEvent->key() == Qt::Key_Up) {
- if (!m_completerTmp->m_completer->popup()->isVisible()) {
- const CompletionStartParams completionStartParams = \
m_currentMode->completionInvoked(CompletionInvocation::NormalContext);
- m_completerTmp->startCompletion(completionStartParams);
- m_completerTmp->setCompletionIndex(m_completerTmp->m_completer->completionCount() \
- 1);
- } else {
- // Ascend to previous row, wrapping around if necessary.
- if (m_completerTmp->m_completer->currentRow() == 0) {
- m_completerTmp->setCompletionIndex(m_completerTmp->m_completer->completionCount() \
- 1);
- } else {
- m_completerTmp->setCompletionIndex(m_completerTmp->m_completer->currentRow() \
- 1);
- }
- }
- return true;
- }
- if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == \
Qt::Key_Return) {
- if (!m_completerTmp->m_completer->popup()->isVisible() || \
m_completerTmp->m_currentCompletionType != \
EmulatedCommandBar::WordFromDocument) {
- m_currentMode->completionChosen();
- }
- m_completerTmp->deactivateCompletion();
- return true;
- }
- return false;
-}
-
void EmulatedCommandBar::switchToMode ( EmulatedCommandBar::ActiveMode* \
newMode ) {
if (m_currentMode)
m_currentMode->deactivate(false);
m_currentMode = newMode;
+ m_completer->setCurrentMode(newMode);
}
bool EmulatedCommandBar::barHandledKeypress ( const QKeyEvent* keyEvent )
@@ -545,7 +487,7 @@ void EmulatedCommandBar::insertRegisterContents(const \
QKeyEvent *keyEvent)
bool EmulatedCommandBar::eventFilter(QObject *object, QEvent *event)
{
- Q_ASSERT(object == m_edit || object == \
m_completerTmp->m_completer->popup()); + Q_ASSERT(object == m_edit || \
object == m_completer->m_completer->popup()); if \
(m_suspendEditEventFiltering) { return false;
}
@@ -598,7 +540,7 @@ bool EmulatedCommandBar::handleKeyPress(const QKeyEvent \
*keyEvent) insertRegisterContents(keyEvent);
return true;
}
- const bool completerHandled = completerHandledKeypress(keyEvent);
+ const bool completerHandled = \
m_completer->completerHandledKeypress(keyEvent); if (completerHandled)
return true;
@@ -694,7 +636,7 @@ void EmulatedCommandBar::editTextChanged(const QString \
&newText) {
Q_ASSERT(!m_interactiveSedReplaceMode->isActive());
m_currentMode->editTextChanged(newText);
- m_completerTmp->editTextChanged(newText);
+ m_completer->editTextChanged(newText);
}
void EmulatedCommandBar::startHideExitStatusMessageTimer()
@@ -755,7 +697,7 @@ void \
EmulatedCommandBar::ActiveMode::closeWithStatusMessage(const QString& exitS \
void EmulatedCommandBar::ActiveMode::startCompletion ( const \
EmulatedCommandBar::CompletionStartParams& completionStartParams ) {
- m_emulatedCommandBar->m_completerTmp->startCompletion(completionStartParams);
+ m_emulatedCommandBar->m_completer->startCompletion(completionStartParams);
}
EmulatedCommandBar::InteractiveSedReplaceMode::InteractiveSedReplaceMode(EmulatedCommandBar* \
emulatedCommandBar, MatchHighlighter* matchHighlighter) @@ -809,6 +751,67 \
@@ bool EmulatedCommandBar::Completer::isNextTextChangeDueToCompletionChange() \
cons return m_isNextTextChangeDueToCompletionChange;
}
+bool EmulatedCommandBar::Completer::completerHandledKeypress ( const \
QKeyEvent* keyEvent ) +{
+ if (!m_edit->isVisible())
+ return false;
+
+ if (keyEvent->modifiers() == Qt::ControlModifier && (keyEvent->key() \
== Qt::Key_C || keyEvent->key() == Qt::Key_BracketLeft)) + {
+ if (m_currentCompletionType != None && \
m_completer->popup()->isVisible()) + {
+ abortCompletionAndResetToPreCompletion();
+ return true;
+ }
+ }
+ if (keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() == \
Qt::Key_Space) { + CompletionStartParams completionStartParams = \
activateWordFromDocumentCompletion(); + \
startCompletion(completionStartParams); + return true;
+ }
+ if ((keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() \
== Qt::Key_P) || keyEvent->key() == Qt::Key_Down) { + if \
(!m_completer->popup()->isVisible()) { + const \
CompletionStartParams completionStartParams = \
m_currentMode->completionInvoked(CompletionInvocation::ExtraContext); + \
startCompletion(completionStartParams); + if \
(m_currentCompletionType != None) { + setCompletionIndex(0);
+ }
+ } else {
+ // Descend to next row, wrapping around if necessary.
+ if (m_completer->currentRow() + 1 == \
m_completer->completionCount()) { + setCompletionIndex(0);
+ } else {
+ setCompletionIndex(m_completer->currentRow() + 1);
+ }
+ }
+ return true;
+ }
+ if ((keyEvent->modifiers() == Qt::ControlModifier && keyEvent->key() \
== Qt::Key_N) || keyEvent->key() == Qt::Key_Up) { + if \
(!m_completer->popup()->isVisible()) { + const \
CompletionStartParams completionStartParams = \
m_currentMode->completionInvoked(CompletionInvocation::NormalContext); + \
startCompletion(completionStartParams); + \
setCompletionIndex(m_completer->completionCount() - 1); + } else {
+ // Ascend to previous row, wrapping around if necessary.
+ if (m_completer->currentRow() == 0) {
+ setCompletionIndex(m_completer->completionCount() - 1);
+ } else {
+ setCompletionIndex(m_completer->currentRow() - 1);
+ }
+ }
+ return true;
+ }
+ if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == \
Qt::Key_Return) { + if (!m_completer->popup()->isVisible() || \
m_currentCompletionType != EmulatedCommandBar::WordFromDocument) { + \
m_currentMode->completionChosen(); + }
+ deactivateCompletion();
+ return true;
+ }
+ return false;
+
+}
+
void EmulatedCommandBar::Completer::editTextChanged ( const QString& \
newText ) {
if (!m_isNextTextChangeDueToCompletionChange) {
@@ -826,6 +829,11 @@ void EmulatedCommandBar::Completer::editTextChanged ( \
const QString& newText ) }
}
+void EmulatedCommandBar::Completer::setCurrentMode ( \
EmulatedCommandBar::ActiveMode* currentMode ) +{
+ m_currentMode = currentMode;
+}
+
void EmulatedCommandBar::Completer::setCompletionIndex ( int index )
{
const QModelIndex modelIndex = \
m_completer->popup()->model()->index(index, 0); @@ -1101,7 +1109,7 @@ void \
EmulatedCommandBar::SearchMode::deactivate(bool wasAborted)
m_viInputModeManager->globalState()->searchHistory()->append(m_edit->text());
}
-EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::SearchMode::completionInvoked ( \
EmulatedCommandBar::CompletionInvocation invocationType ) \
+EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::SearchMode::completionInvoked ( \
EmulatedCommandBar::Completer::CompletionInvocation invocationType ) {
Q_UNUSED(invocationType);
return activateSearchHistoryCompletion();
@@ -1228,10 +1236,10 @@ void EmulatedCommandBar::CommandMode::deactivate ( \
bool wasAborted )
}
-EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::completionInvoked(EmulatedCommandBar::CompletionInvocation \
invocationType) +EmulatedCommandBar::CompletionStartParams \
EmulatedCommandBar::CommandMode::completionInvoked(EmulatedCommandBar::Completer::CompletionInvocation \
invocationType) {
CompletionStartParams completionStartParams;
- if (invocationType == \
EmulatedCommandBar::CompletionInvocation::ExtraContext) + if \
(invocationType == EmulatedCommandBar::Completer::CompletionInvocation::ExtraContext)
{
if (isCursorInFindTermOfSed()) {
completionStartParams = activateSedFindHistoryCompletion();
diff --git a/src/vimode/emulatedcommandbar.h \
b/src/vimode/emulatedcommandbar.h index 533df3b..18c98ca 100644
--- a/src/vimode/emulatedcommandbar.h
+++ b/src/vimode/emulatedcommandbar.h
@@ -107,16 +107,25 @@ private:
QStringList completions;
std::function<QString(const QString&)> completionTransform;
};
- bool completerHandledKeypress(const QKeyEvent* keyEvent);
+ class ActiveMode;
class Completer
{
public:
+ enum class CompletionInvocation { ExtraContext, NormalContext };
Completer(EmulatedCommandBar* emulatedCommandBar, \
KTextEditor::ViewPrivate* view, QLineEdit* edit);
void startCompletion(const CompletionStartParams& \
completionStartParams); void deactivateCompletion();
bool isCompletionActive() const;
bool isNextTextChangeDueToCompletionChange() const;
+ 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;
+ ActiveMode *m_currentMode = nullptr;
+
void setCompletionIndex(int index);
void currentCompletionChanged();
void updateCompletionPrefix();
@@ -124,19 +133,15 @@ private:
QString wordBeforeCursor();
int wordBeforeCursorBegin();
void abortCompletionAndResetToPreCompletion();
+
QCompleter *m_completer;
QStringListModel *m_completionModel;
QString m_textToRevertToIfCompletionAborted;
int m_cursorPosToRevertToIfCompletionAborted;
bool m_isNextTextChangeDueToCompletionChange = false;
CompletionStartParams m_currentCompletionStartParams;
- CompletionType m_currentCompletionType = None;
- private:
- QLineEdit *m_edit;
- KTextEditor::ViewPrivate *m_view;
};
- enum class CompletionInvocation { ExtraContext, NormalContext }; // \
TODO - make member of upcoming Completer class.
- QScopedPointer<Completer> m_completerTmp;
+ QScopedPointer<Completer> m_completer;
class ActiveMode
{
@@ -152,7 +157,7 @@ private:
{
Q_UNUSED(newText);
}
- virtual CompletionStartParams \
completionInvoked(CompletionInvocation invocationType) + virtual \
CompletionStartParams completionInvoked(Completer::CompletionInvocation \
invocationType) {
Q_UNUSED(invocationType);
return CompletionStartParams();
@@ -170,7 +175,7 @@ private:
void closeWithStatusMessage(const QString& exitStatusMessage);
void setCompletionMode(CompletionType completionType)
{
- m_emulatedCommandBar->m_completerTmp->m_currentCompletionType \
= 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;
@@ -215,7 +220,7 @@ private:
void setViInputModeManager(InputModeManager *viInputModeManager);
virtual bool handleKeyPress ( const QKeyEvent* keyEvent );
virtual void editTextChanged(const QString &newText);
- virtual CompletionStartParams \
completionInvoked(CompletionInvocation invocationType); + virtual \
CompletionStartParams completionInvoked(Completer::CompletionInvocation \
invocationType); virtual void completionChosen();
virtual void deactivate(bool wasAborted);
bool isSendingSyntheticSearchCompletedKeypress() const
@@ -246,7 +251,7 @@ private:
void setViInputModeManager(InputModeManager *viInputModeManager);
virtual bool handleKeyPress ( const QKeyEvent* keyEvent );
virtual void editTextChanged(const QString &newText);
- virtual CompletionStartParams \
completionInvoked(CompletionInvocation invocationType); + virtual \
CompletionStartParams completionInvoked(Completer::CompletionInvocation \
invocationType); virtual void completionChosen();
void deactivate(bool wasAborted);
QString executeCommand(const QString &commandToExecute);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic