DebugClients/Python/DebugClientBase.py

changeset 4833
803bf753032a
parent 4642
f18d5fb9a53b
child 4834
3605138fa29d
equal deleted inserted replaced
4828:b313794f46a2 4833:803bf753032a
1885 1885
1886 @param text the text to be completed (string) 1886 @param text the text to be completed (string)
1887 """ 1887 """
1888 completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?' 1888 completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
1889 1889
1890 completions = [] 1890 completions = set()
1891 state = 0
1892 # find position of last delim character 1891 # find position of last delim character
1893 pos = -1 1892 pos = -1
1894 while pos >= -len(text): 1893 while pos >= -len(text):
1895 if text[pos] in completerDelims: 1894 if text[pos] in completerDelims:
1896 if pos == -1: 1895 if pos == -1:
1898 else: 1897 else:
1899 text = text[pos + 1:] 1898 text = text[pos + 1:]
1900 break 1899 break
1901 pos -= 1 1900 pos -= 1
1902 1901
1902 # Get local and global completions
1903 try: 1903 try:
1904 comp = self.complete(text, state) 1904 localdict = self.currentThread.getFrameLocals(self.framenr)
1905 localCompleter = Completer(localdict).complete
1906 self.__getCompletionList(text, localCompleter, completions)
1907 except AttributeError:
1908 pass
1909 self.__getCompletionList(text, self.complete, completions)
1910
1911 self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion,
1912 unicode(list(completions)), text))
1913
1914 def __getCompletionList(self, text, completer, completions):
1915 """
1916 Private method to create a completions list.
1917
1918 @param text text to complete (string)
1919 @param completer completer methode
1920 @param completions set where to add new completions strings (set)
1921 """
1922 state = 0
1923 try:
1924 comp = completer(text, state)
1905 except Exception: 1925 except Exception:
1906 comp = None 1926 comp = None
1907 while comp is not None: 1927 while comp is not None:
1908 completions.append(comp) 1928 completions.add(comp)
1909 state += 1 1929 state += 1
1910 try: 1930 try:
1911 comp = self.complete(text, state) 1931 comp = completer(text, state)
1912 except Exception: 1932 except Exception:
1913 comp = None 1933 comp = None
1914
1915 self.write("%s%s||%s\n" % (DebugProtocol.ResponseCompletion,
1916 unicode(completions), text))
1917 1934
1918 def startDebugger(self, filename=None, host=None, port=None, 1935 def startDebugger(self, filename=None, host=None, port=None,
1919 enableTrace=1, exceptions=1, tracePython=0, redirect=1): 1936 enableTrace=1, exceptions=1, tracePython=0, redirect=1):
1920 """ 1937 """
1921 Public method used to start the remote debugger. 1938 Public method used to start the remote debugger.

eric ide

mercurial