Commit Graph

2674 Commits

Author SHA1 Message Date
Erik Verbruggen
f7c68f6baf C++: change working-copy to work on UTF-8 encoded QByteArrays.
These not only take less space than UTF-16 encoded QStrings, but due to
the caching in the CppEditorSupport also take less time to build.

This patch also fixes a number of possible encoding issues, where files
and constant strings were (falsely) assumed to be UTF-8.

Change-Id: Ib6f91c9a94ebed5b5dfbd4eb2998825c62c72784
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-09-11 09:43:14 +02:00
Erik Verbruggen
3a5d3a2fe9 C++: unify highlighting/code-completion support "factories".
Both semantic highlighting and code-completion go hand-in-hand, so now
the ModelManagerSupport class acts as a "factory" for the model manager.
Depending on the mime-type of the document in the editor, the model
manager will return the appropriate highlighter or code-completion
engine. If none is registered, the built-in fall-back is used.

Change-Id: I3e5dbb0e3b58e077dd5eda9aecb2ce5d448ac0b8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-10 11:45:38 +02:00
Erik Verbruggen
87a3aac18f C++: add fallback project part querying
When a file is not part of any other project part, this project part can
be used to get at least some compiler flags, defines, etc. to use. This
can happen when either a file outside a project is opened, or when the
project description is incomplete.

Change-Id: I5d595fae7195e8b61dbad14368b6cae9eb15c21b
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-10 07:36:25 +02:00
Nikolai Kosjar
bbdee91bc9 CppTools: Handle erroneous statements in FindMethodDefinitionInsertPoint
...at end of file.

Change-Id: Ife8142cd9cf3c5e4be2594b7cc635e5ab7b9e946
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-09-09 15:48:59 +02:00
Christian Kandeler
c2ac0902ed Move some functions out of defaults.js and make them project properties.
The one that is left is the only one that's actually a function taking
real input.
This saves a number of includes.

Change-Id: I77e777bbf6ed7ed4086f9a40de4dc3dd8c91a7af
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-09 12:04:01 +02:00
Christian Kandeler
0e66ac1e54 qbs project files: Fix some dependency exports.
Change-Id: I7049fcaab77639c17c4d0e74f7d9360a80fafcaa
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-09 12:03:44 +02:00
Erik Verbruggen
b4a1bd415f C++: clean-up CppCompletionAssist.
This is step 1 of 2 for merging the various provider factories into a
single class. Merging has the advantage that selecting based on editor
(content) mime-type only has to select one class, instead of re-doing
the selection for each class separately.

Change-Id: I11f815151bd4769ae6028b636793d6a80d02e202
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-09 11:59:14 +02:00
Leena Miettinen
83aad38cf6 Doc: edit cpptools docs
Remove \briefs from function descriptions and use standard
wording in them.
Use standard wording for \enum.
Replace \param with \a.

Change-Id: If429b6fc67ef6d1313c18f6111aa84f9c996189f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-09-09 11:24:23 +02:00
Erik Verbruggen
7516ef4969 TextEditor: get CompletionAssistProvider from editor.
And not from the global object pool. This way, the editors that have
different highlighters for various language dialects, or editors that
support multiple languages in a single editor, can decide themselves on
what CompletionAssistProvider to provide.

Change-Id: Ieebc4a8e7b3de6470fdb8103035aa3b8b2ba6598
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-09 10:15:55 +02:00
hjk
aadb6f16af SessionManager: Apply 'static' pattern
Change-Id: I370f72fcf7a24216ee189979ce6b5c8bfc5f4140
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-09-05 12:28:12 +02:00
Nikolai Kosjar
48d1e8ebbf CppTools: Tests: Fix leaving test file around
Change-Id: I232194e2693a8024ff67945cbc70049e52b9ef5d
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-09-05 08:21:04 +02:00
Tobias Hunger
f5a7a74191 Find: Turn SearchResultItem struct into class
Change-Id: I0ef59e409310c893b790d3182fcc2a91664e83c9
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-09-04 16:23:02 +02:00
hjk
98917598d3 ProjectManager: Use Core::Id for progress types
Change-Id: I72993fda50ad70ad2d7c2f449923ac6e34b9e737
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-09-04 14:59:06 +02:00
Alexey Semenko
da4c4b80f3 Completions: move continuations upper in proposals list.
Since fuzzy completions are allowed, the lexicographically first proposal
is not necessarily most relevant. The patch modifies sorting of proposals
so that the exact match and continuations go first, and fuzzy completions
follow.

