summaryrefslogtreecommitdiffstats
path: root/Tools/idle/SearchBinding.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1998-10-19 03:33:40 (GMT)
committerGuido van Rossum <guido@python.org>1998-10-19 03:33:40 (GMT)
commit7b9bb05df9d1fbf221fca14635d2a60ef393e2a2 (patch)
tree93ec666bd536c82680f2d948c661b32ca5992503 /Tools/idle/SearchBinding.py
parentcc0ade8cd51d8b02885217d3109d4d470eb9702a (diff)
downloadcpython-7b9bb05df9d1fbf221fca14635d2a60ef393e2a2.zip
cpython-7b9bb05df9d1fbf221fca14635d2a60ef393e2a2.tar.gz
cpython-7b9bb05df9d1fbf221fca14635d2a60ef393e2a2.tar.bz2
Speed up the search a bit -- don't drag a mark around...
Diffstat (limited to 'Tools/idle/SearchBinding.py')
-rw-r--r--Tools/idle/SearchBinding.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/Tools/idle/SearchBinding.py b/Tools/idle/SearchBinding.py
index 392d205..ccbdc6c 100644
--- a/Tools/idle/SearchBinding.py
+++ b/Tools/idle/SearchBinding.py
@@ -1,3 +1,4 @@
+import string
import re
import tkSimpleDialog
import tkMessageBox
@@ -52,24 +53,27 @@ class SearchBinding:
self.text.bell()
##print "No program"
return "break"
- self.text.mark_set("find", "insert")
- while 1:
- chars = self.text.get("find", "find lineend +1c")
- ##print "Searching", `chars`
- if not chars:
- self.text.bell()
- ##print "end of buffer"
- break
- m = self.prog.search(chars)
+ line, col = map(int,
+ string.split(self.text.index("insert"), "."))
+ chars = self.text.get("%d.0" % line, "%d.0" % (line+1))
+ while chars:
+ m = self.prog.search(chars, col)
if m:
i, j = m.span()
- self.text.mark_set("insert", "find +%dc" % j)
- self.text.mark_set("find", "find +%dc" % i)
+ self.text.mark_set("insert",
+ "%d.%d" % (line, j))
self.text.tag_remove("sel", "1.0", "end")
- self.text.tag_add("sel", "find", "insert")
+ self.text.tag_add("sel",
+ "%d.%d" % (line, i),
+ "%d.%d" % (line, j))
self.text.see("insert")
break
- self.text.mark_set("find", "find lineend +1c")
+ line = line + 1
+ col = 0
+ chars = self.text.get("%d.0" % line, "%d.0" % (line+1))
+ else:
+ # Not found
+ self.text.bell()
return "break"
def goto_line_event(self, event):