This is an automated email from the git hooks/post-receive script. ben pushed a commit to branch master in repository autocomplete.
commit 54618cda9b9fba84fe74539b584fad4383546b12 Author: bobbylight <[email protected]> Date: Sat May 22 18:07:39 2010 +0000 Fixed autocomplete bug with overloaded functions. Fixed autocomplete bug - capitalization should be corrected when completing a parameterized completion. Internal changes to how RSTALanguageSupport tracks text areas, parsers, and AutoCompletes. Fixed Perl completion support bug when not using params around function completion params. Parsers now specify whether they are "enabled", and if they aren't, they won't parse code in a text area, even if it is installed. --- .../autocomplete/AbstractCompletionProvider.java | 14 ++++++++- src/org/fife/ui/autocomplete/AutoCompletion.java | 33 +++++++++++++------- .../fife/ui/autocomplete/FunctionCompletion.java | 10 ++++-- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java b/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java index 20fd031..18bf46f 100644 --- a/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java +++ b/src/org/fife/ui/autocomplete/AbstractCompletionProvider.java @@ -180,9 +180,21 @@ public abstract class AbstractCompletionProvider if (text!=null) { int index = Collections.binarySearch(completions, text, comparator); - if (index<0) { + if (index<0) { // No exact match index = -index - 1; } + else { + // If there are several overloads for the function being + // completed, Collections.binarySearch() will return the index + // of one of those overloads, but we must return all of them, + // so search backward until we find the first one. + int pos = index - 1; + while (pos>0 && + comparator.compare(completions.get(pos), text)==0) { + retVal.add(completions.get(pos)); + pos--; + } + } while (index<completions.size()) { Completion c = (Completion)completions.get(index); diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java b/src/org/fife/ui/autocomplete/AutoCompletion.java index 9c540db..6ff3c5c 100644 --- a/src/org/fife/ui/autocomplete/AutoCompletion.java +++ b/src/org/fife/ui/autocomplete/AutoCompletion.java @@ -233,7 +233,8 @@ public class AutoCompletion implements HierarchyListener { // Don't bother with a tooltip if there are no parameters. if (pc.getParamCount()==0) { CompletionProvider p = pc.getProvider(); - String text = Character.toString(p.getParameterListEnd()); + char end = p.getParameterListEnd(); // Might be '\0' + String text = end=='\0' ? "" : Character.toString(end); if (addParamListStart) { text = p.getParameterListStart() + text; } @@ -560,8 +561,13 @@ try { installTriggerKey(getTriggerKey()); // Install the function completion key, if there is one. + // NOTE: We cannot do this if the start char is ' ' (e.g. just a space + // between the function name and parameters) because it overrides + // RSTA's special space action. It seems KeyStorke.getKeyStroke(' ') + // hoses ctrl+space, shift+space, etc., even though I think it + // shouldn't... char start = provider.getParameterListStart(); - if (start!=0) { + if (start!=0 && start!=' ') { InputMap im = c.getInputMap(); ActionMap am = c.getActionMap(); KeyStroke ks = KeyStroke.getKeyStroke(start); @@ -1017,19 +1023,22 @@ try { } public void actionPerformed(ActionEvent e) { - hidePopupWindow(); // Prevents keystrokes from messing up - textComponent.replaceSelection(start); - if (!isParameterAssistanceEnabled()) { + + // Prevents keystrokes from messing up + boolean wasVisible = hidePopupWindow(); + + // Only proceed if they were selecting a completion + if (!wasVisible || !isParameterAssistanceEnabled()) { + textComponent.replaceSelection(start); return; } - List completions = provider. - getParameterizedCompletions(textComponent); - if (completions!=null && completions.size()>0) { - // TODO: Have tooltip let you select between multiple, like VS - ParameterizedCompletion pc = - (ParameterizedCompletion)completions.get(0); - displayDescriptionToolTip(pc, false); + + Completion c = popupWindow.getSelection(); + if (c instanceof ParameterizedCompletion) { // Should always be true + // Fixes capitalization of the entered text. + insertCompletion(c); } + } } diff --git a/src/org/fife/ui/autocomplete/FunctionCompletion.java b/src/org/fife/ui/autocomplete/FunctionCompletion.java index 24f1414..8edd19d 100644 --- a/src/org/fife/ui/autocomplete/FunctionCompletion.java +++ b/src/org/fife/ui/autocomplete/FunctionCompletion.java @@ -127,7 +127,10 @@ public class FunctionCompletion extends VariableCompletion // Add parameters for functions. CompletionProvider provider = getProvider(); - sb.append(provider.getParameterListStart()); + char start = provider.getParameterListStart(); + if (start!=0) { + sb.append(start); + } for (int i=0; i<getParamCount(); i++) { Parameter param = getParam(i); type = param.getType(); @@ -145,7 +148,10 @@ public class FunctionCompletion extends VariableCompletion sb.append(provider.getParameterListSeparator()); } } - sb.append(provider.getParameterListEnd()); + char end = provider.getParameterListEnd(); + if (end!=0) { + sb.append(end); + } return sb.toString(); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/autocomplete.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

