From fd186bed20ba6e475bade1fac8f909ce86aa18a4 Mon Sep 17 00:00:00 2001 From: Sergey Belyashov Date: Fri, 28 Sep 2018 16:45:37 +0300 Subject: [PATCH 01/21] Russian translation update Change-Id: I40965282a75586bb23e6e42b7d82bd8532290820 Reviewed-by: Alexander Volkov Reviewed-by: Oswald Buddenhagen --- share/qtcreator/translations/qtcreator_ru.ts | 30 ++++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_ru.ts b/share/qtcreator/translations/qtcreator_ru.ts index 4a7e7ca9620..1af9e5cb5f8 100644 --- a/share/qtcreator/translations/qtcreator_ru.ts +++ b/share/qtcreator/translations/qtcreator_ru.ts @@ -1757,6 +1757,10 @@ Install an SDK of at least API version %1. Alt+Shift+T,Alt+A Alt+Shift+T,Alt+A + + Ctrl+Meta+T, Ctrl+Meta+A + Ctrl+Meta+T, Ctrl+Meta+A + &Run Selected Tests &Запустить выбранные @@ -1769,6 +1773,10 @@ Install an SDK of at least API version %1. Alt+Shift+T,Alt+R Alt+Shift+T,Alt+R + + Ctrl+Meta+T, Ctrl+Meta+R + Ctrl+Meta+T, Ctrl+Meta+R + Run Tests for Current &File Запустить тесты для текущего &файла @@ -1781,6 +1789,10 @@ Install an SDK of at least API version %1. Alt+Shift+T,Alt+F Alt+Shift+T,Alt+F + + Ctrl+Meta+T, Ctrl+Meta+F + Ctrl+Meta+T, Ctrl+Meta+F + Re&scan Tests &Пересканировать @@ -1789,6 +1801,10 @@ Install an SDK of at least API version %1. Alt+Shift+T,Alt+S Alt+Shift+T,Alt+S + + Ctrl+Meta+T, Ctrl+Meta+S + Ctrl+Meta+T, Ctrl+Meta+S + &Run Test Under Cursor &Запустить тест под курсором @@ -11195,7 +11211,7 @@ Flags: %3 CppTools::TidyChecksTreeModel Web Page - Вэб-страница + Веб-страница @@ -13312,7 +13328,7 @@ Affected are breakpoints %1 Start Debugging Without Deployment - Начать отладку с установкой + Начать отладку без установки Start and Debug External Application... @@ -26820,6 +26836,10 @@ to project "%2". Alt+Shift+L Alt+Shift+L + + Meta+Shift+L + Meta+Shift+L + Hide Empty Directories Скрывать пустые каталоги @@ -36383,7 +36403,7 @@ For more details, see /etc/sysctl.d/10-ptrace.conf Classes for displaying and editing Web content - Классы для отображения и правки вэб-страниц + Классы для отображения и правки веб-страниц WebKit1 and QWidget-based classes from Qt 4 (Qt 5) @@ -45318,6 +45338,10 @@ should a repository require SSH-authentication (see documentation on SSH and the No executable to deploy found in %1. В %1 не обнаружен исполняемый файл для установки. + + Cannot find windeployqt.exe in "%1". + Не удалось найти windeployqt.exe в «%1». + Cannot parse manifest file %1. Не удалось разобрать файл манифеста %1. From 2730fd4c489f81762eac9088552c8e2f06b9eb77 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 28 Sep 2018 13:37:11 +0200 Subject: [PATCH 02/21] Editor: Do not access a text document from another thread Task-number: QTCREATORBUG-21192 Change-Id: I5c327f268da2364f1fc4f671993e8498cd0b7421 Reviewed-by: Eike Ziller --- .../codeassist/documentcontentcompletion.cpp | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/plugins/texteditor/codeassist/documentcontentcompletion.cpp b/src/plugins/texteditor/codeassist/documentcontentcompletion.cpp index cdb69be9b93..44572146f13 100644 --- a/src/plugins/texteditor/codeassist/documentcontentcompletion.cpp +++ b/src/plugins/texteditor/codeassist/documentcontentcompletion.cpp @@ -46,14 +46,14 @@ class DocumentContentCompletionProcessor : public IAssistProcessor { public: DocumentContentCompletionProcessor(const QString &snippetGroupId); + ~DocumentContentCompletionProcessor() override; IAssistProposal *perform(const AssistInterface *interface) override; - bool running() final { return m_running; } + bool running() final { return m_watcher.isRunning(); } private: - TextEditor::SnippetAssistCollector m_snippetCollector; - IAssistProposal *createProposal(const AssistInterface *interface); - bool m_running = false; + QString m_snippetGroup; + QFutureWatcher m_watcher; }; DocumentContentCompletionProvider::DocumentContentCompletionProvider(const QString &snippetGroup) @@ -71,45 +71,39 @@ IAssistProcessor *DocumentContentCompletionProvider::createProcessor() const } DocumentContentCompletionProcessor::DocumentContentCompletionProcessor(const QString &snippetGroupId) - : m_snippetCollector(snippetGroupId, QIcon(":/texteditor/images/snippet.png")) + : m_snippetGroup(snippetGroupId) { } +DocumentContentCompletionProcessor::~DocumentContentCompletionProcessor() +{ + if (m_watcher.isRunning()) + m_watcher.cancel(); +} + +static void createProposal(QFutureInterface &future, const QString text) +{ + const QRegularExpression wordRE("([a-zA-Z_][a-zA-Z0-9_]{2,})"); + + QSet words; + QRegularExpressionMatchIterator it = wordRE.globalMatch(text); + while (it.hasNext()) { + if (future.isCanceled()) + return; + QRegularExpressionMatch match = it.next(); + const QString &word = match.captured(); + if (!words.contains(word)) + words.insert(word); + } + + future.reportResult(words.toList()); +} + IAssistProposal *DocumentContentCompletionProcessor::perform(const AssistInterface *interface) -{ - Utils::onResultReady(Utils::runAsync( - &DocumentContentCompletionProcessor::createProposal, this, interface), - [this](IAssistProposal *proposal){ - m_running = false; - setAsyncProposalAvailable(proposal); - }); - m_running = true; - return nullptr; -} - -static void generateProposalItems(const QString &text, QSet &words, - QList &items) -{ - static const QRegularExpression wordRE("([a-zA-Z_][a-zA-Z0-9_]{2,})"); - - QRegularExpressionMatch match; - int index = text.indexOf(wordRE, 0, &match); - while (index >= 0) { - const QString &word = match.captured(); - if (!words.contains(word)) { - auto item = new AssistProposalItem(); - item->setText(word); - items.append(item); - words.insert(word); - } - index += word.size(); - index = text.indexOf(wordRE, index, &match); - } -} - -IAssistProposal *DocumentContentCompletionProcessor::createProposal( - const AssistInterface *interface) { QScopedPointer assistInterface(interface); + if (running()) + return nullptr; + int pos = interface->position(); QChar chr; @@ -126,14 +120,20 @@ IAssistProposal *DocumentContentCompletionProcessor::createProposal( return nullptr; } - QSet words; - QList items = m_snippetCollector.collect(); - QTextBlock block = interface->textDocument()->firstBlock(); + const QString text = interface->textDocument()->toPlainText(); - while (block.isValid()) { - generateProposalItems(block.text(), words, items); - block = block.next(); - } - - return new GenericProposal(pos, items); + m_watcher.setFuture(Utils::runAsync(&createProposal, text)); + QObject::connect(&m_watcher, &QFutureWatcher::resultReadyAt, + &m_watcher, [this, pos](int index){ + const TextEditor::SnippetAssistCollector snippetCollector( + m_snippetGroup, QIcon(":/texteditor/images/snippet.png")); + QList items = snippetCollector.collect(); + for (const QString &word : m_watcher.resultAt(index)) { + auto item = new AssistProposalItem(); + item->setText(word); + items.append(item); + } + setAsyncProposalAvailable(new GenericProposal(pos, items)); + }); + return nullptr; } From 4c055491efbb4e49a6b2269ba8ef7ace74865f35 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Thu, 11 Oct 2018 11:06:23 +0200 Subject: [PATCH 03/21] Revert "Clang: Merge channels from clangbackend on Windows" This reverts commit 179d8dce7341effd3791e80a90f6fe7b37471671. It causes random crashes caused by different QProcesses so revert until we find a solution for that. Change-Id: Id42f996f54aa5926191f02f9b881ba72eb94689e Reviewed-by: Nikolai Kosjar --- src/libs/clangsupport/processcreator.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/libs/clangsupport/processcreator.cpp b/src/libs/clangsupport/processcreator.cpp index aa9ba9641a5..22b52793e30 100644 --- a/src/libs/clangsupport/processcreator.cpp +++ b/src/libs/clangsupport/processcreator.cpp @@ -36,13 +36,6 @@ namespace ClangBackEnd { using namespace std::chrono_literals; -static QProcess::ProcessChannelMode kProcessChannelMode -#ifdef Q_OS_WIN - = QProcess::MergedChannels; -#else - = QProcess::ForwardedChannels; -#endif - ProcessCreator::ProcessCreator() { } @@ -73,7 +66,7 @@ std::future ProcessCreator::createProcess() const return std::async(std::launch::async, [&] { checkIfProcessPathExists(); auto process = QProcessUniquePointer(new QProcess); - process->setProcessChannelMode(kProcessChannelMode); + process->setProcessChannelMode(QProcess::QProcess::ForwardedChannels); process->setProcessEnvironment(processEnvironment()); process->start(m_processPath, m_arguments); process->waitForStarted(5000); From 4c27b0e6e754bc88622ad90c34f7ade48a9cd890 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 10 Oct 2018 23:48:51 +0300 Subject: [PATCH 04/21] Git: Disable merge tool execution for vimdiff vimdiff requires a terminal, which is not supported in Qt Creator. Fixes: QTCREATORBUG-21147 Change-Id: I6168ac9c4a03061a64a1699fca6f39c90df5168b Reviewed-by: Leena Miettinen Reviewed-by: Tobias Hunger --- src/plugins/git/gitclient.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index eb527339baf..5c168cf1bba 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2944,6 +2944,12 @@ void GitClient::handleMergeConflicts(const QString &workingDir, const QString &c QMessageBox::NoButton, ICore::mainWindow()); QPushButton *mergeToolButton = mergeOrAbort.addButton(tr("Run &Merge Tool"), QMessageBox::AcceptRole); + const QString mergeTool = readConfigValue(workingDir, "merge.tool"); + if (mergeTool.isEmpty() || mergeTool.startsWith("vimdiff")) { + mergeToolButton->setEnabled(false); + mergeToolButton->setToolTip(tr("Only graphical merge tools are supported. " + "Please configure merge.tool.")); + } mergeOrAbort.addButton(QMessageBox::Ignore); if (abortCommand == "rebase") mergeOrAbort.addButton(tr("&Skip"), QMessageBox::RejectRole); From 253f71bfab511851033123c8619f5d2a1ca3a950 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 11 Oct 2018 13:08:35 +0200 Subject: [PATCH 05/21] Cdb: fix std vector dumper in non python dumper Task-number: QTCREATORBUG-21074 Change-Id: Iae78195b5bed1a6baa4515bf578d4f0b004eddae Reviewed-by: Eike Ziller Reviewed-by: Christian Stenger --- src/libs/qtcreatorcdbext/containers.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/qtcreatorcdbext/containers.cpp b/src/libs/qtcreatorcdbext/containers.cpp index 128f450cafa..7ea4a2ddafe 100644 --- a/src/libs/qtcreatorcdbext/containers.cpp +++ b/src/libs/qtcreatorcdbext/containers.cpp @@ -108,7 +108,7 @@ static inline int msvcStdVectorSize(const SymbolGroupValue &v) const std::vector innerTypes = v.innerTypes(); if (innerTypes.empty()) return -1; - const std::string innerType = fixInnerType(SymbolGroupValue::stripPointerType(innerTypes[0]), v); + const std::string innerType = fixInnerType(innerTypes[0], v); const size_t size = SymbolGroupValue::sizeOf(innerType.c_str()); if (size == 0) return -1; From 352ac2ccf404dc0452496a02d0a4b768f032917b Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Thu, 11 Oct 2018 08:49:48 +0200 Subject: [PATCH 06/21] Utils: Fix column returned from helper function The second function overload must also return 1-based column. Change-Id: I1d3a58c9267e4a8c8a031c72230f963596a7bb2b Reviewed-by: Nikolai Kosjar --- src/libs/utils/textutils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/utils/textutils.cpp b/src/libs/utils/textutils.cpp index 9b653bafa69..192c68bcbd3 100644 --- a/src/libs/utils/textutils.cpp +++ b/src/libs/utils/textutils.cpp @@ -53,7 +53,7 @@ OptionalLineColumn convertPosition(const QTextDocument *document, int pos) QTextBlock block = document->findBlock(pos); if (block.isValid()) - optional.emplace(block.blockNumber() + 1, pos - block.position()); + optional.emplace(block.blockNumber() + 1, pos - block.position() + 1); return optional; } From f2bd50c466e71c2cb6b6c9e2a789a6d97578eaa2 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 11 Oct 2018 14:19:54 +0200 Subject: [PATCH 07/21] TextEditor: Remove defaults from Format The default caused strange bugs because it was expected that no color was set. Task-number: QTCREATORBUG-21282 Change-Id: I3b520b944ffcb87838ba3e7b02e1d28b0f757679 Reviewed-by: Alessandro Portale --- src/plugins/texteditor/colorscheme.h | 8 ++------ src/plugins/texteditor/texteditorsettings.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/plugins/texteditor/colorscheme.h b/src/plugins/texteditor/colorscheme.h index bc9d340b688..ef7e59e87f5 100644 --- a/src/plugins/texteditor/colorscheme.h +++ b/src/plugins/texteditor/colorscheme.h @@ -46,10 +46,6 @@ public: Format() = default; Format(const QColor &foreground, const QColor &background); - static Format createMixinFormat() { - return Format(QColor(), QColor()); - } - QColor foreground() const { return m_foreground; } void setForeground(const QColor &foreground); @@ -86,8 +82,8 @@ public: bool fromString(const QString &str); private: - QColor m_foreground = Qt::black; - QColor m_background = Qt::white; + QColor m_foreground; + QColor m_background; QColor m_underlineColor; double m_relativeForegroundSaturation = 0.0; double m_relativeForegroundLightness = 0.0; diff --git a/src/plugins/texteditor/texteditorsettings.cpp b/src/plugins/texteditor/texteditorsettings.cpp index a4957f1780a..c6b1710c7c9 100644 --- a/src/plugins/texteditor/texteditorsettings.cpp +++ b/src/plugins/texteditor/texteditorsettings.cpp @@ -92,8 +92,10 @@ TextEditorSettings::TextEditorSettings() // Add font preference page FormatDescriptions formatDescr; formatDescr.reserve(C_LAST_STYLE_SENTINEL); - formatDescr.emplace_back(C_TEXT, tr("Text"), tr("Generic text and punctuation tokens.\n" - "Applied to text that matched no other rule.")); + formatDescr.emplace_back(C_TEXT, tr("Text"), + tr("Generic text and punctuation tokens.\n" + "Applied to text that matched no other rule."), + Format{QColor{}, Qt::white}); // Special categories const QPalette p = QApplication::palette(); @@ -168,7 +170,7 @@ TextEditorSettings::TextEditorSettings() functionFormat.setForeground(QColor(0, 103, 124)); formatDescr.emplace_back(C_FUNCTION, tr("Function"), tr("Name of a function."), functionFormat); - Format declarationFormat = Format::createMixinFormat(); + Format declarationFormat; declarationFormat.setBold(true); formatDescr.emplace_back(C_DECLARATION, tr("Function Declaration"), @@ -178,7 +180,6 @@ TextEditorSettings::TextEditorSettings() formatDescr.emplace_back(C_FUNCTION_DEFINITION, tr("Function Definition"), tr("Name of function at its definition."), - Format::createMixinFormat(), FormatDescription::ShowAllControls); Format virtualFunctionFormat(functionFormat); virtualFunctionFormat.setItalic(true); @@ -242,7 +243,6 @@ TextEditorSettings::TextEditorSettings() formatDescr.emplace_back(C_OPERATOR, tr("Operator"), tr("Non user-defined language operators.\n" "To style user-defined operators, use Overloaded Operator."), - Format::createMixinFormat(), FormatDescription::ShowAllControls); formatDescr.emplace_back(C_OVERLOADED_OPERATOR, tr("Overloaded Operators"), @@ -335,7 +335,7 @@ TextEditorSettings::TextEditorSettings() QColor(255, 190, 0), QTextCharFormat::DotLine, FormatDescription::ShowAllControls); - Format outputArgumentFormat = Format::createMixinFormat(); + Format outputArgumentFormat; outputArgumentFormat.setItalic(true); formatDescr.emplace_back(C_OUTPUT_ARGUMENT, tr("Output Argument"), From 414c7f9f1e1ecb350af9fa7d25be1cdb0ac8aead Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 11 Oct 2018 14:21:42 +0200 Subject: [PATCH 08/21] TextEditor: Add Overloaded Operator and Punctation to text styles Task-number: QTCREATORBUG-21285 Change-Id: Ib5d8aac74ff94c506f0888dff3ada802ac605af0 Reviewed-by: Alessandro Portale --- share/qtcreator/styles/creator-dark.xml | 2 ++ share/qtcreator/styles/dark.xml | 2 ++ share/qtcreator/styles/default_classic.xml | 2 ++ share/qtcreator/styles/grayscale.xml | 2 ++ share/qtcreator/styles/inkpot.xml | 2 ++ share/qtcreator/styles/intellij.xml | 1 + share/qtcreator/styles/modnokai_night_shift_v2.xml | 2 ++ share/qtcreator/styles/solarized-dark.xml | 2 ++ share/qtcreator/styles/solarized-light.xml | 2 ++ 9 files changed, 17 insertions(+) diff --git a/share/qtcreator/styles/creator-dark.xml b/share/qtcreator/styles/creator-dark.xml index 7c04fa3f011..bff4b21bd42 100644 --- a/share/qtcreator/styles/creator-dark.xml +++ b/share/qtcreator/styles/creator-dark.xml @@ -25,7 +25,9 @@