Show More
@@ -0,0 +1,37 b'' | |||
|
1 | """ | |
|
2 | comp | |
|
3 | """ | |
|
4 | ||
|
5 | # The prefilter always ends in a call to some self.handle_X method. We swap | |
|
6 | # all of those out so that we can capture which one was called. | |
|
7 | ||
|
8 | import sys | |
|
9 | sys.path.append('..') | |
|
10 | import IPython | |
|
11 | import IPython.ipapi | |
|
12 | ||
|
13 | IPython.Shell.start() | |
|
14 | ||
|
15 | ip = IPython.ipapi.get() | |
|
16 | ||
|
17 | completer = ip.IP.Completer | |
|
18 | ||
|
19 | print completer | |
|
20 | ||
|
21 | def do_test(text, line): | |
|
22 | def get_endix(): | |
|
23 | idx = len(line) -1 | |
|
24 | print "Call endidx =>",idx | |
|
25 | return idx | |
|
26 | def get_line_buffer(): | |
|
27 | print "Lbuf =>",line | |
|
28 | return line | |
|
29 | completer.get_line_buffer = get_line_buffer | |
|
30 | completer.get_endidx = get_endix | |
|
31 | l = completer.all_completions(text) | |
|
32 | return l | |
|
33 | ||
|
34 | l = do_test ('p', 'print p') | |
|
35 | assert 'pow' in l | |
|
36 | l = do_test ('p', 'import p') | |
|
37 | assert 'pprint' in l No newline at end of file |
@@ -247,6 +247,7 b' class IPCompleter(Completer):' | |||
|
247 | 247 | delims = delims.replace(self.magic_escape,'') |
|
248 | 248 | self.readline.set_completer_delims(delims) |
|
249 | 249 | self.get_line_buffer = self.readline.get_line_buffer |
|
250 | self.get_endidx = self.readline.get_endidx | |
|
250 | 251 | self.omit__names = omit__names |
|
251 | 252 | self.merge_completions = shell.rc.readline_merge_completions |
|
252 | 253 | if alias_table is None: |
@@ -272,6 +273,7 b' class IPCompleter(Completer):' | |||
|
272 | 273 | self.alias_matches, |
|
273 | 274 | self.python_func_kw_matches] |
|
274 | 275 | |
|
276 | ||
|
275 | 277 | # Code contributed by Alex Schmolck, for ipython/emacs integration |
|
276 | 278 | def all_completions(self, text): |
|
277 | 279 | """Return all possible completions for the benefit of emacs.""" |
@@ -560,8 +562,7 b' class IPCompleter(Completer):' | |||
|
560 | 562 | pass |
|
561 | 563 | |
|
562 | 564 | return None |
|
563 | ||
|
564 | ||
|
565 | ||
|
565 | 566 | def complete(self, text, state,line_buffer=None): |
|
566 | 567 | """Return the next possible completion for 'text'. |
|
567 | 568 | |
@@ -584,6 +585,9 b' class IPCompleter(Completer):' | |||
|
584 | 585 | # his tab! Incidentally, this enables pasting of tabbed text from |
|
585 | 586 | # an editor (as long as autoindent is off). |
|
586 | 587 | |
|
588 | # It should be noted that at least pyreadline still shows | |
|
589 | # file completions - is there a way around it? | |
|
590 | ||
|
587 | 591 | # don't apply this on 'dumb' terminals, such as emacs buffers, so we |
|
588 | 592 | # don't interfere with their own tab-completion mechanism. |
|
589 | 593 | if line_buffer is None: |
@@ -598,7 +602,7 b' class IPCompleter(Completer):' | |||
|
598 | 602 | magic_escape = self.magic_escape |
|
599 | 603 | magic_prefix = self.magic_prefix |
|
600 | 604 | |
|
601 |
self.lbuf = self.full_lbuf[:self. |
|
|
605 | self.lbuf = self.full_lbuf[:self.get_endidx()] | |
|
602 | 606 | |
|
603 | 607 | try: |
|
604 | 608 | if text.startswith(magic_escape): |
@@ -6,6 +6,9 b'' | |||
|
6 | 6 | |
|
7 | 7 | * ipy_user_conf.py: Added an example on how to change term |
|
8 | 8 | colors in config file (through using autoexec). |
|
9 | ||
|
10 | * completer.py, test_completer.py: Ability to specify custom | |
|
11 | get_endidx to replace readline.get_endidx. For emacs users. | |
|
9 | 12 | |
|
10 | 13 | 2008-01-10 Ville Vainio <vivainio@gmail.com> |
|
11 | 14 |
General Comments 0
You need to be logged in to leave comments.
Login now