Anonymous avatar Anonymous committed 7c9ae99

codeanalyze: using bisect in SourceLinesAdapter.get_line_number()

Comments (0)

Files changed (1)

rope/base/codeanalyze.py

+import bisect
 import re
 import token
 import tokenize
         return len(self.line_starts) - 1
 
     def get_line_number(self, offset):
-        down = 0
-        up = len(self.line_starts)
-        current = (down + up) // 2
-        while down <= current < up:
-            if self.line_starts[current] <= offset < self.line_starts[current + 1]:
-                return current + 1
-            if offset < self.line_starts[current]:
-                up = current - 1
-            else:
-                down = current + 1
-            current = (down + up) // 2
-        return current + 1
+        return bisect.bisect(self.line_starts, offset)
 
     def get_line_start(self, line_number):
         return self.line_starts[line_number - 1]
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.