1. 24 Oct, 2017 1 commit
  2. 23 Oct, 2017 1 commit
  3. 22 Sep, 2017 2 commits
  4. 19 Sep, 2017 1 commit
  5. 15 Sep, 2017 2 commits
  6. 15 Aug, 2017 1 commit
  7. 15 Jun, 2017 1 commit
  8. 14 Jun, 2017 1 commit
  9. 29 May, 2017 1 commit
  10. 20 Feb, 2017 1 commit
    • Nikolai Kosjar's avatar
      CppTools/ProjectManagers: Reduce ui blocking when loading projects · 8c90998f
      Nikolai Kosjar authored
      ${AnyProject}::updateCppCodeModel() did two potentially not that cheap
      operations in the ui thread:
       (1) Querying the MimeDatabase for the mime type for the source files of
           the project. In 99.9% of the cases no files need to be read for
           this as the file extension will resolve the type. The expensiveness
           comes from the sheer number of files that can occur.
       (2) Calling compilers with the "(sub)project's compiler command line"
           to determine the macros. While the caches avoid redundant calls,
           the number of the unique compiler calls makes this still a
           ui-freezing experience.
      
      These two operations are moved into a worker thread. For this, the
      expensive compiler calls are encapsulated in thread safe lambdas
      ("runners") in order to keep the "mutexed" data minimal. The original
      API calls of the toolchains are implemented in terms of the runners.
      
      While adapting the project managers, remove also the calls to
      setProjectLanguage(). These are redundant because all of the project
      managers already set a proper value in the constructor. Also, currently
      there is no need (client) to report back detection of C sources in
      project parts. This also keeps CppProjectUpdater simple.
      
      There is still room for improvement:
       * Run the compiler calls in parallel instead of sequence.
       * Ensure that the mime type for a file is determined exactly once.
      
      Change-Id: I2efc4e132ee88e3c8f264012ec8fafe3d86c404f
      Reviewed-by: Tobias Hunger's avatarTobias Hunger <tobias.hunger@qt.io>
      8c90998f
  11. 24 Jan, 2017 1 commit
  12. 16 Jan, 2017 1 commit
  13. 16 Dec, 2016 1 commit
  14. 15 Dec, 2016 1 commit
  15. 13 Dec, 2016 1 commit
    • Nikolai Kosjar's avatar
      CppTools: Refactor ProjectPartBuilder · 602ad72d
      Nikolai Kosjar authored
      ...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's avatarDavid Schulz <david.schulz@qt.io>
      602ad72d
  16. 08 Dec, 2016 1 commit
  17. 04 Aug, 2016 1 commit
  18. 30 May, 2016 1 commit
  19. 26 Apr, 2016 1 commit
  20. 01 Mar, 2016 1 commit
  21. 29 Feb, 2016 1 commit
  22. 16 Feb, 2016 1 commit
    • Ulf Hermann's avatar
      Generalize support for extra compilers · 2e3e0605
      Ulf Hermann authored
      Allow for different extra compilers which may get called to generate
      additional code for the code model. The build system is expected to
      know what files are generated from which source file and the extra
      compilers know how to generate the content of those files, without
      touching the build directory. the uic adapter is refactored to be
      the first such extra compiler.
      
      The extra compiler is run when an editor for its source document
      loses focus, or after a timeout of 1s when the source document has
      been changed.
      
      Change-Id: I13c110c61120c812f02639a3684144daf8979b37
      Reviewed-by: default avatarTobias Hunger <tobias.hunger@theqtcompany.com>
      2e3e0605
  23. 13 Jan, 2016 5 commits
  24. 12 Jan, 2016 1 commit
    • Marco Bubke's avatar
      CppTools: Add CppToolsBridge · 6fe9b0cc
      Marco Bubke authored
      We broke the dependency of
      BaseEditorDocumentProcessor *BaseEditorDocumentProcessor::get(const QString &filePath)
      
      It's hiding static calls and it is much easier to do it that way than to
      provide a reference to every user. It's also possible to exchange it with
      different implementations for different test cases.
      
      Change-Id: Ic74699b45948e8b48f7efb6a1b295ba2641b8951
      Reviewed-by: default avatarNikolai Kosjar <nikolai.kosjar@theqtcompany.com>
      6fe9b0cc
  25. 12 Oct, 2015 1 commit
    • Nikolai Kosjar's avatar
      CppTools: Make FollowSymbol respect projects · 6b6ad446
      Nikolai Kosjar authored
      Finding the class definition for a forward declaration or finding the
      function definition from its declaration is mostly determined by the
      file iteration order. Documents with the most common path prefix are
      checked first.
      
      This works fine as long as the files of your project have a common
      ancestor. If that's not the case, FollowSymbol might take you to the
      definition within another project.
      
      Fix that issue by considering the project part id when constructing the
      file iteration order. Since the cached file iteration order now depends
      on the projects, ensure to clear it if projects are added, changed or
      removed.
      
      Task-number: QTCREATORBUG-15116
      Change-Id: I529166bac363959c9fee0b946747fd0370a88809
      Reviewed-by: default avatarMarco Bubke <marco.bubke@theqtcompany.com>
      6b6ad446
  26. 28 Sep, 2015 1 commit
  27. 26 Jan, 2015 1 commit
  28. 21 Jan, 2015 1 commit
  29. 12 Jan, 2015 1 commit
  30. 19 Sep, 2014 1 commit
  31. 18 Sep, 2014 1 commit
  32. 25 Aug, 2014 1 commit
    • Nikolai Kosjar's avatar
      C++: Base parsing on editor document instead of widget · 89bd4ee3
      Nikolai Kosjar authored
      This mainly takes CppEditorSupport apart.
      
      * Parsing is now invoked by CPPEditorDocument itself by listening to
        QTextDocument::contentsChanged().
      
      * Upon construction and destruction CPPEditorDocument creates and
        deletes an EditorDocumentHandle for (un)registration in the model
        manager. This handle provides everything to generate the working copy
        and to access the editor document processor.
      
      * A CPPEditorDocument owns a BaseEditorDocumentProcessor instance that
        controls parsing, semantic info recalculation and the semantic
        highlighting for the document. This is more or less what is left from
        CppEditorSupport and can be considered as the backend of a
        CPPEditorDocument. CPPEditorDocument itself is quite small.
      
          * BuiltinEditorDocumentProcessor and ClangEditorDocumentProcessor
            derive from BaseEditorDocumentProcessor and implement the gaps.
      
          * Since the semantic info calculation was bound to the widget, it
            also calculated the local uses, which depend on the cursor
            position. This calculation got moved into the extracted class
            UseSeletionsUpdater in the cppeditor plugin, which is run once the
            cursor position changes or the semantic info document is updated.
      
          * Some more logic got extracted:
      	- SemanticInfoUpdater (logic was in CppEditorSupport)
      	- SemanticHighlighter (logic was in CppEditorSupport)
      
          * The *Parser and *Processor classes can be easily accessed by the
            static function get().
      
      * CppHighlightingSupport is gone since it turned out to be useless.
      
      * The editor dependency in CompletionAssistProviders is gone since we
        actually only need the file path now.
      
      Change-Id: I49d3a7bd138c5ed9620123e34480772535156508
      Reviewed-by: Orgad Shaneh's avatarOrgad Shaneh <orgads@gmail.com>
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      89bd4ee3
  33. 20 Aug, 2014 2 commits