DebugClients/Python3/DebugClientBase.py

branch
6_1_x
changeset 4835
371c03e08f7b
parent 4644
99699903c454
child 4848
36b1d9bec8f6
diff -r 18b938177946 -r 371c03e08f7b DebugClients/Python3/DebugClientBase.py
--- a/DebugClients/Python3/DebugClientBase.py	Sun Mar 06 12:06:32 2016 +0100
+++ b/DebugClients/Python3/DebugClientBase.py	Mon Feb 22 22:26:21 2016 +0100
@@ -1937,8 +1937,7 @@
         """
         completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
         
-        completions = []
-        state = 0
+        completions = set()
         # find position of last delim character
         pos = -1
         while pos >= -len(text):
@@ -1950,20 +1949,37 @@
                 break
             pos -= 1
         
+        # Get local and global completions
         try:
-            comp = self.complete(text, state)
-        except:
+            localdict = self.currentThread.getFrameLocals(self.framenr)
+            localCompleter = Completer(localdict).complete
+            self.__getCompletionList(text, localCompleter, completions)
+        except AttributeError:
+            pass
+        self.__getCompletionList(text, self.complete, completions)
+        
+        self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
+                                          str(list(completions)), text))
+
+    def __getCompletionList(self, text, completer, completions):
+        """
+        Private method to create a completions list.
+        
+        @param text text to complete (string)
+        @param completer completer methode
+        @param completions set where to add new completions strings (set)
+        """
+        state = 0
+        try:
+            comp = completer(text, state)
             comp = None
         while comp is not None:
-            completions.append(comp)
+            completions.add(comp)
             state += 1
             try:
-                comp = self.complete(text, state)
+                comp = completer(text, state)
             except:
                 comp = None
-        
-        self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
-                                          str(completions), text))
 
     def startDebugger(self, filename=None, host=None, port=None,
                       enableTrace=True, exceptions=True, tracePython=False,

eric ide

mercurial