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