Moreover, being a continuation seem to be a more important characteristic
of a proposal, than being it a function argument or keyword etc. That's why
the check for continuation is placed before the check for order.

Task-number: QTCREATORBUG-8737
Task-number: QTCREATORBUG-9236
Change-Id: I89aae9d2ce6bfa59af7c2f75e6f3af00212008ca
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Alexey Zhondin <lexxmark.dev@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-03 14:44:41 +02:00
Orgad Shaneh
adee8336bb C++: Custom directory list for Switch Header/Source
Some projects use separate directories for sources and headers.

An example tree:
*
|-- src
     |-- foo.cpp
|-- include
     |-- foo.h

Allow the user to specify directories for finding out-of-project related
header/source files, in addition to current directory

Task-number: QTCREATORBUG-8883
Change-Id: I57215c8f2feffcc246d0d161798290861bcfcdd4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-03 14:25:05 +02:00
hjk
267e441af4 Apply 'static' pattern to VcsManager
Adapt user and surrounding code.

Change-Id: Id2648f82a9cbbd0ad0bfb91f6958b8cee7ea29cc
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-09-03 12:01:24 +02:00
hjk
a37589d431 Apply 'static' pattern to MimeDatabase
Also adjust and streamline using and surrounding code.

Change-Id: I6a8b05126bdcbb74ff611b21c7cb3c5902a2d5ca
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2013-09-03 11:41:45 +02:00
hjk
df36184371 Core: Static pattern for ProgressManager, clean up all users
Change-Id: I4af8793ca69a3af9e99baeb7c31dad3864266f91
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-09-02 12:41:47 +02:00
Nikolai Kosjar
fc731a3a67 CppTools: Introduce LocatorData
Until now the locator filters CppLocatorFilter, CppClassesFilter and
CppFunctionsFilter used unnecessarily their own SearchSymbols instance.
The results were also saved separately, which was unfavorable since e.g.
the functions and classes data could be shared.

Starting with this patch an instance of LocatorData will serve all
mentioned filters.

This saves about 20MB of memory after indexing the Qt Creator project.

Change-Id: I8a34b67eb9fe0e5c68ba6e7c8f576389c78efc6f
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-30 16:42:26 +02:00
Nikolai Kosjar
f0c9ef58ec CppTools: Fix displaying symbols of CppLocatorFilter
The left column of the locator filter displayed the fully qualified
name, which is a bit too long...

Regression introduced by commit 760aa0f.

Change-Id: I57fb44cd205c6e54158de22b6638e4a28014749c
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-30 14:51:12 +02:00
Nikolai Kosjar
b4a121a90a CppTools: Ignore generated symbols in SearchSymbols
...e.g. qt_metacall() etc from the Q_OBJECT macro.

This affects the results of the cpp locator and find filters.

Change-Id: I2f9ff1210f3705baddadd486d700ee8be9a44a20
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-30 14:39:08 +02:00
hjk
eb724f3772 EditorManager: Use interface directly instead of going through ICore
In the majority of cases we were doing that anyways, having two
ways is just needlessly confusing.

Change-Id: Ied362a702c23beee528368d74df1f2aabe5807f8
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-08-30 11:25:51 +02:00
hjk
4a24df38a3 EditorManager: Use static pattern, adjust surrounding code
Change-Id: I3255a0150cd9a730336456c5a9f986eb74fefbff
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-08-30 11:22:56 +02:00
Friedemann Kleint
e81f0e25de Reduce usage of QStringRef::toString() in cppcodeformatter.cpp.
Change-Id: Iff4634c3bd3829d236e3dd38e4d29ced5f118db6
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-29 13:07:37 +02:00
Nikolai Kosjar
aa1aeeafa1 CppTools: Locator: Match also against qualified names
If the user input contains "::", match against the qualified symbol
name. Otherwise, as before, match against the unqualified symbol name.

This applies to the function and class filters and allows to narrow down
the results by using a namespace prefix, e.g. "c core::*category".

Change-Id: Id152f412740e27f2f2d001dc7008dba8a92a37ce
Reviewed-by: David Schulz <david.schulz@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-26 13:43:07 +02:00
Nikolai Kosjar
760aa0f8bc CppTools: Get rid of SearchSymbols::setSeparateScope()
This will make it easier to use a single SearchSymbols instance and a
single run serving all locator filters.

