From b2d56ff8790154fefefcc40e7b3c84ab97559938 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 27 Sep 2015 14:39:09 -0700 Subject: Treat .( and (( context in completion. * parser.c (provide_completions): Don't pass the context parenthesis to find_matching_syms in additional cases: when preceded by a dot, or another parenthesis. This causes completion situations such as (let ((var[TAB] and obj.(method[TAB] not to be wrongly restricted to the function space. --- parser.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/parser.c b/parser.c index aeaad578..3ff1451a 100644 --- a/parser.c +++ b/parser.c @@ -533,8 +533,10 @@ static void provide_completions(const char *data, char prev = (end > data) ? end[-1] : 0; char pprev = (end > data + 1) ? end[-2] : 0; int quote = (pprev == '^' || pprev == '\'' || pprev == '#'); + int meth = (pprev == '.'); + int ppar = (pprev == '('); int dwim = (prev == '['); - char par = (!pprev || !quote || dwim) ? prev : 0; + char par = (!pprev || (!quote && !meth && !ppar) || dwim) ? prev : 0; find_matching_syms(cpl, or2(package, user_package), sym_pfx, line_pfx, par, if2(package, null(keyword))); -- cgit v1.2.3