Merge remote-tracking branch 'origin/4.11'

Change-Id: Ie951c531a5b2efd8e6b972c4d04b7f1c681c8ef9
This commit is contained in:
Eike Ziller
2019-11-04 14:41:36 +01:00
42 changed files with 202 additions and 147 deletions

View File

@@ -1,9 +1,9 @@
#BINARY_ARTIFACTS_BRANCH = master
#PROJECT_USER_FILE_EXTENSION = .user
set(IDE_VERSION "4.10.83") # The IDE version.
set(IDE_VERSION_COMPAT "4.10.83") # The IDE Compatibility version.
set(IDE_VERSION_DISPLAY "4.11.0-beta2") # The IDE display version.
set(IDE_VERSION "4.10.84") # The IDE version.
set(IDE_VERSION_COMPAT "4.10.84") # The IDE Compatibility version.
set(IDE_VERSION_DISPLAY "4.11.0-rc1") # The IDE display version.
set(IDE_COPYRIGHT_YEAR "2019") # The IDE current copyright year.
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -395,14 +395,14 @@
\image qtcreator-add-resource.png "Editing resource files"
Select \uicontrol Add > \uicontrol {Add Files} to locate and add individual
Select \uicontrol {Add Files} to locate and add individual
files.
By default, resources are accessible in the application under the same file
name as they have in the source tree, with a \c{:/} prefix, or by a URL with
a \c qrc scheme. To specify a path prefix for all files in the \c .qrc file,
select \uicontrol Add > \uicontrol {Add Prefix} or enter the prefix in the
\uicontrol Prefix field.
select \uicontrol {Add Prefix} and enter the prefix in the \uicontrol Prefix
field.
Some resources need to change based on the user's locale, such as
translation files or icons. You can specify a locale in the

View File

