1. 19 Jun, 2018 1 commit
    • Philip Chimento's avatar
      keybindings: Add Sublime Text keybindings · 3c33c5cc
      Philip Chimento authored
      Adds a setting so that the option appears in the Preferences pane.
      
      These bindings have a few idiosyncracies which are listed at the bottom
      of the keybinding CSS file in a comment. In particular, to emulate
      Sublime Text nicely, we should make a few keybindings do something
      different depending on whether any text is selected.
      3c33c5cc
  2. 10 Jun, 2018 1 commit
  3. 08 Jun, 2018 1 commit
    • 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
  4. 18 Sep, 2017 1 commit
    • Christian Hergert's avatar
      gutter: add new condensed omni gutter · 64164bde
      Christian Hergert authored
      This is a replacement for the various GtkSourceGutterRenderers that we've had.
      There have been a few downfalls with the previous gutter renderers that we
      wanted to change.
      
      First off, the gutter renderers are very sensitive to performance issues
      because they are not pixel cached. I'm to blame, because I never pixel cached
      those in GtkTextView years ago when adding the pixel cache. However, if we are
      careful, we can generally keep our overhead lower than using the more flexible
      GtkSourceView components (which need to handle more cases than we do).
      
      Another major issue for us was that the size of the gutter was getting too
      large.  The "pack renderers in" design only goes so far before you need to just
      suck it up and implement a combined renderer.
      
      This tries to coalesce as much work as we can up front so that we keep the CPU
      doing similar work in chunks. That's where modern CPUs shine.
      
      Additionally, we cache surfaces instead of pixbufs so that we can avoid a
      surface creation on each render. It costs us roughly 6kb of image surface data
      right now, but we can optimize that out later.
      
      To get things packed tighter, we do some overlapping of content. By making the
      debugger breakpoint arrow fill the background, we also save another 16px (plus
      padding) of space.
      
      The arrow on the breakpoint is over the line changes, so we can save another
      couple pixels as well.
      
      All in all, we have something that looks similar to before, but takes up much
      less space and generally draws as fast if not faster.
      64164bde
  5. 25 Apr, 2017 1 commit
  6. 13 Apr, 2017 1 commit
  7. 30 Mar, 2017 1 commit
  8. 21 Jul, 2016 1 commit
  9. 26 Apr, 2016 1 commit
  10. 22 Dec, 2015 2 commits
  11. 16 May, 2015 1 commit
  12. 30 Apr, 2015 2 commits
    • Christian Hergert's avatar
      minimap: add setting to auto-hide minimap · c04d920e
      Christian Hergert authored
      There were complaints about the distraction of the auto-hide map. This
      will let us enable/disable that feature. We will default to auto-hide
      disabled (at least for now).
      c04d920e
    • Christian Hergert's avatar
      build: modernize build system · bc6215c4
      Christian Hergert authored
      Previously, the build system was an experiment in compartmentalizing
      various autoconf and automake features. That was very much an experiment
      I'm happy to put behind us. Managing it was just getting too abstract.
      
      This moves us to a more traditional autotools setup using recursive
      automake. I know, I know, "Recursive Automake Considered Harmful" and
      all. Build times don't seem to be too adversely affected at the moment.
      
      Also, we generate ide-debug.h now so that when --enable-tracing is set,
      we force rebuilding the dependent modules.
      
        --enable-tracing now implies --enable-debug
      
      I've also added two more options:
      
        --enable-optimizations will use -Bsymbolic for libide to help reduce
         the number of inter-PLT jumps.
      
        --enable-lto can be used to enable optimizations across .o's when
          linking.
      
      I've also moved various things around in a more traditional layout.
      
        libsearch.la can be found in contrib/search. This contains the Trie
        and Fuzzy search indexes.
      
        libeditorconfig.la can be found in contrib/libeditorconfig. This
        contains a partially modified upstream libeditorconfig. Mostly just
        build and warning fixes have been applied.
      
      We are now using Behdad's git.mk for tracking gitignores. Please use that
      whenever possible instead of manually creating .gitignore files.
      
      I've reversed how some debug options are checked. Instead of checking
      for tracing like:
      
        #ifndef IDE_DISABLE_TRACE
      
      I've inverted the check to
      
        #ifdef IDE_ENABLE_TRACE
      
      See libide/ide-debug.h.in as to why this is the case.
      
      I've also dropped various dead code. Uncrustify and highlight menu code
      to be specific. We can bring it back if designs dictate it. As for
      uncrustify, I think this is better placed in the scripting layer via
      GJS and GSubprocess.
      
      Thanks for reading!
      bc6215c4
  13. 23 Apr, 2015 1 commit
  14. 22 Apr, 2015 1 commit
  15. 10 Apr, 2015 1 commit
    • Christian Hergert's avatar
      project-tree: extract project tree settings · 538344fb
      Christian Hergert authored
      This moves project-tree settings into their own schema. I'm still not
      happy with things long term, there is far too much coupling going on
      here.
      
      But this simplifies things a bit in the process, so net win for now.
      538344fb
  16. 09 Apr, 2015 1 commit
  17. 27 Mar, 2015 1 commit
  18. 23 Mar, 2015 2 commits
  19. 13 Feb, 2015 1 commit
  20. 26 Jan, 2015 1 commit
  21. 11 Jan, 2015 1 commit
  22. 11 Dec, 2014 1 commit
  23. 13 Nov, 2014 1 commit
  24. 16 Oct, 2014 2 commits
  25. 11 Oct, 2014 1 commit
  26. 08 Oct, 2014 1 commit
  27. 03 Oct, 2014 2 commits