##// END OF EJS Templates
readline.get_endidx is configurable, for emacs users
vivainio -
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."""
@@ -561,7 +563,6 b' class IPCompleter(Completer):'
561 563
562 564 return None
563 565
564
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.readline.get_endidx()]
605 self.lbuf = self.full_lbuf[:self.get_endidx()]
602 606
603 607 try:
604 608 if text.startswith(magic_escape):
@@ -7,6 +7,9 b''
7 7 * ipy_user_conf.py: Added an example on how to change term
8 8 colors in config file (through using autoexec).
9 9
10 * completer.py, test_completer.py: Ability to specify custom
11 get_endidx to replace readline.get_endidx. For emacs users.
12
10 13 2008-01-10 Ville Vainio <vivainio@gmail.com>
11 14
12 15 * Prompts.py (set_p_str): do not crash on illegal prompt strings
General Comments 0
You need to be logged in to leave comments. Login now