@@ -4,16 +4,16 @@ import qbs.FileInfo
import "qtc.js" as HelperFunctions
Module {
property string qtcreator_display_version: '4.11.0-beta2'
property string qtcreator_display_version: '4.11.0-rc1'
property string ide_version_major: '4'
property string ide_version_minor: '10'
property string ide_version_release: '83'
property string ide_version_release: '84'
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
+ ide_version_release
property string ide_compat_version_major: '4'
property string ide_compat_version_minor: '10'
property string ide_compat_version_release: '83'
property string ide_compat_version_release: '84'
property string qtcreator_compat_version: ide_compat_version_major + '.'
+ ide_compat_version_minor + '.' + ide_compat_version_release

View File

@@ -1,6 +1,6 @@
QTCREATOR_VERSION = 4.10.83
QTCREATOR_COMPAT_VERSION = 4.10.83
QTCREATOR_DISPLAY_VERSION = 4.11.0-beta2
QTCREATOR_VERSION = 4.10.84
QTCREATOR_COMPAT_VERSION = 4.10.84
QTCREATOR_DISPLAY_VERSION = 4.11.0-rc1
QTCREATOR_COPYRIGHT_YEAR = 2019
BINARY_ARTIFACTS_BRANCH = 4.11

View File

@@ -12,7 +12,9 @@ win32: VERSION=
HEADERS += ../tools/qtcreatorcrashhandler/crashhandlersetup.h
SOURCES += main.cpp ../tools/qtcreatorcrashhandler/crashhandlersetup.cpp
RPATH_BASE = $$IDE_BIN_PATH
include(../rpath.pri)
include(../libs/qt-breakpad/qtbreakpad.pri)
LIBS *= -l$$qtLibraryName(ExtensionSystem) -l$$qtLibraryName(Aggregation) -l$$qtLibraryName(Utils)

View File

@@ -98,31 +98,43 @@ void BoostCodeParser::handleIdentifier()
if (identifier == "BOOST_AUTO_TEST_SUITE") {
handleSuiteBegin(false);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_FIXTURE_TEST_SUITE") {
handleSuiteBegin(true);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_AUTO_TEST_SUITE_END") {
handleSuiteEnd();
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_TEST_CASE") {
handleTestCase(TestCaseType::Functions);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_PARAM_TEST_CASE") {
m_currentState.setFlag(BoostTestTreeItem::Parameterized);
handleTestCase(TestCaseType::Parameter);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_AUTO_TEST_CASE") {
handleTestCase(TestCaseType::Auto);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_FIXTURE_TEST_CASE") {
m_currentState.setFlag(BoostTestTreeItem::Fixture);
handleTestCase(TestCaseType::Fixture);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_DATA_TEST_CASE") {
handleTestCase(TestCaseType::Data);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_DATA_TEST_CASE_F") {
m_currentState.setFlag(BoostTestTreeItem::Fixture);
handleTestCase(TestCaseType::Data);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_AUTO_TEST_CASE_TEMPLATE") {
m_currentState.setFlag(BoostTestTreeItem::Templated);
handleTestCase(TestCaseType::Auto);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_FIXTURE_TEST_CASE_TEMPLATE") {
m_currentState.setFlag(BoostTestTreeItem::Fixture);
m_currentState.setFlag(BoostTestTreeItem::Templated);
handleTestCase(TestCaseType::Auto);
m_currentState = BoostTestTreeItem::Enabled;
} else if (identifier == "BOOST_TEST_DECORATOR") {
handleDecorator();
}
@@ -155,12 +167,10 @@ void BoostCodeParser::handleSuiteBegin(bool isFixture)
if (skipCommentsUntil(T_RPAREN)) {
// we have no decorators (or we have them before this macro)
m_suites << BoostTestInfo{m_currentSuite, m_currentState, m_lineNo};
m_currentState = BoostTestTreeItem::Enabled;
}
} else {
handleDecorators();
m_suites << BoostTestInfo{m_currentSuite, m_currentState, m_lineNo};
m_currentState = BoostTestTreeItem::Enabled;
}
}
@@ -193,6 +203,7 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
const QList<QByteArray> parts = content.split(',');
if (parts.size() == 0)
return;
token = m_tokens.at(m_currentIndex);
locationAndType = locationAndTypeFromToken(token, m_source, m_currentState, m_suites);
const QByteArray functionName = parts.first();
@@ -201,7 +212,6 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
else
locationAndType.m_name = QString::fromUtf8(functionName);
m_testCases.append(locationAndType);
m_currentState = BoostTestTreeItem::Enabled;
return;
}
} else if (m_currentState.testFlag(BoostTestTreeItem::Fixture)) {
@@ -216,7 +226,6 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
token = m_tokens.at(m_currentIndex);
locationAndType = locationAndTypeFromToken(token, m_source, m_currentState, m_suites);
m_testCases.append(locationAndType);
m_currentState = BoostTestTreeItem::Enabled;
return;
case TestCaseType::Auto:
@@ -226,7 +235,6 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
token = m_tokens.at(m_currentIndex);
if (testCaseType == TestCaseType::Fixture) { // skip fixture class parameter
m_currentState |= BoostTestTreeItem::Fixture;
if (!skipCommentsUntil(T_COMMA))
return;
if (!skipCommentsUntil(T_IDENTIFIER))
@@ -240,14 +248,12 @@ void BoostCodeParser::handleTestCase(TestCaseType testCaseType)
if (skipCommentsUntil(T_RPAREN)) {
locationAndType = locationAndTypeFromToken(token, m_source, m_currentState, m_suites);
m_testCases.append(locationAndType);
m_currentState = BoostTestTreeItem::Enabled;
}
} else {
if (!m_currentState.testFlag(BoostTestTreeItem::Templated))
handleDecorators();
locationAndType = locationAndTypeFromToken(token, m_source, m_currentState, m_suites);
m_testCases.append(locationAndType);
m_currentState = BoostTestTreeItem::Enabled;
}
}

View File

@@ -5,12 +5,12 @@ add_qtc_plugin(CompilationDatabaseProjectManager
compilationdatabaseconstants.h
compilationdatabaseproject.cpp compilationdatabaseproject.h
compilationdatabaseprojectmanagerplugin.cpp compilationdatabaseprojectmanagerplugin.h
compilationdatabasetests.qrc
compilationdatabaseutils.cpp compilationdatabaseutils.h
compilationdbparser.cpp compilationdbparser.h
)
extend_qtc_plugin(CompilationDatabaseProjectManager
CONDITION WITH_TESTS
SOURCES compilationdatabasetests.cpp compilationdatabasetests.h
SOURCES
compilationdatabasetests.cpp compilationdatabasetests.h compilationdatabasetests.qrc
)

