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. |