1. 08 Jun, 2018 5 commits
    • Christian Hergert's avatar
      completion: switch on completion engine in sourceview · 6b7cfcd6
      Christian Hergert authored
      This implements the hooks in sourceview for the new completion engine. A
      number of completion providers will be broken as part of this switch.
      6b7cfcd6
    • Christian Hergert's avatar
      57603b8a
    • Christian Hergert's avatar
      snippets: switch to new snippet engine · 10b768a7
      Christian Hergert authored
      This breaks a bit of code intermediately while we land things, but such is
      life with such a complicated refactoring.
      10b768a7
    • Christian Hergert's avatar
      completion: add new completion engine · 3cd417a3
      Christian Hergert authored
      This is a replacement for GtkSourceCompletion to handle a number of designs
      that we can't land into GtkSourceView for various API/ABI reasons but need
      in Builder for completion performance, memory footprint, and visual
      styling.
      
      The important details in terms of design change are:
      
       * Use GListModel heavily to avoid GObject creation, GList creation,
         GQueue creation, and O(n²) treemodel lookups so that we can handle
         larger list sizes in (tens of thousands with much reduced memory
         footprint).
       * Allow providers to refilter existing results conveniently.
       * Break things into 4 columns (icon, lhs, word, rhs).
       * Use GtkListBoxRow instead of GtkTreeView for widget styling.
       * Only create widgets and proposals for the visible range of items
         through use of custom GtkBox-based GtkScrollable, listbox row, and
         dynamic access to joined-GListModel for all results.
       * Dynamic priorities for completion results based on context.
       * Adjust window size based on result set, with changeable xoffset.
       * Use different strategies for display based on our display manager.
       * Consistent and fast fuzzy text filtering.
      
      Some things we don't have yet that we'd like to add in the future.
      
       * Support for more complex comments than fit in the completion window
         such as a details window.
       * Use move_to_rect() API landing in gtk+ 3.24.
       * When wayland supports dynamic repositioning of popups, use that with
         the IdeCompletionWindow instead of our overlay display.
       * Simplified support for parameter completion
       * Simplified support for string interpolation
      3cd417a3
    • Christian Hergert's avatar
      snippet: add revamped snippet engine · 0abb01bf
      Christian Hergert authored
      When writing this, there was some anticipation that it would land upstream
      in GSV, but I don't think that will happen given ABI stability and what
      not. So we might as well save us some character columns.
      
      More importantly, this adds the ability to avoid parsing all the snippet
      content up front (and instead delay that until they are used). We still
      need to duplicate some strings for metadata, but a couple hundred objects
      can be avoided now.
      
      This doesn't enable the new snippet engine, only lands it so that it can
      be used from other API as we merge the new completion engine. The existing
      code will be removed in a future commit.
      0abb01bf
  2. 16 May, 2018 1 commit
  3. 02 May, 2018 1 commit
  4. 23 Apr, 2018 1 commit
  5. 21 Apr, 2018 1 commit
  6. 10 Apr, 2018 1 commit
  7. 24 Mar, 2018 1 commit
  8. 22 Mar, 2018 3 commits
  9. 21 Mar, 2018 1 commit
    • Christian Hergert's avatar
      threading: add IdeTask as basis for new tasking design · 6b9b5a28
      Christian Hergert authored
      We are going to have to move away from GTask, at least in the short term
      because it cannot provide some fundamental ownership and life-cycle
      guarantees we require.
      
      This is the start of a new IdeTask replacement which allows us to ensure
      that task data, source objects, and results are finalized only within the
      GMainContext attached to the task.
      
      It also starts adding some new convenience API that we want for propagating
      results between multiple tasks.
      6b9b5a28
  10. 15 Mar, 2018 1 commit
  11. 08 Mar, 2018 1 commit
  12. 05 Mar, 2018 1 commit
    • Christian Hergert's avatar
      devices: add IdeDeviceInfo object · a0fb55ca
      Christian Hergert authored
      This object is meant to collect information about a device that we can
      put behind an async function to collect it. That allows us to cleanly
      abstract the process of connecting to a device before we know about
      various architecture and OS information.
      a0fb55ca
  13. 30 Jan, 2018 1 commit
  14. 23 Jan, 2018 1 commit
  15. 13 Jan, 2018 1 commit
    • Christian Hergert's avatar
      project: remove IdeProjectFile and IdeProjectFiles · f05a109a
      Christian Hergert authored
      This wasn't really being used and certainly wont be long-term. Lets drop
      it now. This ports the few places that used that code to using the
      ide_file_new_for_path() which can do caching and proper relative path
      resolution without the IdeProjectFiles unpurgeable cache.
      f05a109a
  16. 17 Dec, 2017 1 commit
    • Christian Hergert's avatar
      dep-updater: add new interface for updating dependencies · e22aa0a4
      Christian Hergert authored
      This gives us an interface that plugins can implement to update
      dependencies. The omnibar will activate this command instead of
      the flatpak-specific backend.
      
      This should allow plugins for other languages such as NodeJS or
      Pip to provide an updater in a similar fashion.
      e22aa0a4
  17. 12 Dec, 2017 1 commit
    • Christian Hergert's avatar
      vcs: add IdeVcsMonitor · 11288172
      Christian Hergert authored
      Instead of exposing DzlRecursiveDirectoryMonitor, this
      encapsulates it in IdeVcsMonitor. Doing so allows us to also
      query the vcs layer and cache information about various files
      in the project tree.
      11288172
  18. 09 Dec, 2017 1 commit
    • Christian Hergert's avatar
      vcs: add API to query file status · d3f1a506
      Christian Hergert authored
      This adds a fairly simple API to query the status of files in
      the project repository.
      
      IdeVcsFileInfo has a GFile and the IdeVcsFileStatus enum value
      as determined by the given backend.
      
      We may want to just adopt git's 'pathspec' instead of the
      GFile *directory_or_file parameter.
      d3f1a506
  19. 05 Dec, 2017 1 commit
  20. 27 Nov, 2017 1 commit
  21. 22 Nov, 2017 3 commits
  22. 20 Nov, 2017 1 commit
    • Christian Hergert's avatar
      buildsystem: add IdeBuildTargetProvider interface · d61623d5
      Christian Hergert authored
      This moves away from using the build system API for getting
      build targets to this new interface. Build systems will need
      to implement this if they want to support running.
      
      This will also allow for things like Flatpak to provide a
      default target matching the "command" from the manifest.
      d61623d5
  23. 19 Nov, 2017 1 commit
  24. 17 Nov, 2017 2 commits
    • Christian Hergert's avatar
      greeter: add IdeGreeterSection pluggable API · a6d60d30
      Christian Hergert authored
      This adds a new IdeGreeterSection interface to be used for
      defining sections in the primary greeter. As part of this, the
      newcomers section has been removed from libide and will come
      back as a plugin.
      
      Additionally, we should be able to remove the recent projects
      section from libide and move that to a plugin. That is not part
      of this refactoring and can happen at some point in the future,
      as it is fairly low priority.
      a6d60d30
    • Christian Hergert's avatar
      projects: make IdeProjectInfo public API · 4b76b091
      Christian Hergert authored
      We need this for the upcoming refactoring to allow plugins to
      extend what shows up in the greeter.
      4b76b091
  25. 09 Nov, 2017 1 commit
  26. 08 Nov, 2017 1 commit
  27. 06 Nov, 2017 2 commits
  28. 22 Oct, 2017 1 commit
    • Christian Hergert's avatar
      testing: implement rudimentary unit testing · 135e67f1
      Christian Hergert authored
      Provides basic implementation for unit test plumbing. The UI is
      both minimal and incomplete, but enough to land on master so
      that future pieces can be implemented later in the cycle.
      
      The test provider is responsible for loading and running the
      test. I anticipate that we'll need to tweak the API so that we
      can run the tests under gdb. Additionally, we need to track
      output so it can be displayed.
      135e67f1
  29. 16 Oct, 2017 1 commit
    • Christian Hergert's avatar
      compile-commands: add IdeCompileCommands · d686eca3
      Christian Hergert authored
      This is a helper object to simplify the process of working with
      clang-style compile_commands.json databases. Some build systems
      such as Meson and CMake can benefit from having access to this
      information in a unified manner.
      
      Now that IdeBuildSystem can automatically translate paths from
      the runtime build dir, this should allow us to remove some code
      from those plugins (and share it in libide instead).
      
      We might still want something to resolve things like -I includes
      based on the relative working directory, but in practice, that
      should match the $builddir of the build pipeline.
      d686eca3
  30. 11 Oct, 2017 1 commit