[anjuta] anjuta_language_provider: add proposals() function



commit 4cd343b53c7192e4d2260059c7aa4f6293f9a7dc
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date:   Mon Apr 22 00:00:09 2013 +0200

    anjuta_language_provider: add proposals() function
    
    Users of AnjutaLanguageProvider should call anjuta_language_provider_proposals()
    instead of ianjuta_editor_assist_proposals(). AnjutaLanguageProvider will
    automatically filter away single proposals that are exactly the same as the pre_word.

 libanjuta/anjuta-language-provider.c | 35 ++++++++++++++++++++++++++++++++++-
 libanjuta/anjuta-language-provider.h |  7 +++++++
 2 files changed, 41 insertions(+), 1 deletion(-)
---
diff --git a/libanjuta/anjuta-language-provider.c b/libanjuta/anjuta-language-provider.c
index c4ab547..eb673eb 100644
--- a/libanjuta/anjuta-language-provider.c
+++ b/libanjuta/anjuta-language-provider.c
@@ -532,7 +532,7 @@ anjuta_language_provider_activate (AnjutaLanguageProvider* lang_prov,
  * @cursor: (type GObject): the text iter where the provider should be populated
  *
  * Show completion for the context at position @iter. The provider should
- * call ianjuta_editor_assist_proposals here to add proposals to the list.
+ * call anjuta_language_provider_proposals here to add proposals to the list.
  */
 void
 anjuta_language_provider_populate (AnjutaLanguageProvider* lang_prov,
@@ -587,6 +587,39 @@ anjuta_language_provider_populate (AnjutaLanguageProvider* lang_prov,
 }
 
 /**
+ * anjuta_language_provider_proposals:
+ * @lang_prov: Self
+ * @iprov: (type GObject): IAnjutaProvider object
+ * @proposals: (element-type IAnjutaEditorAssistProposal): a list of IAnjutaProposals
+ * @pre_word: the word before the cursor
+ * @finished: whether is was the last call in an async operation
+ *
+ * Add the list of proposals for the current population. You can add
+ * proposals async as long as the last call sets finished to TRUE. That
+ * is usually called by the IAnjutaLanguageProvider after it was triggered by
+ * ianjuta_language_provider_populate_completions()
+ */
+void
+anjuta_language_provider_proposals (AnjutaLanguageProvider* lang_prov,
+                                    IAnjutaProvider* iprov,
+                                    GList* proposals,
+                                    const gchar* pre_word,
+                                    gboolean finished)
+{
+       /* Hide if the only suggestion is exactly the typed word */
+       if (pre_word && proposals && g_list_length (proposals) == 1)
+       {
+               IAnjutaEditorAssistProposal* proposal = proposals->data;
+               AnjutaLanguageProposalData* data = proposal->data;
+               if (g_str_equal (pre_word, data->name))
+                       proposals = NULL;
+       }
+
+       ianjuta_editor_assist_proposals (lang_prov->priv->iassist, iprov, proposals,
+                                        pre_word, finished, NULL);
+}
+
+/**
  * anjuta_language_provider_get_start_iter:
  * @lang_prov: Self
  *
diff --git a/libanjuta/anjuta-language-provider.h b/libanjuta/anjuta-language-provider.h
index fbaa5d2..c4fe328 100644
--- a/libanjuta/anjuta-language-provider.h
+++ b/libanjuta/anjuta-language-provider.h
@@ -107,6 +107,13 @@ void
 anjuta_language_provider_populate                              (AnjutaLanguageProvider* lang_prov,
                                                  IAnjutaProvider* iprov,
                                                  IAnjutaIterable* cursor);
+void
+anjuta_language_provider_proposals              (AnjutaLanguageProvider* lang_prov,
+                                                 IAnjutaProvider* iprov,
+                                                 GList* proposals,
+                                                 const gchar* pre_word,
+                                                 gboolean finished);
+
 
 IAnjutaIterable*
 anjuta_language_provider_get_start_iter                        (AnjutaLanguageProvider* lang_prov);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]