aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppmodelmanager.cpp
Commit message (Collapse)AuthorAgeFilesLines
* C++: Offer only signals when completing in a connect() callChristian Kandeler2020-08-271-0/+110
| | | | | | | | | | | | | ... at the second argument. The logic is as follows: The clang code model checks whether the set of completions contains any signals. If so, it instructs the built-in code model to analyze the AST to find out whether the completion location was at the second argument of a call to QObject::connect(). In that case, we filter out all non-signals, because they are not valid at that location. Fixes: QTCREATORBUG-13558 Change-Id: I9c7d0bd16161c723aef822280626cd06ece7df93 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* TextEditor: Introduce shortcut for forcing a function hint proposalChristian Kandeler2020-08-111-0/+5
| | | | | | | | | | ... and support it in the ClangCodeModel. This allows users to get function signature(s) displayed regardless of where exactly the cursor is on the function call. Fixes: QTCREATORBUG-19394 Change-Id: I033e8774db93680bfc3ee52610b817e0ef8ccc76 Reviewed-by: David Schulz <david.schulz@qt.io>
* CppEditor:CppTools: Replace QRegExp by QRegularExpressionChristian Stenger2020-07-131-1/+1
| | | | | | Task-number: QTCREATORBUG-24098 Change-Id: Id1804a31162d0239659de33c1700354494c11689 Reviewed-by: hjk <hjk@qt.io>
* Cpp: Fix leaks in ClangCodeModel testsChristian Kandeler2020-06-191-1/+1
| | | | | Change-Id: I19d4dc445d82fd24361f1eb752d9f35ccadd3efb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* CppTools: Do not reindex all sources on project updateCristian Adam2020-02-201-3/+5
| | | | | | | | | | | | | | | | | When CMake was run it would cause an update, which would have a cancelAndWaitForFinished on the future interface. The CppTools would have the future interface added on all updates, and even though an indexing job would be finished, it would be picked up as active and cancelled, which would be interpreted as action from the user to cancel the indexing and cause a full reindex. This patch makes sure that if an indexing job has finished, it doesn't register as active, and only the jobs that actually do some work, and will be finished will wait for the cancel signal. Change-Id: If8a4db2a4a7a5707a360db84affe794ab0678d38 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* CppTools: Use a normal plugin pimpl member for CppModelManagerhjk2020-02-061-8/+4
| | | | | Change-Id: Id2c4b098084808070ef91de13c8338184e52141d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Utils: Rename FilePathList to simply FilePathshjk2019-12-181-1/+1
| | | | | | | The exact storage type does not really matter here. Change-Id: Iefec40f0f5909c8e7ba3415db4a11962694e1b38 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* CppTools: Move QtVersion and BuildTargetTypeEike Ziller2019-09-101-1/+1
| | | | | | | | | | | | | QtVersion to utils/cpplanguage_details.h which already contains similar flags. BuildTargetType to ProjectExplorer, next to BuildTargetInfo (but not in the same header to not pull that in everywhere). Removes dependency on ProjectPart from RawProjectPart. Change-Id: I5791065e4266f20c2657ee4b1b594df04b238a1c Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* VcsBase: Make dependency on CppTools optionalEike Ziller2019-08-151-3/+64
| | | | | | | | | | | | | The VcsBaseSubmitEditor uses CppModelManager to collect the symbol names from the affected files for completion in the commit message. Move the C++ code model code into CppModelManager, register it in the plugin manager, and call it via QObject means from the submit editor. This avoids a hard dependency from VcsBase to CppTools. Change-Id: I2fb34dbef153c1414820d711e7fc5596bcac1691 Reviewed-by: hjk <hjk@qt.io>
* Compile fix with recent Qt devhjk2019-07-291-25/+8
| | | | | | | | | The reasoning in 1b4766e26c6b did not take into account that the scope of QT_NO_JAVA_STYLE_ITERATORS may change over time, as done with f70905448f6 in Qt base. Change-Id: Ib1966ff26c4d36d5f62e149d6b45baa4aecf825d Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* More Utils::toSet/toListhjk2019-07-041-10/+9
| | | | | | | ... and unrelated cosmetic changes. Change-Id: I591b17fd5289831e701b683f8fb47816efd1fa67 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* qtcreator: Set thread pool stack size to 2MiBCristian Adam2019-06-191-0/+5
| | | | | | | | | | | | | Visual C++ sets 1MiB as stack size, macOSX has 512KiB. Both crash with a specified project. MinGW sets 2MiB as stack size, the specified project loads just fine. Fixes: QTCREATORBUG-22496 Change-Id: I6f19e74a681977e4fe1dceee292ea9c838999a1a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Utils: Rename FileName to FilePathhjk2019-05-281-9/+9
| | | | | | | | More in line with QFileInfo terminonlogy which appears to be best-of-breed within Qt. Change-Id: I1d051ff1c8363ebd4ee56376451df45216c4c9ab Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* CppTools: Add sourceFilePath to AbstractEditorSupportMarco Bubke2019-01-241-1/+2
| | | | | | | | | | Provide the source path to track a generated file source. You can for example get the modified time stamp for the source file and use it for the generated file content. Task-number: QTCREATORBUG-21876 Change-Id: Ia422e128c5cb7a3dce88960f126152c2f65afb41 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* ClangFormat: Refactor indenter to allow ClangFormat unit-testsIvan Donchevskii2019-01-221-1/+0
| | | | | | | | | | We do not build texteditor files in unit-tests so some tricks were required to make ClangFormatIndenter available. First simple unit-test proofs it builds and runs. Change-Id: I81d5ea099bd27fd1c1ed8b5b7877299dcc62a67f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppTools: modernizeAlessandro Portale2019-01-211-5/+5
| | | | | | Change-Id: Iaf02e4d026f1ac8b216833d83cd7a735e21ff60a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* Utils: Move C++ language details from ProjectExplorer to UtilsMarco Bubke2019-01-151-3/+3
| | | | | | | | We want to use them in the backend processes too so it's nice to share them in Utils. A concrete size was added too because they should be serialized. Change-Id: Id5eb8f46643d5159f034fc9559f68a08d7e5847a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* Utils: Introduce GlobalFileChangeBlockerOrgad Shaneh2019-01-081-5/+0
| | | | | | | | | | Tracks application state, and signals when it is changed. Supports forcing blocked state with reference counting. Change-Id: Ic173d42446b1b08bd4a1e7c1acf38c68644d30b3 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* CppModelManager: Remove method overload used only in testsBernhard Beschow2019-01-061-6/+0
| | | | | | | Use (and therefore test) the method actually used in production code. Change-Id: I4317517ef8a1779df4d46af3905790012ee98645 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* ClangFormat: Move settings to the Code Style widgetIvan Donchevskii2018-12-041-2/+0
| | | | | | | | | | | | | | | It makes sense to unify the indenter creation by replacing the CppCodeStylePreferencesFactory instead of removing it. We are reusing the same options page but with different kind of settings. With this change wizards will no more be confused by missing factory and will create the proper indenter. Fixes: QTCREATORBUG-21516 Change-Id: I38964d5fa1f2257617c66a1441db723d239a3237 Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* Clang: Fix naming conventions for *ModelManagerSupport* classesNikolai Kosjar2018-10-231-2/+2
| | | | | | | We use "Builtin" and "Clang" as prefixes, not suffixes. Change-Id: I6926aeb8f005176ef420c4421c257e3df61ee0b7 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
* Clang: Avoid starting backend jobs for inactive app and during VCS operationsNikolai Kosjar2018-10-161-0/+5
| | | | | | | | | | | | | | | | | | | | | ...to reduce file locking on Windows caused by clangbackend's parse/reparse jobs. Considering inactive application state should help for external VCS operations, e.g. on the command line. However, activating Qt Creator while such a VCS operation runs might still lead to undesired behavior, but this should be the less common case. VCS operations started from within Qt Creator should see less locking conflicts as we know when they start and finish. However, we just avoid starting new jobs - there might be still jobs running. Pending or new jobs will be started once Qt Creator is activated again and all VCS operations finished. Task-number: QTCREATORBUG-15449 Change-Id: I5f04c34f006e66162368efbdd58bd822a706f35e Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* CppTools/ProjectExplorer: Remove enum duplicationNikolai Kosjar2018-10-081-2/+3
| | | | | | | | ... between CppTools::ProjectPart and ProjectExplorer::ToolChain. Change-Id: I8b448747e454adbed77547460383b8515462cc81 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: Use clang-format for indentationIvan Donchevskii2018-09-121-1/+5
| | | | | | | | | | | | | | | | | | | This is the new experimental plugin based on LibFormat. It replaces the default indenter for CppEditorDocument and applies clang-format after the CR or the set of 'electric' characters. Uses the global .clang-format kept in QtC settings or the one for current project. Both can be configured. For indentation some style modifications and code manipulations are done to prevent line shrinking when it's not expected. Manual indentation uses unmodified style from .clang-format file. Change-Id: I6279b805e418e1804b553efa615f5c843f395a58 Reviewed-by: Marco Bubke <marco.bubke@qt.io>
* Add system include path to HeaderPath and merge ProjectPartHeaderPathMarco Bubke2018-09-101-8/+8
| | | | | | | | | | | | | System include paths are appended after other includes by the compiler. So we should set them as system includes and not as normal includes. Otherwise we change the include order. Headers in system include paths are not cluttering the screen with unwanted warning and by the way improve performance too. ProjectPartHeaderPath was a dopperganger of HeaderPath, so we merged them. Change-Id: I7c394b4098b697de79761499ffcd5913cc02d652 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Merge remote-tracking branch 'origin/4.7'Eike Ziller2018-07-051-0/+30
|\ | | | | | | | | | | | | | | Conflicts: qbs/modules/qtc/qtc.qbs qtcreator.pri Change-Id: I29916313f12e25f3942ac926f8e4d4490074978e
| * CppTools: Fix getting locator filters from the object poolIvan Donchevskii2018-06-281-0/+30
| | | | | | | | | | | | | | | | | | They are no longer inside the global object pool. Get them from CppModelManager instead. Task-number: QTCREATORBUG-20678 Change-Id: Ifb3221a812295e1dcfe8b59ea693a4b350cbcc2e Reviewed-by: David Schulz <david.schulz@qt.io>
* | CppTools: Fix memory leak of QFutureWatcher when canceledHannes Domani2018-06-081-1/+2
|/ | | | | Change-Id: Ia9cd428e3bed193167903b6ffa080e4886193789 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* ClangTools: Always use CompilerOptionsBuilder for clang toolsIvan Donchevskii2018-04-131-13/+0
| | | | | | | | | | 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>
* CppTools: Remove processEvents call from follow symbolIvan Donchevskii2018-03-191-4/+5
| | | | | | | | 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>
* CppTools: Remove resetFilters from CppModelManagerIvan Donchevskii2018-03-091-13/+1
| | | | | | | | Without object pool resetting filters does nothing and therefore is not needed anymore. Change-Id: Id5439d11b0ee2564d7573b95c0c922d7fd7da59e Reviewed-by: hjk <hjk@qt.io>
* CppTools: Do not add LocatorFilters to global object poolhjk2018-03-081-9/+0
| | | | | | | Not needed anymore, they are more directly accessible nowadays. Change-Id: Ibe16ab1281a16b05e02fb20c0722d87196d99365 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* CppTools: Get OverviewModel from model managerIvan Donchevskii2018-02-091-0/+6
| | | | | | | | Move ownership and add the placeholder for future clang based OverviewModel. Change-Id: Ia44d2c1d0db59b40239d1f7934bf37a02e4b14e6 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppTools: Apply 'static' pattern to StringTablehjk2018-02-071-6/+6
| | | | | | | | This also fixes a crash on loading (some?) projects introduced in 577bf7c08a. Change-Id: Ie35d466fa3b84b183118fe93f55393a4c59755de Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppTools: move locators ownership to ModelManagerIvan Donchevskii2018-01-171-9/+111
| | | | | | | | | Move locator and find filters ownership and initialization to ModelManager. Initialize builtin filters by default and provide methods to set them from plugins. Change-Id: I4cc82ecff3415329a5f97b1be9dcc45e6103bf5a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppTools: Move CppHoverHandler to CppToolsNikolai Kosjar2018-01-161-1/+6
| | | | | | | | 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>
* CppTools: Improve a function nameNikolai Kosjar2018-01-161-2/+2
| | | | | Change-Id: I30f9048aff18440d8cc6a6247f5fd5bcdba5058d Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
* Clang: add globalFollowSymbol to RefactoringEngineIvan Donchevskii2017-12-141-3/+16
| | | | | | | Allows to follow outside of current TU. Change-Id: Ieea2fd72bfdf6d60a988b40efcf2f41c5a71d045 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* Merge remote-tracking branch 'origin/4.5'Eike Ziller2017-11-241-2/+0
|\ | | | | | | Change-Id: I32715e2fdbb14e4fccc4c58d3fd6052d7c1127f3
| * CppTools: Fix initial macro parsing for generic projectOrgad Shaneh2017-11-241-2/+0
| | | | | | | | | | | | | | | | | | | | | | The extra macros in the config files are being read in CppModelManager::internalDefinedMacros(), but they also affect the language features in ProjectPart::updateLanguageFeatures(). Task-number: QTCREATORBUG-1478 Change-Id: Ic197b0b7d4cc6e6a74637da0c710b0630daae25c Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* | Clang: use local renaming based on ClangCodeModelIvan Donchevskii2017-11-201-2/+10
| | | | | | | | | | | | | | | | Provide refactoring engine for ClangCodeModel and implement missing methods. Change-Id: If5c913e0c5a7941cd2ced54d0fcfa4d625eadc93 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* | Clang: implement globalRename based on clang IndexIvan Donchevskii2017-10-251-3/+3
| | | | | | | | | | | | | | Has the same limitations as findUsages. Change-Id: I8de4df2ecbfd8a4f3073666994398dc43af0d73c Reviewed-by: Marco Bubke <marco.bubke@qt.io>
* | Clang: implement findUsages with existing indexIvan Donchevskii2017-10-241-0/+7
| | | | | | | | | | | | | | | | | | | | | | Functionality is limited to the abilities of current index which is not updated and is generated only at project open. Search box temporarily doesn't allow to "Search again". Change-Id: Id1047f27ad0aafc901f06aa51ad38ceab95eaebb Reviewed-by: Marco Bubke <marco.bubke@qt.io> Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* | CppTools: add multiple refactoring engines supportIvan Donchevskii2017-10-171-8/+39
|/ | | | | | | | Make model manager able to select the most functional refactoring engine from the available ones. Change-Id: I74031c910706fd694a0a7def022531501f1ea005 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* C++: remove builtin RefactoringEngine dependency from CppEditorIvan Donchevskii2017-09-221-4/+9
| | | | | | | | Move CppRefactoringEngine to CppTools and builtin member ownership to model manager. Change-Id: I3e72308559fd2928229f9f25d4dd09beb3f56c34 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* C++: remove builtin FollowSymbol dependency from CppEditorIvan Donchevskii2017-09-221-1/+1
| | | | | | | | Move FollowSymbolUnderCursor to CppTools and builtin member ownership to internal model manager. Change-Id: I97a4f744ec1709ccc0b34fb67b58680973ef566f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* CppEditor: refactor FollowSymbolIvan Donchevskii2017-09-151-0/+6
| | | | | | | | Create an interface to get the ability to use another FollowSymbol implementation Change-Id: I5802f62523ff3ee47b8a14e487adf43edcb6c9b1 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* Convert macros from plain QByteArray to a vector of structsMarco Bubke2017-09-141-25/+23
| | | | | | | | | | | The old code model expected the macros as C++ formatted text ("#define Foo 42) but newer targets like the Clang codemodel expect key value arguments like "-DFoo=42". So instead of parsing the text again and again we use an abstract data description. Task-number: QTCREATORBUG-17915 Change-Id: I0179fd13c48a581e91ee79bba9d42d501c26f19f Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* ProjectExplorer: Move built-in parser workarounds to built-in code modelNikolai Kosjar2017-03-161-1/+8
| | | | | | | | | | | | | | | | | | ...so that only the built-in code model parser sees them, but not the clang code model, which has problems with them. The specific case here is due to definition of __int32: winnt.h:3077:1: error: functions that differ only in their return type cannot be overloaded intrin.h:357:31: note: previous declaration is here While moving, drop __MSVCRT__, which seems to be a predefined macro of ancient MSVC versions, see https://sourceforge.net/p/mpg123/mailman/mpg123-devel/?viewmonth=201010&viewday=24 Change-Id: I4b8c49ed4bdc942a2190dbae3c260f3a1a8078a4 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* Revert "CppTools: Do not put configuration document into global snapshot and ↵Nikolai Kosjar2017-03-071-3/+11
| | | | | | | | | | working copy" This reverts commit 05942b63f8bad6d6787fea10c31f10458cdccd06 because it breaks refactoring, e.g. Q_PROPERTY generators. Change-Id: I9a14b912ba72663f08ea99e7e066d824b18da4b0 Reviewed-by: David Schulz <david.schulz@qt.io>