Show More
@@ -416,7 +416,7 b' def get__all__entries(obj):' | |||
|
416 | 416 | return [w for w in words if isinstance(w, string_types)] |
|
417 | 417 | |
|
418 | 418 | |
|
419 | def match_dict_keys(keys, prefix): | |
|
419 | def match_dict_keys(keys, prefix, delims): | |
|
420 | 420 | """Used by dict_key_matches, matching the prefix to a list of keys""" |
|
421 | 421 | if not prefix: |
|
422 | 422 | return None, 0, [repr(k) for k in keys |
@@ -427,8 +427,9 b' def match_dict_keys(keys, prefix):' | |||
|
427 | 427 | prefix_str = eval(prefix + quote, {}) |
|
428 | 428 | except Exception: |
|
429 | 429 | return None, 0, [] |
|
430 | ||
|
431 | token_match = re.search(r'\w*$', prefix, re.UNICODE) | |
|
430 | ||
|
431 | pattern = '[^' + ''.join('\\' + c for c in delims) + ']*$' | |
|
432 | token_match = re.search(pattern, prefix, re.UNICODE) | |
|
432 | 433 | token_start = token_match.start() |
|
433 | 434 | token_prefix = token_match.group() |
|
434 | 435 | |
@@ -913,7 +914,7 b' class IPCompleter(Completer):' | |||
|
913 | 914 | keys = get_keys(obj) |
|
914 | 915 | if not keys: |
|
915 | 916 | return keys |
|
916 | closing_quote, token_offset, matches = match_dict_keys(keys, prefix) | |
|
917 | closing_quote, token_offset, matches = match_dict_keys(keys, prefix, self.splitter.delims) | |
|
917 | 918 | if not matches: |
|
918 | 919 | return matches |
|
919 | 920 |
@@ -490,6 +490,11 b' def test_dict_key_completion_string():' | |||
|
490 | 490 | _, matches = complete(line_buffer="d[\"a'") |
|
491 | 491 | nt.assert_in("b", matches) |
|
492 | 492 | |
|
493 | # need to not split at delims that readline won't split at | |
|
494 | if '-' not in ip.Completer.splitter.delims: | |
|
495 | ip.user_ns['d'] = {'before-after': None} | |
|
496 | _, matches = complete(line_buffer="d['before-af") | |
|
497 | nt.assert_in('before-after', matches) | |
|
493 | 498 | |
|
494 | 499 | def test_dict_key_completion_contexts(): |
|
495 | 500 | """Test expression contexts in which dict key completion occurs""" |
General Comments 0
You need to be logged in to leave comments.
Login now