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

ben pushed a commit to branch master
in repository autocomplete.

commit 1ecfa2a5916a907095f63f63363c27a677460692
Author: bobbylight <[email protected]>
Date:   Sun Aug 12 04:50:06 2012 +0000

    AutoComplete: Fixed bug: Template completions ending with a param/cursor, 
you couldn't cycle through the params properly.
    AutoComplete: Fixed bug: Multi-line template completions with tabs, when 
replacing tabs with spaces, could incorrectly calculate param offsets (e.g. 
"switch" in Java/JS support).
---
 .../ParameterizedCompletionContext.java            |    2 +-
 .../fife/ui/autocomplete/TemplateCompletion.java   |   64 +++++++++++++-------
 2 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
index 8cd6fe4..fa99f4f 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
@@ -998,7 +998,7 @@ class ParameterizedCompletionContext {
                                return;
                        }
                        int dot = e.getDot();
-                       if (dot<minPos || dot>=maxPos.getOffset()) {
+                       if (dot<minPos || dot>maxPos.getOffset()) {
                                deactivate();
                                return;
                        }
diff --git a/src/org/fife/ui/autocomplete/TemplateCompletion.java 
b/src/org/fife/ui/autocomplete/TemplateCompletion.java
index 7c31734..4e727f1 100644
--- a/src/org/fife/ui/autocomplete/TemplateCompletion.java
+++ b/src/org/fife/ui/autocomplete/TemplateCompletion.java
@@ -20,6 +20,7 @@ import javax.swing.text.Position;
 
 import org.fife.ui.autocomplete.TemplatePiece.Param;
 import org.fife.ui.autocomplete.TemplatePiece.ParamCopy;
+import org.fife.ui.autocomplete.TemplatePiece.Text;
 import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities;
 
 
@@ -193,10 +194,16 @@ public class TemplateCompletion extends AbstractCompletion
                for (int i=0; i<pieces.size(); i++) {
                        TemplatePiece piece = (TemplatePiece)pieces.get(i);
                        String text = getPieceText(i, leadingWS);
-                       if (piece instanceof Param && "cursor".equals(text)) {
+                       if (piece instanceof Text) {
                                if (replaceTabsWithSpaces) {
-                                       start = 
possiblyReplaceTabsWithSpaces(sb, tc, start);
+                                       start = 
possiblyReplaceTabsWithSpaces(sb, text, tc, start);
                                }
+                               else {
+                                       sb.append(text);
+                                       start += text.length();
+                               }
+                       }
+                       else if (piece instanceof Param && 
"cursor".equals(text)) {
                                defaultEndOffs = start;
                        }
                        else {
@@ -317,30 +324,41 @@ public class TemplateCompletion extends AbstractCompletion
        }
 
 
-       private int possiblyReplaceTabsWithSpaces(StringBuffer sb, 
JTextComponent tc,
-                                                                               
        int start) {
+       private int possiblyReplaceTabsWithSpaces(StringBuffer sb, String text,
+                                                                               
        JTextComponent tc, int start) {
 
-               int size = 4;
-               Document doc = tc.getDocument();
-               if (doc != null) {
-                       Integer i = (Integer) 
doc.getProperty(PlainDocument.tabSizeAttribute);
-                       if (i != null) {
-                               size = i.intValue();
-                       }
-               }
-               String tab = "";
-               for (int i=0; i<size; i++) {
-                       tab += " ";
-               }
+               int tab = text.indexOf('\t');
+               if (tab>-1) {
+
+                       int startLen = sb.length();
 
-               int lastNewline = sb.lastIndexOf("\n");
-               int lineOffs = 0;
-               for (int j=lastNewline+1; j<sb.length(); j++) {
-                       if (sb.charAt(j)=='\t') {
-                               int count = size - (lineOffs%size);
-                               sb.replace(j, j+1, tab.substring(0, count));
-                               start += count - 1;
+                       int size = 4;
+                       Document doc = tc.getDocument();
+                       if (doc != null) {
+                               Integer i = (Integer) 
doc.getProperty(PlainDocument.tabSizeAttribute);
+                               if (i != null) {
+                                       size = i.intValue();
+                               }
+                       }
+                       String tabStr = "";
+                       for (int i=0; i<size; i++) {
+                               tabStr += " ";
                        }
+
+                       int lastOffs = 0;
+                       do {
+                               sb.append(text.substring(lastOffs, tab));
+                               sb.append(tabStr);
+                               lastOffs = tab + 1;
+                       } while ((tab=text.indexOf('\t', lastOffs))>-1);
+                       sb.append(text.substring(lastOffs));
+
+                       start += sb.length() - startLen;
+
+               }
+               else {
+                       sb.append(text);
+                       start += text.length();
                }
 
                return start;

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