Python backspace unindent works correctly when tabs are used (PY-1270)
authorDmitry Jemerov <yole@jetbrains.com>
Thu, 15 Jul 2010 10:39:32 +0000 (14:39 +0400)
committerDmitry Jemerov <yole@jetbrains.com>
Thu, 15 Jul 2010 14:53:57 +0000 (18:53 +0400)
platform/lang-impl/src/com/intellij/codeInsight/editorActions/BackspaceHandler.java

index 3625fdee6ce7ff1b3e53bf34951d9a8e3ff21eef..c88309abe221c19887cd79de8d10b84cf760222d 100644 (file)
@@ -162,8 +162,11 @@ public class BackspaceHandler extends EditorWriteActionHandler {
 
     final CharSequence charSeq = editor.getDocument().getCharsSequence();
     // smart backspace is activated only if all characters in the check range are whitespace characters
-    for(int pos=startCheckRange; pos<endCheckRange; pos++) {
-      final char c = charSeq.charAt(pos);
+    for(int pos=0; pos<caretPos.column; pos++) {
+      // use logicalPositionToOffset to make sure tabs are handled correctly
+      final LogicalPosition checkPos = new LogicalPosition(caretPos.line, pos);
+      final int offset = editor.logicalPositionToOffset(checkPos);
+      final char c = charSeq.charAt(offset);
       if (c != '\t' && c != ' ' && c != '\n') {
         return null;
       }
@@ -177,5 +180,4 @@ public class BackspaceHandler extends EditorWriteActionHandler {
     }
     return new LogicalPosition(caretPos.line, column);
   }
-
 }