Bug 107128 [typing] Move lines destroys indentation of outcommented code
I20050811-1530 Move lines destroys the indentation of code that has been commented out. IMO, Move lines should never try to be smart about the contents of a commented section. It should just add/remove whitespace in front of the // (same behavior as when moving other statements). public class Klass { int bar; // void foo() { // System.out.println("foo"); // } } - select the 3 commented lines - press Alt+Up -> document looks like this (note the removed tab in fromt of System.out.pr...): public class Klass { // void foo() { // System.out.println("foo"); // } int bar; }
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/IndentUtil.java
for (int line= lines.getStartLine(), last= line + numberOfLines, i= 0; line < last; line++)
				cutIndent(document, line, reduction, tabSize, result.commentLinesAtColumnZero, i++);
		}
				
		result.hasChanged= true;
		
		return result;
		
	}
	/**
	 * Indents line <code>line</code> in <code>document</code> with <code>indent</code>.
	 * Leaves leading comment signs alone.
	 *
	 * @param document the document
	 * @param line the line
	 * @param indent the indentation to insert
	 * @param commentlines
	 * @throws BadLocationException on concurrent document modification
	 */
	private static void addIndent(IDocument document, int line, CharSequence indent, boolean[] commentlines, int relative) throws BadLocationException {
		IRegion region= document.getLineInformation(line);
		int insert= region.getOffset();
		int endOffset= region.getOffset() + region.getLength();
		
		if (!commentlines[relative]) {
			while (insert < endOffset - 2 && document.get(insert, 2).equals(SLASHES))
				insert += 2;
		}
		
		document.replace(insert, 0, indent.toString());