Skip to content
  • 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 ...
    3cd417a3