DebugClients/Python3/DebugClientBase.py

changeset 4833
803bf753032a
parent 4642
f18d5fb9a53b
child 4834
3605138fa29d
equal deleted inserted replaced
4828:b313794f46a2 4833:803bf753032a
1935 1935
1936 @param text the text to be completed (string) 1936 @param text the text to be completed (string)
1937 """ 1937 """
1938 completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?' 1938 completerDelims = ' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?'
1939 1939
1940 completions = [] 1940 completions = set()
1941 state = 0
1942 # find position of last delim character 1941 # find position of last delim character
1943 pos = -1 1942 pos = -1
1944 while pos >= -len(text): 1943 while pos >= -len(text):
1945 if text[pos] in completerDelims: 1944 if text[pos] in completerDelims:
1946 if pos == -1: 1945 if pos == -1:
1948 else: 1947 else:
1949 text = text[pos + 1:] 1948 text = text[pos + 1:]
1950 break 1949 break
1951 pos -= 1 1950 pos -= 1
1952 1951
1952 # Get local and global completions
1953 try: 1953 try:
1954 comp = self.complete(text, state) 1954 localdict = self.currentThread.getFrameLocals(self.framenr)
1955 localCompleter = Completer(localdict).complete
1956 self.__getCompletionList(text, localCompleter, completions)
1957 except AttributeError:
1958 pass
1959 self.__getCompletionList(text, self.complete, completions)
1960
1961 self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
1962 str(list(completions)), text))
1963
1964 def __getCompletionList(self, text, completer, completions):
1965 """
1966 Private method to create a completions list.
1967
1968 @param text text to complete (string)
1969 @param completer completer methode
1970 @param completions set where to add new completions strings (set)
1971 """
1972 state = 0
1973 try:
1974 comp = completer(text, state)
1955 except Exception: 1975 except Exception:
1956 comp = None 1976 comp = None
1957 while comp is not None: 1977 while comp is not None:
1958 completions.append(comp) 1978 completions.add(comp)
1959 state += 1 1979 state += 1
1960 try: 1980 try:
1961 comp = self.complete(text, state) 1981 comp = completer(text, state)
1962 except Exception: 1982 except Exception:
1963 comp = None 1983 comp = None
1964
1965 self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion,
1966 str(completions), text))
1967 1984
1968 def startDebugger(self, filename=None, host=None, port=None, 1985 def startDebugger(self, filename=None, host=None, port=None,
1969 enableTrace=True, exceptions=True, tracePython=False, 1986 enableTrace=True, exceptions=True, tracePython=False,
1970 redirect=True): 1987 redirect=True):
1971 """ 1988 """

eric ide

mercurial