Commit Graph

117 Commits

Author SHA1 Message Date
Christian Kandeler
8beeea5b5e CppEditor: Add support for showing pre-processed source files
Fixes: QTCREATORBUG-4
Change-Id: I819709e69e604849264e745da98065829f7cb228
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
2022-09-14 07:42:49 +00:00
Lucie Gérard
a7956df3ca Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.

Task-number: QTBUG-67283
Change-Id: I708fd1f9f2b73d60f57cc3568646929117825813
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2022-08-26 12:27:18 +00:00
Marcus Tillmanns
3462bc67be filesystem: Add QFSEngine for filepaths
Change-Id: Ibd0c88c69863c0877138d8cc45541530c359bd9c
Reviewed-by: hjk <hjk@qt.io>
2022-07-21 13:14:01 +00:00
Christian Kandeler
70ec0cfff1 ClangCodeModel: Make use of clangd's "switchSourceHeader" extension
This allows us to switch between headers and sources with different base
names and/or locations, using symbol matching heuristics.

Task-number: QTCREATORBUG-16385
Change-Id: I2d9c07f412d70b75322ed65d491982d78674483d
Reviewed-by: David Schulz <david.schulz@qt.io>
2022-05-19 09:54:34 +00:00
Eike Ziller
c84380cdc8 Merge remote-tracking branch 'origin/7.0'
Change-Id: Ib2267ddbb702564a6e1c8f6b1db802bc9c45759d
2022-03-31 15:32:42 +02:00
Christian Kandeler
83f6c82752 CppEditor: Show project-specific clangd settings conditionally
That is, only if the ClangCodeModel is enabled, as it was already done
for the global clangd settings. The current mix is an excellent way to
confuse users.

Change-Id: I1d3e7a366172ed972ac1ed04c4b332686a2ffb10
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-03-28 14:03:53 +00:00
Eike Ziller
f562ebf239 Mimetypes: Make implementation switchable between new and old
- configure with QTC_USE_NEW_MIMEDATABASE to switch to the new one in
  utils/mimetypes2/
- added utils/mimeutils.h header for the Qt Creator specific static
  wrappers, that also includes the "public" headers for MimeType et al
  from the new or old implementation, depending on configuration
- change all utils/mimetypes/ includes to utils/mimeutils.h
- move the implementation for the wrappers to
  utils/mimetypes(2)/mimeutils.cpp
- also move the MimeDatabase declaration in the "old" implementation
  back to utils/mimetypes/mimedatabase.h

Change-Id: Ie8de229c035d6cd9a5e4739dc0fa78d9c17228e3
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
2022-02-25 07:19:58 +00:00
Eike Ziller
3c1a87290e Register some more windows
So they get an entry in the Window menu, and window related shortcuts
are registered correctly.

Change-Id: Ie7e882a009f928f1268fdd312e7fb5362f6a837f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-02-09 09:12:29 +00:00
Eike Ziller
c6fdb66b2b Collect Qt Creator debug menu items into common submenu
instead of spreading them over the place.

- rename "Logger..." to "Show Logs..."
- create "Tools > Debug Qt Creator" menu and put "Show Logs", "Inspect
Language Clients" and "Inspect C++ Code Model" there
- add missing ellipsis

That gets rid of the otherwise not useful "Language Client" submenu, and
creates a nicer place for the "Show Logs" item.

Change-Id: I2588b4c93327669579979dfbfce37005ada29dab
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2022-01-26 12:59:21 +00:00
Alessandro Portale
6db5faa2e8 CppEditor: Use ProjectExplorer's file icon overlays
Replace the own three overlays with those from ProjectExplorer.

Change-Id: I9eceef4b7b321a47d2b7bd3e86bd758395043a37
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-12-03 09:41:29 +00:00
Eike Ziller
46f611bee1 Fix icon for headers and sources on macOS/Windows
On macOS and Windows, we used the system icon for C/C++ source and
header files. This was probably done under the assumption that the
system would have sensible icons registered for these types via Xcode/
Visual Studio, but actually that assumption is not very well founded.

