diff options
Diffstat (limited to 'src/plugins/texteditor/texteditor.cpp')
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 69 |
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); |