##// END OF EJS Templates
Try to elide long completion based on user input....
Matthias Bussonnier -
Show More
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -23,7 +23,7 b' import os'
23
23
24 _completion_sentinel = object()
24 _completion_sentinel = object()
25
25
26 def _elide(string, *, min_elide=30):
26 def _elide_point(string, *, min_elide=30):
27 """
27 """
28 If a string is long enough, and has at least 3 dots,
28 If a string is long enough, and has at least 3 dots,
29 replace the middle part with ellipses.
29 replace the middle part with ellipses.
@@ -53,6 +53,24 b' def _elide(string, *, min_elide=30):'
53
53
54 return string
54 return string
55
55
56 def _elide_typed(string, typed, *, min_elide=30):
57 """
58 Elide the middle of a long string if the beginning has already been typed.
59 """
60
61 if len(string) < min_elide:
62 return string
63 cut_how_much = len(typed)-3
64 if string.startswith(typed) and len(string)> len(typed):
65 return f"{string[:3]}\N{HORIZONTAL ELLIPSIS}{string[cut_how_much:]}"
66 return string
67
68 def _elide(string, typed, min_elide=30):
69 return _elide_typed(
70 _elide_point(string, min_elide=min_elide),
71 typed, min_elide=min_elide)
72
73
56
74
57 def _adjust_completion_text_based_on_context(text, body, offset):
75 def _adjust_completion_text_based_on_context(text, body, offset):
58 if text.endswith('=') and len(body) > offset and body[offset] == '=':
76 if text.endswith('=') and len(body) > offset and body[offset] == '=':
@@ -89,7 +107,11 b' class IPythonPTCompleter(Completer):'
89 cursor_col = document.cursor_position_col
107 cursor_col = document.cursor_position_col
90 cursor_position = document.cursor_position
108 cursor_position = document.cursor_position
91 offset = cursor_to_position(body, cursor_row, cursor_col)
109 offset = cursor_to_position(body, cursor_row, cursor_col)
110 try:
92 yield from self._get_completions(body, offset, cursor_position, self.ipy_completer)
111 yield from self._get_completions(body, offset, cursor_position, self.ipy_completer)
112 except Exception as e:
113 from traceback import print_tb
114 print_tb(e)
93
115
94 @staticmethod
116 @staticmethod
95 def _get_completions(body, offset, cursor_position, ipyc):
117 def _get_completions(body, offset, cursor_position, ipyc):
@@ -128,9 +150,9 b' class IPythonPTCompleter(Completer):'
128
150
129 adjusted_text = _adjust_completion_text_based_on_context(c.text, body, offset)
151 adjusted_text = _adjust_completion_text_based_on_context(c.text, body, offset)
130 if c.type == 'function':
152 if c.type == 'function':
131 yield Completion(adjusted_text, start_position=c.start - offset, display=_elide(display_text+'()'), display_meta=c.type+c.signature)
153 yield Completion(adjusted_text, start_position=c.start - offset, display=_elide(display_text+'()', body[c.start:c.end]), display_meta=c.type+c.signature)
132 else:
154 else:
133 yield Completion(adjusted_text, start_position=c.start - offset, display=_elide(display_text), display_meta=c.type)
155 yield Completion(adjusted_text, start_position=c.start - offset, display=_elide(display_text, body[c.start:c.end]), display_meta=c.type)
134
156
135 class IPythonPTLexer(Lexer):
157 class IPythonPTLexer(Lexer):
136 """
158 """
General Comments 0
You need to be logged in to leave comments. Login now