Change-Id: Idb6a3693ad356227d46d0b28fb4c3a5db62b4ac4
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-26 13:39:15 +02:00
Nikolai Kosjar
fd9293dd0a CppTools: CppPreprocessor: Track also unresolved includes
Change-Id: Ia36e7e7142dbc030a428369ed04e76e70e8eef0b
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-22 11:57:27 +02:00
Nikolai Kosjar
72ab719484 CppTools: Tests: Correct input data in locator test case
...in order to test more entries.

Change-Id: I990f55dd3c9c2c7d079a4fb3dcc92467bf1d1568
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-08-22 09:59:53 +02:00
Nikolai Kosjar
ef018ddd9e Locator: Case sensitivity of input affects prioritizing
So far candidates were prefix matched case sensitive which led to
an unfavorable results order.

With this patch, if the input is lower case, the prioritizing happens by
a case insensitive prefix match. Otherwise the match happens case
sensitive (just like before).

Example:

    Search for e.g. "m cppmodelmanager"
    Top result before: AbstractEditorSupport (match at parameter type)
    Top result now: CppModelManager

Change-Id: Ic27042cfe717be812a2237a3437399597c98dd74
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-08-22 09:42:22 +02:00
Oswald Buddenhagen
c2e90c360b Merge remote-tracking branch 'origin/2.8'
Conflicts:
	src/plugins/cpptools/cppcompletion_test.cpp
	src/plugins/cpptools/cpptoolsplugin.h
	src/plugins/projectexplorer/customtoolchain.cpp
	src/plugins/vcsbase/command.cpp

Change-Id: Ie7b3c9e136c0748b41320227c757471259339b48
2013-08-21 14:39:18 +02:00
Nikolai Kosjar
6ac341467d Tests: Extract TestDataDir to the coreplugin
Change-Id: Ie290c07c07c13134a57f328e9ae876b2af6974db
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-20 14:19:08 +02:00
Nikolai Kosjar
d185849150 CppTools: Tests: Introduce basic BuiltinSymbolSearcher tests
Change-Id: I25f11e80747863f797d146980d8ee0e605acb6e5
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-20 14:18:45 +02:00
Przemyslaw Gorszkowski
3256b7b2ef C++: fix matching type with using from other namespace
example code:
struct S { int s; };

namespace std
{
    template <typename T>
    struct shared_ptr
    {
        T* operator->();
    };
}

namespace NS
{
    using std::shared_ptr;
}

int main()
{
    NS::shared_ptr<S> p;// for this shared_ptr
    return 0;
}

Fixes:
* find usages
* follow symbol
* highlighting
* marking

Task-number: QTCREATORBUG-7978
Change-Id: I28994c960b87ddd400e1d7b860fca6c6683bbb5a
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-20 14:13:19 +02:00
Nikolai Kosjar
dcf618469d CppTools: Tests: Add basic tests for locator filters
Change-Id: Ie71aa8a39f4584a024a4f104841ad8e57947e489
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-08-19 14:43:58 +02:00
David Schulz
a9e737b0fe CppTools: Test: Skip framework test on Windows.
The soft links inside the framework can't be resolved.

Change-Id: I9f328bc074091236fb33eee63e725e49efeac5c9
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-19 14:07:01 +02:00
Erik Verbruggen
073e5d6632 C++: optionally let the highlighter handle ifdefed-out blocks.
Change-Id: I38cc0e55348cac0245d2ab8f3e39c68de76e3e6d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-19 13:01:07 +02:00
Przemyslaw Gorszkowski
7e7fb2244a AutoTests: fix test framework in case of tests for class members
Change-Id: I564ea9cccc24509957481b6726f25833f35a4da4
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-14 12:15:04 +02:00
Nikolai Kosjar
c983053c9c CppTools: Fix signal redefinition
...leading to the error message

QMetaObject::indexOfSignal: signal aboutToRemoveFiles(QStringList) from
CppTools::CppModelManagerInterface redefined in
CppTools::Internal::CppModelManager

