bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#4894: 23.1; emacs ignores number characters in incremental search in


From: Leo
Subject: bug#4894: 23.1; emacs ignores number characters in incremental search in keyboard macros
Date: Thu, 26 Aug 2010 22:36:54 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (Mac OS X 10.6.4)

On 2009-11-11 18:32 +0000, Stefan Monnier wrote:
> Actually, the need for cancel-kbd-macro-events is explained in
> the comment.  The problem is that after cancelling the <kp-0> we should
> add the ?0 replacement.  That should normally be done by isearch-unread,
> but for printing char, we don't call that function any more.
>
> I.e. the problem was introduced by the change below.  Handa, can you
> explain why we need this?  Maybe it was needed at the time but not
> any more?
>
>

I run into an error 

  After 0 kbd macro iterations: isearch-search: Keyboard macro
  terminated by a command ringing the bell

almost every time isearch-forward-regexp is used in a macro, for
example:

  C-x ( ESC C-s [ - + ] ? [ 0 - 9 ] + C-x )

I wonder if someone can take a look at the problem. Thanks.

Leo

>
>         Stefan
>
>
> committer: handa
> branch nick: HEAD
> timestamp: Thu 2000-06-01 12:22:31 +0000
> message:
>   (isearch-update): Set disable-point-adjustment to t
>   to prevent the point moving to the end of a composition when a
>   part of a composition is searched.
>   (isearch-other-meta-char): If the key invoking this command can be
>   mapped by function-key-map to a printing char, call
>   isearch-process-search-char directly.
> ------------------------------------------------------------
>
>
> === modified file 'lisp/isearch.el'
> --- lisp/isearch.el   2000-05-31 09:49:22 +0000
> +++ lisp/isearch.el   2000-06-01 12:22:31 +0000
> @@ -619,7 +619,10 @@
>    (setq ;; quit-flag nil  not for isearch-mode
>     isearch-adjusted nil
>     isearch-yank-flag nil)
> -  (isearch-lazy-highlight-new-loop))
> +  (isearch-lazy-highlight-new-loop)
> +  ;; We must prevent the point moving to the end of composition when a
> +  ;; part of the composition has just been searched.
> +  (setq disable-point-adjustment t))
>  
>  (defun isearch-done (&optional nopush edit)
>    (remove-hook 'mouse-leave-buffer-hook 'isearch-done)
> @@ -1150,8 +1153,22 @@
>              (progn 
>                (isearch-done)
>                (apply 'isearch-unread keylist))
> -          (apply 'isearch-unread
> -                 (listify-key-sequence (lookup-key function-key-map key)))))
> +          (setq keylist
> +                (listify-key-sequence (lookup-key function-key-map key)))
> +          (while keylist
> +            (setq key (car keylist))
> +            ;; If KEY is a printing char, we handle it here
> +            ;; directly to avoid the input method and keyboard
> +            ;; coding system translating it.
> +            (if (and (integerp key)
> +                     (>= key ?\ ) (< key 256))
> +                (progn
> +                  (isearch-process-search-char key)
> +                  (setq keylist (cdr keylist)))
> +              ;; As the remaining keys in KEYLIST can't be handled
> +              ;; here, we must reread them.
> +              (apply 'isearch-unread keylist)
> +              (setq keylist nil)))))
>         (
>          ;; Handle an undefined shifted control character
>          ;; by downshifting it if that makes it defined.

-- 
Any Emacs contains an ad hoc, informally-specified, bug-ridden, slow
implementation of half of Common Lisp.





reply via email to

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