summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/languageserverprotocol/basemessage.cpp7
-rw-r--r--src/libs/languageserverprotocol/clientcapabilities.h2
-rw-r--r--src/libs/languageserverprotocol/jsonkeys.h424
-rw-r--r--src/libs/languageserverprotocol/jsonobject.cpp4
-rw-r--r--src/libs/languageserverprotocol/jsonobject.h62
-rw-r--r--src/libs/languageserverprotocol/workspace.h2
-rw-r--r--src/libs/utils/icon.cpp32
-rw-r--r--src/libs/utils/icon.h2
-rw-r--r--src/plugins/clangcodemodel/clangdast.cpp4
-rw-r--r--src/plugins/clangcodemodel/clangdclient.cpp12
-rw-r--r--src/plugins/clangcodemodel/clangdcompletion.cpp2
-rw-r--r--src/plugins/clangcodemodel/clangtextmark.cpp49
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp13
-rw-r--r--src/plugins/clangtools/diagnosticmark.cpp40
-rw-r--r--src/plugins/cmakeprojectmanager/cmakesettingspage.cpp15
-rw-r--r--src/plugins/coco/cocolanguageclient.cpp2
-rw-r--r--src/plugins/cppcheck/cppchecktextmark.cpp25
-rw-r--r--src/plugins/languageclient/diagnosticmanager.cpp16
-rw-r--r--src/plugins/languageclient/lspinspector.cpp2
-rw-r--r--src/plugins/qmldesigner/designercore/model/propertyparser.cpp13
-rw-r--r--src/plugins/texteditor/textdocument.cpp13
-rw-r--r--src/plugins/texteditor/textdocument.h1
-rw-r--r--src/plugins/texteditor/textdocumentlayout.cpp14
-rw-r--r--src/plugins/texteditor/textdocumentlayout.h5
-rw-r--r--src/plugins/texteditor/textmark.cpp36
-rw-r--r--src/plugins/texteditor/textmark.h6
26 files changed, 429 insertions, 374 deletions
diff --git a/src/libs/languageserverprotocol/basemessage.cpp b/src/libs/languageserverprotocol/basemessage.cpp
index 4e5f621ca0..ee0450010a 100644
--- a/src/libs/languageserverprotocol/basemessage.cpp
+++ b/src/libs/languageserverprotocol/basemessage.cpp
@@ -37,6 +37,13 @@ namespace LanguageServerProtocol {
Q_LOGGING_CATEGORY(parseLog, "qtc.languageserverprotocol.parse", QtWarningMsg)
+constexpr char headerFieldSeparator[] = ": ";
+constexpr char contentCharsetName[] = "charset";
+constexpr char defaultCharset[] = "utf-8";
+constexpr char contentLengthFieldName[] = "Content-Length";
+constexpr char headerSeparator[] = "\r\n";
+constexpr char contentTypeFieldName[] = "Content-Type";
+
BaseMessage::BaseMessage()
: mimeType(JsonRpcMessage::jsonRpcMimeType())
{ }
diff --git a/src/libs/languageserverprotocol/clientcapabilities.h b/src/libs/languageserverprotocol/clientcapabilities.h
index bc6151a174..93a7181de7 100644
--- a/src/libs/languageserverprotocol/clientcapabilities.h
+++ b/src/libs/languageserverprotocol/clientcapabilities.h
@@ -626,7 +626,7 @@ public:
void clearWorkDoneProgress() { remove(workDoneProgressKey); }
private:
- constexpr static const char workDoneProgressKey[] = "workDoneProgress";
+ constexpr static const char16_t workDoneProgressKey[] = u"workDoneProgress";
};
class LANGUAGESERVERPROTOCOL_EXPORT ClientCapabilities : public JsonObject
diff --git a/src/libs/languageserverprotocol/jsonkeys.h b/src/libs/languageserverprotocol/jsonkeys.h
index cc3d57ca61..efc05f629d 100644
--- a/src/libs/languageserverprotocol/jsonkeys.h
+++ b/src/libs/languageserverprotocol/jsonkeys.h
@@ -27,220 +27,214 @@
namespace LanguageServerProtocol {
-constexpr char actionsKey[] = "actions";
-constexpr char activeParameterKey[] = "activeParameter";
-constexpr char activeParameterSupportKey[] = "activeParameterSupport";
-constexpr char activeSignatureKey[] = "activeSignature";
-constexpr char addedKey[] = "added";
-constexpr char additionalTextEditsKey[] = "additionalTextEdits";
-constexpr char alphaKey[] = "alpha";
-constexpr char appliedKey[] = "applied";
-constexpr char applyEditKey[] = "applyEdit";
-constexpr char argumentsKey[] = "arguments";
-constexpr char blueKey[] = "blue";
-constexpr char cancellableKey[] = "cancellable";
-constexpr char capabilitiesKey[] = "capabilities";
-constexpr char chKey[] = "ch";
-constexpr char changeKey[] = "change";
-constexpr char changeNotificationsKey[] = "changeNotifications";
-constexpr char changesKey[] = "changes";
-constexpr char characterKey[] = "character";
-constexpr char childrenKey[] = "children";
-constexpr char clientInfoKey[] = "clientInfo";
-constexpr char codeActionKey[] = "codeAction";
-constexpr char codeActionKindKey[] = "codeActionKind";
-constexpr char codeActionKindsKey[] = "codeActionKinds";
-constexpr char codeActionLiteralSupportKey[] = "codeActionLiteralSupport";
-constexpr char codeActionProviderKey[] = "codeActionProvider";
-constexpr char codeKey[] = "code";
-constexpr char codeLensKey[] = "codeLens";
-constexpr char codeLensProviderKey[] = "codeLensProvider";
-constexpr char colorInfoKey[] = "colorInfo";
-constexpr char colorKey[] = "color";
-constexpr char colorProviderKey[] = "colorProvider";
-constexpr char commandKey[] = "command";
-constexpr char commandsKey[] = "commands";
-constexpr char commitCharacterSupportKey[] = "commitCharacterSupport";
-constexpr char commitCharactersKey[] = "commitCharacters";
-constexpr char completionItemKey[] = "completionItem";
-constexpr char completionItemKindKey[] = "completionItemKind";
-constexpr char completionKey[] = "completion";
-constexpr char completionProviderKey[] = "completionProvider";
-constexpr char configurationKey[] = "configuration";
-constexpr char containerNameKey[] = "containerName";
-constexpr char contentChangesKey[] = "contentChanges";
-constexpr char contentCharsetName[] = "charset";
-constexpr char contentFormatKey[] = "contentFormat";
-constexpr char contentKey[] = "value";
-constexpr char contentLengthFieldName[] = "Content-Length";
-constexpr char contentTypeFieldName[] = "Content-Type";
-constexpr char contentsKey[] = "contents";
-constexpr char contextKey[] = "context";
-constexpr char contextSupportKey[] = "contextSupport";
-constexpr char dataKey[] = "data";
-constexpr char defaultCharset[] = "utf-8";
-constexpr char definitionKey[] = "definition";
-constexpr char definitionProviderKey[] = "definitionProvider";
-constexpr char deleteCountKey[] = "deleteCount";
-constexpr char deltaKey[] = "delta";
-constexpr char deprecatedKey[] = "deprecated";
-constexpr char detailKey[] = "detail";
-constexpr char diagnosticsKey[] = "diagnostics";
-constexpr char didChangeConfigurationKey[] = "didChangeConfiguration";
-constexpr char didChangeWatchedFilesKey[] = "didChangeWatchedFiles";
-constexpr char didSaveKey[] = "didSave";
-constexpr char documentChangesKey[] = "documentChanges";
-constexpr char documentFormattingProviderKey[] = "documentFormattingProvider";
-constexpr char documentHighlightKey[] = "documentHighlight";
-constexpr char documentHighlightProviderKey[] = "documentHighlightProvider";
-constexpr char documentLinkKey[] = "documentLink";
-constexpr char documentLinkProviderKey[] = "documentLinkProvider";
-constexpr char documentRangeFormattingProviderKey[] = "documentRangeFormattingProvider";
-constexpr char documentSelectorKey[] = "documentSelector";
-constexpr char documentSymbolKey[] = "documentSymbol";
-constexpr char documentSymbolProviderKey[] = "documentSymbolProvider";
-constexpr char documentationFormatKey[] = "documentationFormat";
-constexpr char documentationKey[] = "documentation";
-constexpr char dynamicRegistrationKey[] = "dynamicRegistration";
-constexpr char editKey[] = "edit";
-constexpr char editsKey[] = "edits";
-constexpr char endKey[] = "end";
-constexpr char errorKey[] = "error";
-constexpr char eventKey[] = "event";
-constexpr char executeCommandKey[] = "executeCommand";
-constexpr char executeCommandProviderKey[] = "executeCommandProvider";
-constexpr char experimentalKey[] = "experimental";
-constexpr char filterTextKey[] = "filterText";
-constexpr char firstTriggerCharacterKey[] = "firstTriggerCharacter";
-constexpr char formatsKey[] = "formats";
-constexpr char formattingKey[] = "formatting";
-constexpr char fullKey[] = "full";
-constexpr char greenKey[] = "green";
-constexpr char headerFieldSeparator[] = ": ";
-constexpr char headerSeparator[] = "\r\n";
-constexpr char hierarchicalDocumentSymbolSupportKey[] = "hierarchicalDocumentSymbolSupport";
-constexpr char hoverKey[] = "hover";
-constexpr char hoverProviderKey[] = "hoverProvider";
-constexpr char idKey[] = "id";
-constexpr char implementationKey[] = "implementation";
-constexpr char implementationProviderKey[] = "implementationProvider";
-constexpr char includeDeclarationKey[] = "includeDeclaration";
-constexpr char includeTextKey[] = "includeText";
-constexpr char initializationOptionsKey[] = "initializationOptions";
-constexpr char insertFinalNewlineKey[] = "insertFinalNewline";
-constexpr char insertSpaceKey[] = "insertSpace";
-constexpr char insertTextFormatKey[] = "insertTextFormat";
-constexpr char insertTextKey[] = "insertText";
-constexpr char isIncompleteKey[] = "isIncomplete";
-constexpr char itemsKey[] = "items";
-constexpr char jsonRpcVersionKey[] = "jsonrpc";
-constexpr char kindKey[] = "kind";
-constexpr char labelKey[] = "label";
-constexpr char languageIdKey[] = "languageId";
-constexpr char languageKey[] = "language";
-constexpr char legendKey[] = "legend";
-constexpr char limitKey[] = "limit";
-constexpr char lineKey[] = "line";
-constexpr char linesKey[] = "lines";
-constexpr char locationKey[] = "location";
-constexpr char messageKey[] = "message";
-constexpr char methodKey[] = "method";
-constexpr char moreTriggerCharacterKey[] = "moreTriggerCharacter";
-constexpr char multiLineTokenSupportKey[] = "multiLineTokenSupport";
-constexpr char nameKey[] = "name";
-constexpr char newNameKey[] = "newName";
-constexpr char newTextKey[] = "newText";
-constexpr char onTypeFormattingKey[] = "onTypeFormatting";
-constexpr char onlyKey[] = "only";
-constexpr char openCloseKey[] = "openClose";
-constexpr char optionsKey[] = "options";
-constexpr char overlappingTokenSupportKey[] = "overlappingTokenSupport";
-constexpr char parametersKey[] = "parameters";
-constexpr char paramsKey[] = "params";
-constexpr char patternKey[] = "pattern";
-constexpr char percentageKey[] = "percentage";
-constexpr char placeHolderKey[] = "placeHolder";
-constexpr char positionKey[] = "position";
-constexpr char prepareProviderKey[] = "prepareProvider";
-constexpr char prepareSupportKey[] = "prepareSupport";
-constexpr char previousResultIdKey[] = "previousResultId";
-constexpr char processIdKey[] = "processId";
-constexpr char queryKey[] = "query";
-constexpr char rangeFormattingKey[] = "rangeFormatting";
-constexpr char rangeKey[] = "range";
-constexpr char rangeLengthKey[] = "rangeLength";
-constexpr char reasonKey[] = "reason";
-constexpr char redKey[] = "red";
-constexpr char referencesKey[] = "references";
-constexpr char referencesProviderKey[] = "referencesProvider";
-constexpr char refreshSupportKey[] = "refreshSupport";
-constexpr char registerOptionsKey[] = "registerOptions";
-constexpr char registrationsKey[] = "registrations";
-constexpr char removedKey[] = "removed";
-constexpr char renameKey[] = "rename";
-constexpr char renameProviderKey[] = "renameProvider";
-constexpr char requestsKey[] = "requests";
-constexpr char resolveProviderKey[] = "resolveProvider";
-constexpr char resultIdKey[] = "resultId";
-constexpr char resultKey[] = "result";
-constexpr char retryKey[] = "retry";
-constexpr char rootPathKey[] = "rootPath";
-constexpr char rootUriKey[] = "rootUri";
-constexpr char saveKey[] = "save";
-constexpr char schemeKey[] = "scheme";
-constexpr char scopeUriKey[] = "scopeUri";
-constexpr char sectionKey[] = "section";
-constexpr char selectionRangeKey[] = "selectionRange";
-constexpr char semanticTokensKey[] = "semanticTokens";
-constexpr char semanticTokensProviderKey[] = "semanticTokensProvider";
-constexpr char serverInfoKey[] = "serverInfo";
-constexpr char settingsKey[] = "settings";
-constexpr char severityKey[] = "severity";
-constexpr char signatureHelpKey[] = "signatureHelp";
-constexpr char signatureHelpProviderKey[] = "signatureHelpProvider";
-constexpr char signatureInformationKey[] = "signatureInformation";
-constexpr char signaturesKey[] = "signatures";
-constexpr char snippetSupportKey[] = "snippetSupport";
-constexpr char sortTextKey[] = "sortText";
-constexpr char sourceKey[] = "source";
-constexpr char startKey[] = "start";
-constexpr char supportedKey[] = "supported";
-constexpr char symbolKey[] = "symbol";
-constexpr char symbolKindKey[] = "symbolKind";
-constexpr char syncKindKey[] = "syncKind";
-constexpr char synchronizationKey[] = "synchronization";
-constexpr char tabSizeKey[] = "tabSize";
-constexpr char tagsKey[] = "tags";
-constexpr char targetKey[] = "target";
-constexpr char textDocumentKey[] = "textDocument";
-constexpr char textDocumentSyncKey[] = "textDocumentSync";
-constexpr char textEditKey[] = "textEdit";
-constexpr char textKey[] = "text";
-constexpr char titleKey[] = "title";
-constexpr char tokenKey[] = "token";
-constexpr char tokenModifiersKey[] = "tokenModifiers";
-constexpr char tokenTypesKey[] = "tokenTypes";
-constexpr char traceKey[] = "trace";
-constexpr char triggerCharacterKey[] = "triggerCharacter";
-constexpr char triggerCharactersKey[] = "triggerCharacters";
-constexpr char triggerKindKey[] = "triggerKind";
-constexpr char trimFinalNewlinesKey[] = "trimFinalNewlines";
-constexpr char trimTrailingWhitespaceKey[] = "trimTrailingWhitespace";
-constexpr char typeDefinitionKey[] = "typeDefinition";
-constexpr char typeDefinitionProviderKey[] = "typeDefinitionProvider";
-constexpr char typeKey[] = "type";
-constexpr char unregistrationsKey[] = "unregistrations";
-constexpr char uriKey[] = "uri";
-constexpr char valueKey[] = "value";
-constexpr char valueSetKey[] = "valueSet";
-constexpr char versionKey[] = "version";
-constexpr char willSaveKey[] = "willSave";
-constexpr char willSaveWaitUntilKey[] = "willSaveWaitUntil";
-constexpr char windowKey[] = "window";
-constexpr char workDoneProgressKey[] = "workDoneProgress";
-constexpr char workspaceEditKey[] = "workspaceEdit";
-constexpr char workspaceFoldersKey[] = "workspaceFolders";
-constexpr char workspaceKey[] = "workspace";
-constexpr char workspaceSymbolProviderKey[] = "workspaceSymbolProvider";
+constexpr char16_t actionsKey[] = u"actions";
+constexpr char16_t activeParameterKey[] = u"activeParameter";
+constexpr char16_t activeParameterSupportKey[] = u"activeParameterSupport";
+constexpr char16_t activeSignatureKey[] = u"activeSignature";
+constexpr char16_t addedKey[] = u"added";
+constexpr char16_t additionalTextEditsKey[] = u"additionalTextEdits";
+constexpr char16_t alphaKey[] = u"alpha";
+constexpr char16_t appliedKey[] = u"applied";
+constexpr char16_t applyEditKey[] = u"applyEdit";
+constexpr char16_t argumentsKey[] = u"arguments";
+constexpr char16_t blueKey[] = u"blue";
+constexpr char16_t cancellableKey[] = u"cancellable";
+constexpr char16_t capabilitiesKey[] = u"capabilities";
+constexpr char16_t chKey[] = u"ch";
+constexpr char16_t changeKey[] = u"change";
+constexpr char16_t changeNotificationsKey[] = u"changeNotifications";
+constexpr char16_t changesKey[] = u"changes";
+constexpr char16_t characterKey[] = u"character";
+constexpr char16_t childrenKey[] = u"children";
+constexpr char16_t clientInfoKey[] = u"clientInfo";
+constexpr char16_t codeActionKey[] = u"codeAction";
+constexpr char16_t codeActionKindKey[] = u"codeActionKind";
+constexpr char16_t codeActionKindsKey[] = u"codeActionKinds";
+constexpr char16_t codeActionLiteralSupportKey[] = u"codeActionLiteralSupport";
+constexpr char16_t codeActionProviderKey[] = u"codeActionProvider";
+constexpr char16_t codeKey[] = u"code";
+constexpr char16_t codeLensKey[] = u"codeLens";
+constexpr char16_t codeLensProviderKey[] = u"codeLensProvider";
+constexpr char16_t colorInfoKey[] = u"colorInfo";
+constexpr char16_t colorKey[] = u"color";
+constexpr char16_t colorProviderKey[] = u"colorProvider";
+constexpr char16_t commandKey[] = u"command";
+constexpr char16_t commandsKey[] = u"commands";
+constexpr char16_t commitCharacterSupportKey[] = u"commitCharacterSupport";
+constexpr char16_t commitCharactersKey[] = u"commitCharacters";
+constexpr char16_t completionItemKey[] = u"completionItem";
+constexpr char16_t completionItemKindKey[] = u"completionItemKind";
+constexpr char16_t completionKey[] = u"completion";
+constexpr char16_t completionProviderKey[] = u"completionProvider";
+constexpr char16_t configurationKey[] = u"configuration";
+constexpr char16_t containerNameKey[] = u"containerName";
+constexpr char16_t contentChangesKey[] = u"contentChanges";
+constexpr char16_t contentFormatKey[] = u"contentFormat";
+constexpr char16_t contentKey[] = u"value";
+constexpr char16_t contentsKey[] = u"contents";
+constexpr char16_t contextKey[] = u"context";
+constexpr char16_t contextSupportKey[] = u"contextSupport";
+constexpr char16_t dataKey[] = u"data";
+constexpr char16_t definitionKey[] = u"definition";
+constexpr char16_t definitionProviderKey[] = u"definitionProvider";
+constexpr char16_t deleteCountKey[] = u"deleteCount";
+constexpr char16_t deltaKey[] = u"delta";
+constexpr char16_t deprecatedKey[] = u"deprecated";
+constexpr char16_t detailKey[] = u"detail";
+constexpr char16_t diagnosticsKey[] = u"diagnostics";
+constexpr char16_t didChangeConfigurationKey[] = u"didChangeConfiguration";
+constexpr char16_t didChangeWatchedFilesKey[] = u"didChangeWatchedFiles";
+constexpr char16_t didSaveKey[] = u"didSave";
+constexpr char16_t documentChangesKey[] = u"documentChanges";
+constexpr char16_t documentFormattingProviderKey[] = u"documentFormattingProvider";
+constexpr char16_t documentHighlightKey[] = u"documentHighlight";
+constexpr char16_t documentHighlightProviderKey[] = u"documentHighlightProvider";
+constexpr char16_t documentLinkKey[] = u"documentLink";
+constexpr char16_t documentLinkProviderKey[] = u"documentLinkProvider";
+constexpr char16_t documentRangeFormattingProviderKey[] = u"documentRangeFormattingProvider";
+constexpr char16_t documentSelectorKey[] = u"documentSelector";
+constexpr char16_t documentSymbolKey[] = u"documentSymbol";
+constexpr char16_t documentSymbolProviderKey[] = u"documentSymbolProvider";
+constexpr char16_t documentationFormatKey[] = u"documentationFormat";
+constexpr char16_t documentationKey[] = u"documentation";
+constexpr char16_t dynamicRegistrationKey[] = u"dynamicRegistration";
+constexpr char16_t editKey[] = u"edit";
+constexpr char16_t editsKey[] = u"edits";
+constexpr char16_t endKey[] = u"end";
+constexpr char16_t errorKey[] = u"error";
+constexpr char16_t eventKey[] = u"event";
+constexpr char16_t executeCommandKey[] = u"executeCommand";
+constexpr char16_t executeCommandProviderKey[] = u"executeCommandProvider";
+constexpr char16_t experimentalKey[] = u"experimental";
+constexpr char16_t filterTextKey[] = u"filterText";
+constexpr char16_t firstTriggerCharacterKey[] = u"firstTriggerCharacter";
+constexpr char16_t formatsKey[] = u"formats";
+constexpr char16_t formattingKey[] = u"formatting";
+constexpr char16_t fullKey[] = u"full";
+constexpr char16_t greenKey[] = u"green";
+constexpr char16_t hierarchicalDocumentSymbolSupportKey[] = u"hierarchicalDocumentSymbolSupport";
+constexpr char16_t hoverKey[] = u"hover";
+constexpr char16_t hoverProviderKey[] = u"hoverProvider";
+constexpr char16_t idKey[] = u"id";
+constexpr char16_t implementationKey[] = u"implementation";
+constexpr char16_t implementationProviderKey[] = u"implementationProvider";
+constexpr char16_t includeDeclarationKey[] = u"includeDeclaration";
+constexpr char16_t includeTextKey[] = u"includeText";
+constexpr char16_t initializationOptionsKey[] = u"initializationOptions";
+constexpr char16_t insertFinalNewlineKey[] = u"insertFinalNewline";
+constexpr char16_t insertSpaceKey[] = u"insertSpace";
+constexpr char16_t insertTextFormatKey[] = u"insertTextFormat";
+constexpr char16_t insertTextKey[] = u"insertText";
+constexpr char16_t isIncompleteKey[] = u"isIncomplete";
+constexpr char16_t itemsKey[] = u"items";
+constexpr char16_t jsonRpcVersionKey[] = u"jsonrpc";
+constexpr char16_t kindKey[] = u"kind";
+constexpr char16_t labelKey[] = u"label";
+constexpr char16_t languageIdKey[] = u"languageId";
+constexpr char16_t languageKey[] = u"language";
+constexpr char16_t legendKey[] = u"legend";
+constexpr char16_t limitKey[] = u"limit";
+constexpr char16_t lineKey[] = u"line";
+constexpr char16_t linesKey[] = u"lines";
+constexpr char16_t locationKey[] = u"location";
+constexpr char16_t messageKey[] = u"message";
+constexpr char16_t methodKey[] = u"method";
+constexpr char16_t moreTriggerCharacterKey[] = u"moreTriggerCharacter";
+constexpr char16_t multiLineTokenSupportKey[] = u"multiLineTokenSupport";
+constexpr char16_t nameKey[] = u"name";
+constexpr char16_t newNameKey[] = u"newName";
+constexpr char16_t newTextKey[] = u"newText";
+constexpr char16_t onTypeFormattingKey[] = u"onTypeFormatting";
+constexpr char16_t onlyKey[] = u"only";
+constexpr char16_t openCloseKey[] = u"openClose";
+constexpr char16_t optionsKey[] = u"options";
+constexpr char16_t overlappingTokenSupportKey[] = u"overlappingTokenSupport";
+constexpr char16_t parametersKey[] = u"parameters";
+constexpr char16_t paramsKey[] = u"params";
+constexpr char16_t patternKey[] = u"pattern";
+constexpr char16_t percentageKey[] = u"percentage";
+constexpr char16_t placeHolderKey[] = u"placeHolder";
+constexpr char16_t positionKey[] = u"position";
+constexpr char16_t prepareProviderKey[] = u"prepareProvider";
+constexpr char16_t prepareSupportKey[] = u"prepareSupport";
+constexpr char16_t previousResultIdKey[] = u"previousResultId";
+constexpr char16_t processIdKey[] = u"processId";
+constexpr char16_t queryKey[] = u"query";
+constexpr char16_t rangeFormattingKey[] = u"rangeFormatting";
+constexpr char16_t rangeKey[] = u"range";
+constexpr char16_t rangeLengthKey[] = u"rangeLength";
+constexpr char16_t reasonKey[] = u"reason";
+constexpr char16_t redKey[] = u"red";
+constexpr char16_t referencesKey[] = u"references";
+constexpr char16_t referencesProviderKey[] = u"referencesProvider";
+constexpr char16_t refreshSupportKey[] = u"refreshSupport";
+constexpr char16_t registerOptionsKey[] = u"registerOptions";
+constexpr char16_t registrationsKey[] = u"registrations";
+constexpr char16_t removedKey[] = u"removed";
+constexpr char16_t renameKey[] = u"rename";
+constexpr char16_t renameProviderKey[] = u"renameProvider";
+constexpr char16_t requestsKey[] = u"requests";
+constexpr char16_t resolveProviderKey[] = u"resolveProvider";
+constexpr char16_t resultIdKey[] = u"resultId";
+constexpr char16_t resultKey[] = u"result";
+constexpr char16_t retryKey[] = u"retry";
+constexpr char16_t rootPathKey[] = u"rootPath";
+constexpr char16_t rootUriKey[] = u"rootUri";
+constexpr char16_t saveKey[] = u"save";
+constexpr char16_t schemeKey[] = u"scheme";
+constexpr char16_t scopeUriKey[] = u"scopeUri";
+constexpr char16_t sectionKey[] = u"section";
+constexpr char16_t selectionRangeKey[] = u"selectionRange";
+constexpr char16_t semanticTokensKey[] = u"semanticTokens";
+constexpr char16_t semanticTokensProviderKey[] = u"semanticTokensProvider";
+constexpr char16_t serverInfoKey[] = u"serverInfo";
+constexpr char16_t settingsKey[] = u"settings";
+constexpr char16_t severityKey[] = u"severity";
+constexpr char16_t signatureHelpKey[] = u"signatureHelp";
+constexpr char16_t signatureHelpProviderKey[] = u"signatureHelpProvider";
+constexpr char16_t signatureInformationKey[] = u"signatureInformation";
+constexpr char16_t signaturesKey[] = u"signatures";
+constexpr char16_t snippetSupportKey[] = u"snippetSupport";
+constexpr char16_t sortTextKey[] = u"sortText";
+constexpr char16_t sourceKey[] = u"source";
+constexpr char16_t startKey[] = u"start";
+constexpr char16_t supportedKey[] = u"supported";
+constexpr char16_t symbolKey[] = u"symbol";
+constexpr char16_t symbolKindKey[] = u"symbolKind";
+constexpr char16_t syncKindKey[] = u"syncKind";
+constexpr char16_t synchronizationKey[] = u"synchronization";
+constexpr char16_t tabSizeKey[] = u"tabSize";
+constexpr char16_t tagsKey[] = u"tags";
+constexpr char16_t targetKey[] = u"target";
+constexpr char16_t textDocumentKey[] = u"textDocument";
+constexpr char16_t textDocumentSyncKey[] = u"textDocumentSync";
+constexpr char16_t textEditKey[] = u"textEdit";
+constexpr char16_t textKey[] = u"text";
+constexpr char16_t titleKey[] = u"title";
+constexpr char16_t tokenKey[] = u"token";
+constexpr char16_t tokenModifiersKey[] = u"tokenModifiers";
+constexpr char16_t tokenTypesKey[] = u"tokenTypes";
+constexpr char16_t traceKey[] = u"trace";
+constexpr char16_t triggerCharacterKey[] = u"triggerCharacter";
+constexpr char16_t triggerCharactersKey[] = u"triggerCharacters";
+constexpr char16_t triggerKindKey[] = u"triggerKind";
+constexpr char16_t trimFinalNewlinesKey[] = u"trimFinalNewlines";
+constexpr char16_t trimTrailingWhitespaceKey[] = u"trimTrailingWhitespace";
+constexpr char16_t typeDefinitionKey[] = u"typeDefinition";
+constexpr char16_t typeDefinitionProviderKey[] = u"typeDefinitionProvider";
+constexpr char16_t typeKey[] = u"type";
+constexpr char16_t unregistrationsKey[] = u"unregistrations";
+constexpr char16_t uriKey[] = u"uri";
+constexpr char16_t valueKey[] = u"value";
+constexpr char16_t valueSetKey[] = u"valueSet";
+constexpr char16_t versionKey[] = u"version";
+constexpr char16_t willSaveKey[] = u"willSave";
+constexpr char16_t willSaveWaitUntilKey[] = u"willSaveWaitUntil";
+constexpr char16_t windowKey[] = u"window";
+constexpr char16_t workDoneProgressKey[] = u"workDoneProgress";
+constexpr char16_t workspaceEditKey[] = u"workspaceEdit";
+constexpr char16_t workspaceFoldersKey[] = u"workspaceFolders";
+constexpr char16_t workspaceKey[] = u"workspace";
+constexpr char16_t workspaceSymbolProviderKey[] = u"workspaceSymbolProvider";
} // namespace LanguageServerProtocol
diff --git a/src/libs/languageserverprotocol/jsonobject.cpp b/src/libs/languageserverprotocol/jsonobject.cpp
index 75edb76de3..47d2bb7824 100644
--- a/src/libs/languageserverprotocol/jsonobject.cpp
+++ b/src/libs/languageserverprotocol/jsonobject.cpp
@@ -37,12 +37,12 @@ JsonObject &JsonObject::operator=(JsonObject &&other)
return *this;
}
-QJsonObject::iterator JsonObject::insert(const QString &key, const JsonObject &object)
+QJsonObject::iterator JsonObject::insert(const QStringView key, const JsonObject &object)
{
return m_jsonObject.insert(key, object.m_jsonObject);
}
-QJsonObject::iterator JsonObject::insert(const QString &key, const QJsonValue &value)
+QJsonObject::iterator JsonObject::insert(const QStringView key, const QJsonValue &value)
{
return m_jsonObject.insert(key, value);
}
diff --git a/src/libs/languageserverprotocol/jsonobject.h b/src/libs/languageserverprotocol/jsonobject.h
index 9f27b478cd..9dd172bbef 100644
--- a/src/libs/languageserverprotocol/jsonobject.h
+++ b/src/libs/languageserverprotocol/jsonobject.h
@@ -67,88 +67,88 @@ public:
const_iterator end() const { return m_jsonObject.end(); }
protected:
- iterator insert(const QString &key, const JsonObject &value);
- iterator insert(const QString &key, const QJsonValue &value);
+ iterator insert(const QStringView key, const JsonObject &value);
+ iterator insert(const QStringView key, const QJsonValue &value);
template <typename T, typename V>
- iterator insertVariant(const QString &key, const V &variant);
+ iterator insertVariant(const QStringView key, const V &variant);
template <typename T1, typename T2, typename... Args, typename V>
- iterator insertVariant(const QString &key, const V &variant);
+ iterator insertVariant(const QStringView key, const V &variant);
// QJSonObject redirections
- QJsonValue value(const QString &key) const { return m_jsonObject.value(key); }
- bool contains(const QString &key) const { return m_jsonObject.contains(key); }
- iterator find(const QString &key) { return m_jsonObject.find(key); }
- const_iterator find(const QString &key) const { return m_jsonObject.find(key); }
- void remove(const QString &key) { m_jsonObject.remove(key); }
+ QJsonValue value(const QStringView key) const { return m_jsonObject.value(key); }
+ bool contains(const QStringView key) const { return m_jsonObject.contains(key); }
+ iterator find(const QStringView key) { return m_jsonObject.find(key); }
+ const_iterator find(const QStringView key) const { return m_jsonObject.find(key); }
+ void remove(const QStringView key) { m_jsonObject.remove(key); }
QStringList keys() const { return m_jsonObject.keys(); }
// convenience value access
template<typename T>
- T typedValue(const QString &key) const;
+ T typedValue(const QStringView key) const;
template<typename T>
- Utils::optional<T> optionalValue(const QString &key) const;
+ Utils::optional<T> optionalValue(const QStringView key) const;
template<typename T>
- LanguageClientValue<T> clientValue(const QString &key) const;
+ LanguageClientValue<T> clientValue(const QStringView key) const;
template<typename T>
- Utils::optional<LanguageClientValue<T>> optionalClientValue(const QString &key) const;
+ Utils::optional<LanguageClientValue<T>> optionalClientValue(const QStringView key) const;
template<typename T>
- QList<T> array(const QString &key) const;
+ QList<T> array(const QStringView key) const;
template<typename T>
- Utils::optional<QList<T>> optionalArray(const QString &key) const;
+ Utils::optional<QList<T>> optionalArray(const QStringView key) const;
template<typename T>
- LanguageClientArray<T> clientArray(const QString &key) const;
+ LanguageClientArray<T> clientArray(const QStringView key) const;
template<typename T>
- Utils::optional<LanguageClientArray<T>> optionalClientArray(const QString &key) const;
+ Utils::optional<LanguageClientArray<T>> optionalClientArray(const QStringView key) const;
template<typename T>
- void insertArray(const QString &key, const QList<T> &array);
+ void insertArray(const QStringView key, const QList<T> &array);
template<typename>
- void insertArray(const QString &key, const QList<JsonObject> &array);
+ void insertArray(const QStringView key, const QList<JsonObject> &array);
private:
QJsonObject m_jsonObject;
};
template<typename T, typename V>
-JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant)
+JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant)
{
return Utils::holds_alternative<T>(variant) ? insert(key, Utils::get<T>(variant)) : end();
}
template<typename T1, typename T2, typename... Args, typename V>
-JsonObject::iterator JsonObject::insertVariant(const QString &key, const V &variant)
+JsonObject::iterator JsonObject::insertVariant(const QStringView key, const V &variant)
{
auto result = insertVariant<T1>(key, variant);
return result != end() ? result : insertVariant<T2, Args...>(key, variant);
}
template<typename T>
-T JsonObject::typedValue(const QString &key) const
+T JsonObject::typedValue(const QStringView key) const
{
return fromJsonValue<T>(value(key));
}
template<typename T>
-Utils::optional<T> JsonObject::optionalValue(const QString &key) const
+Utils::optional<T> JsonObject::optionalValue(const QStringView key) const
{
const QJsonValue &val = value(key);
return val.isUndefined() ? Utils::nullopt : Utils::make_optional(fromJsonValue<T>(val));
}
template<typename T>
-LanguageClientValue<T> JsonObject::clientValue(const QString &key) const
+LanguageClientValue<T> JsonObject::clientValue(const QStringView key) const
{
return LanguageClientValue<T>(value(key));
}
template<typename T>
-Utils::optional<LanguageClientValue<T>> JsonObject::optionalClientValue(const QString &key) const
+Utils::optional<LanguageClientValue<T>> JsonObject::optionalClientValue(const QStringView key) const
{
return contains(key) ? Utils::make_optional(clientValue<T>(key)) : Utils::nullopt;
}
template<typename T>
-QList<T> JsonObject::array(const QString &key) const
+QList<T> JsonObject::array(const QStringView key) const
{
if (const Utils::optional<QList<T>> &array = optionalArray<T>(key))
return *array;
@@ -157,7 +157,7 @@ QList<T> JsonObject::array(const QString &key) const
}
template<typename T>
-Utils::optional<QList<T>> JsonObject::optionalArray(const QString &key) const
+Utils::optional<QList<T>> JsonObject::optionalArray(const QStringView key) const
{
const QJsonValue &jsonValue = value(key);
if (jsonValue.isUndefined())
@@ -166,13 +166,13 @@ Utils::optional<QList<T>> JsonObject::optionalArray(const QString &key) const
}
template<typename T>
-LanguageClientArray<T> JsonObject::clientArray(const QString &key) const
+LanguageClientArray<T> JsonObject::clientArray(const QStringView key) const
{
return LanguageClientArray<T>(value(key));
}
template<typename T>
-Utils::optional<LanguageClientArray<T>> JsonObject::optionalClientArray(const QString &key) const
+Utils::optional<LanguageClientArray<T>> JsonObject::optionalClientArray(const QStringView key) const
{
const QJsonValue &val = value(key);
return !val.isUndefined() ? Utils::make_optional(LanguageClientArray<T>(value(key)))
@@ -180,7 +180,7 @@ Utils::optional<LanguageClientArray<T>> JsonObject::optionalClientArray(const QS
}
template<typename T>
-void JsonObject::insertArray(const QString &key, const QList<T> &array)
+void JsonObject::insertArray(const QStringView key, const QList<T> &array)
{
QJsonArray jsonArray;
for (const T &item : array)
@@ -189,7 +189,7 @@ void JsonObject::insertArray(const QString &key, const QList<T> &array)
}
template<typename >
-void JsonObject::insertArray(const QString &key, const QList<JsonObject> &array)
+void JsonObject::insertArray(const QStringView key, const QList<JsonObject> &array)
{
QJsonArray jsonArray;
for (const JsonObject &item : array)
diff --git a/src/libs/languageserverprotocol/workspace.h b/src/libs/languageserverprotocol/workspace.h
index 235ddbe9a5..6179cd7000 100644
--- a/src/libs/languageserverprotocol/workspace.h
+++ b/src/libs/languageserverprotocol/workspace.h
@@ -188,7 +188,7 @@ public:
QString query() const { return typedValue<QString>(queryKey); }
void setQuery(const QString &query) { insert(queryKey, query); }
- void setLimit(int limit) { insert("limit", limit); } // clangd extension
+ void setLimit(int limit) { insert(u"limit", limit); } // clangd extension
bool isValid() const override { return contains(queryKey); }
};
diff --git a/src/libs/utils/icon.cpp b/src/libs/utils/icon.cpp
index bdf8601dcc..a4ae9b81ed 100644
--- a/src/libs/utils/icon.cpp
+++ b/src/libs/utils/icon.cpp
@@ -169,23 +169,27 @@ Icon::Icon(const FilePath &imageFileName)
QIcon Icon::icon() const
{
- if (m_iconSourceList.isEmpty()) {
+ if (m_iconSourceList.isEmpty())
return QIcon();
- } else if (m_style == None) {
+
+ if (m_style == None)
return QIcon(m_iconSourceList.constFirst().first.toString());
- } else {
- QIcon result;
- const int maxDpr = qRound(qApp->devicePixelRatio());
- for (int dpr = 1; dpr <= maxDpr; dpr++) {
- const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr);
- const QPixmap combinedMask = Utils::combinedMask(masks, m_style);
- result.addPixmap(masksToIcon(masks, combinedMask, m_style));
-
- const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor);
- result.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled);
- }
- return result;
+
+ const int maxDpr = qRound(qApp->devicePixelRatio());
+ if (maxDpr == m_lastDevicePixelRatio)
+ return m_lastIcon;
+
+ m_lastDevicePixelRatio = maxDpr;
+ m_lastIcon = QIcon();
+ for (int dpr = 1; dpr <= maxDpr; dpr++) {
+ const MasksAndColors masks = masksAndColors(m_iconSourceList, dpr);
+ const QPixmap combinedMask = Utils::combinedMask(masks, m_style);
+ m_lastIcon.addPixmap(masksToIcon(masks, combinedMask, m_style));
+
+ const QColor disabledColor = creatorTheme()->color(Theme::IconsDisabledColor);
+ m_lastIcon.addPixmap(maskToColorAndAlpha(combinedMask, disabledColor), QIcon::Disabled);
}
+ return m_lastIcon;
}
QPixmap Icon::pixmap(QIcon::Mode iconMode) const
diff --git a/src/libs/utils/icon.h b/src/libs/utils/icon.h
index 417bbf6c5d..c27a7d98bc 100644
--- a/src/libs/utils/icon.h
+++ b/src/libs/utils/icon.h
@@ -86,6 +86,8 @@ public:
private:
QVector<IconMaskAndColor> m_iconSourceList;
IconStyleOptions m_style = None;
+ mutable int m_lastDevicePixelRatio = -1;
+ mutable QIcon m_lastIcon;
};
} // namespace Utils
diff --git a/src/plugins/clangcodemodel/clangdast.cpp b/src/plugins/clangcodemodel/clangdast.cpp
index dbfaabea8c..cc4f970898 100644
--- a/src/plugins/clangcodemodel/clangdast.cpp
+++ b/src/plugins/clangcodemodel/clangdast.cpp
@@ -40,8 +40,8 @@ using namespace Utils;
namespace ClangCodeModel::Internal {
-static constexpr char roleKey[] = "role";
-static constexpr char arcanaKey[] = "arcana";
+static constexpr char16_t roleKey[] = u"role";
+static constexpr char16_t arcanaKey[] = u"arcana";
QString ClangdAstNode::role() const { return typedValue<QString>(roleKey); }
QString ClangdAstNode::kind() const { return typedValue<QString>(kindKey); }
diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp
index d8841a6880..2994be350f 100644
--- a/src/plugins/clangcodemodel/clangdclient.cpp
+++ b/src/plugins/clangcodemodel/clangdclient.cpp
@@ -111,7 +111,7 @@ class SymbolDetails : public JsonObject
public:
using JsonObject::JsonObject;
- static constexpr char usrKey[] = "usr";
+ static constexpr char16_t usrKey[] = u"usr";
// the unqualified name of the symbol
QString name() const { return typedValue<QString>(nameKey); }
@@ -190,8 +190,8 @@ class DiagnosticsCapabilities : public JsonObject
{
public:
using JsonObject::JsonObject;
- void enableCategorySupport() { insert("categorySupport", true); }
- void enableCodeActionsInline() {insert("codeActionsInline", true);}
+ void enableCategorySupport() { insert(u"categorySupport", true); }
+ void enableCodeActionsInline() {insert(u"codeActionsInline", true);}
};
class ClangdTextDocumentClientCapabilities : public TextDocumentClientCapabilities
@@ -201,7 +201,7 @@ public:
void setPublishDiagnostics(const DiagnosticsCapabilities &caps)
- { insert("publishDiagnostics", caps); }
+ { insert(u"publishDiagnostics", caps); }
};
static qint64 getRevision(const TextDocument *doc)
@@ -1338,7 +1338,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc,
Utils::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const
{
- auto actions = optionalArray<LanguageServerProtocol::CodeAction>("codeActions");
+ auto actions = optionalArray<LanguageServerProtocol::CodeAction>(u"codeActions");
if (!actions)
return actions;
static const QStringList badCodeActions{
@@ -1355,7 +1355,7 @@ Utils::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const
QString ClangdDiagnostic::category() const
{
- return typedValue<QString>("category");
+ return typedValue<QString>(u"category");
}
MessageId ClangdClient::Private::getAndHandleAst(const TextDocOrFile &doc,
diff --git a/src/plugins/clangcodemodel/clangdcompletion.cpp b/src/plugins/clangcodemodel/clangdcompletion.cpp
index 6109477270..5bcf6a9f26 100644
--- a/src/plugins/clangcodemodel/clangdcompletion.cpp
+++ b/src/plugins/clangcodemodel/clangdcompletion.cpp
@@ -633,7 +633,7 @@ IAssistProposal *ClangdFunctionHintProcessor::perform(const AssistInterface *int
ClangdCompletionCapabilities::ClangdCompletionCapabilities(const JsonObject &object)
: TextDocumentClientCapabilities::CompletionCapabilities(object)
{
- insert("editsNearCursor", true); // For dot-to-arrow correction.
+ insert(u"editsNearCursor", true); // For dot-to-arrow correction.
if (Utils::optional<CompletionItemCapbilities> completionItemCaps = completionItem()) {
completionItemCaps->setSnippetSupport(false);
setCompletionItem(*completionItemCaps);
diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp
index bd6f493714..4fb31804fe 100644
--- a/src/plugins/clangcodemodel/clangtextmark.cpp
+++ b/src/plugins/clangcodemodel/clangtextmark.cpp
@@ -277,7 +277,7 @@ Task createTask(const ClangDiagnostic &diagnostic)
return Task(taskType,
diagnosticCategoryPrefixRemoved(diagnostic.text),
- FilePath::fromString(diagnostic.location.targetFilePath.toString()),
+ diagnostic.location.targetFilePath,
diagnostic.location.targetLine,
Constants::TASK_CATEGORY_DIAGNOSTICS,
icon,
@@ -295,7 +295,7 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath,
, m_diagnostic(convertDiagnostic(ClangdDiagnostic(diagnostic), filePath))
, m_client(client)
{
- setSettingsPage(CppEditor::Constants::CPP_CODE_MODEL_SETTINGS_ID);
+ setSettingsPage(CppEditor::Constants::CPP_CLANGD_SETTINGS_ID);
const bool isError = diagnostic.severity()
&& *diagnostic.severity() == DiagnosticSeverity::Error;
@@ -310,31 +310,32 @@ ClangdTextMark::ClangdTextMark(const FilePath &filePath,
client->addTask(createTask(m_diagnostic));
}
- // Copy to clipboard action
- QVector<QAction *> actions;
- QAction *action = new QAction();
- action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon()));
- action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks"));
- QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() {
- const QString text = ClangDiagnosticWidget::createText({diag},
- ClangDiagnosticWidget::InfoBar);
- setClipboardAndSelection(text);
- });
- actions << action;
-
- // Remove diagnostic warning action
- Project *project = projectForCurrentEditor();
- if (project && isDiagnosticConfigChangable(project, m_diagnostic)) {
- action = new QAction();
- action->setIcon(Icons::BROKEN.icon());
- action->setToolTip(tr("Disable Diagnostic in Current Project"));
- QObject::connect(action, &QAction::triggered, [diag = m_diagnostic]() {
- disableDiagnosticInCurrentProjectConfig(diag);
+ setActionsProvider([diag = m_diagnostic] {
+ // Copy to clipboard action
+ QList<QAction *> actions;
+ QAction *action = new QAction();
+ action->setIcon(QIcon::fromTheme("edit-copy", Icons::COPY.icon()));
+ action->setToolTip(tr("Copy to Clipboard", "Clang Code Model Marks"));
+ QObject::connect(action, &QAction::triggered, [diag] {
+ const QString text = ClangDiagnosticWidget::createText({diag},
+ ClangDiagnosticWidget::InfoBar);
+ setClipboardAndSelection(text);
});
actions << action;
- }
- setActions(actions);
+ // Remove diagnostic warning action
+ Project *project = projectForCurrentEditor();
+ if (project && isDiagnosticConfigChangable(project, diag)) {
+ action = new QAction();
+ action->setIcon(Icons::BROKEN.icon());
+ action->setToolTip(tr("Disable Diagnostic in Current Project"));
+ QObject::connect(action, &QAction::triggered, [diag] {
+ disableDiagnosticInCurrentProjectConfig(diag);
+ });
+ actions << action;
+ }
+ return actions;
+ });
}
bool ClangdTextMark::addToolTipContent(QLayout *target) const
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index c85ee98e1c..b98ad7e91b 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -76,15 +76,14 @@ QString diagnosticCategoryPrefixRemoved(const QString &text)
// Prefixes are taken from $LLVM_SOURCE_DIR/tools/clang/lib/Frontend/TextDiagnostic.cpp,
// function TextDiagnostic::printDiagnosticLevel (llvm-3.6.2).
static const QStringList categoryPrefixes = {
- QStringLiteral("note"),
- QStringLiteral("remark"),
- QStringLiteral("warning"),
- QStringLiteral("error"),
- QStringLiteral("fatal error")
+ QStringLiteral("note: "),
+ QStringLiteral("remark: "),
+ QStringLiteral("warning: "),
+ QStringLiteral("error: "),
+ QStringLiteral("fatal error: ")
};
- for (const QString &prefix : categoryPrefixes) {
- const QString fullPrefix = prefix + QStringLiteral(": ");
+ for (const QString &fullPrefix : categoryPrefixes) {
if (theText.startsWith(fullPrefix)) {
theText.remove(0, fullPrefix.length());
return theText;
diff --git a/src/plugins/clangtools/diagnosticmark.cpp b/src/plugins/clangtools/diagnosticmark.cpp
index 37dd769392..985d917b80 100644
--- a/src/plugins/clangtools/diagnosticmark.cpp
+++ b/src/plugins/clangtools/diagnosticmark.cpp
@@ -54,28 +54,28 @@ DiagnosticMark::DiagnosticMark(const Diagnostic &diagnostic)
setIcon(markIcon.isNull() ? Utils::Icons::CODEMODEL_WARNING.icon() : markIcon);
setToolTip(createDiagnosticToolTipString(diagnostic, Utils::nullopt, true));
setLineAnnotation(diagnostic.description);
+ setActionsProvider([diagnostic] {
+ // Copy to clipboard action
+ QList<QAction *> actions;
+ QAction *action = new QAction();
+ action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()));
+ action->setToolTip(tr("Copy to Clipboard"));
+ QObject::connect(action, &QAction::triggered, [diagnostic]() {
+ const QString text = createFullLocationString(diagnostic.location)
+ + ": "
+ + diagnostic.description;
+ Utils::setClipboardAndSelection(text);
+ });
+ actions << action;
- // Copy to clipboard action
- QVector<QAction *> actions;
- QAction *action = new QAction();
- action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()));
- action->setToolTip(tr("Copy to Clipboard"));
- QObject::connect(action, &QAction::triggered, [diagnostic]() {
- const QString text = createFullLocationString(diagnostic.location)
- + ": "
- + diagnostic.description;
- Utils::setClipboardAndSelection(text);
+ // Disable diagnostic action
+ action = new QAction();
+ action->setIcon(Utils::Icons::BROKEN.icon());
+ action->setToolTip(tr("Disable Diagnostic"));
+ QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); });
+ actions << action;
+ return actions;
});
- actions << action;
-
- // Disable diagnostic action
- action = new QAction();
- action->setIcon(Utils::Icons::BROKEN.icon());
- action->setToolTip(tr("Disable Diagnostic"));
- QObject::connect(action, &QAction::triggered, [diagnostic] { disableChecks({diagnostic}); });
- actions << action;
-
- setActions(actions);
}
void DiagnosticMark::disable()
diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
index 77328ff29d..5bee2c72f0 100644
--- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
@@ -434,6 +434,7 @@ public:
private:
void updateQchFilePath();
+ void reload();
CMakeToolItemModel *m_model;
QLineEdit *m_displayNameLineEdit;
@@ -479,8 +480,8 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model)
connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() {
updateQchFilePath();
- m_qchFileChooser->setBaseDirectory(m_binaryChooser->filePath().parentDir());
store();
+ reload();
});
connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::store);
connect(m_displayNameLineEdit, &QLineEdit::textChanged, this, &CMakeToolItemConfigWidget::store);
@@ -504,6 +505,18 @@ void CMakeToolItemConfigWidget::updateQchFilePath()
m_qchFileChooser->setFilePath(CMakeTool::searchQchFile(m_binaryChooser->filePath()));
}
+void CMakeToolItemConfigWidget::reload()
+{
+ if (!m_id.isValid())
+ return;
+
+ const CMakeToolTreeItem *item = m_model->cmakeToolItem(m_id);
+ if (!item)
+ return;
+
+ load(item);
+}
+
void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item)
{
m_loadingItem = true; // avoid intermediate signal handling
diff --git a/src/plugins/coco/cocolanguageclient.cpp b/src/plugins/coco/cocolanguageclient.cpp
index 45cb39e9f7..c26bd83bc4 100644
--- a/src/plugins/coco/cocolanguageclient.cpp
+++ b/src/plugins/coco/cocolanguageclient.cpp
@@ -260,7 +260,7 @@ public:
void enableCodecoverageSupport()
{
JsonObject coverageSupport(QJsonObject{{"codeCoverageSupport", true}});
- insert("publishDiagnostics", coverageSupport);
+ insert(u"publishDiagnostics", coverageSupport);
}
};
diff --git a/src/plugins/cppcheck/cppchecktextmark.cpp b/src/plugins/cppcheck/cppchecktextmark.cpp
index d42c81388f..fa2a563bed 100644
--- a/src/plugins/cppcheck/cppchecktextmark.cpp
+++ b/src/plugins/cppcheck/cppchecktextmark.cpp
@@ -79,19 +79,20 @@ CppcheckTextMark::CppcheckTextMark (const Diagnostic &diagnostic)
setToolTip(toolTipText(diagnostic.severityText));
setLineAnnotation(diagnostic.message);
setSettingsPage(Constants::OPTIONS_PAGE_ID);
-
- // Copy to clipboard action
- QAction *action = new QAction();
- action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()));
- action->setToolTip(TextMark::tr("Copy to Clipboard"));
- QObject::connect(action, &QAction::triggered, [diagnostic]() {
- const QString text = QString("%1:%2: %3")
- .arg(diagnostic.fileName.toUserOutput())
- .arg(diagnostic.lineNumber)
- .arg(diagnostic.message);
- Utils::setClipboardAndSelection(text);
+ setActionsProvider([diagnostic] {
+ // Copy to clipboard action
+ QAction *action = new QAction;
+ action->setIcon(QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon()));
+ action->setToolTip(TextMark::tr("Copy to Clipboard"));
+ QObject::connect(action, &QAction::triggered, [diagnostic]() {
+ const QString text = QString("%1:%2: %3")
+ .arg(diagnostic.fileName.toUserOutput())
+ .arg(diagnostic.lineNumber)
+ .arg(diagnostic.message);
+ Utils::setClipboardAndSelection(text);
+ });
+ return QList<QAction *>{action};
});
- setActions({action});
}
QString CppcheckTextMark::toolTipText(const QString &severityText) const
diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp
index 7422f5890a..3f1290eb0b 100644
--- a/src/plugins/languageclient/diagnosticmanager.cpp
+++ b/src/plugins/languageclient/diagnosticmanager.cpp
@@ -145,14 +145,16 @@ TextEditor::TextMark *DiagnosticManager::createTextMark(const FilePath &filePath
{
static const auto icon = QIcon::fromTheme("edit-copy", Utils::Icons::COPY.icon());
static const QString tooltip = tr("Copy to Clipboard");
- QAction *action = new QAction();
- action->setIcon(icon);
- action->setToolTip(tooltip);
- QObject::connect(action, &QAction::triggered, [text = diagnostic.message()]() {
- setClipboardAndSelection(text);
- });
auto mark = new TextMark(filePath, diagnostic, m_client->id());
- mark->setActions({action});
+ mark->setActionsProvider([text = diagnostic.message()] {
+ QAction *action = new QAction();
+ action->setIcon(icon);
+ action->setToolTip(tooltip);
+ QObject::connect(action, &QAction::triggered, [text] {
+ setClipboardAndSelection(text);
+ });
+ return QList<QAction *>{action};
+ });
return mark;
}
diff --git a/src/plugins/languageclient/lspinspector.cpp b/src/plugins/languageclient/lspinspector.cpp
index 97ef86b331..051e168f26 100644
--- a/src/plugins/languageclient/lspinspector.cpp
+++ b/src/plugins/languageclient/lspinspector.cpp
@@ -549,7 +549,7 @@ QString LspLogMessage::displayText() const
if (!m_displayText.has_value()) {
m_displayText = QString(time.toString("hh:mm:ss.zzz") + '\n');
m_displayText->append(
- message.toJsonObject().value(QString{methodKey}).toString(id().toString()));
+ message.toJsonObject().value(methodKey).toString(id().toString()));
}
return *m_displayText;
}
diff --git a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp
index eab05e0adc..21fcc0fa56 100644
--- a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp
+++ b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp
@@ -249,14 +249,11 @@ QVariant read(int variantType, const QString &str)
if (str == "false")
return false;
- auto tmp = QVariant(str);
- conversionOk = tmp.isValid();
- value = QVariant(tmp);
-
- if (tmp.canConvert(QMetaType::Double))
- value.convert(QMetaType::Double);
- else if (tmp.canConvert(QMetaType::QColor))
- value.convert(QMetaType::QColor);
+ if (auto f = QVariant(str).toDouble(&conversionOk); conversionOk)
+ return f;
+ else if (auto c = colorFromString(str, &conversionOk); conversionOk)
+ return c;
+
break;
}
case QMetaType::QPoint:
diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp
index d01bf4a568..b581bd804f 100644
--- a/src/plugins/texteditor/textdocument.cpp
+++ b/src/plugins/texteditor/textdocument.cpp
@@ -970,6 +970,13 @@ void TextDocument::updateLayout() const
documentLayout->requestUpdate();
}
+void TextDocument::scheduleUpdateLayout() const
+{
+ auto documentLayout = qobject_cast<TextDocumentLayout*>(d->m_document.documentLayout());
+ QTC_ASSERT(documentLayout, return);
+ documentLayout->scheduleUpdate();
+}
+
TextMarks TextDocument::marks() const
{
return d->m_marksCache;
@@ -999,7 +1006,7 @@ bool TextDocument::addMark(TextMark *mark)
bool fullUpdate = !documentLayout->hasMarks;
documentLayout->hasMarks = true;
if (fullUpdate)
- documentLayout->requestUpdate();
+ documentLayout->scheduleUpdate();
else
documentLayout->requestExtraAreaUpdate();
return true;
@@ -1056,7 +1063,7 @@ void TextDocument::removeMark(TextMark *mark)
removeMarkFromMarksCache(mark);
emit markRemoved(mark);
mark->setBaseTextDocument(nullptr);
- updateLayout();
+ scheduleUpdateLayout();
}
void TextDocument::updateMark(TextMark *mark)
@@ -1068,7 +1075,7 @@ void TextDocument::updateMark(TextMark *mark)
userData->removeMark(mark);
userData->addMark(mark);
}
- updateLayout();
+ scheduleUpdateLayout();
}
void TextDocument::moveMark(TextMark *mark, int previousLine)
diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h
index b66046c076..b11d1a3a58 100644
--- a/src/plugins/texteditor/textdocument.h
+++ b/src/plugins/texteditor/textdocument.h
@@ -112,6 +112,7 @@ public:
TextMarks marksAt(int line) const;
void removeMark(TextMark *mark);
void updateLayout() const;
+ void scheduleUpdateLayout() const;
void updateMark(TextMark *mark);
void moveMark(TextMark *mark, int previousLine);
void removeMarkFromMarksCache(TextMark *mark);
diff --git a/src/plugins/texteditor/textdocumentlayout.cpp b/src/plugins/texteditor/textdocumentlayout.cpp
index 64a7375f36..beabf503df 100644
--- a/src/plugins/texteditor/textdocumentlayout.cpp
+++ b/src/plugins/texteditor/textdocumentlayout.cpp
@@ -638,6 +638,20 @@ void TextDocumentLayout::updateMarksBlock(const QTextBlock &block)
}
}
+void TextDocumentLayout::scheduleUpdate()
+{
+ if (m_updateScheduled)
+ return;
+ m_updateScheduled = true;
+ QMetaObject::invokeMethod(this, &TextDocumentLayout::requestUpdateNow, Qt::QueuedConnection);
+}
+
+void TextDocumentLayout::requestUpdateNow()
+{
+ m_updateScheduled = false;
+ requestUpdate();
+}
+
QRectF TextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
{
QRectF boundingRect = QPlainTextDocumentLayout::blockBoundingRect(block);
diff --git a/src/plugins/texteditor/textdocumentlayout.h b/src/plugins/texteditor/textdocumentlayout.h
index 21f8800e39..bcc283ba6a 100644
--- a/src/plugins/texteditor/textdocumentlayout.h
+++ b/src/plugins/texteditor/textdocumentlayout.h
@@ -236,6 +236,11 @@ public:
void documentReloaded(TextMarks marks, TextDocument *baseextDocument);
void updateMarksLineNumber();
void updateMarksBlock(const QTextBlock &block);
+ void scheduleUpdate();
+ void requestUpdateNow();
+
+private:
+ bool m_updateScheduled = false;
signals:
void updateExtraArea();
diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp
index 36489fcd88..6fedd4b746 100644
--- a/src/plugins/texteditor/textmark.cpp
+++ b/src/plugins/texteditor/textmark.cpp
@@ -96,9 +96,6 @@ TextMark::TextMark(const FilePath &fileName, int lineNumber, Id category)
TextMark::~TextMark()
{
- qDeleteAll(m_actions);
- m_actions.clear();
- delete m_settingsAction;
if (!m_fileName.isEmpty())
TextMarkRegistry::remove(this);
if (m_baseTextDocument)
@@ -241,7 +238,7 @@ void TextMark::removedFromEditor()
void TextMark::updateMarker()
{
if (m_baseTextDocument)
- m_baseTextDocument->updateLayout();
+ m_baseTextDocument->scheduleUpdateLayout();
}
void TextMark::setPriority(TextMark::Priority prioriy)
@@ -300,19 +297,29 @@ void TextMark::addToToolTipLayout(QGridLayout *target) const
target->addLayout(contentLayout, row, 1);
// Right column: action icons/button
- QVector<QAction *> actions = m_actions;
- if (m_settingsAction)
- actions << m_settingsAction;
+ QList<QAction *> actions{m_actions.begin(), m_actions.end()};
+ if (m_actionsProvider)
+ actions = m_actionsProvider();
+ if (m_settingsPage.isValid()) {
+ auto settingsAction = new QAction;
+ settingsAction->setIcon(Utils::Icons::SETTINGS_TOOLBAR.icon());
+ settingsAction->setToolTip(tr("Show Diagnostic Settings"));
+ QObject::connect(settingsAction, &QAction::triggered, Core::ICore::instance(),
+ [id = m_settingsPage] { Core::ICore::showOptionsDialog(id); },
+ Qt::QueuedConnection);
+ actions.append(settingsAction);
+ }
if (!actions.isEmpty()) {
auto actionsLayout = new QHBoxLayout;
QMargins margins = actionsLayout->contentsMargins();
margins.setLeft(margins.left() + 5);
actionsLayout->setContentsMargins(margins);
for (QAction *action : qAsConst(actions)) {
- QTC_ASSERT(!action->icon().isNull(), continue);
+ QTC_ASSERT(!action->icon().isNull(), delete action; continue);
auto button = new QToolButton;
button->setIcon(action->icon());
button->setToolTip(action->toolTip());
+ action->setParent(button);
QObject::connect(button, &QToolButton::clicked, action, &QAction::triggered);
QObject::connect(button, &QToolButton::clicked, []() {
Utils::ToolTip::hideImmediately();
@@ -414,15 +421,14 @@ void TextMark::setActions(const QVector<QAction *> &actions)
m_actions = actions;
}
+void TextMark::setActionsProvider(const std::function<QList<QAction *>()> &actionsProvider)
+{
+ m_actionsProvider = actionsProvider;
+}
+
void TextMark::setSettingsPage(Id settingsPage)
{
- delete m_settingsAction;
- m_settingsAction = new QAction;
- m_settingsAction->setIcon(Utils::Icons::SETTINGS.icon());
- m_settingsAction->setToolTip(tr("Show Diagnostic Settings"));
- QObject::connect(m_settingsAction, &QAction::triggered, Core::ICore::instance(),
- [settingsPage] { Core::ICore::showOptionsDialog(settingsPage); },
- Qt::QueuedConnection);
+ m_settingsPage = settingsPage;
}
TextMarkRegistry::TextMarkRegistry(QObject *parent)
diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h
index 0e94728103..5112694256 100644
--- a/src/plugins/texteditor/textmark.h
+++ b/src/plugins/texteditor/textmark.h
@@ -130,6 +130,7 @@ public:
QVector<QAction *> actions() const;
void setActions(const QVector<QAction *> &actions); // Takes ownership
+ void setActionsProvider(const std::function<QList<QAction *>()> &actionsProvider); // Takes ownership
protected:
void setSettingsPage(Utils::Id settingsPage);
@@ -150,8 +151,9 @@ private:
QString m_toolTip;
std::function<QString()> m_toolTipProvider;
QString m_defaultToolTip;
- QVector<QAction *> m_actions;
- QAction *m_settingsAction = nullptr;
+ QVector<QAction *> m_actions; // FIXME Remove in master
+ std::function<QList<QAction *>()> m_actionsProvider;
+ Utils::Id m_settingsPage;
};
} // namespace TextEditor