View File

@@ -1,6 +1,8 @@
exists($$PWD/litehtml/CMakeLists.txt) {
LH_SRC = $$PWD/litehtml
LH_HDR = $$LH_SRC/include/litehtml
GB_SRC = $$PWD/litehtml/src/gumbo
GB_HDR = $$GB_SRC/include/gumbo
# gumbo
SOURCES += \
@@ -17,24 +19,26 @@ exists($$PWD/litehtml/CMakeLists.txt) {
$$GB_SRC/vector.c
HEADERS += \
$$GB_SRC/attribute.h \
$$GB_SRC/char_ref.h \
$$GB_SRC/error.h \
$$GB_SRC/gumbo.h \
$$GB_SRC/insertion_mode.h \
$$GB_SRC/parser.h \
$$GB_SRC/string_buffer.h \
$$GB_SRC/string_piece.h \
$$GB_SRC/tag_enum.h \
$$GB_SRC/tag_gperf.h \
$$GB_SRC/tag_sizes.h \
$$GB_SRC/tag_strings.h \
$$GB_SRC/token_type.h \
$$GB_SRC/tokenizer.h \
$$GB_SRC/tokenizer_states.h \
$$GB_SRC/utf8.h \
$$GB_SRC/util.h \
$$GB_SRC/vector.h
$$GB_SRC/include//gumbo.h \
$$GB_HDR/attribute.h \
$$GB_HDR/char_ref.h \
$$GB_HDR/error.h \
$$GB_HDR/insertion_mode.h \
$$GB_HDR/parser.h \
$$GB_HDR/string_buffer.h \
$$GB_HDR/string_piece.h \
$$GB_HDR/tag_enum.h \
$$GB_HDR/tag_gperf.h \
$$GB_HDR/tag_sizes.h \
$$GB_HDR/tag_strings.h \
$$GB_HDR/token_type.h \
$$GB_HDR/tokenizer.h \
$$GB_HDR/tokenizer_states.h \
$$GB_HDR/utf8.h \
$$GB_HDR/util.h \
$$GB_HDR/vector.h
INCLUDEPATH *= $$GB_SRC/include $$GB_HDR
win32 {
HEADERS += \
@@ -83,51 +87,51 @@ exists($$PWD/litehtml/CMakeLists.txt) {
HEADERS += \
$$LH_SRC/include/litehtml.h \
$$LH_SRC/src/attributes.h \
$$LH_SRC/src/background.h \
$$LH_SRC/src/borders.h \
$$LH_SRC/src/box.h \
$$LH_SRC/src/context.h \
$$LH_SRC/src/css_length.h \
$$LH_SRC/src/css_margins.h \
$$LH_SRC/src/css_offsets.h \
$$LH_SRC/src/css_position.h \
$$LH_SRC/src/css_selector.h \
$$LH_SRC/src/document.h \
$$LH_SRC/src/el_anchor.h \
$$LH_SRC/src/el_base.h \
$$LH_SRC/src/el_before_after.h \
$$LH_SRC/src/el_body.h \
$$LH_SRC/src/el_break.h \
$$LH_SRC/src/el_cdata.h \
$$LH_SRC/src/el_comment.h \
$$LH_SRC/src/el_div.h \
$$LH_SRC/src/el_font.h \
$$LH_SRC/src/el_image.h \
$$LH_SRC/src/el_link.h \
$$LH_SRC/src/el_para.h \
$$LH_SRC/src/el_script.h \
$$LH_SRC/src/el_space.h \
$$LH_SRC/src/el_style.h \
$$LH_SRC/src/el_table.h \
$$LH_SRC/src/el_td.h \
$$LH_SRC/src/el_text.h \
$$LH_SRC/src/el_title.h \
$$LH_SRC/src/el_tr.h \
$$LH_SRC/src/element.h \
$$LH_SRC/src/html.h \
$$LH_SRC/src/html_tag.h \
$$LH_SRC/src/iterators.h \
$$LH_SRC/src/media_query.h \
$$LH_SRC/src/os_types.h \
$$LH_SRC/src/style.h \
$$LH_SRC/src/stylesheet.h \
$$LH_SRC/src/table.h \
$$LH_SRC/src/types.h \
$$LH_SRC/src/utf8_strings.h \
$$LH_SRC/src/web_color.h
$$LH_HDR/attributes.h \
$$LH_HDR/background.h \
$$LH_HDR/borders.h \
$$LH_HDR/box.h \
$$LH_HDR/context.h \
$$LH_HDR/css_length.h \
$$LH_HDR/css_margins.h \
$$LH_HDR/css_offsets.h \
$$LH_HDR/css_position.h \
$$LH_HDR/css_selector.h \
$$LH_HDR/document.h \
$$LH_HDR/el_anchor.h \
$$LH_HDR/el_base.h \
$$LH_HDR/el_before_after.h \
$$LH_HDR/el_body.h \
$$LH_HDR/el_break.h \
$$LH_HDR/el_cdata.h \
$$LH_HDR/el_comment.h \
$$LH_HDR/el_div.h \
$$LH_HDR/el_font.h \
$$LH_HDR/el_image.h \
$$LH_HDR/el_link.h \
$$LH_HDR/el_para.h \
$$LH_HDR/el_script.h \
$$LH_HDR/el_space.h \
$$LH_HDR/el_style.h \
$$LH_HDR/el_table.h \
$$LH_HDR/el_td.h \
$$LH_HDR/el_text.h \
$$LH_HDR/el_title.h \
$$LH_HDR/el_tr.h \
$$LH_HDR/element.h \
$$LH_HDR/html.h \
$$LH_HDR/html_tag.h \
$$LH_HDR/iterators.h \
$$LH_HDR/media_query.h \
$$LH_HDR/os_types.h \
$$LH_HDR/style.h \
$$LH_HDR/stylesheet.h \
$$LH_HDR/table.h \
$$LH_HDR/types.h \
$$LH_HDR/utf8_strings.h \
$$LH_HDR/web_color.h
INCLUDEPATH *= $$LH_SRC/include $$LH_SRC/src $$GB_SRC
INCLUDEPATH *= $$LH_SRC/include $$LH_HDR
# litehtml without optimization is not fun
QMAKE_CFLAGS_DEBUG += -O2

View File

@@ -143,7 +143,7 @@ QIcon LanguageClientCompletionItem::icon() const
case CompletionItemKind::Method:
case CompletionItemKind::Function:
case CompletionItemKind::Constructor: icon = iconForType(FuncPublic); break;
case CompletionItemKind::Field: icon = iconForType(VarPublic); break;
case CompletionItemKind::Field:
case CompletionItemKind::Variable: icon = iconForType(VarPublic); break;
case CompletionItemKind::Class: icon = iconForType(Class); break;
case CompletionItemKind::Module: icon = iconForType(Namespace); break;

View File

@@ -258,8 +258,8 @@ const QIcon symbolIcon(int type)
if (!icons.contains(kind)) {
switch (kind) {
case SymbolKind::File: icons[kind] = Utils::Icons::NEWFILE.icon(); break;
case SymbolKind::Module: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Namespace: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Module:
case SymbolKind::Namespace:
case SymbolKind::Package: icons[kind] = iconForType(Namespace); break;
case SymbolKind::Class: icons[kind] = iconForType(Class); break;
case SymbolKind::Method: icons[kind] = iconForType(FuncPublic); break;
@@ -269,18 +269,18 @@ const QIcon symbolIcon(int type)
case SymbolKind::Enum: icons[kind] = iconForType(Enum); break;
case SymbolKind::Interface: icons[kind] = iconForType(Class); break;
case SymbolKind::Function: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::Variable: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Constant: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::String: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Number: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Boolean: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Variable:
case SymbolKind::Constant:
case SymbolKind::String:
case SymbolKind::Number:
case SymbolKind::Boolean:
case SymbolKind::Array: icons[kind] = iconForType(VarPublic); break;
case SymbolKind::Object: icons[kind] = iconForType(Class); break;
case SymbolKind::Key: icons[kind] = iconForType(Keyword); break;
case SymbolKind::Key:
case SymbolKind::Null: icons[kind] = iconForType(Keyword); break;
case SymbolKind::EnumMember: icons[kind] = iconForType(Enumerator); break;
case SymbolKind::Struct: icons[kind] = iconForType(Struct); break;
case SymbolKind::Event: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::Event:
case SymbolKind::Operator: icons[kind] = iconForType(FuncPublic); break;
case SymbolKind::TypeParameter: icons[kind] = iconForType(VarPublic); break;
}

View File

@@ -32,7 +32,7 @@
#include "perftimelinemodelmanager.h"
#if WITH_TESTS
# include "tests/perfprofilertracefile_test.h"
//# include "tests/perfprofilertracefile_test.h" // FIXME has to be rewritten
# include "tests/perfresourcecounter_test.h"
#endif // WITH_TESTS
@@ -104,7 +104,7 @@ QVector<QObject *> PerfProfilerPlugin::createTestObjects() const
{
QVector<QObject *> tests;
#if WITH_TESTS
tests << new PerfProfilerTraceFileTest;
// tests << new PerfProfilerTraceFileTest; // FIXME these tests have to get rewritten
tests << new PerfResourceCounterTest;
#endif // WITH_TESTS
return tests;

View File

@@ -79,11 +79,12 @@ FilePathList FileInSessionFinder::doFindFile(const FilePath &filePath)
return m_finder.findFile(QUrl::fromLocalFile(filePath.toString()));
}
} // namespace Internal
FilePathList findFileInSession(const FilePath &filePath)
{
static FileInSessionFinder finder;
static Internal::FileInSessionFinder finder;
return finder.doFindFile(filePath);
}
} // namespace Internal
} // namespace ProjectExplorer

View File

@@ -25,12 +25,13 @@
#pragma once
#include "projectexplorer_export.h"
#include <utils/fileutils.h>
namespace ProjectExplorer {
namespace Internal {
Utils::FilePathList findFileInSession(const Utils::FilePath &filePath);
// Possibly used by "QtCreatorTerminalPlugin"
PROJECTEXPLORER_EXPORT Utils::FilePathList findFileInSession(const Utils::FilePath &filePath);
} // namespace Internal
} // namespace ProjectExplorer

View File

@@ -124,7 +124,7 @@ void Task::setFile(const Utils::FilePath &file_)
{
file = file_;
if (!file.isEmpty() && !file.toFileInfo().isAbsolute()) {
Utils::FilePathList possiblePaths = Internal::findFileInSession(file);
Utils::FilePathList possiblePaths = findFileInSession(file);
if (possiblePaths.length() == 1)
file = possiblePaths.first();
else

View File

@@ -530,7 +530,7 @@ QList<Interpreter> PythonSettings::detectPythonVenvs(const FilePath &path)
void PythonSettings::saveSettings()
{
const QList<Interpreter> &interpreters = interpreterOptionsPage().interpreters();
const QString &defaultId = interpreterOptionsPage().defaultInterpreter().id;
const QString defaultId = interpreterOptionsPage().defaultInterpreter().id;
toSettings(Core::ICore::settings(), {interpreters, defaultId});
if (QTC_GUARD(settingsInstance))
emit settingsInstance->interpretersChanged(interpreters, defaultId);

View File

@@ -94,6 +94,11 @@ static QString pythonName(const FilePath &pythonPath)
FilePath getPylsModulePath(CommandLine pylsCommand)
{
static QMap<FilePath, FilePath> cache;
const FilePath &modulePath = cache.value(pylsCommand.executable());
if (!modulePath.isEmpty())
return modulePath;
pylsCommand.addArg("-h");
SynchronousProcess pythonProcess;
pythonProcess.setEnvironment(pythonProcess.environment() + QStringList("PYTHONVERBOSE=x"));
@@ -111,8 +116,11 @@ FilePath getPylsModulePath(CommandLine pylsCommand)
const QString &output = response.allOutput();
for (auto regex : {regexCached, regexNotCached}) {
QRegularExpressionMatch result = regex.match(output);
if (result.hasMatch())
return FilePath::fromUserInput(result.captured(1));
if (result.hasMatch()) {
const FilePath &modulePath = FilePath::fromUserInput(result.captured(1));
cache[pylsCommand.executable()] = modulePath;
return modulePath;
}
}
return {};
}
@@ -146,7 +154,7 @@ static PythonLanguageServerState checkPythonLanguageServer(const FilePath &pytho
}
}
return {PythonLanguageServerState::AlreadyInstalled, getPylsModulePath(pythonLShelpCommand)};
return {PythonLanguageServerState::AlreadyInstalled, modulePath};
}
const CommandLine pythonPipVersionCommand(python, {"-m", "pip", "-V"});

View File

@@ -457,8 +457,8 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
environment.set("QMLDESIGNER_RC_PATHS", m_qrcMapping);
}
AbstractView *view = nullptr;
#ifndef QMLDESIGNER_TEST
AbstractView *view = nullptr;
view = QmlDesignerPlugin::instance()->viewManager().nodeInstanceView();
view->emitCustomNotification("PuppetStatus", {}, {QVariant(m_qrcMapping)});

View File

@@ -1277,17 +1277,17 @@ void BaseQtVersionPrivate::updateVersionInfo()
}
}
const QString qtInstallDocs = q->docsPath().toString();
if (!qtInstallDocs.isNull()) {
if (!qtInstallDocs.isEmpty()) {
if (QFileInfo::exists(qtInstallDocs))
m_data.hasDocumentation = true;
}
const QString qtInstallExamples = q->examplesPath().toString();
if (!qtInstallExamples.isNull()) {
if (!qtInstallExamples.isEmpty()) {
if (QFileInfo::exists(qtInstallExamples))
m_data.hasExamples = true;
}
const QString qtInstallDemos = q->demosPath().toString();
if (!qtInstallDemos.isNull()) {
if (!qtInstallDemos.isEmpty()) {
if (QFileInfo::exists(qtInstallDemos))
m_data.hasDemos = true;
}

View File

@@ -29,7 +29,9 @@
#include "textdocumentlayout.h"
#include "tabsettings.h"
#include "texteditorsettings.h"
#include "texteditor.h"
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <utils/mimetypes/mimedatabase.h>
@@ -250,7 +252,7 @@ void Highlighter::addCustomHighlighterPath(const Utils::FilePath &path)
highlightRepository()->addCustomSearchPath(path.toString());
}
void Highlighter::updateDefinitions(std::function<void()> callback) {
void Highlighter::downloadDefinitions(std::function<void()> callback) {
auto downloader =
new KSyntaxHighlighting::DefinitionDownloader(highlightRepository());
connect(downloader, &KSyntaxHighlighting::DefinitionDownloader::done,
@@ -271,6 +273,17 @@ void Highlighter::updateDefinitions(std::function<void()> callback) {
downloader->start();
}
void Highlighter::reload()
{
highlightRepository()->reload();
for (auto editor : Core::DocumentModel::editorsForOpenedDocuments()) {
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
if (qobject_cast<Highlighter *>(textEditor->textDocument()->syntaxHighlighter()))
textEditor->editorWidget()->configureGenericHighlighter();
}
}
}
void Highlighter::handleShutdown()
{
delete highlightRepository();

View File

@@ -58,7 +58,8 @@ public:
static void clearDefintionForDocumentCache();
static void addCustomHighlighterPath(const Utils::FilePath &path);
static void updateDefinitions(std::function<void()> callback = nullptr);
static void downloadDefinitions(std::function<void()> callback = nullptr);
static void reload();
static void handleShutdown();

View File

@@ -104,14 +104,17 @@ QWidget *HighlighterSettingsPage::widget()
m_d->m_page->setupUi(m_d->m_widget);
m_d->m_page->definitionFilesPath->setExpectedKind(Utils::PathChooser::ExistingDirectory);
m_d->m_page->definitionFilesPath->setHistoryCompleter(QLatin1String("TextEditor.Highlighter.History"));
connect(m_d->m_page->updateDefinitions,
connect(m_d->m_page->downloadDefinitions,
&QPushButton::pressed,
[label = QPointer<QLabel>(m_d->m_page->updateStatus)]() {
Highlighter::updateDefinitions([label](){
Highlighter::downloadDefinitions([label](){
if (label)
label->setText(tr("Update finished"));
label->setText(tr("Download finished"));
});
});
connect(m_d->m_page->reloadDefinitions, &QPushButton::pressed, []() {
Highlighter::reload();
});
connect(m_d->m_page->resetCache, &QPushButton::clicked, []() {
Highlighter::clearDefintionForDocumentCache();
});

View File

@@ -64,9 +64,12 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QPushButton" name="updateDefinitions">
<widget class="QPushButton" name="downloadDefinitions">
<property name="toolTip">
<string>Download missing and update existing syntax definition files.</string>
</property>
<property name="text">
<string>Update Definitions</string>
<string>Download Definitions</string>
</property>
</widget>
</item>
@@ -108,6 +111,16 @@
</item>
</layout>
</item>
<item>
<widget class="QPushButton" name="reloadDefinitions">
<property name="toolTip">
<string>Reload externally modified definition files.</string>
</property>
<property name="text">
<string>Reload Definitions</string>
</property>
</widget>
</item>
</layout>
</item>
<item>

View File

@@ -3100,11 +3100,11 @@ void TextEditorWidgetPrivate::updateSyntaxInfoBar(const Highlighter::Definitions
&& !TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName)) {
InfoBarEntry info(missing,
BaseTextEditor::tr("A highlight definition was not found for this file. "
"Would you like to update highlight definition files?"),
"Would you like to download additional highlight definition files?"),
InfoBarEntry::GlobalSuppression::Enabled);
info.setCustomButtonInfo(BaseTextEditor::tr("Update Definitions"), [missing, this]() {
info.setCustomButtonInfo(BaseTextEditor::tr("Download Definitions"), [missing, this]() {
m_document->infoBar()->removeInfo(missing);
Highlighter::updateDefinitions([widget = QPointer<TextEditorWidget>(q)]() {
Highlighter::downloadDefinitions([widget = QPointer<TextEditorWidget>(q)]() {
if (widget)
widget->configureGenericHighlighter();
});

View File

@@ -13,9 +13,11 @@ win32 {
DESTDIR = $$IDE_LIBRARY_PATH
osx {
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/Frameworks/
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
QMAKE_LFLAGS += -compatibility_version $$QTCREATOR_COMPAT_VERSION
}
RPATH_BASE = $$IDE_LIBRARY_PATH
include(rpath.pri)
TARGET = $$qtLibraryTargetName($$TARGET)

View File

@@ -85,9 +85,11 @@ exists($$PLUGINJSON_IN) {
}
osx {
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/PlugIns/
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
QMAKE_LFLAGS += -compatibility_version $$QTCREATOR_COMPAT_VERSION
}
RPATH_BASE = $$IDE_PLUGIN_PATH
include(rpath.pri)
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols

View File

@@ -6,14 +6,8 @@ CONFIG += console
CONFIG -= app_bundle
DESTDIR = $$IDE_LIBEXEC_PATH
REL_PATH_TO_LIBS = $$relative_path($$IDE_LIBRARY_PATH, $$IDE_LIBEXEC_PATH)
REL_PATH_TO_PLUGINS = $$relative_path($$IDE_PLUGIN_PATH, $$IDE_LIBEXEC_PATH)
osx {
QMAKE_LFLAGS += -Wl,-rpath,@executable_path/$$REL_PATH_TO_LIBS,-rpath,@executable_path/$$REL_PATH_TO_PLUGINS
} else {
QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_LIBS
QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_PLUGINS
}
RPATH_BASE = $$IDE_LIBEXEC_PATH
include(rpath.pri)
target.path = $$INSTALL_LIBEXEC_PATH

View File

@@ -1,13 +1,19 @@
macx {
QMAKE_LFLAGS += -Wl,-rpath,@loader_path/../,-rpath,@executable_path/../
} else:linux-* {
#do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
# this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var
QMAKE_RPATHDIR += \$\$ORIGIN
QMAKE_RPATHDIR += \$\$ORIGIN/..
QMAKE_RPATHDIR += \$\$ORIGIN/../$$IDE_LIBRARY_BASENAME/qtcreator
IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
# set RPATH_BASE to the IDE_..._PATH of the target
isEmpty(RPATH_BASE): \
error("You must set RPATH_BASE before including rpath.pri")
REL_PATH_TO_LIBS = $$relative_path($$IDE_LIBRARY_PATH, $$RPATH_BASE)
REL_PATH_TO_PLUGINS = $$relative_path($$IDE_PLUGIN_PATH, $$RPATH_BASE)
macos {
QMAKE_LFLAGS += -Wl,-rpath,@loader_path/$$REL_PATH_TO_LIBS,-rpath,@loader_path/$$REL_PATH_TO_PLUGINS
} else:linux-* {
QMAKE_RPATHDIR += \$\$ORIGIN
QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_LIBS
QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_PLUGINS
IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
QMAKE_RPATHDIR =
}

View File

@@ -1,6 +1,8 @@
QTC_LIB_DEPENDS += cplusplus
include(../../../qtcreator.pri)
RPATH_BASE = $$IDE_BIN_PATH
include(../../rpath.pri)
DESTDIR = $$IDE_BIN_PATH

View File

@@ -19,6 +19,8 @@ include(../../../qtcreator.pri)
# put into a subdir, so we can deploy a separate qt.conf for it
DESTDIR = $$IDE_LIBEXEC_PATH/ios
RPATH_BASE = $$DESTDIR
include(../../rpath.pri)
SOURCES += main.cpp \

View File

@@ -7,6 +7,7 @@ include(../../../../qtcreator.pri)
osx: DESTDIR = $$IDE_LIBEXEC_PATH/qmldesigner
else: DESTDIR = $$IDE_LIBEXEC_PATH
RPATH_BASE = $$DESTDIR
include(../../../rpath.pri)
include(../../../../share/qtcreator/qml/qmlpuppet/qml2puppet/qml2puppet.pri)

View File

@@ -1,5 +1,4 @@
QTC_PLUGIN_DEPENDS += cpptools
include(../../qttest.pri)
include($$IDE_SOURCE_TREE/src/rpath.pri)
DEFINES += Q_PLUGIN_PATH=\"\\\"$$IDE_PLUGIN_PATH\\\"\"

View File

@@ -30,9 +30,6 @@ msvc {
DEBUGGERDIR = $$IDE_SOURCE_TREE/src/plugins/debugger
DUMPERDIR = $$IDE_SOURCE_TREE/share/qtcreator/debugger
include($$IDE_SOURCE_TREE/src/rpath.pri)
SOURCES += \
$$DEBUGGERDIR/debuggerprotocol.cpp \
$$DEBUGGERDIR/simplifytype.cpp \

View File

@@ -1,6 +1,5 @@
QTC_LIB_DEPENDS += cplusplus utils extensionsystem
include(../../../qttest.pri)
include($$IDE_SOURCE_TREE/src/rpath.pri)
DEFINES += QMLJS_LIBRARY
QT += qml xml

View File

@@ -2,7 +2,6 @@
QTC_LIB_DEPENDS += utils
include(../../qttest.pri)
#DEFINES+=CPLUSPLUS_BUILD_STATIC_LIB
include($$IDE_SOURCE_TREE/src/rpath.pri)
#DEFINES += Q_PLUGIN_PATH=\"\\\"$$IDE_PLUGIN_PATH\\\"\"

View File

@@ -1,11 +1,11 @@
linux-* {
QMAKE_RPATHDIR += $$IDE_BUILD_TREE/$$IDE_LIBRARY_BASENAME/qtcreator
QMAKE_RPATHDIR += $$IDE_LIBRARY_PATH
QMAKE_RPATHDIR += $$IDE_PLUGIN_PATH
IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":")
QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\'
} else:macx {
QMAKE_LFLAGS += -Wl,-rpath,\"$$IDE_BIN_PATH/../\"
QMAKE_LFLAGS += -Wl,-rpath,\"$$IDE_LIBRARY_PATH\",-rpath,\"$$IDE_PLUGIN_PATH\"
}