AssistantEric/Assistant.py

changeset 46
5e928f308f55
parent 45
7046451092fb
child 48
baeee0cf39eb
diff -r 7046451092fb -r 5e928f308f55 AssistantEric/Assistant.py
--- a/AssistantEric/Assistant.py	Mon Oct 03 13:12:36 2011 +0200
+++ b/AssistantEric/Assistant.py	Mon Oct 03 19:16:34 2011 +0200
@@ -246,9 +246,6 @@
         
         line, col = editor.getCursorPosition()
         self.__completingContext = context
-        apiCompletionsList = []
-        docCompletionsList = []
-        projectCompletionList = []
         sep = ""
         if context:
             wc = re.sub("\w", "", editor.wordCharacters())
@@ -346,31 +343,58 @@
                         word = ""
         
         if word or importCompletion:
-            if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
-                api = self.__apisManager.getAPIs(language)
-                apiCompletionsList = self.__getApiCompletions(
-                    api, word, context, prefix, mod, editor)
-            
-            if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
-                api = self.__apisManager.getAPIs(ApisNameProject)
-                projectCompletionList = self.__getApiCompletions(
-                    api, word, context, prefix, mod, editor)
-            
-            if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument and \
-               not importCompletion:
-                docCompletionsList = self.__getDocumentCompletions(
-                    editor, word, context, sep, prefix, mod)
-            
-            completionsList = list(
-                set(apiCompletionsList)
-                .union(set(docCompletionsList))
-                .union(set(projectCompletionList))
-                )
-            
+            completionsList = self.__getCompletions(word, context, prefix, language,
+                                                    mod, editor, importCompletion, sep)
+            if len(completionsList) == 0 and prefix:
+                # searching with prefix didn't return anything, try without
+                completionsList = self.__getCompletions(word, context, "", language,
+                                                        mod, editor, importCompletion,
+                                                        sep)
             if len(completionsList) > 0:
                 completionsList.sort()
                 editor.showUserList(EditorAutoCompletionListID, completionsList)
 
+    def __getCompletions(self, word, context, prefix, language, module, editor,
+                         importCompletion, sep):
+        """
+        Private method to get the list of possible completions.
+        
+        @param word word (or wordpart) to complete (string)
+        @param context flag indicating to autocomplete a context (boolean)
+        @param prefix prefix of the word to be completed (string)
+        @param language programming language of the source (string)
+        @param module reference to the scanned module info (Module)
+        @param editor reference to the editor object (QScintilla.Editor.Editor)
+        @param importCompletion flag indicating an import completion (boolean)
+        @param sep separator string (string)
+        @return list of possible completions (list of strings)
+        """
+        apiCompletionsList = []
+        docCompletionsList = []
+        projectCompletionList = []
+        
+        if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
+            api = self.__apisManager.getAPIs(language)
+            apiCompletionsList = self.__getApiCompletions(
+                api, word, context, prefix, module, editor)
+        
+        if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
+            api = self.__apisManager.getAPIs(ApisNameProject)
+            projectCompletionList = self.__getApiCompletions(
+                api, word, context, prefix, module, editor)
+        
+        if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument and \
+           not importCompletion:
+            docCompletionsList = self.__getDocumentCompletions(
+                editor, word, context, sep, prefix, module)
+        
+        completionsList = list(
+            set(apiCompletionsList)
+            .union(set(docCompletionsList))
+            .union(set(projectCompletionList))
+            )
+        return completionsList
+    
     def __getApiCompletions(self, api, word, context, prefix, module, editor):
         """
         Private method to determine a list of completions from an API object.
@@ -380,7 +404,7 @@
         @param context flag indicating to autocomplete a context (boolean)
         @param prefix prefix of the word to be completed (string)
         @param module reference to the scanned module info (Module)
-        @param editor reference to the editor object (QScintilla.Editor)
+        @param editor reference to the editor object (QScintilla.Editor.Editor)
         @return list of possible completions (list of strings)
         """
         completionsList = []
@@ -468,7 +492,7 @@
         """
         Private method to determine autocompletion proposals from the document.
         
-        @param editor reference to the editor object (QScintilla.Editor)
+        @param editor reference to the editor object (QScintilla.Editor.Editor)
         @param word string to be completed (string)
         @param context flag indicating to autocomplete a context (boolean)
         @param sep separator string (string)

eric ide

mercurial