[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/actions PyConvertSpaceToTab.java, 1.7, 1.8
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2008-06-14 22:15:19
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27940/src/org/python/pydev/editor/actions Modified Files: PyConvertSpaceToTab.java PyUncomment.java PyAddBlockComment.java OfflineActionTarget.java PyOrganizeImports.java PyAction.java PyAddSingleBlockComment.java PyComment.java PyConvertTabToSpace.java PyRemoveBlockComment.java Log Message: Using faster version of StringBuffer: FastStrintgBuffer / Better icons for auto-import. Index: PyRemoveBlockComment.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyRemoveBlockComment.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PyRemoveBlockComment.java 10 Feb 2007 11:55:57 -0000 1.6 --- PyRemoveBlockComment.java 14 Jun 2008 22:14:55 -0000 1.7 *************** *** 11,14 **** --- 11,15 ---- import org.eclipse.jface.action.IAction; import org.python.pydev.core.docutils.PySelection; + import org.python.pydev.core.structure.FastStringBuffer; /** *************** *** 53,57 **** public int perform(PySelection ps) { // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer(); --- 54,58 ---- public int perform(PySelection ps) { // What we'll be replacing the selected text with ! FastStringBuffer strbuf = new FastStringBuffer(); Index: PyComment.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyComment.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** PyComment.java 22 Aug 2006 22:07:08 -0000 1.9 --- PyComment.java 14 Jun 2008 22:14:55 -0000 1.10 *************** *** 15,18 **** --- 15,19 ---- import org.python.pydev.core.docutils.PySelection; import org.python.pydev.core.docutils.StringUtils; + import org.python.pydev.core.structure.FastStringBuffer; /** *************** *** 49,53 **** public Tuple<Integer, Integer> perform(PySelection ps) throws BadLocationException { // What we'll be replacing the selected text with - StringBuffer strbuf = new StringBuffer(); // If they selected a partial line, count it as a full one --- 50,53 ---- *************** *** 57,60 **** --- 57,61 ---- List<String> ret = StringUtils.splitInLines(selectedText); + FastStringBuffer strbuf = new FastStringBuffer(selectedText.length()+ret.size()+2); for(String line: ret){ strbuf.append('#'); Index: OfflineActionTarget.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/OfflineActionTarget.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** OfflineActionTarget.java 20 Oct 2007 19:30:36 -0000 1.6 --- OfflineActionTarget.java 14 Jun 2008 22:14:55 -0000 1.7 *************** *** 24,27 **** --- 24,28 ---- import org.eclipse.ui.texteditor.IStatusField; import org.eclipse.ui.texteditor.IStatusFieldExtension; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.PyEdit; *************** *** 391,395 **** */ private String escapeTabs(String string) { ! StringBuffer buffer= new StringBuffer(); int begin= 0; --- 392,396 ---- */ private String escapeTabs(String string) { ! FastStringBuffer buffer= new FastStringBuffer(); int begin= 0; Index: PyUncomment.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyUncomment.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** PyUncomment.java 22 Aug 2006 22:07:08 -0000 1.8 --- PyUncomment.java 14 Jun 2008 22:14:55 -0000 1.9 *************** *** 10,13 **** --- 10,14 ---- import org.python.pydev.core.Tuple; import org.python.pydev.core.docutils.PySelection; + import org.python.pydev.core.structure.FastStringBuffer; /** *************** *** 28,32 **** public Tuple<Integer, Integer> perform(PySelection ps) throws BadLocationException { // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer(); // If they selected a partial line, count it as a full one --- 29,33 ---- public Tuple<Integer, Integer> perform(PySelection ps) throws BadLocationException { // What we'll be replacing the selected text with ! FastStringBuffer strbuf = new FastStringBuffer(); // If they selected a partial line, count it as a full one Index: PyAddBlockComment.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyAddBlockComment.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** PyAddBlockComment.java 4 Aug 2007 16:01:11 -0000 1.17 --- PyAddBlockComment.java 14 Jun 2008 22:14:55 -0000 1.18 *************** *** 10,13 **** --- 10,14 ---- import org.python.pydev.core.Tuple; import org.python.pydev.core.docutils.PySelection; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.commentblocks.CommentBlocksPreferences; import org.python.pydev.plugin.PydevPlugin; *************** *** 74,78 **** public int perform(PySelection ps) { // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer(); // If they selected a partial line, count it as a full one --- 75,80 ---- public int perform(PySelection ps) { // What we'll be replacing the selected text with ! FastStringBuffer strbuf = new FastStringBuffer(); ! FastStringBuffer tempBuffer = new FastStringBuffer(); // If they selected a partial line, count it as a full one *************** *** 118,122 **** } ! fullCommentLine = getFullCommentLine(classIndex); String spacesBefore; if(classIndex > 0){ --- 120,124 ---- } ! fullCommentLine = getFullCommentLine(classIndex, tempBuffer); String spacesBefore; if(classIndex > 0){ *************** *** 126,133 **** } ! strbuf.append(spacesBefore+"#" + fullCommentLine + endLineDelim); String initialLine = line; line = line.substring(classIndex+tokLen); ! StringBuffer className = new StringBuffer(); for(int i=0;i<line.length();i++){ char cN = line.charAt(i); --- 128,135 ---- } ! strbuf.append(spacesBefore+"#").append(fullCommentLine).append(endLineDelim); String initialLine = line; line = line.substring(classIndex+tokLen); ! FastStringBuffer className = new FastStringBuffer(); for(int i=0;i<line.length();i++){ char cN = line.charAt(i); *************** *** 145,149 **** strbuf.append(spacesBefore); ! strbuf.append("#" + fullCommentLine); strbuf.append(endLineDelim); strbuf.append(initialLine); --- 147,151 ---- strbuf.append(spacesBefore); ! strbuf.append("#").append(fullCommentLine); strbuf.append(endLineDelim); strbuf.append(initialLine); *************** *** 151,156 **** }else{ ! fullCommentLine = getFullCommentLine(0); ! strbuf.append("#" + fullCommentLine + endLineDelim); // For each line, comment them out for (int i = startLineIndex; i <= endLineIndex; i++) { --- 153,158 ---- }else{ ! fullCommentLine = getFullCommentLine(0, tempBuffer); ! strbuf.append("#").append(fullCommentLine).append(endLineDelim); // For each line, comment them out for (int i = startLineIndex; i <= endLineIndex; i++) { *************** *** 164,168 **** } // End of block ! strbuf.append("#" + fullCommentLine); } --- 166,170 ---- } // End of block ! strbuf.append("#").append(fullCommentLine); } *************** *** 191,200 **** * @return Comment line string, or a default one if Preferences are null */ ! protected String getFullCommentLine(int subtract) { Tuple<Integer,Character> colsAndChar = getColsAndChar(); int cols = colsAndChar.o1-subtract; char c = colsAndChar.o2; ! StringBuffer buffer = new StringBuffer(cols); for (int i = 0; i < cols-1; i++) { buffer.append(c); --- 193,202 ---- * @return Comment line string, or a default one if Preferences are null */ ! protected String getFullCommentLine(int subtract, FastStringBuffer buffer) { Tuple<Integer,Character> colsAndChar = getColsAndChar(); int cols = colsAndChar.o1-subtract; char c = colsAndChar.o2; ! buffer.clear(); for (int i = 0; i < cols-1; i++) { buffer.append(c); Index: PyAddSingleBlockComment.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyAddSingleBlockComment.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PyAddSingleBlockComment.java 18 Jun 2007 16:33:22 -0000 1.7 --- PyAddSingleBlockComment.java 14 Jun 2008 22:14:55 -0000 1.8 *************** *** 10,13 **** --- 10,14 ---- import org.python.pydev.core.docutils.PySelection; import org.python.pydev.core.docutils.StringUtils; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.commentblocks.CommentBlocksPreferences; import org.python.pydev.plugin.PydevPlugin; *************** *** 34,38 **** public int perform(PySelection ps) { // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer(); // If they selected a partial line, count it as a full one --- 35,39 ---- public int perform(PySelection ps) { // What we'll be replacing the selected text with ! FastStringBuffer strbuf = new FastStringBuffer(); // If they selected a partial line, count it as a full one *************** *** 55,59 **** char c = colsAndChar.o2; ! StringBuffer buffer = makeBufferToIndent(line, cols); buffer.append("# "); buffer.append(line.trim()); --- 56,60 ---- char c = colsAndChar.o2; ! FastStringBuffer buffer = makeBufferToIndent(line, cols); buffer.append("# "); buffer.append(line.trim()); *************** *** 109,113 **** char c = colsAndChar.o2; ! StringBuffer buffer = makeBufferToIndent(line, cols); buffer.append("#"); --- 110,114 ---- char c = colsAndChar.o2; ! FastStringBuffer buffer = makeBufferToIndent(line, cols); buffer.append("#"); *************** *** 119,124 **** } ! private StringBuffer makeBufferToIndent(String line, int cols) { ! StringBuffer buffer = new StringBuffer(cols); for (int i = 0; i < line.length(); i++) { char ch = line.charAt(i); --- 120,126 ---- } ! ! private FastStringBuffer makeBufferToIndent(String line, int cols) { ! FastStringBuffer buffer = new FastStringBuffer(cols); for (int i = 0; i < line.length(); i++) { char ch = line.charAt(i); Index: PyOrganizeImports.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyOrganizeImports.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** PyOrganizeImports.java 11 Jun 2008 00:00:00 -0000 1.16 --- PyOrganizeImports.java 14 Jun 2008 22:14:55 -0000 1.17 *************** *** 30,33 **** --- 30,34 ---- import org.python.pydev.core.docutils.PySelection; import org.python.pydev.core.docutils.ImportHandle.ImportHandleInfo; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.PyEdit; import org.python.pydev.plugin.PydevPlugin; *************** *** 161,165 **** //now, re-add the imports ! StringBuffer all = new StringBuffer(); --- 162,166 ---- //now, re-add the imports ! FastStringBuffer all = new FastStringBuffer(); *************** *** 188,191 **** --- 189,195 ---- Set<Entry<String, List<ImportHandleInfo>>> entrySet = importsWithFrom.entrySet(); + FastStringBuffer lastFromXXXImportWritten = new FastStringBuffer(); + FastStringBuffer line = new FastStringBuffer(); + for (Entry<String, List<ImportHandleInfo>> entry : entrySet) { *************** *** 199,204 **** //ok, it's all filled, let's start rewriting it! boolean firstInLine = true; ! StringBuffer line = new StringBuffer(); ! StringBuffer lastFromXXXImportWritten = null; boolean addedParenForLine = false; --- 203,207 ---- //ok, it's all filled, let's start rewriting it! boolean firstInLine = true; ! line.clear(); boolean addedParenForLine = false; *************** *** 211,215 **** if(firstInLine){ ! lastFromXXXImportWritten = new StringBuffer(); lastFromXXXImportWritten.append("from "); lastFromXXXImportWritten.append(entry.getKey()); --- 214,218 ---- if(firstInLine){ ! lastFromXXXImportWritten.clear(); lastFromXXXImportWritten.append("from "); lastFromXXXImportWritten.append(entry.getKey()); *************** *** 236,240 **** } all.append(line); ! line = new StringBuffer(); } } --- 239,243 ---- } all.append(line); ! line.clear(); } } *************** *** 242,246 **** line.append(tuple.o1); ! if(addedParenForLine && i == importsAndComments.size()){ addedParenForLine = false; line.append(")"); --- 245,249 ---- line.append(tuple.o1); ! if(addedParenForLine && i == importsAndNoComments.size()){ addedParenForLine = false; line.append(")"); *************** *** 258,262 **** line.append(endLineDelim); all.append(line); ! line = new StringBuffer(); firstInLine = true; } --- 261,265 ---- line.append(endLineDelim); all.append(line); ! line.clear(); firstInLine = true; } *************** *** 271,275 **** line.append(endLineDelim); all.append(line); ! line = new StringBuffer(); } } --- 274,278 ---- line.append(endLineDelim); all.append(line); ! line.clear(); } } *************** *** 287,291 **** * Write the imports that don't have a 'from' in the beggining (regular imports) */ ! private static void writeImportsWithoutFrom(String endLineDelim, StringBuffer all, List<ImportHandleInfo> importsWithoutFrom) { //now, write the regular imports (no wrapping or tabbing here) --- 290,294 ---- * Write the imports that don't have a 'from' in the beggining (regular imports) */ ! private static void writeImportsWithoutFrom(String endLineDelim, FastStringBuffer all, List<ImportHandleInfo> importsWithoutFrom) { //now, write the regular imports (no wrapping or tabbing here) Index: PyConvertSpaceToTab.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyConvertSpaceToTab.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** PyConvertSpaceToTab.java 20 Jun 2007 01:17:29 -0000 1.7 --- PyConvertSpaceToTab.java 14 Jun 2008 22:14:55 -0000 1.8 *************** *** 8,12 **** --- 8,15 ---- import org.eclipse.jface.action.IAction; + import org.eclipse.jface.text.IDocument; + import org.eclipse.jface.text.IRegion; import org.python.pydev.core.docutils.PySelection; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.autoedit.DefaultIndentPrefs; *************** *** 47,51 **** public static boolean perform(PySelection ps) { // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer(); // If they selected a partial line, count it as a full one --- 50,54 ---- public static boolean perform(PySelection ps) { // What we'll be replacing the selected text with ! FastStringBuffer strbuf = new FastStringBuffer(); // If they selected a partial line, count it as a full one *************** *** 56,69 **** try { // For each line, strip their whitespace ! for (i = ps.getStartLineIndex(); i <= ps.getEndLineIndex(); i++) { ! String line = ps.getDoc().get(ps.getDoc().getLineInformation(i).getOffset(), ps.getDoc().getLineInformation(i).getLength()); ! strbuf.append(line.replaceAll(getTabSpace(), "\t") + (i < ps.getEndLineIndex() ? ps.getEndLineDelim() : "")); } // If all goes well, replace the text with the modified information ! if (strbuf.toString() != null) { ! ps.getDoc().replace(ps.getStartLine().getOffset(), ps.getSelLength(), strbuf.toString()); ! return true; ! } } catch (Exception e) { beep(e); --- 59,76 ---- try { // For each line, strip their whitespace ! String tabSpace = getTabSpace(); ! IDocument doc = ps.getDoc(); ! int endLineIndex = ps.getEndLineIndex(); ! String endLineDelim = ps.getEndLineDelim(); ! ! for (i = ps.getStartLineIndex(); i <= endLineIndex; i++) { ! IRegion lineInformation = doc.getLineInformation(i); ! String line = doc.get(lineInformation.getOffset(), lineInformation.getLength()); ! strbuf.append(line.replaceAll(tabSpace, "\t")).append((i < endLineIndex ? endLineDelim : "")); } // If all goes well, replace the text with the modified information ! doc.replace(ps.getStartLine().getOffset(), ps.getSelLength(), strbuf.toString()); ! return true; } catch (Exception e) { beep(e); Index: PyConvertTabToSpace.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyConvertTabToSpace.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PyConvertTabToSpace.java 25 Feb 2006 00:14:23 -0000 1.5 --- PyConvertTabToSpace.java 14 Jun 2008 22:14:55 -0000 1.6 *************** *** 8,13 **** import org.eclipse.jface.action.IAction; import org.python.pydev.core.docutils.PySelection; ! /** --- 8,15 ---- import org.eclipse.jface.action.IAction; + import org.eclipse.jface.text.IDocument; + import org.eclipse.jface.text.IRegion; import org.python.pydev.core.docutils.PySelection; ! import org.python.pydev.core.structure.FastStringBuffer; /** *************** *** 17,99 **** * @author Parhaum Toofanian */ ! public class PyConvertTabToSpace extends PyConvertSpaceToTab ! { ! /* Selection element */ ! private static PySelection ps; ! /** ! * Grabs the selection information and performs the action. ! */ ! public void run ( IAction action ) ! { ! try ! { ! // Select from text editor ! ps = new PySelection ( getTextEditor ( )); ! ps.selectAll(false); ! // Perform the action ! perform ( ); ! // Put cursor at the first area of the selection ! getTextEditor ( ).selectAndReveal ( ps.getLineOffset ( ), 0 ); ! } ! catch ( Exception e ) ! { ! beep ( e ); ! } ! } ! /** ! * Performs the action with the class' PySelection. ! * ! * @return boolean The success or failure of the action ! */ ! public static boolean perform ( ) ! { ! return perform ( ps ); ! } ! /** ! * Performs the action with a given PySelection ! * ! * @param ps Given PySelection ! * @return boolean The success or failure of the action ! */ ! public static boolean perform ( PySelection ps ) ! { ! // What we'll be replacing the selected text with ! StringBuffer strbuf = new StringBuffer ( ); ! ! // If they selected a partial line, count it as a full one ! ps.selectCompleteLine ( ); ! ! int i; ! ! try ! { ! // For each line, strip their whitespace ! for ( i = ps.getStartLineIndex(); i <= ps.getEndLineIndex(); i++ ) ! { ! String line = ps.getDoc().get ( ps.getDoc().getLineInformation ( i ).getOffset ( ), ps.getDoc().getLineInformation ( i ).getLength ( ) ); ! strbuf.append ( line.replaceAll ( "\t", getTabSpace ( ) ) + ( i < ps.getEndLineIndex() ? ps.getEndLineDelim() : "" ) ); ! } ! // If all goes well, replace the text with the modified information ! if ( strbuf.toString ( ) != null ) ! { ! ps.getDoc().replace ( ps.getStartLine().getOffset ( ), ps.getSelLength(), strbuf.toString ( ) ); ! return true; ! } ! } ! catch ( Exception e ) ! { ! beep( e ); ! } ! ! // In event of problems, return false ! return false; ! } } --- 19,89 ---- * @author Parhaum Toofanian */ ! public class PyConvertTabToSpace extends PyConvertSpaceToTab { ! /* Selection element */ ! private static PySelection ps; + /** + * Grabs the selection information and performs the action. + */ + public void run(IAction action) { + try { + // Select from text editor + ps = new PySelection(getTextEditor()); + ps.selectAll(false); + // Perform the action + perform(); ! // Put cursor at the first area of the selection ! getTextEditor().selectAndReveal(ps.getLineOffset(), 0); ! } catch (Exception e) { ! beep(e); ! } ! } ! /** ! * Performs the action with the class' PySelection. ! * ! * @return boolean The success or failure of the action ! */ ! public static boolean perform() { ! return perform(ps); ! } + /** + * Performs the action with a given PySelection + * + * @param ps Given PySelection + * @return boolean The success or failure of the action + */ + public static boolean perform(PySelection ps) { + // What we'll be replacing the selected text with + FastStringBuffer strbuf = new FastStringBuffer(); ! // If they selected a partial line, count it as a full one ! ps.selectCompleteLine(); + int i; ! try { ! // For each line, strip their whitespace ! IDocument doc = ps.getDoc(); ! String tabSpace = getTabSpace(); ! int endLineIndex = ps.getEndLineIndex(); ! String endLineDelim = ps.getEndLineDelim(); ! for (i = ps.getStartLineIndex(); i <= endLineIndex; i++) { ! IRegion lineInformation = doc.getLineInformation(i); ! String line = doc.get(lineInformation.getOffset(), lineInformation.getLength()); ! strbuf.append(line.replaceAll("\t", tabSpace) + (i < endLineIndex ? endLineDelim : "")); ! } ! // If all goes well, replace the text with the modified information ! doc.replace(ps.getStartLine().getOffset(), ps.getSelLength(), strbuf.toString()); ! return true; ! } catch (Exception e) { ! beep(e); ! } ! ! // In event of problems, return false ! return false; ! } } Index: PyAction.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/actions/PyAction.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** PyAction.java 28 Feb 2007 19:29:37 -0000 1.35 --- PyAction.java 14 Jun 2008 22:14:55 -0000 1.36 *************** *** 21,24 **** --- 21,25 ---- import org.eclipse.ui.texteditor.ITextEditor; import org.python.pydev.core.docutils.PySelection; + import org.python.pydev.core.structure.FastStringBuffer; import org.python.pydev.editor.PyEdit; import org.python.pydev.editor.autoedit.DefaultIndentPrefs; *************** *** 340,346 **** private static String createStaticSpaceString(int tabWidth) { ! StringBuffer b = new StringBuffer(tabWidth); ! while (tabWidth-- > 0) b.append(" "); return b.toString(); } --- 341,348 ---- private static String createStaticSpaceString(int tabWidth) { ! FastStringBuffer b = new FastStringBuffer(tabWidth); ! while (tabWidth-- > 0){ b.append(" "); + } return b.toString(); } |