You can take a look at GtkSourceCompletion/Providers to see the future ideas. I want to develop a lot of providers and you will be able to use it into different places (Gedit plugins, different apps, etc.)
Change library namespace (Do it!!!)
Currently the library uses gtk_source_completion namespace. This is a problem if we add the completion code into GtkSourceView. This namespace must to be changed. (Changed to gsc)
Set the popup position type on a trigger
We currently show the popup in the cursor position. We need set the position type. A first step is:
CURSOR_POSITION (Do it): The popup will be shown under the cursor position
CENTER_SCREEN (Do it): The popup will be shown centered in the screen
CENTER_WINDOW (Do it): The popup will be shown centered in the application window
CENTER_VIEW: The popup will be shown centered in the current GtkTextView
You can set this visualization type when you trigger a new event (Do it).
Support for autoselection
Add a new autoselect option on the trigger event. If this option is TRUE then the completion selects automatically if there is only one proposal and one page.
Popup proposal filter '''(Do it)'''
Add a new filter_type option on the trigger event. We need to add an entry on the popup and we use this entry to filter the popup content (or another feature). The options will be by now:
- NONE: Without the filter entry
- FILTER_PROPOSAL_NAME: Show the filter and use it to filter the proposals by name.
Fixes and better user friendly autocompletion
Multiple completion pages (Do it!!!)
Now, all items are shown into an unique list order by the item priority.
I will try to do a popup with multiples pages. The providers could add a lot of items into different pages. For example, the document words completion item could be shown at the first page and, if the user press <Control>+Return (by example) then we show the second completion page with snippets items or template items.
The items will have a new "page_id" property. The a page with this id exists we add the item to this page, if not then we create a new page and we add the items here.
Providers could create a lot of items in multiples pages.