For example I have set emacs as the default editor when double clicking
C/C++ files, and then get the same little emacs icon on all .h and .cpp
files in Qt Creator, which is not useful. There seem to be more effects
on macOS 12 leading to a generic icon too.

Fixes: QTCREATORBUG-26586
Change-Id: I88616b28d51f1583324bac9c802c9cc5bbc8ee70
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2021-11-30 14:38:02 +00:00
Eike Ziller
195abefe7d EditorManager: Remove QString openEditor(At) overloads
In favor of the FilePath/Link ones.

Change-Id: I5caf9e0f8de304ff4ee12329557aa50a6f3a0c69
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-11-02 08:11:14 +00:00
Christian Kandeler
548e19370e CppEditor: Remove CppToolsBridge & friends
This redirection did nothing except to horribly obfuscate the code.
Note that most callers already accessed the model manager directly, and
some bridge functions were not called at all.

Change-Id: Ic1c728afe79bf98544da23a1955ee82d0dbde94f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-06 09:49:36 +00:00
Christian Kandeler
1d88a65747 CppEditor: Move CppHoverHandler to its only point of use
No need to compile an extra translation unit for this.

Change-Id: Ie21346700818ccadab864b77f13f167bd27a457a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-03 11:36:19 +00:00
Christian Kandeler
0a7aca5a71 CppEditor: Remove class CppEditor
It's not needed, and conflicts with the namespace of the same name in
some contexts.

Change-Id: I281025abbfad0feb602f006e3b997a8b9c308b48
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-03 11:10:26 +00:00
Christian Kandeler
284817fae6 Merge CppTools into CppEditor
There was no proper separation of responsibilities between these
plugins. In particular, CppTools had lots of editor-related
functionality, so it's not clear why it was separated out in the first
place.
In fact, for a lot of code, it seemed quite arbitrary where it was put
(just one example: switchHeaderSource() was in CppTools, wheras
switchDeclarationDefinition() was in CppEditor).
Merging the plugins will enable us to get rid of various convoluted
pseudo-abstractions that were only introduced to keep up the artificial
separation.

Change-Id: Iafc3bce625b4794f6d4aa03df6cddc7f2d26716a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-01 14:53:58 +00:00
Christian Kandeler
49211c4a5c CppEditor: Move FollowSymbolTest into the Tests namespace
This is now possible, as there is no ambiguity anymore regarding the
TestDocument class.

Change-Id: I6f736a5790d2eab1c82f5429a9292aa9d7bcda56
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-08-30 08:22:10 +00:00
Christian Kandeler
59d2f96cf8 CppEditor: Use test objects to group related test functions
Change-Id: I65089f2a00d8d168f123becf160f82bfcca4c68c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-08-27 13:46:45 +00:00
Christian Kandeler
a5ba33cbeb CppEditor: Add second "Find References" Action
This one includes access type categorization, while the "normal" one
does not.
We need this now, because with clangd, the categorization is too slow to
enable it by default.

Change-Id: I2eb4608630d34452ae28f0836befd5d9053f42bf
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-06-07 08:28:49 +00:00
Jarek Kobus
b281d6f00a Don't call CppTypeHierarchyWidget::perform() twice
In case a Type Hierarchy widget isn't visible,
the CppIncludeHierarchyWidget::perform() is called
twice when requested from "Open Type Hierarchy" context menu.

