This is an automated email from the git hooks/post-receive script.

ben pushed a commit to branch master
in repository autocomplete.

commit 8ca6559c6de9e11c4461c2a4b38e3d0011fcfe52
Author: bobbylight <[email protected]>
Date:   Mon Sep 17 02:53:00 2012 +0000

    Make user overtype closing ')' when typing a method completion and they 
type the '(' explicitly.
---
 .../ui/autocomplete/AutoCompletePopupWindow.java   |    2 +-
 src/org/fife/ui/autocomplete/AutoCompletion.java   |   48 ++++++++++++++------
 .../fife/ui/autocomplete/FunctionCompletion.java   |   12 ++---
 .../ui/autocomplete/ParameterizedCompletion.java   |    3 +-
 .../ParameterizedCompletionContext.java            |   46 ++++++++-----------
 .../fife/ui/autocomplete/TemplateCompletion.java   |    3 +-
 6 files changed, 60 insertions(+), 54 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java 
b/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
index fb505c7..4d22903 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletePopupWindow.java
@@ -303,7 +303,7 @@ class AutoCompletePopupWindow extends JWindow implements 
CaretListener,
         *
         * @see #getSelection()
         */
-       public void insertSelectedCompletion() {
+       private void insertSelectedCompletion() {
                Completion comp = getSelection();
                ac.insertCompletion(comp);
        }
diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java 
b/src/org/fife/ui/autocomplete/AutoCompletion.java
index 9fcb8ef..8f9b25e 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletion.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletion.java
@@ -516,7 +516,21 @@ public class AutoCompletion {
         *
         * @param c A completion to insert.  This cannot be <code>null</code>.
         */
-       protected void insertCompletion(Completion c) {
+       protected final void insertCompletion(Completion c) {
+               insertCompletion(c, false);
+       }
+
+
+       /**
+        * Inserts a completion.  Any time a code completion event occurs, the
+        * actual text insertion happens through this method.
+        *
+        * @param c A completion to insert.  This cannot be <code>null</code>.
+        * @param typedParamListStartChar Whether the parameterized completion
+        *        start character was typed (typically <code>'('</code>).
+        */
+       protected void insertCompletion(Completion c,
+                       boolean typedParamListStartChar) {
 
                JTextComponent textComp = getTextComponent();
                String alreadyEntered = c.getAlreadyEntered(textComp);
@@ -536,7 +550,7 @@ public class AutoCompletion {
                if (isParameterAssistanceEnabled() &&
                                (c instanceof ParameterizedCompletion)) {
                        ParameterizedCompletion pc = (ParameterizedCompletion)c;
-                       startParameterizedCompletionAssistance(pc, true);
+                       startParameterizedCompletionAssistance(pc, 
typedParamListStartChar);
                }
 
        }
@@ -974,33 +988,39 @@ public class AutoCompletion {
 
 
        /**
-        * Displays a "tooltip" detailing the inputs to the function just 
entered.
+        * Displays a "tool tip" detailing the inputs to the function just 
entered.
         *
         * @param pc The completion.
-        * @param addParamListStart Whether or not
-        *        {@link CompletionProvider#getParameterListStart()} should be
-        *        added to the text component.
+        * @param typedParamListStartChar Whether the parameterized completion 
list
+        *        starting character was typed.
         */
        private void startParameterizedCompletionAssistance(
-                               ParameterizedCompletion pc, boolean 
addParamListStart) {
+                               ParameterizedCompletion pc, boolean 
typedParamListStartChar) {
 
-               // Get rid of the previous tooltip window, if there is one.
+               // Get rid of the previous tool tip window, if there is one.
                hideParameterCompletionPopups();
 
-               // Don't bother with a tooltip if there are no parameters.
+               // Don't bother with a tool tip if there are no parameters, but 
if
+               // they typed e.g. the opening '(', make them overtype the ')'.
                if (pc.getParamCount()==0 && !(pc instanceof 
TemplateCompletion)) {
                        CompletionProvider p = pc.getProvider();
                        char end = p.getParameterListEnd(); // Might be '\0'
                        String text = end=='\0' ? "" : Character.toString(end);
-                       if (addParamListStart) {
+                       if (typedParamListStartChar) {
+                               String template = "${}" + text + "${cursor}";
+                               
textComponent.replaceSelection(Character.toString(p.getParameterListStart()));
+                               TemplateCompletion tc = new 
TemplateCompletion(p, null, null,  template);
+                               pc = tc;
+                       }
+                       else {
                                text = p.getParameterListStart() + text;
+                               textComponent.replaceSelection(text);
+                               return;
                        }
-                       textComponent.replaceSelection(text);
-                       return;
                }
 
                pcc = new ParameterizedCompletionContext(parentWindow, this, 
pc);
-               pcc.activate(addParamListStart);
+               pcc.activate();
 
        }
 
@@ -1216,7 +1236,7 @@ public class AutoCompletion {
                        Completion c = popupWindow.getSelection();
                        if (c instanceof ParameterizedCompletion) { // Should 
always be true
                                // Fixes capitalization of the entered text.
-                               insertCompletion(c);
+                               insertCompletion(c, true);
                        }
 
                }
diff --git a/src/org/fife/ui/autocomplete/FunctionCompletion.java 
b/src/org/fife/ui/autocomplete/FunctionCompletion.java
index 8f42b11..e56b4fa 100644
--- a/src/org/fife/ui/autocomplete/FunctionCompletion.java
+++ b/src/org/fife/ui/autocomplete/FunctionCompletion.java
@@ -147,15 +147,15 @@ public class FunctionCompletion extends VariableCompletion
 
 
        public ParameterizedCompletionInsertionInfo getInsertionInfo(
-                       JTextComponent tc, boolean addParamStartList,
-                       boolean replaceTabsWithSpaces) {
+                       JTextComponent tc, boolean replaceTabsWithSpaces) {
 
                ParameterizedCompletionInsertionInfo info =
                        new ParameterizedCompletionInsertionInfo();
 
                StringBuffer sb = new StringBuffer();
-               if (addParamStartList) {
-                       sb.append(getProvider().getParameterListStart());
+               char paramListStart = getProvider().getParameterListStart();
+               if (paramListStart!='\0') {
+                       sb.append(paramListStart);
                }
                int dot = tc.getCaretPosition() + sb.length();
                int paramCount = getParamCount();
@@ -194,9 +194,7 @@ public class FunctionCompletion extends VariableCompletion
                }
                sb.append(getProvider().getParameterListEnd());
                int endOffs = dot + sb.length();
-               if (addParamStartList) {
-                       endOffs -= 
1;//getProvider().getParameterListStart().length();
-               }
+               endOffs -= 1;//getProvider().getParameterListStart().length();
                info.addReplacementLocation(endOffs, endOffs); // offset after 
function
                info.setDefaultEndOffs(endOffs);
                
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
index 2b4531e..43098b8 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
@@ -50,8 +50,7 @@ public interface ParameterizedCompletion extends Completion {
 
 
        public ParameterizedCompletionInsertionInfo getInsertionInfo(
-                       JTextComponent tc, boolean addParamStartList,
-                       boolean replaceTabsWithSpaces);
+                       JTextComponent tc, boolean replaceTabsWithSpaces);
 
 
        /**
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
index 81ea1c3..426329e 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
@@ -189,11 +189,9 @@ class ParameterizedCompletionContext {
        /**
         * Activates parameter completion support.
         *
-        * @param addParamListStart Whether the parameter list start token 
should
-        *        be inserted at the caret position before the parameters.
         * @see #deactivate()
         */
-       public void activate(boolean addParamListStart) {
+       public void activate() {
 
                if (active) {
                        return;
@@ -222,7 +220,7 @@ class ParameterizedCompletionContext {
                        }
                }
 
-               listener.install(tc, addParamListStart);
+               listener.install(tc);
                // First time through, we'll need to create this window.
                if (paramChoicesWindow==null) {
                        paramChoicesWindow = createParamChoicesWindow();
@@ -252,7 +250,7 @@ class ParameterizedCompletionContext {
         * Hides any popup windows and terminates parameterized completion
         * assistance.
         *
-        * @see #activate(boolean)
+        * @see #activate()
         */
        public void deactivate() {
                if (!active) {
@@ -927,26 +925,21 @@ class ParameterizedCompletionContext {
                        // Are they at or past the end of the parameters?
                        if (dot>=maxPos.getOffset()-2) { // ">=" for overwrite 
mode
 
-                               if (dot==maxPos.getOffset()-1) { // Happens in 
overwrite mode
-                                       
tc.replaceSelection(Character.toString(end));
-                               }
-
-                               else { // Typical case.
-                                       // Try to decide if we're closing a 
paren that is a part
-                                       // of the (last) arg being typed.
-                                       String text = getArgumentText(dot);
-                                       if (text!=null) {
-                                               char start = 
pc.getProvider().getParameterListStart();
-                                               int startCount = getCount(text, 
start);
-                                               int endCount = getCount(text, 
end);
-                                               if (startCount>endCount) { // 
Just closing a paren
-                                                       
tc.replaceSelection(Character.toString(end));
-                                                       return;
-                                               }
+                               // Try to decide if we're closing a paren that 
is a part
+                               // of the (last) arg being typed.
+                               String text = getArgumentText(dot);
+                               if (text!=null) {
+                                       char start = 
pc.getProvider().getParameterListStart();
+                                       int startCount = getCount(text, start);
+                                       int endCount = getCount(text, end);
+                                       if (startCount>endCount) { // Just 
closing a paren
+                                               
tc.replaceSelection(Character.toString(end));
+                                               return;
                                        }
-                                       
//tc.setCaretPosition(maxPos.getOffset());
-                                       
tc.setCaretPosition(tc.getCaretPosition()+1);
                                }
+                               //tc.setCaretPosition(maxPos.getOffset());
+                               
tc.setCaretPosition(Math.min(tc.getCaretPosition()+1,
+                                               tc.getDocument().getLength()));
 
                                deactivate();
 
@@ -1073,12 +1066,9 @@ class ParameterizedCompletionContext {
                 * Installs this listener onto a text component.
                 *
                 * @param tc The text component to install onto.
-                * @param addParamStartList Whether or not
-                *        {@link CompletionProvider#getParameterListStart()} 
should be
-                *        added to the text component.
                 * @see #uninstall()
                 */
-               public void install(JTextComponent tc, boolean 
addParamStartList) {
+               public void install(JTextComponent tc) {
 
                        boolean replaceTabs = false;
                        if (tc instanceof RSyntaxTextArea) {
@@ -1094,7 +1084,7 @@ class ParameterizedCompletionContext {
 
                                // Insert the parameter text
                                ParameterizedCompletionInsertionInfo info =
-                                       pc.getInsertionInfo(tc, 
addParamStartList, replaceTabs);
+                                       pc.getInsertionInfo(tc, replaceTabs);
                                tc.replaceSelection(info.getTextToInsert());
 
                                // Add highlights around the parameters.
diff --git a/src/org/fife/ui/autocomplete/TemplateCompletion.java 
b/src/org/fife/ui/autocomplete/TemplateCompletion.java
index 4e727f1..1cde2ea 100644
--- a/src/org/fife/ui/autocomplete/TemplateCompletion.java
+++ b/src/org/fife/ui/autocomplete/TemplateCompletion.java
@@ -155,8 +155,7 @@ public class TemplateCompletion extends AbstractCompletion
 
 
        public ParameterizedCompletionInsertionInfo getInsertionInfo(
-                       JTextComponent tc, boolean addParamStartList,
-                       boolean replaceTabsWithSpaces) {
+                       JTextComponent tc, boolean replaceTabsWithSpaces) {
 
                ParameterizedCompletionInsertionInfo info =
                        new ParameterizedCompletionInsertionInfo();

-- 
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

Reply via email to