forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/9.0' into qds/dev
Change-Id: I4305c3b37814cc3a926e8e56cabe5f8935f8f2c0
This commit is contained in:
101
dist/changelog/changes-9.0.1.md
vendored
Normal file
101
dist/changelog/changes-9.0.1.md
vendored
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
Qt Creator 9.0.1
|
||||||
|
================
|
||||||
|
|
||||||
|
Qt Creator version 9.0.1 contains bug fixes.
|
||||||
|
|
||||||
|
The most important changes are listed in this document. For a complete list of
|
||||||
|
changes, see the Git log for the Qt Creator sources that you can check out from
|
||||||
|
the public Git repository. For example:
|
||||||
|
|
||||||
|
git clone git://code.qt.io/qt-creator/qt-creator.git
|
||||||
|
git log --cherry-pick --pretty=oneline origin/v9.0.0..v9.0.1
|
||||||
|
|
||||||
|
General
|
||||||
|
-------
|
||||||
|
|
||||||
|
* Improved performance in the context of file path handling
|
||||||
|
* Fixed missing `No updates found.` message after looking for updates
|
||||||
|
* Fixed loading of custom external tools definitions
|
||||||
|
|
||||||
|
Editing
|
||||||
|
-------
|
||||||
|
|
||||||
|
* Fixed double `*` sign at end of long document names in dropdown
|
||||||
|
|
||||||
|
### C++
|
||||||
|
|
||||||
|
* Fixed jumping to wrong symbol with `Follow Symbol` (QTCREATORBUG-28452)
|
||||||
|
* Fixed display of tab size in code style settings (QTCREATORBUG-28450)
|
||||||
|
* Fixed crash after closing settings when opened from indexing progress
|
||||||
|
(QTCREATORBUG-28566)
|
||||||
|
* Fixed crash when opening type hierarchy (QTCREATORBUG-28529)
|
||||||
|
* Fixed code style settings being saved even when canceling
|
||||||
|
* Fixed checkbox state in Beautifier settings (QTCREATORBUG-28525)
|
||||||
|
|
||||||
|
Projects
|
||||||
|
--------
|
||||||
|
|
||||||
|
### CMake
|
||||||
|
|
||||||
|
* Fixed that build environment was not migrated to the new configuration
|
||||||
|
environment (QTCREATORBUG-28372)
|
||||||
|
* Fixed handling of `inherits` for deeper hierarchies (QTCREATORBUG-28498)
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
---------
|
||||||
|
|
||||||
|
* Fixed handling of macros in source path mapping (QTCREATORBUG-28484)
|
||||||
|
|
||||||
|
### GDB
|
||||||
|
|
||||||
|
* Fixed pretty printer of `std::string` from `libc++` (QTCREATORBUG-28511)
|
||||||
|
|
||||||
|
### CDB
|
||||||
|
|
||||||
|
* Fixed source path mapping (QTCREATORBUG-28521)
|
||||||
|
|
||||||
|
Analyzer
|
||||||
|
--------
|
||||||
|
|
||||||
|
### Clang
|
||||||
|
|
||||||
|
* Fixed crash when clearing selection in settings (QTCREATORBUG-28524)
|
||||||
|
|
||||||
|
Test Integration
|
||||||
|
----------------
|
||||||
|
|
||||||
|
### Google Test
|
||||||
|
|
||||||
|
* Fixed debugging (QTCREATORBUG-28504)
|
||||||
|
|
||||||
|
Platforms
|
||||||
|
---------
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
* Fixed wrong colors with GTK3 platform theme (QTCREATORBUG-28497)
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
|
||||||
|
* Fixed that working directory for remote processes was not made reachable
|
||||||
|
|
||||||
|
Credits for these changes go to:
|
||||||
|
--------------------------------
|
||||||
|
Alessandro Portale
|
||||||
|
André Pönitz
|
||||||
|
Artem Sokolovskii
|
||||||
|
Christian Kandeler
|
||||||
|
Christian Stenger
|
||||||
|
Cristian Adam
|
||||||
|
David Schulz
|
||||||
|
Eike Ziller
|
||||||
|
Jaroslaw Kobus
|
||||||
|
Kai Köhne
|
||||||
|
Kwangsub Kim
|
||||||
|
Leena Miettinen
|
||||||
|
Marcus Tillmanns
|
||||||
|
Orgad Shaneh
|
||||||
|
Riitta-Leena Miettinen
|
||||||
|
Thomas Hartmann
|
||||||
|
Tim Jenssen
|
||||||
|
Ulf Hermann
|
@@ -212,7 +212,7 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Clear system environment</source>
|
<source>Clear system environment</source>
|
||||||
<translation>Systemumgebung löschen</translation>
|
<translation>Systemumgebung bereinigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Help</source>
|
<source>Help</source>
|
||||||
@@ -2700,11 +2700,11 @@ Trotzdem fortfahren?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sort Members of Classes and Structs Alphabetically</source>
|
<source>Sort Members of Classes and Structs Alphabetically</source>
|
||||||
<translation>Mitglieder von Klassen und Strukturen alphabetisch sortieren</translation>
|
<translation>Member von Klassen und Strukturen alphabetisch sortieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sort members of classes and structs alphabetically</source>
|
<source>Sort members of classes and structs alphabetically</source>
|
||||||
<translation>Mitglieder von Klassen und Strukturen alphabetisch sortieren</translation>
|
<translation>Member von Klassen und Strukturen alphabetisch sortieren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Use Debugging Helpers</source>
|
<source>Use Debugging Helpers</source>
|
||||||
@@ -5435,7 +5435,7 @@ Bitte wählen Sie einen 64-bit-Debugger in den Kit-Einstellungen für dieses Kit
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Debugging complex command lines is currently not supported on Windows.</source>
|
<source>Debugging complex command lines is currently not supported on Windows.</source>
|
||||||
<translation>Komplexe Kommandozeilen werden beim Debuggen unter Windows gegenwärtig nicht unterstützt.</translation>
|
<translation>Komplexe Kommandozeilen werden beim Debuggen unter Windows aktuell nicht unterstützt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Not enough free ports for QML debugging.</source>
|
<source>Not enough free ports for QML debugging.</source>
|
||||||
@@ -6013,7 +6013,7 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>A debugging session is still in progress. Terminating the session in the current state can leave the target in an inconsistent state. Would you still like to terminate it?</source>
|
<source>A debugging session is still in progress. Terminating the session in the current state can leave the target in an inconsistent state. Would you still like to terminate it?</source>
|
||||||
<translation>Der Debugger läuft noch. Das Beenden im gegenwärtigen Zustand könnte zu einem inkonsistenten Zustand des untersuchten Prozesses führen. Möchten Sie ihn trotzdem beenden?</translation>
|
<translation>Der Debugger läuft noch. Das Beenden im aktuellen Zustand könnte zu einem inkonsistenten Zustand des untersuchten Prozesses führen. Möchten Sie ihn trotzdem beenden?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Debugged executable</source>
|
<source>Debugged executable</source>
|
||||||
@@ -8835,11 +8835,11 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Saves the current state of your work and resets the repository.</source>
|
<source>Saves the current state of your work and resets the repository.</source>
|
||||||
<translation>Speichert den gegenwärtigen Stand der Arbeit und setzt das Repository zurück.</translation>
|
<translation>Speichert den aktuellen Stand der Arbeit und setzt das Repository zurück.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Saves the current state of your unstaged files and resets the repository to its staged state.</source>
|
<source>Saves the current state of your unstaged files and resets the repository to its staged state.</source>
|
||||||
<translation>Speichert den gegenwärtigen Stand der nicht bereitgestellten Dateien und setzt das Repository auf den bereitgestellten Zustand zurück.</translation>
|
<translation>Speichert den aktuellen Stand der nicht bereitgestellten Dateien und setzt das Repository auf den bereitgestellten Zustand zurück.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Take Snapshot...</source>
|
<source>Take Snapshot...</source>
|
||||||
@@ -8847,7 +8847,7 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Saves the current state of your work.</source>
|
<source>Saves the current state of your work.</source>
|
||||||
<translation>Sichert den gegenwärtigen Arbeitsstand.</translation>
|
<translation>Sichert den aktuellen Arbeitsstand.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Restores changes saved to the stash list using "Stash".</source>
|
<source>Restores changes saved to the stash list using "Stash".</source>
|
||||||
@@ -10497,7 +10497,7 @@ Außer: %2
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The build configuration <b>%1</b> is currently being built.</source>
|
<source>The build configuration <b>%1</b> is currently being built.</source>
|
||||||
<translation>Die Build-Konfiguration <b>%1</b> wird gegenwärtig erstellt.</translation>
|
<translation>Die Build-Konfiguration <b>%1</b> wird gerade erstellt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you want to cancel the build process and remove the Build Configuration anyway?</source>
|
<source>Do you want to cancel the build process and remove the Build Configuration anyway?</source>
|
||||||
@@ -10855,7 +10855,7 @@ konnte dem Projekt "%2" nicht hinzugefügt werden.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The deploy configuration <b>%1</b> is currently being built.</source>
|
<source>The deploy configuration <b>%1</b> is currently being built.</source>
|
||||||
<translation>Die Deployment-Konfiguration <b>%1</b> wird gegenwärtig ausgeführt.</translation>
|
<translation>Die Deployment-Konfiguration <b>%1</b> wird gerade erstellt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Do you want to cancel the build process and remove the Deploy Configuration anyway?</source>
|
<source>Do you want to cancel the build process and remove the Deploy Configuration anyway?</source>
|
||||||
@@ -10992,7 +10992,7 @@ konnte dem Projekt "%2" nicht hinzugefügt werden.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Run Without Deployment</source>
|
<source>Run Without Deployment</source>
|
||||||
<translation>Ausführung ohne Deployment</translation>
|
<translation>Ausführen ohne Deployment</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cancel Build</source>
|
<source>Cancel Build</source>
|
||||||
@@ -11548,7 +11548,7 @@ Bitte versuchen Sie es erneut.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Expand All</source>
|
<source>Expand All</source>
|
||||||
<translation>Alles aufklappen</translation>
|
<translation>Alle aufklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Quick Switch Kit Selector</source>
|
<source>Quick Switch Kit Selector</source>
|
||||||
@@ -13755,7 +13755,7 @@ Was möchten Sie tun?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name of current build</source>
|
<source>Name of current build</source>
|
||||||
<translation>Name der gegenwärtigen Build-Konfiguration</translation>
|
<translation>Name der aktuellen Build-Konfiguration</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Main file of current project</source>
|
<source>Main file of current project</source>
|
||||||
@@ -13783,7 +13783,7 @@ Was möchten Sie tun?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Type of current build</source>
|
<source>Type of current build</source>
|
||||||
<translation>Typ der gegenwärtigen Build-Konfiguration</translation>
|
<translation>Typ der aktuellen Build-Konfiguration</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Type of the project's active build configuration</source>
|
<source>Type of the project's active build configuration</source>
|
||||||
@@ -14110,7 +14110,7 @@ Locked components cannot be modified or selected.</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Expand All</source>
|
<source>Expand All</source>
|
||||||
<translation>Alles aufklappen</translation>
|
<translation>Alle aufklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Collapse All</source>
|
<source>Collapse All</source>
|
||||||
@@ -14355,7 +14355,7 @@ Locked components cannot be modified or selected.</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The following ABIs are currently not supported: %1</source>
|
<source>The following ABIs are currently not supported: %1</source>
|
||||||
<translation>Die folgenden ABIs werden gegenwärtig nicht unterstützt: %1</translation>
|
<translation>Die folgenden ABIs werden aktuell nicht unterstützt: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Select a qmake Executable</source>
|
<source>Select a qmake Executable</source>
|
||||||
@@ -14475,7 +14475,7 @@ Locked components cannot be modified or selected.</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source><p>The project you are about to open is located in the write-protected location:</p><blockquote>%1</blockquote><p>Please select a writable location below and click "Copy Project and Open" to open a modifiable copy of the project or click "Keep Project and Open" to open the project in location.</p><p><b>Note:</b> You will not be able to alter or compile your project in the current location.</p></source>
|
<source><p>The project you are about to open is located in the write-protected location:</p><blockquote>%1</blockquote><p>Please select a writable location below and click "Copy Project and Open" to open a modifiable copy of the project or click "Keep Project and Open" to open the project in location.</p><p><b>Note:</b> You will not be able to alter or compile your project in the current location.</p></source>
|
||||||
<translation><p>Das zu öffnende Projekt befindet sich in einem schreibgeschützten Verzeichnis:</p><blockquote>%1</blockquote><p>Bitte geben Sie ein schreibbares Verzeichnis an und wählen dann "Kopieren und öffne Projekt", um eine modifizierbare Kopie des Projektes erhalten, oder "Öffne Projekt hier", um das Projekt im gegenwärtigen Verzeichnis zu öffnen</p><p><b>Hinweis:</b> Im gegenwärtigen.Verzeichnis kann das Projekt weder compiliert noch modifiziert werden.</p></translation>
|
<translation><p>Das zu öffnende Projekt befindet sich in einem schreibgeschützten Verzeichnis:</p><blockquote>%1</blockquote><p>Bitte geben Sie ein schreibbares Verzeichnis an und wählen dann "Kopieren und öffne Projekt", um eine modifizierbare Kopie des Projektes erhalten, oder "Öffne Projekt hier", um das Projekt im aktuellen Verzeichnis zu öffnen</p><p><b>Hinweis:</b> Im aktuellen Verzeichnis kann das Projekt weder compiliert noch modifiziert werden.</p></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Location:</source>
|
<source>&Location:</source>
|
||||||
@@ -16678,7 +16678,7 @@ Möchten Sie sie überschreiben?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Debugging complex shell commands in a terminal is currently not supported.</source>
|
<source>Debugging complex shell commands in a terminal is currently not supported.</source>
|
||||||
<translation>Das Debuggen komplexer Shell-Kommandos in einem Terminal wird gegenwärtig nicht unterstützt.</translation>
|
<translation>Das Debuggen komplexer Shell-Kommandos in einem Terminal wird aktuell nicht unterstützt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Quoting error in terminal command.</source>
|
<source>Quoting error in terminal command.</source>
|
||||||
@@ -16764,7 +16764,7 @@ konnte nicht unter Versionsverwaltung (%2) gestellt werden
|
|||||||
<name>CppEditor::Internal::CppOutlineTreeView</name>
|
<name>CppEditor::Internal::CppOutlineTreeView</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Expand All</source>
|
<source>Expand All</source>
|
||||||
<translation>Alles aufklappen</translation>
|
<translation>Alle aufklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Collapse All</source>
|
<source>Collapse All</source>
|
||||||
@@ -21563,7 +21563,7 @@ Außer: %3
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>No updates found.</source>
|
<source>No updates found.</source>
|
||||||
<translation>Es wurden keine Aktualisierungen gefunden.</translation>
|
<translation>Keine Aktualisierungen gefunden.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Could not determine location of maintenance tool. Please check your installation if you did not enable this plugin manually.</source>
|
<source>Could not determine location of maintenance tool. Please check your installation if you did not enable this plugin manually.</source>
|
||||||
@@ -22675,7 +22675,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält.
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Pressing Alt displays context-sensitive help or type information as tooltips.</source>
|
<source>Pressing Alt displays context-sensitive help or type information as tooltips.</source>
|
||||||
<translation>Drücken Sie die Alt-Taste um kontextabhängige Hilfe oder Typinformation als Tool-Tip anzuzeigen.</translation>
|
<translation>Drücken Sie die Alt-Taste um kontextabhängige Hilfe oder Typinformation als Tooltip anzuzeigen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Using Select Block Up / Down actions will now provide smarter selections.</source>
|
<source>Using Select Block Up / Down actions will now provide smarter selections.</source>
|
||||||
@@ -25135,7 +25135,7 @@ the manifest file by overriding your settings. Allow override?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Scan only the currently edited document</source>
|
<source>Scan only the currently edited document</source>
|
||||||
<translation>Nur im gegenwärtig bearbeiteten Dokument suchen</translation>
|
<translation>Nur im aktuell bearbeiteten Dokument suchen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Scan the current subproject</source>
|
<source>Scan the current subproject</source>
|
||||||
@@ -25163,7 +25163,7 @@ the manifest file by overriding your settings. Allow override?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Scan only the currently edited document.</source>
|
<source>Scan only the currently edited document.</source>
|
||||||
<translation>Nur im gegenwärtig bearbeiteten Dokument suchen.</translation>
|
<translation>Nur im aktuell bearbeiteten Dokument suchen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Active Project</source>
|
<source>Active Project</source>
|
||||||
@@ -25359,7 +25359,7 @@ the manifest file by overriding your settings. Allow override?</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Type Specific</source>
|
<source>Type Specific</source>
|
||||||
<translation>typspezifisch</translation>
|
<translation>Typabhängig</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Add...</source>
|
<source>&Add...</source>
|
||||||
@@ -37198,11 +37198,11 @@ Warnung: Dies ist eine experimentelle Funktion und könnte dazu führen, dass di
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Expand All</source>
|
<source>Expand All</source>
|
||||||
<translation>Alles aufklappen</translation>
|
<translation>Alle aufklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Collapse All</source>
|
<source>Collapse All</source>
|
||||||
<translation>Alles einklappen</translation>
|
<translation>Alle einklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Sort Alphabetically</source>
|
<source>Sort Alphabetically</source>
|
||||||
@@ -41490,7 +41490,7 @@ Wird benutzt um die Funktion zu markieren, die ein gesuchtes Symbol benutzt.</tr
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Class' data members.</source>
|
<source>Class' data members.</source>
|
||||||
<translation>Mitgliedsvariablen von Klassen.</translation>
|
<translation>Membervariablen einer Klasse.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Global</source>
|
<source>Global</source>
|
||||||
@@ -48329,7 +48329,7 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Clear system environment</source>
|
<source>Clear system environment</source>
|
||||||
<translation>Systemumgebung löschen</translation>
|
<translation>Systemumgebung bereinigen</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -53840,7 +53840,7 @@ Use drag and drop to change the order of the parameters.</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Expand All</source>
|
<source>Expand All</source>
|
||||||
<translation>Alles aufklappen</translation>
|
<translation>Alle aufklappen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Collapse All</source>
|
<source>Collapse All</source>
|
||||||
@@ -55510,7 +55510,7 @@ Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Use context-specific margin</source>
|
<source>Use context-specific margin</source>
|
||||||
<translation>Kontextspezifischen Rand verwenden</translation>
|
<translation>Kontextabhängigen Rand verwenden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>If available, use a different margin. For example, the ColumnLimit from the ClangFormat plugin.</source>
|
<source>If available, use a different margin. For example, the ColumnLimit from the ClangFormat plugin.</source>
|
||||||
|
@@ -433,7 +433,7 @@ QList<LookupItem> LookupContext::lookup(const Name *name, Scope *scope) const
|
|||||||
{
|
{
|
||||||
QList<LookupItem> candidates;
|
QList<LookupItem> candidates;
|
||||||
|
|
||||||
if (! name)
|
if (!name)
|
||||||
return candidates;
|
return candidates;
|
||||||
|
|
||||||
for (; scope; scope = scope->enclosingScope()) {
|
for (; scope; scope = scope->enclosingScope()) {
|
||||||
|
@@ -415,10 +415,10 @@ Toolchains IarToolChainFactory::autoDetect(const ToolchainDetector &detector) co
|
|||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
|
|
||||||
|
QStringList registryNodes;
|
||||||
|
registryNodes << "HKEY_LOCAL_MACHINE\\SOFTWARE\\IAR Systems\\Embedded Workbench";
|
||||||
#ifdef Q_OS_WIN64
|
#ifdef Q_OS_WIN64
|
||||||
static const char kRegistryNode[] = "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\IAR Systems\\Embedded Workbench";
|
registryNodes << "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\IAR Systems\\Embedded Workbench";
|
||||||
#else
|
|
||||||
static const char kRegistryNode[] = "HKEY_LOCAL_MACHINE\\SOFTWARE\\IAR Systems\\Embedded Workbench";
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Dictionary for know toolchains.
|
// Dictionary for know toolchains.
|
||||||
@@ -446,33 +446,35 @@ Toolchains IarToolChainFactory::autoDetect(const ToolchainDetector &detector) co
|
|||||||
{{"EWCR16C"}, {"/cr16c/bin/icccr16c.exe"}},
|
{{"EWCR16C"}, {"/cr16c/bin/icccr16c.exe"}},
|
||||||
};
|
};
|
||||||
|
|
||||||
QSettings registry(kRegistryNode, QSettings::NativeFormat);
|
for (const QString ®istryNode : registryNodes) {
|
||||||
const auto oneLevelGroups = registry.childGroups();
|
QSettings registry(registryNode, QSettings::NativeFormat);
|
||||||
for (const QString &oneLevelKey : oneLevelGroups) {
|
const auto oneLevelGroups = registry.childGroups();
|
||||||
registry.beginGroup(oneLevelKey);
|
for (const QString &oneLevelKey : oneLevelGroups) {
|
||||||
const auto twoLevelGroups = registry.childGroups();
|
registry.beginGroup(oneLevelKey);
|
||||||
for (const Entry &entry : knowToolchains) {
|
const auto twoLevelGroups = registry.childGroups();
|
||||||
if (twoLevelGroups.contains(entry.registryKey)) {
|
for (const Entry &entry : knowToolchains) {
|
||||||
registry.beginGroup(entry.registryKey);
|
if (twoLevelGroups.contains(entry.registryKey)) {
|
||||||
const auto threeLevelGroups = registry.childGroups();
|
registry.beginGroup(entry.registryKey);
|
||||||
for (const QString &threeLevelKey : threeLevelGroups) {
|
const auto threeLevelGroups = registry.childGroups();
|
||||||
registry.beginGroup(threeLevelKey);
|
for (const QString &threeLevelKey : threeLevelGroups) {
|
||||||
QString compilerPath = registry.value("InstallPath").toString();
|
registry.beginGroup(threeLevelKey);
|
||||||
if (!compilerPath.isEmpty()) {
|
QString compilerPath = registry.value("InstallPath").toString();
|
||||||
// Build full compiler path.
|
if (!compilerPath.isEmpty()) {
|
||||||
compilerPath += entry.subExePath;
|
// Build full compiler path.
|
||||||
const FilePath fn = FilePath::fromString(compilerPath);
|
compilerPath += entry.subExePath;
|
||||||
if (compilerExists(fn)) {
|
const FilePath fn = FilePath::fromString(compilerPath);
|
||||||
// Note: threeLevelKey is a guessed toolchain version.
|
if (compilerExists(fn)) {
|
||||||
candidates.push_back({fn, threeLevelKey});
|
// Note: threeLevelKey is a guessed toolchain version.
|
||||||
|
candidates.push_back({fn, threeLevelKey});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
registry.endGroup();
|
||||||
}
|
}
|
||||||
registry.endGroup();
|
registry.endGroup();
|
||||||
}
|
}
|
||||||
registry.endGroup();
|
|
||||||
}
|
}
|
||||||
|
registry.endGroup();
|
||||||
}
|
}
|
||||||
registry.endGroup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // Q_OS_WIN
|
#endif // Q_OS_WIN
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
|
|
||||||
|
#include <QButtonGroup>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QGroupBox>
|
#include <QGroupBox>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
@@ -47,8 +48,10 @@ ClangFormatOptionsPageWidget::ClangFormatOptionsPageWidget(ClangFormatSettings *
|
|||||||
auto options = new QGroupBox(tr("Options"));
|
auto options = new QGroupBox(tr("Options"));
|
||||||
options->setEnabled(false);
|
options->setEnabled(false);
|
||||||
|
|
||||||
|
auto styleButtonGroup = new QButtonGroup(this);
|
||||||
|
|
||||||
auto useCustomizedStyle = new QRadioButton(tr("Use customized style:"));
|
auto useCustomizedStyle = new QRadioButton(tr("Use customized style:"));
|
||||||
useCustomizedStyle->setAutoExclusive(true);
|
styleButtonGroup->addButton(useCustomizedStyle);
|
||||||
|
|
||||||
m_configurations = new ConfigurationPanel;
|
m_configurations = new ConfigurationPanel;
|
||||||
m_configurations->setSettings(m_settings);
|
m_configurations->setSettings(m_settings);
|
||||||
@@ -57,7 +60,7 @@ ClangFormatOptionsPageWidget::ClangFormatOptionsPageWidget(ClangFormatSettings *
|
|||||||
m_usePredefinedStyle = new QRadioButton(tr("Use predefined style:"));
|
m_usePredefinedStyle = new QRadioButton(tr("Use predefined style:"));
|
||||||
|
|
||||||
m_usePredefinedStyle->setChecked(true);
|
m_usePredefinedStyle->setChecked(true);
|
||||||
m_usePredefinedStyle->setAutoExclusive(true);
|
styleButtonGroup->addButton(m_usePredefinedStyle);
|
||||||
|
|
||||||
m_predefinedStyle = new QComboBox;
|
m_predefinedStyle = new QComboBox;
|
||||||
m_predefinedStyle->addItems(m_settings->predefinedStyles());
|
m_predefinedStyle->addItems(m_settings->predefinedStyles());
|
||||||
|
@@ -394,7 +394,12 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir)
|
|||||||
project ? tr("Indexing %1 with clangd").arg(project->displayName())
|
project ? tr("Indexing %1 with clangd").arg(project->displayName())
|
||||||
: tr("Indexing session with clangd"));
|
: tr("Indexing session with clangd"));
|
||||||
setClickHandlerForToken(indexingToken(), [] {
|
setClickHandlerForToken(indexingToken(), [] {
|
||||||
ICore::showOptionsDialog(CppEditor::Constants::CPP_CLANGD_SETTINGS_ID);
|
// don't directly open modal dialog from click handler, because that would mess
|
||||||
|
// up the stack
|
||||||
|
QMetaObject::invokeMethod(
|
||||||
|
ICore::instance(),
|
||||||
|
[] { ICore::showOptionsDialog(CppEditor::Constants::CPP_CLANGD_SETTINGS_ID); },
|
||||||
|
Qt::QueuedConnection);
|
||||||
});
|
});
|
||||||
setCurrentProject(project);
|
setCurrentProject(project);
|
||||||
setDocumentChangeUpdateThreshold(d->settings.documentUpdateThreshold);
|
setDocumentChangeUpdateThreshold(d->settings.documentUpdateThreshold);
|
||||||
|
@@ -55,7 +55,6 @@ SaveItemsDialog::SaveItemsDialog(QWidget *parent, const QList<IDocument *> &item
|
|||||||
}
|
}
|
||||||
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Save);
|
m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Save);
|
||||||
QPushButton *discardButton = m_buttonBox->addButton(tr("Do &Not Save"), discardButtonRole);
|
QPushButton *discardButton = m_buttonBox->addButton(tr("Do &Not Save"), discardButtonRole);
|
||||||
m_buttonBox->button(QDialogButtonBox::Save)->setDefault(true);
|
|
||||||
m_treeWidget->setFocus();
|
m_treeWidget->setFocus();
|
||||||
|
|
||||||
m_saveBeforeBuildCheckBox->setVisible(false);
|
m_saveBeforeBuildCheckBox->setVisible(false);
|
||||||
@@ -103,6 +102,8 @@ SaveItemsDialog::SaveItemsDialog(QWidget *parent, const QList<IDocument *> &item
|
|||||||
&SaveItemsDialog::collectItemsToSave);
|
&SaveItemsDialog::collectItemsToSave);
|
||||||
connect(discardButton, &QAbstractButton::clicked, this, &SaveItemsDialog::discardAll);
|
connect(discardButton, &QAbstractButton::clicked, this, &SaveItemsDialog::discardAll);
|
||||||
connect(m_treeWidget, &QTreeWidget::itemSelectionChanged, this, &SaveItemsDialog::updateButtons);
|
connect(m_treeWidget, &QTreeWidget::itemSelectionChanged, this, &SaveItemsDialog::updateButtons);
|
||||||
|
|
||||||
|
m_buttonBox->button(QDialogButtonBox::Save)->setDefault(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveItemsDialog::setMessage(const QString &msg)
|
void SaveItemsDialog::setMessage(const QString &msg)
|
||||||
|
@@ -253,11 +253,6 @@ void CppCodeStylePreferencesWidget::slotCodeStyleSettingsChanged()
|
|||||||
if (m_blockUpdates)
|
if (m_blockUpdates)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_preferences) {
|
|
||||||
auto current = qobject_cast<CppCodeStylePreferences *>(m_preferences->currentPreferences());
|
|
||||||
if (current)
|
|
||||||
current->setCodeStyleSettings(cppCodeStyleSettings());
|
|
||||||
}
|
|
||||||
emit codeStyleSettingsChanged(cppCodeStyleSettings());
|
emit codeStyleSettingsChanged(cppCodeStyleSettings());
|
||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
@@ -267,12 +262,6 @@ void CppCodeStylePreferencesWidget::slotTabSettingsChanged(const TabSettings &se
|
|||||||
if (m_blockUpdates)
|
if (m_blockUpdates)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_preferences) {
|
|
||||||
auto current = qobject_cast<CppCodeStylePreferences *>(m_preferences->currentPreferences());
|
|
||||||
if (current)
|
|
||||||
current->setTabSettings(settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
emit tabSettingsChanged(settings);
|
emit tabSettingsChanged(settings);
|
||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
@@ -355,6 +344,14 @@ void CppCodeStylePreferencesWidget::addTab(CppCodeStyleWidget *page, QString tab
|
|||||||
|
|
||||||
void CppCodeStylePreferencesWidget::apply()
|
void CppCodeStylePreferencesWidget::apply()
|
||||||
{
|
{
|
||||||
|
if (m_preferences) {
|
||||||
|
auto current = qobject_cast<CppCodeStylePreferences *>(m_preferences->currentPreferences());
|
||||||
|
if (current) {
|
||||||
|
current->setTabSettings(tabSettings());
|
||||||
|
current->setCodeStyleSettings(cppCodeStyleSettings());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
emit applyEmitted();
|
emit applyEmitted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -94,8 +94,7 @@ public:
|
|||||||
// CppDeclarableElement
|
// CppDeclarableElement
|
||||||
CppDeclarableElement::CppDeclarableElement(Symbol *declaration)
|
CppDeclarableElement::CppDeclarableElement(Symbol *declaration)
|
||||||
: CppElement()
|
: CppElement()
|
||||||
, declaration(declaration)
|
, iconType(Icons::iconTypeForSymbol(declaration))
|
||||||
, icon(Icons::iconForSymbol(declaration))
|
|
||||||
{
|
{
|
||||||
Overview overview;
|
Overview overview;
|
||||||
overview.showArgumentNames = true;
|
overview.showArgumentNames = true;
|
||||||
@@ -135,11 +134,6 @@ CppClass::CppClass(Symbol *declaration) : CppDeclarableElement(declaration)
|
|||||||
tooltip = qualifiedName;
|
tooltip = qualifiedName;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CppClass::operator==(const CppClass &other)
|
|
||||||
{
|
|
||||||
return this->declaration == other.declaration;
|
|
||||||
}
|
|
||||||
|
|
||||||
CppClass *CppClass::toCppClass()
|
CppClass *CppClass::toCppClass()
|
||||||
{
|
{
|
||||||
return this;
|
return this;
|
||||||
@@ -148,32 +142,30 @@ CppClass *CppClass::toCppClass()
|
|||||||
void CppClass::lookupBases(QFutureInterfaceBase &futureInterface,
|
void CppClass::lookupBases(QFutureInterfaceBase &futureInterface,
|
||||||
Symbol *declaration, const LookupContext &context)
|
Symbol *declaration, const LookupContext &context)
|
||||||
{
|
{
|
||||||
using Data = QPair<ClassOrNamespace*, CppClass*>;
|
ClassOrNamespace *hierarchy = context.lookupType(declaration);
|
||||||
|
if (!hierarchy)
|
||||||
|
return;
|
||||||
|
QSet<ClassOrNamespace *> visited;
|
||||||
|
addBaseHierarchy(futureInterface, context, hierarchy, &visited);
|
||||||
|
}
|
||||||
|
|
||||||
if (ClassOrNamespace *clazz = context.lookupType(declaration)) {
|
void CppClass::addBaseHierarchy(QFutureInterfaceBase &futureInterface, const LookupContext &context,
|
||||||
QSet<ClassOrNamespace *> visited;
|
ClassOrNamespace *hierarchy, QSet<ClassOrNamespace *> *visited)
|
||||||
|
{
|
||||||
QQueue<Data> q;
|
if (futureInterface.isCanceled())
|
||||||
q.enqueue({clazz, this});
|
return;
|
||||||
while (!q.isEmpty()) {
|
visited->insert(hierarchy);
|
||||||
if (futureInterface.isCanceled())
|
const QList<ClassOrNamespace *> &baseClasses = hierarchy->usings();
|
||||||
return;
|
for (ClassOrNamespace *baseClass : baseClasses) {
|
||||||
Data current = q.dequeue();
|
const QList<Symbol *> &symbols = baseClass->symbols();
|
||||||
clazz = current.first;
|
for (Symbol *symbol : symbols) {
|
||||||
visited.insert(clazz);
|
if (!symbol->asClass())
|
||||||
const QList<ClassOrNamespace *> &bases = clazz->usings();
|
continue;
|
||||||
for (ClassOrNamespace *baseClass : bases) {
|
ClassOrNamespace *baseHierarchy = context.lookupType(symbol);
|
||||||
const QList<Symbol *> &symbols = baseClass->symbols();
|
if (baseHierarchy && !visited->contains(baseHierarchy)) {
|
||||||
for (Symbol *symbol : symbols) {
|
CppClass classSymbol(symbol);
|
||||||
if (symbol->asClass() && (
|
classSymbol.addBaseHierarchy(futureInterface, context, baseHierarchy, visited);
|
||||||
clazz = context.lookupType(symbol)) &&
|
bases.append(classSymbol);
|
||||||
!visited.contains(clazz)) {
|
|
||||||
CppClass baseCppClass(symbol);
|
|
||||||
CppClass *cppClass = current.second;
|
|
||||||
cppClass->bases.append(baseCppClass);
|
|
||||||
q.enqueue({clazz, &cppClass->bases.last()});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,27 +174,20 @@ void CppClass::lookupBases(QFutureInterfaceBase &futureInterface,
|
|||||||
void CppClass::lookupDerived(QFutureInterfaceBase &futureInterface,
|
void CppClass::lookupDerived(QFutureInterfaceBase &futureInterface,
|
||||||
Symbol *declaration, const Snapshot &snapshot)
|
Symbol *declaration, const Snapshot &snapshot)
|
||||||
{
|
{
|
||||||
using Data = QPair<CppClass*, TypeHierarchy>;
|
|
||||||
|
|
||||||
snapshot.updateDependencyTable(futureInterface);
|
snapshot.updateDependencyTable(futureInterface);
|
||||||
if (futureInterface.isCanceled())
|
if (futureInterface.isCanceled())
|
||||||
return;
|
return;
|
||||||
const TypeHierarchy &completeHierarchy
|
addDerivedHierarchy(TypeHierarchyBuilder::buildDerivedTypeHierarchy(
|
||||||
= TypeHierarchyBuilder::buildDerivedTypeHierarchy(futureInterface, declaration, snapshot);
|
futureInterface, declaration, snapshot));
|
||||||
|
}
|
||||||
|
|
||||||
QQueue<Data> q;
|
void CppClass::addDerivedHierarchy(const TypeHierarchy &hierarchy)
|
||||||
q.enqueue({this, completeHierarchy});
|
{
|
||||||
while (!q.isEmpty()) {
|
const QList<TypeHierarchy> derivedHierarchies = hierarchy.hierarchy();
|
||||||
if (futureInterface.isCanceled())
|
for (const TypeHierarchy &derivedHierarchy : derivedHierarchies) {
|
||||||
return;
|
CppClass classSymbol(derivedHierarchy.symbol());
|
||||||
const Data ¤t = q.dequeue();
|
classSymbol.addDerivedHierarchy(derivedHierarchy);
|
||||||
CppClass *clazz = current.first;
|
derived.append(classSymbol);
|
||||||
const TypeHierarchy &classHierarchy = current.second;
|
|
||||||
const QList<TypeHierarchy> hierarchy = classHierarchy.hierarchy();
|
|
||||||
for (const TypeHierarchy &derivedHierarchy : hierarchy) {
|
|
||||||
clazz->derived.append(CppClass(derivedHierarchy.symbol()));
|
|
||||||
q.enqueue({&clazz->derived.last(), derivedHierarchy});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,13 +3,14 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <coreplugin/helpitem.h>
|
#include "typehierarchybuilder.h"
|
||||||
#include <texteditor/texteditor.h>
|
|
||||||
|
|
||||||
|
#include <coreplugin/helpitem.h>
|
||||||
#include <cplusplus/CppDocument.h>
|
#include <cplusplus/CppDocument.h>
|
||||||
|
#include <texteditor/texteditor.h>
|
||||||
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
#include <QIcon>
|
|
||||||
#include <QSharedPointer>
|
#include <QSharedPointer>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
@@ -18,6 +19,7 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
namespace CPlusPlus {
|
namespace CPlusPlus {
|
||||||
|
class ClassOrNamespace;
|
||||||
class LookupItem;
|
class LookupItem;
|
||||||
class LookupContext;
|
class LookupContext;
|
||||||
}
|
}
|
||||||
@@ -76,11 +78,10 @@ public:
|
|||||||
explicit CppDeclarableElement(CPlusPlus::Symbol *declaration);
|
explicit CppDeclarableElement(CPlusPlus::Symbol *declaration);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CPlusPlus::Symbol *declaration;
|
Utils::CodeModelIcon::Type iconType;
|
||||||
QString name;
|
QString name;
|
||||||
QString qualifiedName;
|
QString qualifiedName;
|
||||||
QString type;
|
QString type;
|
||||||
QIcon icon;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CppClass : public CppDeclarableElement
|
class CppClass : public CppDeclarableElement
|
||||||
@@ -89,8 +90,6 @@ public:
|
|||||||
CppClass();
|
CppClass();
|
||||||
explicit CppClass(CPlusPlus::Symbol *declaration);
|
explicit CppClass(CPlusPlus::Symbol *declaration);
|
||||||
|
|
||||||
bool operator==(const CppClass &other);
|
|
||||||
|
|
||||||
CppClass *toCppClass() final;
|
CppClass *toCppClass() final;
|
||||||
|
|
||||||
void lookupBases(QFutureInterfaceBase &futureInterface,
|
void lookupBases(QFutureInterfaceBase &futureInterface,
|
||||||
@@ -98,9 +97,15 @@ public:
|
|||||||
void lookupDerived(QFutureInterfaceBase &futureInterface,
|
void lookupDerived(QFutureInterfaceBase &futureInterface,
|
||||||
CPlusPlus::Symbol *declaration, const CPlusPlus::Snapshot &snapshot);
|
CPlusPlus::Symbol *declaration, const CPlusPlus::Snapshot &snapshot);
|
||||||
|
|
||||||
public:
|
|
||||||
QList<CppClass> bases;
|
QList<CppClass> bases;
|
||||||
QList<CppClass> derived;
|
QList<CppClass> derived;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void addBaseHierarchy(QFutureInterfaceBase &futureInterface,
|
||||||
|
const CPlusPlus::LookupContext &context,
|
||||||
|
CPlusPlus::ClassOrNamespace *hierarchy,
|
||||||
|
QSet<CPlusPlus::ClassOrNamespace *> *visited);
|
||||||
|
void addDerivedHierarchy(const TypeHierarchy &hierarchy);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -4310,6 +4310,8 @@ void GenerateGetterSetter::match(const CppQuickFixInterface &interface, QuickFix
|
|||||||
return;
|
return;
|
||||||
declarator = path.at(n - i++)->asDeclarator();
|
declarator = path.at(n - i++)->asDeclarator();
|
||||||
}
|
}
|
||||||
|
if (!declarator)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
const auto variableDecl = path.at(n - i++)->asSimpleDeclaration();
|
const auto variableDecl = path.at(n - i++)->asSimpleDeclaration();
|
||||||
const auto classSpecifier = path.at(n - i++)->asClassSpecifier();
|
const auto classSpecifier = path.at(n - i++)->asClassSpecifier();
|
||||||
|
@@ -44,7 +44,7 @@ QStandardItem *itemForClass(const CppClass &cppClass)
|
|||||||
item->setData(cppClass.name, Qt::DisplayRole);
|
item->setData(cppClass.name, Qt::DisplayRole);
|
||||||
if (cppClass.name != cppClass.qualifiedName)
|
if (cppClass.name != cppClass.qualifiedName)
|
||||||
item->setData(cppClass.qualifiedName, AnnotationRole);
|
item->setData(cppClass.qualifiedName, AnnotationRole);
|
||||||
item->setData(cppClass.icon, Qt::DecorationRole);
|
item->setData(iconForType(cppClass.iconType), Qt::DecorationRole);
|
||||||
QVariant link;
|
QVariant link;
|
||||||
link.setValue(Link(cppClass.link));
|
link.setValue(Link(cppClass.link));
|
||||||
item->setData(link, LinkRole);
|
item->setData(link, LinkRole);
|
||||||
|
@@ -111,10 +111,12 @@ void McuSdkRepository::expandVariablesAndWildcards()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// drop empty_split_entry(linux)|root(windows)
|
// drop empty_split_entry(linux)|root(windows)
|
||||||
pathComponents.pop_front();
|
QString root = pathComponents.takeFirst();
|
||||||
|
if (root.isEmpty()) // Linux
|
||||||
|
root = "/";
|
||||||
|
|
||||||
package->setPath(
|
package->setPath(
|
||||||
expandWildcards(FilePath::fromString(QDir::rootPath()),
|
expandWildcards(FilePath::fromString(root),
|
||||||
{pathComponents.constBegin(), pathComponents.constEnd()})
|
{pathComponents.constBegin(), pathComponents.constEnd()})
|
||||||
.first);
|
.first);
|
||||||
}
|
}
|
||||||
|
@@ -2098,7 +2098,9 @@ std::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils::E
|
|||||||
saver.write("set CLINK_NOAUTORUN=1\r\n");
|
saver.write("set CLINK_NOAUTORUN=1\r\n");
|
||||||
saver.write("setlocal enableextensions\r\n");
|
saver.write("setlocal enableextensions\r\n");
|
||||||
saver.write("if defined VCINSTALLDIR (\r\n");
|
saver.write("if defined VCINSTALLDIR (\r\n");
|
||||||
saver.write(" call \"%VCINSTALLDIR%/Auxiliary/Build/vcvarsall.bat\" /clean_env\r\n");
|
saver.write(" if not defined QTC_NO_MSVC_CLEAN_ENV (\r\n");
|
||||||
|
saver.write(" call \"%VCINSTALLDIR%/Auxiliary/Build/vcvarsall.bat\" /clean_env\r\n");
|
||||||
|
saver.write(" )\r\n");
|
||||||
saver.write(")\r\n");
|
saver.write(")\r\n");
|
||||||
saver.write(call + "\r\n");
|
saver.write(call + "\r\n");
|
||||||
saver.write("@echo " + marker.toLocal8Bit() + "\r\n");
|
saver.write("@echo " + marker.toLocal8Bit() + "\r\n");
|
||||||
|
@@ -1320,7 +1320,11 @@ void SimpleTargetRunnerPrivate::stop()
|
|||||||
switch (m_state) {
|
switch (m_state) {
|
||||||
case Run:
|
case Run:
|
||||||
m_process.stop();
|
m_process.stop();
|
||||||
m_process.waitForFinished();
|
if (!m_process.waitForFinished(2000)) { // TODO: it may freeze on some devices
|
||||||
|
QTC_CHECK(false); // Shouldn't happen, just emergency handling
|
||||||
|
m_process.close();
|
||||||
|
forwardDone();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Inactive:
|
case Inactive:
|
||||||
break;
|
break;
|
||||||
|
@@ -192,6 +192,8 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_addButton->setMenu(addMenu);
|
m_addButton->setMenu(addMenu);
|
||||||
|
if (HostOsInfo::isMacHost())
|
||||||
|
m_addButton->setStyleSheet("text-align:center;");
|
||||||
|
|
||||||
m_cloneButton = new QPushButton(ToolChainOptionsPage::tr("Clone"), this);
|
m_cloneButton = new QPushButton(ToolChainOptionsPage::tr("Clone"), this);
|
||||||
connect(m_cloneButton, &QAbstractButton::clicked, [this] { cloneToolChain(); });
|
connect(m_cloneButton, &QAbstractButton::clicked, [this] { cloneToolChain(); });
|
||||||
|
@@ -295,20 +295,17 @@ QString PluginGenerator::processTemplate(const QString &tmpl,
|
|||||||
{
|
{
|
||||||
Utils::FileReader reader;
|
Utils::FileReader reader;
|
||||||
if (!reader.fetch(Utils::FilePath::fromString(tmpl), errorMessage))
|
if (!reader.fetch(Utils::FilePath::fromString(tmpl), errorMessage))
|
||||||
return QString();
|
return {};
|
||||||
|
|
||||||
|
|
||||||
QString cont = QString::fromUtf8(reader.data());
|
QString cont = QString::fromUtf8(reader.data());
|
||||||
|
|
||||||
// Expander needed to handle extra variable "Cpp:PragmaOnce"
|
// Expander needed to handle extra variable "Cpp:PragmaOnce"
|
||||||
Utils::MacroExpander *expander = Utils::globalMacroExpander();
|
Utils::MacroExpander *expander = Utils::globalMacroExpander();
|
||||||
QString errMsg;
|
cont = Utils::TemplateEngine::processText(expander, cont, errorMessage);
|
||||||
cont = Utils::TemplateEngine::processText(expander, cont, &errMsg);
|
if (!errorMessage->isEmpty()) {
|
||||||
if (!errMsg.isEmpty()) {
|
|
||||||
qWarning("Error processing custom plugin file: %s\nFile:\n%s",
|
qWarning("Error processing custom plugin file: %s\nFile:\n%s",
|
||||||
qPrintable(errMsg), qPrintable(cont));
|
qPrintable(*errorMessage), qPrintable(cont));
|
||||||
errorMessage = &errMsg;
|
return {};
|
||||||
return QString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const QChar atChar = QLatin1Char('@');
|
const QChar atChar = QLatin1Char('@');
|
||||||
|
@@ -490,8 +490,10 @@ bool SshProcessInterface::runInShell(const CommandLine &command, const QByteArra
|
|||||||
process.setCommand(cmd);
|
process.setCommand(cmd);
|
||||||
process.setWriteData(data);
|
process.setWriteData(data);
|
||||||
process.start();
|
process.start();
|
||||||
QTC_CHECK(process.waitForFinished()); // otherwise we may start producing killers for killers
|
bool isFinished = process.waitForFinished(2000); // TODO: it may freeze on some devices
|
||||||
return process.exitCode() == 0;
|
// otherwise we may start producing killers for killers
|
||||||
|
QTC_CHECK(isFinished);
|
||||||
|
return isFinished;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SshProcessInterface::start()
|
void SshProcessInterface::start()
|
||||||
|
@@ -1021,7 +1021,7 @@ Utils::Links SquishTools::setBreakpoints()
|
|||||||
continue;
|
continue;
|
||||||
const Utils::FilePath filePath = Utils::FilePath::fromString(
|
const Utils::FilePath filePath = Utils::FilePath::fromString(
|
||||||
gb->data(BreakpointFileColumn, Qt::DisplayRole).toString());
|
gb->data(BreakpointFileColumn, Qt::DisplayRole).toString());
|
||||||
auto fileName = filePath.toUserOutput();
|
auto fileName = filePath.canonicalPath().toUserOutput();
|
||||||
if (fileName.isEmpty())
|
if (fileName.isEmpty())
|
||||||
continue;
|
continue;
|
||||||
if (!fileName.endsWith(extension))
|
if (!fileName.endsWith(extension))
|
||||||
|
@@ -2696,7 +2696,8 @@ void TextEditorWidget::keyPressEvent(QKeyEvent *e)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Delete:
|
case Qt::Key_Delete:
|
||||||
if (hasMultipleCursors && !ro && e->modifiers() == Qt::NoModifier) {
|
if (hasMultipleCursors && !ro
|
||||||
|
&& (e->modifiers() == Qt::NoModifier || e->modifiers() == Qt::KeypadModifier)) {
|
||||||
if (cursor.hasSelection()) {
|
if (cursor.hasSelection()) {
|
||||||
cursor.removeSelectedText();
|
cursor.removeSelectedText();
|
||||||
} else {
|
} else {
|
||||||
@@ -7848,7 +7849,7 @@ struct MappedText
|
|||||||
|
|
||||||
void TextEditorWidget::insertFromMimeData(const QMimeData *source)
|
void TextEditorWidget::insertFromMimeData(const QMimeData *source)
|
||||||
{
|
{
|
||||||
if (isReadOnly())
|
if (!source || isReadOnly())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QString text = source->text();
|
QString text = source->text();
|
||||||
@@ -7858,7 +7859,6 @@ void TextEditorWidget::insertFromMimeData(const QMimeData *source)
|
|||||||
if (d->m_codeAssistant.hasContext())
|
if (d->m_codeAssistant.hasContext())
|
||||||
d->m_codeAssistant.destroyContext();
|
d->m_codeAssistant.destroyContext();
|
||||||
|
|
||||||
|
|
||||||
if (d->m_snippetOverlay->isVisible() && (text.contains('\n') || text.contains('\t')))
|
if (d->m_snippetOverlay->isVisible() && (text.contains('\n') || text.contains('\t')))
|
||||||
d->m_snippetOverlay->accept();
|
d->m_snippetOverlay->accept();
|
||||||
|
|
||||||
|
@@ -437,7 +437,7 @@ void VcsBaseClient::revertAll(const FilePath &workingDir,
|
|||||||
if (cmd->result() == ProcessResult::FinishedWithSuccess)
|
if (cmd->result() == ProcessResult::FinishedWithSuccess)
|
||||||
emit changed(files);
|
emit changed(files);
|
||||||
}, Qt::QueuedConnection);
|
}, Qt::QueuedConnection);
|
||||||
enqueueJob(createCommand(workingDir), args);
|
enqueueJob(cmd, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VcsBaseClient::status(const FilePath &workingDir,
|
void VcsBaseClient::status(const FilePath &workingDir,
|
||||||
|
@@ -31,6 +31,8 @@ def __syntaxErrorDetected__():
|
|||||||
"Expected ';' at end of declaration (fix available)",
|
"Expected ';' at end of declaration (fix available)",
|
||||||
"Use of undeclared identifier 'syntaxError'"]:
|
"Use of undeclared identifier 'syntaxError'"]:
|
||||||
return True
|
return True
|
||||||
|
if re.match(issue[3], "Declaration of reference variable '.+' requires an initializer"):
|
||||||
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user