Show More
@@ -11,7 +11,7 b' import unicodedata' | |||
|
11 | 11 | from wcwidth import wcwidth |
|
12 | 12 | |
|
13 | 13 | from IPython.core.completer import ( |
|
14 |
|
|
|
14 | provisionalcompleter, cursor_to_position, | |
|
15 | 15 | _deduplicate_completions) |
|
16 | 16 | from prompt_toolkit.completion import Completer, Completion |
|
17 | 17 | from prompt_toolkit.layout.lexers import Lexer |
@@ -21,6 +21,23 b' import pygments.lexers as pygments_lexers' | |||
|
21 | 21 | |
|
22 | 22 | _completion_sentinel = object() |
|
23 | 23 | |
|
24 | def _elide(string, *, min_elide=30): | |
|
25 | """ | |
|
26 | If a string is long enough, and has at least 2 dots, | |
|
27 | replace the middle part with ellipses. | |
|
28 | ||
|
29 | For example: | |
|
30 | """ | |
|
31 | if len(string) < min_elide: | |
|
32 | return string | |
|
33 | ||
|
34 | parts = string.split('.') | |
|
35 | ||
|
36 | if len(parts) <= 3: | |
|
37 | return string | |
|
38 | ||
|
39 | return '{}.{}\N{HORIZONTAL ELLIPSIS}{}.{}'.format(parts[0], parts[1][0], parts[-2][-1], parts[-1]) | |
|
40 | ||
|
24 | 41 | |
|
25 | 42 | |
|
26 | 43 | |
@@ -90,7 +107,12 b' class IPythonPTCompleter(Completer):' | |||
|
90 | 107 | # meta_text = '' |
|
91 | 108 | # yield Completion(m, start_position=start_pos, |
|
92 | 109 | # display_meta=meta_text) |
|
93 | yield Completion(c.text, start_position=c.start - offset, display_meta=c.type) | |
|
110 | display_text = c.text | |
|
111 | ||
|
112 | if c.type == 'function': | |
|
113 | display_text = display_text + '()' | |
|
114 | ||
|
115 | yield Completion(c.text, start_position=c.start - offset, display=_elide(display_text), display_meta=c.type) | |
|
94 | 116 | |
|
95 | 117 | class IPythonPTLexer(Lexer): |
|
96 | 118 | """ |
General Comments 0
You need to be logged in to leave comments.
Login now