Change-Id: I0a1c307ad5fc0d7cefa198726f534140192facad
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-08-14 08:26:06 +02:00
Orgad Shaneh
c73a9a63f2 Fix compilation with Qt4
Change-Id: Icad8723e26f7f9d89098e04c09c9dbd2d5539902
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-14 07:54:30 +02:00
Nikolai Kosjar
8ea14767af CppTools: Rework handling of ProjectInfo changes
(a) The code model manager figures out by itself which files were added
    or removed from the project.

    If this was done successfully, check also the timestamp of the
    common files and reindex if necessary.

(b) A full reindexing is only triggered if the project configuration
    changes (defines, includes, framework paths).

(c) If project files were removed, the garbage collector is called.

Task-number: QTCREATORBUG-9730
Change-Id: Ib855614b070880576233a3525813617c967a72f3
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
2013-08-13 14:13:33 +02:00
Nikolai Kosjar
f23fed601b CppTools: Tests: Move test includes utils into helper class
Change-Id: Ia679f3d2ae5fce0978a4e320fa18b28f1a7bed71
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-13 09:23:02 +02:00
Nikolai Kosjar
2665a1249b CppTools: Do not garbage collect files in the working copy
...except the configuration file if no projects are open. For this case
there is no need to keep the configuration file around.

Task-number: QTCREATORBUG-9829

Change-Id: I51b01b30c17cbc1ced491ef2c47c338dae6ed983
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-08 12:12:31 +02:00
Nikolai Kosjar
7583039b87 CppTools: Do not call GC() more than necessary
Currently GC() is invoked if
   - 5 CppEditors were closed or the last CppEditor was closed
   - a project is about to be removed
   - a session is about to be unloaded

Thus, for the following use cases, too much GC() calls (can) happen:
    - File > Close All
    - Close All Projects and Editors
    - Changing the session

Fixed by introducing a timer.

Change-Id: I9c984d9de735fc8c6ee77a518e9fb5b63dba5881
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-08 12:12:08 +02:00
Nikolai Kosjar
83bbd534e5 CppTools: Do not try to find definitions of generated symbols
This speeds up the quick fix InsertDefFromDecl on function declarations
in classes containing Q_OBJECT.

Task-number: QTCREATORBUG-9877

Change-Id: I0af16f17f40735040b7158a3191c13db3433edf9
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lorenz Haas <lykurg@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-08-08 11:49:42 +02:00
Orgad Shaneh
0b4300a68c EditorManager: Make closeEditor public
And use it where appropriate

Change-Id: I0f37b8aada6eaa9be6743724b91a59173a01cb0c
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-08-07 11:08:36 +02:00
Przemyslaw Gorszkowski
bfbf93e64f C++: fix auto completion for template parameters
Fix auto completion for the case when template parameter should be
found somewhere of scope of template instantiation declaration.
Example:
struct A
{
    void foo();
    struct B
    {
        int b;
    };
};

template<typename T>
struct Template
{
    T* get() { return 0; }
    T t;
};

void A::foo()
{
    Template<B> templ;
    templ.get()->//no autocompletion
    templ.t.//no autocompletion
}

Task-number: QTCREATORBUG-8852
Task-number: QTCREATORBUG-9169
Change-Id: I56b40776e66740f995ae6fc5d69e3c50139a3af2
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-05 10:50:38 +02:00
David Schulz
e3c5796d2f Editor: Fix placing cursor after replacing "." with "->".
Task-number: QTCREATORBUG-9891

Change-Id: I9488dfc74226b12012c8d1cccd00db6d619074e1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-01 15:33:23 +02:00
Tobias Hunger
5422b2c4da Introduce Project::projectFilePath()
Use it instead of retrieving this information from the document.

Change-Id: I809fcb2daf59021cf503c371a5d40d75d7448796
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-08-01 11:42:41 +02:00
Nikolai Kosjar
fdaddec7d1 CppTools: Clean up CppModelManager(Interface)
* Const correctness
* Better variable names
* Sort order of includes and forward declarations
* Comment fixes
* Cosmetic/Whitespace changes

Change-Id: Ieb137266ac7eddedb00c37f8b2cc8677d67e4bdd
Reviewed-by: David Schulz <david.schulz@digia.com>
2013-07-31 14:34:08 +02:00
Nikolai Kosjar
ef59179100 CppTools: Tests: Refactor / Clean up cppcompletion_test.cpp
* Open the files in the cpp editor, so preprocessing will take place
* Remove duplicated code
* Fix coding styles issues

Change-Id: Ic8bffcbc5a4ac5aca76bc55880d33c3b55f0944c
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
2013-07-31 11:21:45 +02:00