diff options
author | Paul Pazderski | 2019-08-26 15:13:52 +0000 |
---|---|---|
committer | Paul Pazderski | 2019-09-10 18:54:10 +0000 |
commit | c89b823822e2d73ba4996ad419475db34c916ed5 (patch) | |
tree | 2be8cfe0c35081d8b13e254dc4148dfffe988017 | |
parent | 1bc0d896ac35ac1c02c6b2326fac003a93b22469 (diff) | |
download | eclipse.platform.text-c89b823822e2d73ba4996ad419475db34c916ed5.tar.gz eclipse.platform.text-c89b823822e2d73ba4996ad419475db34c916ed5.tar.xz eclipse.platform.text-c89b823822e2d73ba4996ad419475db34c916ed5.zip |
Bug 550471 - Replace usage of TextUtilities.indexOf withI20190910-1800
MultiStringMatcher
TextUtilities.indexOf is deprecated and MultiStringMatcher is
(especially when reused) faster.
Change-Id: I44eef426cf5c2faedd47a57ec09641aae8700166
Signed-off-by: Paul Pazderski <paul-eclipse@ppazderski.de>
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java | 28 | ||||
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java | 16 |
2 files changed, 22 insertions, 22 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java b/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java index d5d1c605f02..f0dac1f9aba 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/internal/text/SelectionProcessor.java @@ -39,6 +39,8 @@ import org.eclipse.jface.text.IRewriteTarget; import org.eclipse.jface.text.ITextSelection; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.ITextViewerExtension; +import org.eclipse.jface.text.MultiStringMatcher; +import org.eclipse.jface.text.MultiStringMatcher.Match; import org.eclipse.jface.text.Region; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.text.TextUtilities; @@ -244,6 +246,7 @@ public final class SelectionProcessor { int visualEndColumn= computeVisualColumn(endLine, endColumn); root= new MultiTextEdit(); String[] delimiters= fDocument.getLegalLineDelimiters(); + MultiStringMatcher delimiterMatcher= MultiStringMatcher.create(delimiters); int lastDelim= 0; for (int line= startLine; line <= endLine; line++) { @@ -251,13 +254,13 @@ public final class SelectionProcessor { if (lastDelim == -1) { string= ""; //$NON-NLS-1$ } else { - int[] index= TextUtilities.indexOf(delimiters, replacement, lastDelim); - if (index[0] == -1) { + Match m= delimiterMatcher.indexOf(replacement, lastDelim); + if (m == null) { string= replacement.substring(lastDelim); lastDelim= -1; } else { - string= replacement.substring(lastDelim, index[0]); - lastDelim= index[0] + delimiters[index[1]].length(); + string= replacement.substring(lastDelim, m.getOffset()); + lastDelim= m.getOffset() + m.getText().length(); } } TextEdit replace= createReplaceEdit(line, visualStartColumn, visualEndColumn, string, delete); @@ -266,13 +269,13 @@ public final class SelectionProcessor { while (lastDelim != -1) { // more stuff to insert String string; - int[] index= TextUtilities.indexOf(delimiters, replacement, lastDelim); - if (index[0] == -1) { + Match m= delimiterMatcher.indexOf(replacement, lastDelim); + if (m == null) { string= replacement.substring(lastDelim); lastDelim= -1; } else { - string= replacement.substring(lastDelim, index[0]); - lastDelim= index[0] + delimiters[index[1]].length(); + string= replacement.substring(lastDelim, m.getOffset()); + lastDelim= m.getOffset() + m.getText().length(); } endLine++; TextEdit edit; @@ -379,13 +382,8 @@ public final class SelectionProcessor { @Override ISelection makeReplaceSelection(ISelection selection, String replacement) throws BadLocationException { IBlockTextSelection bts= (IBlockTextSelection)selection; - String[] delimiters= fDocument.getLegalLineDelimiters(); - int[] index= TextUtilities.indexOf(delimiters, replacement, 0); - int length; - if (index[0] == -1) - length= replacement.length(); - else - length= index[0]; + Match m= MultiStringMatcher.indexOf(replacement, 0, fDocument.getLegalLineDelimiters()); + int length= m != null ? m.getOffset() : replacement.length(); int startLine= bts.getStartLine(); int column= bts.getStartColumn() + length; diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java index 9b412ebf101..27ae2c3b094 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java @@ -81,6 +81,7 @@ import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.text.MultiStringMatcher.Match; import org.eclipse.jface.text.hyperlink.HyperlinkManager; import org.eclipse.jface.text.hyperlink.HyperlinkManager.DETECTION_STRATEGY; import org.eclipse.jface.text.hyperlink.IHyperlinkDetector; @@ -3927,7 +3928,7 @@ public class TextViewer extends Viewer implements TextTransfer plainTextTransfer= TextTransfer.getInstance(); String contents= (String) clipboard.getContents(plainTextTransfer, DND.CLIPBOARD); String toInsert; - if (TextUtilities.indexOf(fDocument.getLegalLineDelimiters(), contents, 0)[0] != -1) { + if (MultiStringMatcher.indexOf(contents, 0, fDocument.getLegalLineDelimiters()) != null) { // multi-line insertion toInsert= contents; } else { @@ -4302,6 +4303,7 @@ public class TextViewer extends Viewer implements try { IRegion[] occurrences= new IRegion[endLine - startLine + 1]; + MultiStringMatcher prefixMatcher= MultiStringMatcher.create(prefixes); // find all the first occurrences of prefix in the given lines for (int i= 0; i < occurrences.length; i++) { @@ -4310,20 +4312,20 @@ public class TextViewer extends Viewer implements String text= d.get(line.getOffset(), line.getLength()); int index= -1; - int[] found= TextUtilities.indexOf(prefixes, text, 0); - if (found[0] != -1) { + Match m= prefixMatcher.indexOf(text, 0); + if (m != null) { if (ignoreWhitespace) { - String s= d.get(line.getOffset(), found[0]); + String s= d.get(line.getOffset(), m.getOffset()); s= s.trim(); if (s.isEmpty()) - index= line.getOffset() + found[0]; - } else if (found[0] == 0) + index= line.getOffset() + m.getOffset(); + } else if (m.getOffset() == 0) index= line.getOffset(); } if (index > -1) { // remember where prefix is in line, so that it can be removed - int length= prefixes[found[1]].length(); + int length= m.getText().length(); if (length == 0 && !ignoreWhitespace && line.getLength() > 0) { // found a non-empty line which cannot be shifted return; |