Commit Graph

2081 Commits

Author SHA1 Message Date
Christian Stenger
2475da1bb5 Replace some more occurrences of QStringList() << pattern
Change-Id: Ic7193ac3a741763479a9ef129ed05cb7ca64f1e9
Reviewed-by: hjk <hjk@qt.io>
2017-02-08 14:27:48 +00:00
hjk
56409f5afa Replace a few occurrences of QStringList() << ...
... by something shorter.

Change-Id: I363b4e509adb07997517b2d233246a333aea4aea
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-02-08 11:21:45 +00:00
Nikolai Kosjar
50a07695bd CppTools: Report also C language back to project
...for Project::setProjectLanguage().

Change-Id: I77347c4597061fb48782c629d5ad6898028fee13
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-02-06 14:31:49 +00:00
Nikolai Kosjar
38ba61ec4f CppEditor: Rework showing/switching parse configurations
* Move the combox box for switching the parse configurations out of the
  "Additional Preprocessor Directives" dialog ('#'-button) to make it
  better visible/accessible. Also, decouple the extra preprocessor
  directives from the concrete parse context since this is not anymore
  in same dialog.
* The combo box appears only if multiple parse configurations are
  available for a file.
* The first time multiple parse configurations are detected, an info bar
  is shown that points the user to the combox box. A "Do Not Show Again"
  button is provided.
* Upon selecting an entry, the preferred parse configuration is saved as
  part of the session. The setting can be cleared with the context menu
  entry on the combo box.

Follow-up changes need to ensure that the display name and/or tooltip is
unambiguous, e.g. for qbs and cmake projects.

Change-Id: I9e9773704187291524ad7b605bfdddd83ef5b19d
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-02-03 11:58:27 +00:00
Christian Stenger
062edcaa94 Fix compilation using Qt5.6 on macOS
Change-Id: I94c16668d8fd64c0974f7f1c459a1c46e1cbc9e3
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-02-03 08:10:59 +00:00
Jarek Kobus
32b628e16b Remove unneded includes of QStringBuilder
Change-Id: I2f9690d9374b44731926a1a1532994e877809e26
Reviewed-by: hjk <hjk@qt.io>
2017-02-02 15:26:54 +00:00
Nikolai Kosjar
e2e78c6a5d CppTools: Distinguish between ProjectFile::{unclassified,unsupported}
There was no way to determine whether ProjectFile::classify() was run or
not. Now, ProjectFile::classify() returns ProjectFile::Unsupported
instead of ProjectFile::Unclassified.

Change-Id: I660d0e42044bdefcac38058c6f4a3425983a6d93
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-02-02 14:46:13 +00:00
Nikolai Kosjar
cfa25be0a4 CppTools: De-duplicate printer of ProjectFile::Kind
Change-Id: I66d2841ac76a73ef7c6548b98438d5c7b3acc4c3
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-02-02 14:21:37 +00:00
Ulf Hermann
c70b689526 Unify projectexplorer language IDs
We don't need two IDs for C++ and the QmlJS ID should look the same as
as the others.

Change-Id: Ib9747f6b36a90bb652951d85eec69666615670c4
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-30 15:34:46 +00:00
Marco Bubke
c072cdfb88 Clang: Add ClangPchManager
Compiling every header file again and again is quite time comsuming. There
are technics to improve this like preambles(a kind of automated
precompiled header) but they don't share their data between translation
units. This approach provides an automatically generated precompiled
header for every project and subproject to improve the loading time.

Change-Id: I34f5bd4db21951175920e2a9bbf6b97b1d705969
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-01-30 13:55:58 +00:00
Nikolai Kosjar
40f31139e4 CppTools: Remove excess include
Change-Id: Idacd899a206f17f0b023fb7ad0a3b4406d5edbea
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-30 08:13:28 +00:00
Nikolai Kosjar
7415964819 CppTools: Fix choosing project part after project open
As long as there are project parts for a source file, always determine
the best project part, instead of trying to stick to the previous one.
This ensures the best project part at all times and simplifies the code.

