RefactoringRope/Refactoring.py

changeset 44
8aa985c8dee5
parent 43
39924831c795
child 46
a726d19facfc
diff -r 39924831c795 -r 8aa985c8dee5 RefactoringRope/Refactoring.py
--- a/RefactoringRope/Refactoring.py	Wed Jan 02 10:54:38 2013 +0100
+++ b/RefactoringRope/Refactoring.py	Sat Feb 09 11:31:54 2013 +0100
@@ -34,6 +34,7 @@
 
 from PyQt4.QtCore import QObject
 from PyQt4.QtGui import QMenu, QApplication, QMessageBox, QDialog, QAction
+from PyQt4.Qsci import QsciScintilla
 
 from E5Gui.E5Application import e5App
 
@@ -943,6 +944,22 @@
         else:
             QMessageBox.warning(self.__ui, title,
                 self.trUtf8("Rope error: {0}").format(str(err)))
+    
+    def __getOffset(self, editor, line, index):
+        """
+        Private method to get the offset into the text treating CRLF as ONE character.
+        
+        Note: rope seems to convert all EOL styles to just \n.
+        
+        @param editor reference to the editor (Editor)
+        @param line line for the offset (integer)
+        @param index index into line for the offset (integer)
+        @return rope compliant offset into the file (integer)
+        """
+        offset = editor.positionFromLineIndex(line, index)
+        if editor.eolMode() == QsciScintilla.EolWindows:
+            offset -= line
+        return offset
 
     ##################################################################
     ## slots below implement the various refactorings
@@ -1013,7 +1030,7 @@
                 return
             index = int(index + (index1 - index) / 2)
             # keep it inside the object
-            offset = aw.positionFromLineIndex(line, index)
+            offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1054,7 +1071,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1110,8 +1127,8 @@
         
         filename = aw.getFileName()
         startline, startcolumn, endline, endcolumn = aw.getSelection()
-        startOffset = aw.positionFromLineIndex(startline, startcolumn)
-        endOffset = aw.positionFromLineIndex(endline, endcolumn)
+        startOffset = self.__getOffset(aw, startline, startcolumn)
+        endOffset = self.__getOffset(aw, endline, endcolumn)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1157,7 +1174,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1197,7 +1214,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1269,7 +1286,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1309,7 +1326,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1347,7 +1364,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1416,7 +1433,7 @@
         filename = aw.getFileName()
         if aw.hasSelectedText():
             line, index, line1, index1 = aw.getSelection()
-            offset = aw.positionFromLineIndex(line, index)
+            offset = self.__getOffset(aw, line, index)
         else:
             offset = None
         
@@ -1473,7 +1490,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1511,7 +1528,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1576,7 +1593,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1630,7 +1647,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1668,7 +1685,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1842,7 +1859,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1891,7 +1908,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(
             self.__project, filename)
@@ -1932,7 +1949,7 @@
         
         filename = aw.getFileName()
         line, index, line1, index1 = aw.getSelection()
-        offset = aw.positionFromLineIndex(line, index)
+        offset = self.__getOffset(aw, line, index)
         
         resource = rope.base.libutils.path_to_resource(self.__project,
             filename)

eric ide

mercurial