[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/isearch.el,v
From: |
Juri Linkov |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/isearch.el,v |
Date: |
Tue, 22 Apr 2008 19:56:18 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Juri Linkov <jurta> 08/04/22 19:56:18
Index: isearch.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/isearch.el,v
retrieving revision 1.316
retrieving revision 1.317
diff -u -b -r1.316 -r1.317
--- isearch.el 18 Apr 2008 10:29:23 -0000 1.316
+++ isearch.el 22 Apr 2008 19:56:17 -0000 1.317
@@ -178,6 +178,12 @@
"Function to save a function restoring the mode-specific isearch state
to the search status stack.")
+(defvar isearch-success-function 'isearch-success-function-default
+ "Function to report whether the new search match is considered successful.
+The function has two arguments: the positions of start and end of text
+matched by the search. It this function returns nil, continue
+searching without stopping at this match.")
+
;; Search ring.
(defvar search-ring nil
@@ -2104,7 +2110,9 @@
(setq isearch-case-fold-search
(isearch-no-upper-case-p isearch-string isearch-regexp)))
(condition-case lossage
- (let ((inhibit-point-motion-hooks search-invisible)
+ (let ((inhibit-point-motion-hooks
+ (and (eq isearch-success-function
'isearch-success-function-default)
+ search-invisible))
(inhibit-quit nil)
(case-fold-search isearch-case-fold-search)
(search-spaces-regexp search-whitespace-regexp)
@@ -2115,12 +2123,11 @@
(isearch-search-string isearch-string nil t))
;; Clear RETRY unless we matched some invisible text
;; and we aren't supposed to do that.
- (if (or (eq search-invisible t)
- (not isearch-success)
+ (if (or (not isearch-success)
(bobp) (eobp)
(= (match-beginning 0) (match-end 0))
- (not (isearch-range-invisible
- (match-beginning 0) (match-end 0))))
+ (funcall isearch-success-function
+ (match-beginning 0) (match-end 0)))
(setq retry nil)))
(setq isearch-just-started nil)
(if isearch-success
@@ -2298,6 +2305,13 @@
nil)
(setq isearch-hidden t)))))))
+(defun isearch-success-function-default (beg end)
+ "Default function to report if the new search match is successful.
+Returns t if search can match hidden text, or otherwise checks if some
+text from BEG to END is visible."
+ (or (eq search-invisible t)
+ (not (isearch-range-invisible beg end))))
+
;; General utilities