The instances of CppIncludeHierarchyWidget class
are created only when Type Hierarchy item is selected
form the combobox, and are destroyed when different item
is selected. A call to:
NavigationWidget::activateSubWidget(Constants::TYPE_HIERARCHY_ID,
Side::Left) may be ignored (in case Type Hierarchy widget was
visible) or may recreate the widget and invoke
CppTypeHierarchyWidget::perform() for the first time
(in case when Type Hierarchy wasn't visible).
Just after this we emit typeHierarchyRequested(), which in turn
invokes perform() one more time unconditionally.

In order to fix it, we emit the signal typeHierarchyRequested()
first (which will invoke perform() only when the Type Hierarchy
widget was visible), and later call activateSubWidget(), which
invoke perform only when we are recreating a widget.

This shorten the freeze time for calculating big hierarchies,
like for ExtensionSystem::IPlugin, by 50%.

We do the same for CppIncludeHierarchyWidget.

Change-Id: If58fba4ba1dc32999d106fc2faa712e05442caf3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-12-01 13:08:33 +00:00
Leander Schulten
5b5ae97104 CppEditor: Introduce QuickFix settings and unify getter/setter generation
Introduces a QuickFix settings page where the generation of getters and
setters can be customized. The settings can be saved into a file that can
go into a VCS. All QuickFixes that generate getter/setter/signals/
Q_PROPERTIES now use the same backend. QuickFixes that generate getters/
setters are now extended to also generate signals and Q_PROPERTIES.

Fixes: QTCREATORBUG-1532
Fixes: QTCREATORBUG-17941
Fixes: QTCREATORBUG-12678
Fixes: QTCREATORBUG-15779
Fixes: QTCREATORBUG-11620
Fixes: QTCREATORBUG-22707
Fixes: QTCREATORBUG-20157
Fixes: QTCREATORBUG-21804
Fixes: QTCREATORBUG-19814
Fixes: QTCREATORBUG-14622
Fixes: QTCREATORBUG-19803
Change-Id: I50ed2dad9b4a637fbd87b3e1f2856060ad0ad920
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-10-14 10:12:44 +00:00
hjk
430a33dcd9 Core/Utils: Migrate further to Utils::Id
The coreplugin/id.h header is kept for downstream for now.

Change-Id: I8c44590f7b988b3770ecdc177c40783e12353e66
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-07-06 06:07:13 +00:00
Eike Ziller
5b364de168 Use dialogParent() instead of mainWindow()
There are very few reasons to use mainWindow() directly.
Especially for modal dialogs, using dialogParent() is important, since
that guarantees the stacking order in case of other dialogs currently
being open.

Change-Id: I7ad2c23c5034b43195eb35cfe405932a7ea003e6
Reviewed-by: hjk <hjk@qt.io>
2020-06-02 11:44:53 +00:00
David Schulz
3559af69db TextEditor: move rename symbol action to text editor
Task-number: QTCREATORBUG-21578
Change-Id: I9a873dcd38bacb2287c45973b6be0091c3eb9480
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-05-12 04:28:19 +00:00
Eike Ziller
27f6e838ee ClangTools: Add "Analyze Current File" to Tools menu and context menu
Add the action to "Tools > C++" and the C++ editor context menu.

Task-number: QTCREATORBUG-23348
Change-Id: I650e4d10e07ba227c6f89ab660ce7fa81263172e
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-03-30 06:16:37 +00:00
Eike Ziller
349de159c9 FileIconProvider: Load icons and create overlay lazily
If the icon is registered via file path, not the icon directly, we can
delay loading the icon and creating the overlay to until it is actually
needed.

Change-Id: Icfdc30ac0b717ff566a1064e4791e4bb23814958
Reviewed-by: hjk <hjk@qt.io>
2019-11-15 14:21:12 +00:00
Eike Ziller
e0b0a08e50 ExtensionSystem: Move away from QList
Qt 6 API will move away from it.
Use QVector for API and some std container for internal things.

Change-Id: Iff14d48a47d5ac52ade875d9c8c84ad8a4f577d8
Reviewed-by: hjk <hjk@qt.io>
2019-05-27 14:21:00 +00:00
Cristian Adam
d855b84c5d Qt Creator CMake port
Based on Tobias Hunger's work from a few months ago.

The CMake configuration needs libclang and Qt paths specified as
CMAKE_PREFIX_PATH.

Auto tests are run with "ctest". At the moment the pass rate is 87%.

Change-Id: Iba98e39bf22077d52706dce6c85986be67a6eab0
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-05-17 13:33:28 +00:00
Nikolai Kosjar
e0c7722441 CppEditor: Modernize
modernize-orgad
modernize-return-braced-init-list
modernize-use-auto
modernize-use-default-member-init
modernize-use-equals-default
modernize-use-nullptr
modernize-use-override
modernize-use-using

Change-Id: Ifa862782fb7b56ed3f93d9f98685c3af616797c2
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2019-02-08 08:39:58 +00:00
Eike Ziller
3c5650e514 Add macOS touch bar support
Introduce a generic Utils::TouchBar that implements a touch bar for
macOS based on QAction. Touch bars can be nested, and one is set to be
the application's top level touch bar.

Also add an ActionContainer for the touch bar. That allows us to manage
the layout of the touch bar the same way we do with menus.

Since the touch bar is an input device with very limited space, a
command in the touch bar needs to be specifically styled for the touch
bar by setting either touchBarText or touchBarIcon (or both).

Touch bars can be nested by nesting the ActionContainers. A nested touch
bar ActionContainer needs to specify an icon and/or text to show in the
touch bar button that opens that sub-bar.

Commands are only shown in the touch bar if they are valid within the
current context.

Implementation-wise we cannot use the standard NSPopoverTouchBarItem for
nesting touch bar levels. We cannot hide items in the touch bar, because
hidden items still take up space in the touch bar. So we need to rebuild
the touch bar regularly. Since the items we show are very dynamic, every
time the items in the toplevel bar change because of a context change,
any opened sub-level touch bar closes. That is why we maintain a stack of
touch bar levels ourselves, replacing the main touch bar with the current
level, and managing opening and closing the levels manually.

This patch adds buttons for Help, Bookmarks, Header/Source, Follow
(Symbol), Decl/Def, and a sub-bar for the debugger actions.

Fixes: QTCREATORBUG-21263
Change-Id: Ib63e610f21a993f1d324fe23c83a7f2224f434ac
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
2019-01-15 14:33:56 +00:00
David Schulz
95cba448a1 move find usages to TextEditor
In preperation for supporting find usages by the language client plugin

Task-number: QTCREATORBUG-21577
Change-Id: I7a6da3a9d53478c1d486e0ddc5829c9ea09a2a20
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-28 12:29:44 +00:00
Eike Ziller
8623a93998 Fix that bookmarks couldn't be added to .pro files with mouse
The area with the marks was not showing up.
This patch reverses the logic for showing the marks area to opt-out.
Almost all editors were opting in for it already. The AndroidManifest
editor, VCS base editor, and widget designer text editor opt out now.

Task-number: QTCREATORBUG-20339
Change-Id: Iccb6d0256618f7ef70e8921847ce2fd46fd660c0
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-06-19 07:59:17 +00:00
hjk
4e4111a92d CppEditorPlugin: Partially pimpl and avoid use of global object pool
Change-Id: I1e55848a9947ff0b4bffcdca717419db8f6f2fa5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-09 11:52:30 +00:00
David Schulz
0eb7bab20c Core: make useMacShortcut constexpr
Change-Id: I293b96428784b6efecac6dae4f2f9690af0027da
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2018-02-02 13:15:55 +00:00
hjk
289f2b170a CppEditor: Do not add QuickFixFactories to object pool anymore
Not needed anymore.

Also some cleanup, no 'using' in headers etc.

Change-Id: I8c4547d80d0c0ffd989d1efbc74687c9f56096a4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-02 12:26:32 +00:00
Nikolai Kosjar
5e861d2be6 CppTools: Move CppHoverHandler to CppTools
This is in preparation for clang code model to provide its own hover
handler.

Change-Id: Ifbdd96f427989bd5d1fbc4badb9c38108485c2f2
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-01-16 08:31:11 +00:00
Ivan Donchevskii
96ef6c797b CppEditor: split CppEditor and CppEditorWidget
Change-Id: Id3c815184f7f3bace0276e947f6b6f76e61ec6de
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-09-12 15:05:38 +00:00
Eike Ziller
73f2c0f4e8 Allow giving TextEditorFactory custom CommentDefinition
It was not possible to set custom comment styles.
Also simplifies the code for the predefined styles.

Change-Id: Id7f345d65b747bfac5a15e3eb15cd2beb106b281
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-04-26 07:34:29 +00:00
Eike Ziller
9443f7104b Remove the need to create ISnippetProvider subclasses
Change-Id: I1810aaa945136d9726a66dad41377429a6adc8e1
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-04-25 12:03:08 +00:00
Alessandro Portale
3624a663d8 Reduce usage of qApp in favor of static function calls
Q*Application classes have unusually many static functions. In many
cases in our code, these functions are unnecessarily called as instance
functions, using the qApp helper.

This patch replaces many occurencies of qApp with the according
Q*Application classname.

Change-Id: I6099a419fa7bf969891269c37ed7a9e817ef5124
Reviewed-by: hjk <hjk@qt.io>
2017-04-24 18:36:28 +00:00
Serhii Moroz
69da534f99 TextEditor: add right sidebar
Task-number: QTCREATORBUG-9436
Change-Id: Ic0406758a30d52c22c58433f5f35305b798cb462
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
2017-03-09 08:19:54 +00:00
Marc Reilly
4bbd9dc0dc cppeditor: add resource preview hover handler class
This adds a hover handler which will preview images
from within project resource.

Change-Id: I88bcb56a977e41ed4dc5bfe165e2c80d4396a21f
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-08-11 07:43:42 +00:00
Orgad Shaneh
928ba8aa84 CppEditor: Use Qt5-style connects
The heavy lifting was done by clazy.

Change-Id: I5ee3678f8293486cccfc634aaab5c75b066ed011
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-05-30 06:51:08 +00:00
David Schulz
898968b101 CodeAssist: Support only one quickfix assistant per editor class.
Currently we are just using the first that is found. Which could lead
to unexpected behavior. Adjust the API to make clear just one assistant
is supported per editor type.

Change-Id: I711e66b4c5c5f347118357a8bafa0ffc6d650f7e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-04-28 12:14:41 +00:00
Nikolai Kosjar
2aacc2bf6b Clang: Classify *.{moc,qdoc} as CXXSource
This leads to the "-x c++" arguments to libclang for these file types
and thus avoids crashes of libclang 3.6.

Task-number: QTCREATORBUG-16140
Change-Id: I6141615a1b0b7ad92d7151ad58c304eaf99fb4f3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-04-22 12:09:28 +00:00
Tobias Hunger
12889af047 Move C++ mime types from cppeditor to cpptools
Have the mimetypes and their registration in the same plugin
as their constants.

Change-Id: I350ab4eb0da3941ca9282ff98d8d0e158b568ef3
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-03-15 16:00:18 +00:00
Tobias Hunger
09cdd1c4a5 CppEditor: Register qdoc as a separate mimetype from c++ sources
Add a new constant for qdoc mimetype to cpptoolsconstants.
Make the CppEditor handle qdoc mimetype.

This change has one user user visible effect:
Adding qdoc files to a qmake project will no longer put those files
into SOURCES where qmake will then try to compile them. They will show
up in "Other Files" instead.

Task-number: QTCREATORBUG-15872
Change-Id: Ibbf9af0a84fab59138f6b9ab41f1bba737b455c2
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-03-15 14:35:08 +00:00
Tobias Hunger
750aeb919c Remove duplicate mime type constants from CppEditor
Use those in its dependency CppTools instead.

Change-Id: I376782863784a878e84ce2cd5d0c6da68b05ab61
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-03-15 13:54:50 +00:00
Tobias Hunger
397e7f4843 Update License according to agreement with Free Qt Foundation
* Update files in src/plugins

Change-Id: Ia5d77fad7d19d4bb3498e78661982f68729adb22
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 15:57:01 +00:00
Marc Reilly
403f0a612c CppEditor: Install color preview hover handler for editor
Change-Id: I9c7c2f085638a9b267ed2fc2df93267d5e9501ea
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2016-01-18 13:19:41 +00:00