> Any progress on this? (Just bugging you around so that we don't leave > this out of the release accidentally; it might happen any other year, you > know.)
Since nobody objected to removing key bindings for `?', `*', `}', `|', below is a patch that changes isearch.el to process special regexp characters after the input is completed and before putting characters into the search string. Index: lisp/isearch.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/isearch.el,v retrieving revision 1.264 diff -c -r1.264 isearch.el *** lisp/isearch.el 4 Jul 2005 23:08:56 -0000 1.264 --- lisp/isearch.el 12 Jul 2005 06:52:59 -0000 *************** *** 356,368 **** (define-key map "\M-\C-y" 'isearch-yank-char) (define-key map "\C-y" 'isearch-yank-line) - ;; Define keys for regexp chars * ? } |. - ;; Nothing special for + because it matches at least once. - (define-key map "*" 'isearch-*-char) - (define-key map "?" 'isearch-*-char) - (define-key map "}" 'isearch-}-char) - (define-key map "|" 'isearch-|-char) - ;; Turned off because I find I expect to get the global definition--rms. ;; ;; Instead bind C-h to special help command for isearch-mode. ;; (define-key map "\C-h" 'isearch-mode-help) --- 361,366 ---- *************** *** 1457,1482 **** (goto-char (if isearch-forward (max last-other-end isearch-barrier) (min last-other-end isearch-barrier))) ! (setq isearch-adjusted t)))))) ! (isearch-process-search-char last-command-char)) ! ! ;; * and ? are special when not preceded by \. ! (defun isearch-*-char () ! "Maybe back up to handle * and ? specially in regexps." ! (interactive) ! (isearch-fallback nil)) ! ! ;; } is special when it is preceded by \. ! (defun isearch-}-char () ! "Handle \\} specially in regexps." ! (interactive) ! (isearch-fallback t t)) ! ! ;; | is special when it is preceded by \. ! (defun isearch-|-char () ! "If in regexp search, jump to the barrier unless in a group." ! (interactive) ! (isearch-fallback t nil t)) (defun isearch-unread-key-sequence (keylist) "Unread the given key-sequence KEYLIST. --- 1460,1466 ---- (goto-char (if isearch-forward (max last-other-end isearch-barrier) (min last-other-end isearch-barrier))) ! (setq isearch-adjusted t))))))) (defun isearch-unread-key-sequence (keylist) "Unread the given key-sequence KEYLIST. *************** *** 1796,1801 **** --- 1780,1793 ---- (isearch-process-search-char char))))) (defun isearch-process-search-char (char) + ;; * and ? are special in regexps when not preceded by \. + ;; } and | are special in regexps when preceded by \. + ;; Nothing special for + because it matches at least once. + (cond + ((memq char '(?* ??)) (isearch-fallback nil)) + ((eq char ?\}) (isearch-fallback t t)) + ((eq char ?|) (isearch-fallback t nil t))) + ;; Append the char to the search string, update the message and re-search. (isearch-process-search-string (char-to-string char) -- Juri Linkov http://www.jurta.org/emacs/ _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel