emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 23.0.60; isearch for M-: incorrect in Info


From: Juri Linkov
Subject: Re: 23.0.60; isearch for M-: incorrect in Info
Date: Mon, 21 Apr 2008 02:54:15 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (x86_64-pc-linux-gnu)

>> + (defvar isearch-success-function nil
> [...]
>> !              (if isearch-success-function
>> !                  (funcall isearch-success-function
>> !                           (match-beginning 0) (match-end 0))
>> !                (or (eq search-invisible t)
>> !                    (not (isearch-range-invisible
>> !                          (match-beginning 0) (match-end 0))))))
>
> Better just call isearch-success-function unconditionally and move the
> default code to the default value of isearch-success-function.
>
> I understand that may require many more changes to your code, tho, but
> I think it's important to always make when you introduce such
> a foo-function variable to make sure that it is possible to reproduce
> the default value (since it's often desirable to do almost the same as
> the default).

I can't invent a good name for the default function that describes exactly
what it does, so I named it simply `isearch-success-function-default'.
I've seen this naming convention in other places too.

Index: lisp/isearch.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/isearch.el,v
retrieving revision 1.316
diff -c -r1.316 isearch.el
*** lisp/isearch.el     18 Apr 2008 10:29:23 -0000      1.316
--- lisp/isearch.el     20 Apr 2008 23:51:28 -0000
***************
*** 178,183 ****
--- 178,188 ----
    "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 search.")
+ 
  ;; Search ring.
  
  (defvar search-ring nil
***************
*** 2104,2110 ****
        (setq isearch-case-fold-search
            (isearch-no-upper-case-p isearch-string isearch-regexp)))
    (condition-case lossage
!       (let ((inhibit-point-motion-hooks search-invisible)
            (inhibit-quit nil)
            (case-fold-search isearch-case-fold-search)
            (search-spaces-regexp search-whitespace-regexp)
--- 2174,2182 ----
        (setq isearch-case-fold-search
            (isearch-no-upper-case-p isearch-string isearch-regexp)))
    (condition-case lossage
!       (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,2126 ****
                (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)
                  (bobp) (eobp)
                  (= (match-beginning 0) (match-end 0))
!                 (not (isearch-range-invisible
!                       (match-beginning 0) (match-end 0))))
              (setq retry nil)))
        (setq isearch-just-started nil)
        (if isearch-success
--- 2187,2197 ----
                (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 (not isearch-success)
                  (bobp) (eobp)
                  (= (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,2303 ****
--- 2369,2381 ----
                  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
  
-- 
Juri Linkov
http://www.jurta.org/emacs/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]