Change-Id: I25ea3eb43a5a3e6d93688d4b8965f596dc9ae22b
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-26 07:52:54 +00:00
Nikolai Kosjar
bddfe21961 CppTools: Fix using updated project part
1. Open a project consisting of two subprojects referencing the same
   source file.
2. Open the source file.
3. Click '#' in the editor toolbar and select the second project (part).
4. Update the project file, e.g. add a define
   ==> Editor does not reflect the added define

This is due to comparing project part pointers. Fix by using the project
part id that remains stable across project manager updates.

Change-Id: Ifd1a113e55ebe2ecf036cd7caafdbfd6e4cdf415
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-26 07:50:11 +00:00
Nikolai Kosjar
07f32ef57a CppTools: Use fallback project part if project is closed
...instead of sticking to the old one.

If a project is closed, the editor should reflect that. It also simplifies the code.

Change-Id: I9b8a94513d3b06a238cfc4ee60c11c0d0da3d93f
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-26 07:50:05 +00:00
Nikolai Kosjar
ec3dcfd6ad CppEditor: Show info bar for project-less file
While at it, centralize the code for handling the info bars and actions.

Change-Id: Ied62e3db268aaff3ef87e246bfe2b50399341be3
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-26 07:35:30 +00:00
Tobias Hunger
f50d73cc3c TemporaryDirectory: Fix failing test cases
Change-Id: Ied61a1de9d226815da1eaa050a09dde30091d006
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-01-25 08:16:59 +00:00
Nikolai Kosjar
0b8df41387 CppTools: Provide hints about chosen project part for editor document
Parse issues can have multiple reasons (invalid kit, not a project file,
actual parse issue) and we should be able to tell them apart. With this
change, we can distinguish between the fallback project part and a
ambiguous project part.

Follow up changes will use this to display more accurate diagnostics.

Change-Id: Icc8767607cc17dc14d6227b07f34e81ba5525a96
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-24 14:41:48 +00:00
Filippo Cucchetto
4b1f8f3609 ProjectExplorer: Added support for registering custom languages
Change-Id: I728a2ed1ef7d9f44d7c2b59d27d6e23444cd3bb5
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-01-23 11:19:11 +00:00
Tobias Hunger
c6f90e575e Utils: Introduce a TemporaryDirectory and TemporaryFile class
Both wrap the corresponding Qt class, but make sure all temporary files
or directories are created inside a "master temporary directory".

Change-Id: I55461be507c828c965224c02863ea5ed9bbf9498
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2017-01-20 12:17:10 +00:00
Marco Bubke
4d6b05c522 CppTools: Fix uninitialized memory
We cast it later to int64 for performance reasons so everything should be
filled by zeros.

Task-number: QTCREATORBUG-16672
Change-Id: Ib79ffa5cef79104dd3454111b52a6615c4b48917
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-01-17 16:45:24 +00:00
Marco Bubke
7dbd869e5b Fix exports for shared libraries
We use "shared" to define a shared library and not dll.

Change-Id: Ia97ebd0042a7ef0f33eadaa448d9a44b42331ad1
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-01-16 18:21:17 +00:00
Nikolai Kosjar
32094eeb18 CppTools: Remove excess call to ProjectPart::updateLanguageFeatures
It is already called by BaseProjectPartBuilder::createProjectPart().
Besides ProjectInfo::finish() should not modify the project parts.

Change-Id: I4dc8276c94574a01432b7f98b9284e3bdf1b9f0b
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-16 13:32:42 +00:00
Nikolai Kosjar
e4e6572661 CppTools: Allow interpreting ambiguous headers as C headers
...instead of C++ headers.

For the Clang Code Model this results in using "-x c-header" instead of
"-x c++-header".

This introduces a new option in Options > C++ > "Code Model" to
configure this.

Change-Id: I8a0ce8fa6155f5ef58743ebc7f1d0b500fbf6599
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-01-16 10:17:50 +00:00
Eike Ziller
7f8aa3a7be Make some plugins hidden by default
Hide core plugin, hello world plugin, and plugins that only provide the
base for other plugins.

Change-Id: I7f4a29a265d760b2a759122be153c7f06bd40bd2
Reviewed-by: hjk <hjk@qt.io>
2017-01-09 12:25:13 +00:00
Nikolai Kosjar
9861a58400 CppTools: Prioritize project parts with selectedForBuilding=true
...when selecting one for the editor document.

This flag is only set by the QmakeProject.

Change-Id: I648886e12148bd1ebeccca52d9faaf4b528597c9
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-19 09:21:19 +00:00
Nikolai Kosjar
0718f536a7 CppTools: Show ProjectPart::selectedForBuilding in inspector
Change-Id: I8a662565eb5e12fd3dbabf00427f34c98030a55e
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-19 08:36:59 +00:00
Nikolai Kosjar
602c873d3e CppTools: Reparse editor documents after active project change
Change-Id: I010709c866291bf59c27f4a05765e1ab0efd28af
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-16 13:56:31 +00:00
Nikolai Kosjar
bd66d5ac05 CppTools: Remove some duplication
Change-Id: I8c84660b28c3e76b2cedd08ff3b44a38583f38a0
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-16 13:56:26 +00:00
Nikolai Kosjar
5421615070 CppTools: Rename updateHelper -> updateImpl
Change-Id: If1a1fb97aa2bcfad186c013f2b2cc4b94c66001e
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-16 13:56:21 +00:00
Nikolai Kosjar
566ab175b3 CppTools: Prioritize project parts from active project
...when selecting one for the editor document.

Change-Id: I85066aaa0862870cb2db2fb2cb40c2b2c23b2cac
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-16 13:56:16 +00:00
Nikolai Kosjar
ce1c6b2258 CppTools: Extract ProjectPartChooser
...and put it under tests.

Change-Id: Id4bd2391abd1dfdc23640e871453558566cb0693
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-16 13:40:23 +00:00
Marco Bubke
1e3f2eec8d Clang: Consolidate all ClangCompilerOptionsBuilder into one implementation
We used the same code in different but don't shared it. From a bug fixing
perspective it's actually not that smart.

Change-Id: Iaaffc883229e259ff77f95b5cf0a8f0d8b5117df
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-12-15 10:18:15 +00:00
Nikolai Kosjar
c82d372a41 CppTools: Ensure that the C++ project part is the first one
...for a given file in the ambiguous case (CppModelManager::projectPart).

There are several places where the first one will be preferred if there
are multiple project parts associated with a project file.

Change-Id: Ic01ea06277bc10f872238dcc181a55532b5783be
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-14 11:34:57 +00:00
Nikolai Kosjar
0265442c93 QMakeProjectManager: Use ProjectPartBuilder
...as the other project managers.

This removes extra code paths, duplication and improves classification
of source files (ambiguous headers).

Change-Id: Iae05cbbc61ab2e5dd841ae617bec994e0a1e52d5
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-12-13 14:55:36 +00:00
Nikolai Kosjar
02d8e2af1b CppTools: Clean up ProjectInfo
Change-Id: I5d0db45d9fdb624bb6cc55d7f04061d553f13bce
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-13 09:15:25 +00:00
Nikolai Kosjar
7381736cf3 CppTools: Clean up ProjectPart
Change-Id: Ia7969ceb52ffb25e7c63b24bc33b091001e9b50a
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-13 08:33:14 +00:00
Nikolai Kosjar
a10bfb8400 CppTools: Do not hardcode default language version
...instead, use the latest we support.

Change-Id: I7e7768bc4bc31de1fe0f441c03f3ab5d677d76e8
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-13 08:33:09 +00:00
Nikolai Kosjar
602ad72d42 CppTools: Refactor ProjectPartBuilder
...and add some basic tests.

Introduce the abstractions ProjectInterface and ToolChainInterface in
order to break the dependency to the ProjectExplorer. Also, some simple
logic can go there to simplify the (Base)ProjectPartBuilder.

Change-Id: I6c50a1804ce62098b87109931eb171f5c2542937
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-13 08:33:04 +00:00
Nikolai Kosjar
3a369552c6 CppTools: Classify ambiguous headers depending on other files
This applies for all project managers, except qmake. The qmake project
manager will make use of this in follow up changes.

Before, "foo.h" was always recognized as a CXXHeader. Now, it depends on
the other files. E.g. in a file list {"foo.h", "foo.c"} foo.h is now a
CHeader. In {"foo.h", "foo.c", "bar.cpp"} the file "foo.h" is ambiguous
and we will create two project parts, one where it is a CHeader, the
other where it is a CXXHeader.

Change-Id: I50505163368742584b1380c284d42cbe07cb4fc9
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-12 13:49:09 +00:00
Nikolai Kosjar
05942b63f8 CppTools: Do not put configuration document into global snapshot and working copy
These are remnants of the time when we had only one snapshot.

Change-Id: I6ff4db645d1065a0ef195834890e0774e2e2c60e
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-12-08 08:52:17 +00:00
Nikolai Kosjar
3602033fca CppTools: Clean up ProjectFileCategorizer
Change-Id: Ia6954810ad49d43629be2db074d620ab71a09cee
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-08 08:35:42 +00:00
Nikolai Kosjar
4580e88cbe CppTools: Extract ProjectFileCategorizer
Change-Id: Ib7a5c3c61b0ea172cbc6a3ac7c94e77ffabc0db4
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-08 08:35:34 +00:00
Nikolai Kosjar
c961018a63 CppTools: Clean up ProjectFile
Change-Id: I01212115566c6bf26268b66fef96d50b7e93b96c
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-08 08:35:25 +00:00
Nikolai Kosjar
6b2270e178 CppTools: Clean up indentation in CppTools.mimetypes.xml
Change-Id: Ibe8c8b32f659156d9bfba7ec26e0ee2cd5b04f94
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-07 14:35:02 +00:00
Nikolai Kosjar
8916e81c4e CppTools: Make objective c extension *.m unambiguous
...and thus avoid reading the file.

The other candidate was "text/x-matlab".

Change-Id: Ifb36b817cda654bcda37b7d675c2df4e60525a2b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-12-07 14:34:57 +00:00
Nikolai Kosjar
52ed363594 CppTools: Display header paths as view in code model inspector
Change-Id: I418cbc7200d9aee0862a484bb11cd23a632828b3
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-07 11:30:07 +00:00
Nikolai Kosjar
e7d74e1608 CppTools: Show file kind in code model inspector
Change-Id: I5cdc6ec672a970a6fcfa52dfa14c2f515cf27f6d
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-12-07 11:30:02 +00:00
Nikolai Kosjar
521423b433 CppTools: Call ProjectInfo::finish when we get it
No need to require the project managers to do this. Also, it is easy to
forget.

Change-Id: I96f7a5e5547418678af9653e5753c372f0880e5a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-12-06 14:34:39 +00:00
Francois Ferrand
38ae5aec10 C++: Fix handling of Objective-C/C++
- Objective C/C++ was not enabled in highlighter.
- QMake project part for Objective C/C++ did not have ObjectiveC extension enabled.
- As languageFeatures.objCEnabled is a bitfield, it was actually always set to 0.
- Highlight ObjC class & protocol declarations.
- Highlight ObjC message passing.

Change-Id: I64d12c9509058d05f7adce94598cb7ce91727ac8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-12-05 10:27:58 +00:00
Tobias Hunger
6a16a5bae0 CppTools: Initialize members
Change-Id: Id57982ad7fcd6756a95213e16aa59b41a2a329e1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-11-30 09:47:23 +00:00