aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/texteditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/texteditor/texteditor.cpp')
-rw-r--r--src/plugins/texteditor/texteditor.cpp69
1 files changed, 58 insertions, 11 deletions
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index a44eb794a2..fb5673aea3 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -35,7 +35,6 @@
#include "behaviorsettings.h"
#include "circularclipboard.h"
#include "circularclipboardassist.h"
-#include "codecselector.h"
#include "completionsettings.h"
#include "extraencodingsettings.h"
#include "highlighter.h"
@@ -59,16 +58,16 @@
#include <texteditor/codeassist/completionassistprovider.h>
#include <texteditor/codeassist/documentcontentcompletion.h>
-#include <coreplugin/icore.h>
#include <aggregation/aggregate.h>
-#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
+#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/command.h>
#include <coreplugin/coreconstants.h>
-#include <coreplugin/infobar.h>
-#include <coreplugin/manhattanstyle.h>
+#include <coreplugin/dialogs/codecselector.h>
#include <coreplugin/find/basetextfind.h>
#include <coreplugin/find/highlightscrollbarcontroller.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/manhattanstyle.h>
#include <utils/algorithm.h>
#include <utils/camelcasecursor.h>
#include <utils/dropsupport.h>
@@ -78,6 +77,7 @@
#include <utils/fileutils.h>
#include <utils/fixedsizeclicklabel.h>
#include <utils/hostosinfo.h>
+#include <utils/infobar.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
@@ -194,6 +194,8 @@ private:
TextEditorWidget::tr("Line: %1, Col: %2")
.arg(line)
.arg(m_editor->textDocument()->tabSettings().columnAt(block.text(), column) + 1));
+ setToolTip(TextEditorWidget::tr("Cursor position: %1")
+ .arg(QString::number(cursor.position())));
}
TextEditorWidget *m_editor;
@@ -626,6 +628,7 @@ public:
QComboBox *m_fileLineEnding = nullptr;
QAction *m_fileLineEndingAction = nullptr;
+ uint m_optionalActionMask = TextEditorActionHandler::None;
bool m_contentsChanged = false;
bool m_lastCursorChangeWasInteresting = false;
@@ -704,8 +707,8 @@ public:
void highlightSearchResults(const QTextBlock &block, const PaintEventData &data) const;
QTimer m_delayedUpdateTimer;
- void setExtraSelections(Core::Id kind, const QList<QTextEdit::ExtraSelection> &selections);
- QHash<Core::Id, QList<QTextEdit::ExtraSelection>> m_extraSelections;
+ void setExtraSelections(Utils::Id kind, const QList<QTextEdit::ExtraSelection> &selections);
+ QHash<Utils::Id, QList<QTextEdit::ExtraSelection>> m_extraSelections;
// block selection mode
bool m_inBlockSelectionMode = false;
@@ -1834,7 +1837,7 @@ void TextEditorWidget::joinLines()
QString cutLine = cursor.selectedText();
// Collapse leading whitespaces to one or insert whitespace
- cutLine.replace(QRegExp(QLatin1String("^\\s*")), QLatin1String(" "));
+ cutLine.replace(QRegularExpression(QLatin1String("^\\s*")), QLatin1String(" "));
cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
@@ -1963,6 +1966,11 @@ void TextEditorWidget::findUsages()
emit requestUsages(textCursor());
}
+void TextEditorWidget::renameSymbolUnderCursor()
+{
+ emit requestRename(textCursor());
+}
+
void TextEditorWidget::abortAssist()
{
d->m_codeAssistant.destroyContext();
@@ -2501,6 +2509,10 @@ void TextEditorWidget::keyPressEvent(QKeyEvent *e)
case Qt::Key_Down:
case Qt::Key_Right:
case Qt::Key_Left:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ case Qt::Key_Home:
+ case Qt::Key_End:
if (HostOsInfo::isMacHost())
break;
if ((e->modifiers()
@@ -2523,6 +2535,22 @@ void TextEditorWidget::keyPressEvent(QKeyEvent *e)
case Qt::Key_Right:
++d->m_blockSelection.positionColumn;
break;
+ case Qt::Key_PageUp:
+ d->m_blockSelection.positionBlock -= verticalScrollBar()->pageStep();
+ if (d->m_blockSelection.positionBlock < 0)
+ d->m_blockSelection.positionBlock = 0;
+ break;
+ case Qt::Key_PageDown:
+ d->m_blockSelection.positionBlock += verticalScrollBar()->pageStep();
+ if (d->m_blockSelection.positionBlock > document()->blockCount() - 1)
+ d->m_blockSelection.positionBlock = document()->blockCount() - 1;
+ break;
+ case Qt::Key_Home:
+ d->m_blockSelection.positionBlock = 0;
+ break;
+ case Qt::Key_End:
+ d->m_blockSelection.positionBlock = document()->blockCount() - 1;
+ break;
default:
break;
}
@@ -3187,7 +3215,7 @@ void TextEditorWidgetPrivate::rememberCurrentSyntaxDefinition()
return;
const Highlighter::Definition &definition = highlighter->definition();
if (definition.isValid())
- Highlighter::rememberDefintionForDocument(definition, m_document.data());
+ Highlighter::rememberDefinitionForDocument(definition, m_document.data());
}
bool TextEditorWidget::codeFoldingVisible() const
@@ -4223,7 +4251,7 @@ void TextEditorWidgetPrivate::paintSearchResultOverlay(const PaintEventData &dat
QPainter &painter) const
{
m_searchResultOverlay->clear();
- if (m_searchExpr.pattern().isEmpty())
+ if (m_searchExpr.pattern().isEmpty() || !m_searchExpr.isValid())
return;
const int margin = 5;
@@ -7096,7 +7124,7 @@ void TextEditorWidget::autoIndent()
void TextEditorWidget::rewrapParagraph()
{
const int paragraphWidth = marginSettings().m_marginColumn;
- const QRegExp anyLettersOrNumbers = QRegExp(QLatin1String("\\w"));
+ const QRegularExpression anyLettersOrNumbers("\\w");
const int tabSize = d->m_document->tabSettings().m_tabSize;
QTextCursor cursor = textCursor();
@@ -7800,6 +7828,23 @@ void TextEditorWidget::appendStandardContextMenuActions(QMenu *menu)
}
}
+uint TextEditorWidget::optionalActions()
+{
+ return d->m_optionalActionMask;
+}
+
+void TextEditorWidget::setOptionalActions(uint optionalActionMask)
+{
+ if (d->m_optionalActionMask == optionalActionMask)
+ return;
+ d->m_optionalActionMask = optionalActionMask;
+ emit optionalActionMaskChanged();
+}
+
+void TextEditorWidget::addOptionalActions( uint optionalActionMask)
+{
+ setOptionalActions(d->m_optionalActionMask | optionalActionMask);
+}
BaseTextEditor::BaseTextEditor()
: d(new BaseTextEditorPrivate)
@@ -8696,6 +8741,8 @@ BaseTextEditor *TextEditorFactoryPrivate::createEditorHelper(const TextDocumentP
textEditorWidget->setMarksVisible(m_marksVisible);
textEditorWidget->setParenthesesMatchingEnabled(m_paranthesesMatchinEnabled);
textEditorWidget->setCodeFoldingSupported(m_codeFoldingSupported);
+ if (m_textEditorActionHandler)
+ textEditorWidget->setOptionalActions(m_textEditorActionHandler->optionalActions());
BaseTextEditor *editor = m_editorCreator();
editor->setDuplicateSupported(m_duplicatedSupported);