--- 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)