--- tkchat.tcl	Mon Mar 10 16:21:50 2003
+++ tkchat.tcl.hilite-all	Mon Mar 10 16:23:11 2003
@@ -1823,7 +1823,41 @@
 	    set marks [.txt tag ranges found]
 	    for { set i 0 } { $i < [llength $marks] } { incr i 2 } {
 		.txt tag remove found [lindex $marks $i] [lindex $marks [expr $i+1]]
-	    }		    
+	    }
+
+	    set offset end
+	    set foundAt [.txt search -count foundLength \
+			 -regexp \
+			 -backwards \
+			 -nocase -- \
+			 $::tkchat::searchString \
+			 $offset 0.0]	    
+
+	    while { ![string equal $foundAt ""] } {
+		#puts "Found at $foundAt"
+		#yes, the expression was found
+
+		set foundLine [lindex [split $foundAt .] 0]
+		set foundChar [lindex [split $foundAt .] 1]
+
+		.txt tag add found $foundAt \
+		    "$foundLine.[expr $foundChar + $foundLength]"
+
+		if { $foundChar == 0 } {
+		    #decrement line no, not char pos.
+		    set offset "[expr $foundLine -1].99999"
+		} else {
+		    #decrement char pos:
+		    set offset "$foundLine.[expr $foundChar - 1]"
+		}
+
+		set foundAt [.txt search -count foundLength \
+				 -regexp \
+				 -backwards \
+				 -nocase -- \
+				 $::tkchat::searchString \
+				 $offset 0.0]	    
+	    }	    
 	    
 	}
     }
@@ -1843,10 +1877,7 @@
 
 	    set foundLine [lindex [split $foundAt .] 0]
 	    set foundChar [lindex [split $foundAt .] 1]
-
-	    .txt tag add found $foundAt \
-		"$foundLine.[expr $foundChar + $foundLength]"
-
+	    
 	    .txt see $foundAt
 	    
 	    #figure out the previous character:
