This change limits the set of tokens that fall under
Token::isOperator(). That allows cpphighlighter.cpp to
distinguish operator tokens from punctuator tokens
(without changing any logic in cpphighlighter.cpp).
This change moves punctuators from "Operator"
to the "Text" style category where they belong.
Punctuators are not operators. Punctuators are
dumb text tokens.
Why don't we let the clang backend alone separate
these tokens for us?
1. Clang is slow on big files. Sometimes the
highlighting dictated by clang is painted _seconds_
after cpphighlighter.cpp runs. CppHighlighter is way
faster so we use it to "prepaint" code while clang is
busy in the background.
2. Secondly, clang cannot yet handle all operator types.
In particular, none if its "operator cursors"
CXCursor_UnaryOperator:
CXCursor_BinaryOperator:
CXCursor_CompoundAssignOperator:
CXCursor_ConditionalOperator:
includes the -> and . operators.
We still need CppHighlighter to paint those tokens.
However, once clang has finished processing the file some
operator tokens will be repainted. We need clang to get
all operators' semantics. In particular, we need clang to
tell us if < is a "smaller than"-operator or part of a
template parameter like set<int>.
Task-number: QTCREATORBUG-19659
Change-Id: I952cb58f7c79134b3281e2a8221425cc1d0ad263
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
In case of C-header or C-source files the MSVC
language version was not switched to C.
Fixes static analyzer runs for C files.
Task-number: QTCREATORBUG-20198
Change-Id: I1da31a1048b7c258642cf00f5084681f5d384ee6
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
... over the whole project.
Generate and read serialized files to get diagnostics.
Change-Id: Iafc25fc70443107a040a995efc038aed35102bbf
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Make line/column label always visible, and move context drop down to the
right, so it vanishes first. Reduce the minimum size and stretch of the
outline drop down, so the context drop down doesn't vanish too early
either.
Task-number: QTCREATORBUG-15218
Task-number: QTCREATORBUG-19386
Change-Id: Ie2ced1cb62a27a0129438f5605d5711bfac50cd0
Reviewed-by: David Schulz <david.schulz@qt.io>
A new set of scalable and themable icons with unified look as provided
by Diana.
Task-number: QTCREATORBUG-20325
Change-Id: I68498b034e9e43fbb61511a38d9c7fc0003ab076
Reviewed-by: hjk <hjk@qt.io>
In cases where plugins extend an existing settings category of a plugin
that they depend on anyhow, they do not need to specify the translated
display name and icon for that category.
Some options pages were already not setting the icon, but still the
translated name, which makes even less sense.
Clean up this mess, only setting display name and icon if that is
necessary.
Change-Id: I8bc9d0c51b11d48f1d847337838704d663e70b45
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
The parse context drop down was taking a content based, fixed amount of
space in the editor tool bar, without being shrinkable.
That was especially bad if you have a long project / target name. When
working with a small window / split, the outline drop down would be
dropped from the tool bar.
This patch makes the parse context drop down shrinkable (with a small
minimum size), and gives the outline drop down a slightly higher
priority for getting tool bar space.
Task-number: QTCREATORBUG-19386
Change-Id: I87e3ee2e411a43b1f398ffd24fe5608e4df02af6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
We do not ship clang-cl anymore which makes it impossible
to run clang with MSVC options.
Secondly we used to we tweak compiler options quite a bit so
why not to switch to CompilerOptionsBuilder totally?
Change-Id: Id323cb554587afaea7d9aa530e947a45a03922d1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
...as they are generated by e.g. Q_OBJECT use.
Previously we have avoided Q_OBJECT warnings by using
-Wno-unknown-pragmas (Qt Creator build with libclang 3.9). With the
upgrade to libclang 5.0 GCC pragmas can now be parsed by clang and the
related warning option thus changed to -Wunknown-warning-option.
Note that previously -Wno-unknown-pragmas was part of every built-in
configuration and visible in the UI. Now that option and the new one are
added behind the scenes (not visible in the UI anymore) so that every
diagnostic configuration, also the copied/customized ones, will profit
from it. Still, by putting this hidden options first on the command
line, the user can overwrite them with his own configuration if desired.
Task-number: QTCREATORBUG-17460
Change-Id: I68aaec1b4791522bd8dc4e5fdb405cc5b9c9f514
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
In release builds overview model tree is built earlier
then the job with token information is completed.
Change-Id: I1a563551e813996001fb97924ac441e2b7d599b9
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
processEvents is a bad way of dealing with asynchronous
requests. Use QFutureWatcher for that purpose.
Change-Id: I3839cb9db80a6d391f6af1178e96986a325b7b99
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
The old way was not flexible enough.
With these options it's possible to just use your
config file or set tidy command line yourself.
Change-Id: I1bace40986668dee5e1b30c9d03090a3fd22e253
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Without object pool resetting filters does nothing
and therefore is not needed anymore.
Change-Id: Id5439d11b0ee2564d7573b95c0c922d7fd7da59e
Reviewed-by: hjk <hjk@qt.io>
Dynamic casts between library boundaries tend to fail. Add an "explicit
cast" to CppClass via virtual functions as a quickfix.
This is a recurring issue, e.g. d2769f3003, 3f11ef9216 and
2ffd0e2d0d to name just a few...
This was introduced in 5e861d2be6
Task-number: QTCREATORBUG-20001
Change-Id: Ie5a89a028d587e4e9d1ecec920a7c7d17497dbde
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Not needed anymore, they are more directly accessible nowadays.
Change-Id: Ibe16ab1281a16b05e02fb20c0722d87196d99365
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
See friend declaration below. That's the reason why we decided to use
'class' almost everywhere.
Change-Id: Icd8ba99528eac28721b403cac0a992ee4d367265
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
5e872c0fcd changed the base class to TreeModel which
needs to have TreeItem inserted to fully work as intended.
This patch makes the overview model work without running
into countless soft asserts when using the builtin code model.
Change-Id: I875529bef03ea2cd9a226b05410fd05e247eded1
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Nikita Baryshnikov <nib952051@gmail.com>
When we get the file working copy it never contains "\r\n"
line endings. Let's provide the same behavior when we have
no working copy and read the file from disk.
Task-number: QTCREATORBUG-19905
Change-Id: I720d62426860dcdcdd8520db5430d9f4f5900ab6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Otherwise it looks like the options can be customized without copying
the configuration.
Change-Id: I7df26f8f2e3f566f659d12258730d2f514e9d71b
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
If a built-in/read-only configuration is selected, show a hint that it
needs to be copied to make customizations.
Change-Id: I62fc51b7548ec7cd6a156a0be84d9dcb41849ee7
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Move ownership and add the placeholder for future clang based
OverviewModel.
Change-Id: Ia44d2c1d0db59b40239d1f7934bf37a02e4b14e6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Do not return Document or Symbol. Instead use Link
or LineColumn directly as return values.
Change-Id: I1863d7c3b4985ffe2ae5454622227075ebdc2de7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Introduce abstract model to be able to use clang
based version of it in follow up patches.
Fix warnings and modernize source code a little.
Move OverviewModel to CppTools.
Change-Id: Idcc9bf03cad047026a456bd01063597a1eb95147
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
...by clarifying the widget hierarchy. Ensure that the combo box at the
top is perceived as the main widget:
* Remove the "Configuration to use:" label so the combo box gets more
horizontal space and thus dominance. Also, rename the group box
header/label from "Clang Diagnostic Warnigns" to "Clang Diagnostic
Configuration".
* Move the command line text edit below the combo box into its own tab
page to clarify the relation to the tidy/clazy tabs.
Change-Id: I97a0785678e33b94746046d07a911422b1469890
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Basically move it from CppTools to CPlusPlus
to be able to use it there.
Change-Id: I0af80f93bdc029824397ceafdf940cb86c4382b0
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This also fixes a crash on loading (some?) projects introduced
in 577bf7c08a.
Change-Id: Ie35d466fa3b84b183118fe93f55393a4c59755de
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
The group identifier is as good as the actual object, so use that
on the generator and the consumer side.
Change-Id: I6ccd54a2362631af0b50583f12563b8e41a5dd78
Reviewed-by: David Schulz <david.schulz@qt.io>
As a side effect, clazy/tidy options become available for project
specific customization in the projects mode.
Change-Id: Id72762dedd857915139c15f532d2f1c6d1f43edb
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>