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 except: |
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) |
1956 comp = None |
1975 comp = None |
1957 while comp is not None: |
1976 while comp is not None: |
1958 completions.append(comp) |
1977 completions.add(comp) |
1959 state += 1 |
1978 state += 1 |
1960 try: |
1979 try: |
1961 comp = self.complete(text, state) |
1980 comp = completer(text, state) |
1962 except: |
1981 except: |
1963 comp = None |
1982 comp = None |
1964 |
|
1965 self.write("{0}{1}||{2}\n".format(DebugProtocol.ResponseCompletion, |
|
1966 str(completions), text)) |
|
1967 |
1983 |
1968 def startDebugger(self, filename=None, host=None, port=None, |
1984 def startDebugger(self, filename=None, host=None, port=None, |
1969 enableTrace=True, exceptions=True, tracePython=False, |
1985 enableTrace=True, exceptions=True, tracePython=False, |
1970 redirect=True): |
1986 redirect=True): |
1971 """ |
1987 """ |