[Arcana] Isearch for symbols easily
jimb at red-bean.com
Wed Feb 28 20:15:26 CST 2007
A while back, I implemented the \_< and \_> operators in Emacs, that
match the beginning and end of a symbol in a programming-language
mode. So, for example, \_<foo\_> matches foo, but won't match
anything in foof, foo_bar or bar_foo. It's really searching for that
The thing is, those are a bear to type. So here's a new key binding
for isearch mode that takes the current isearch (if it's a regexp
isearch) and wraps \_< and \_> around it. Start a regexp isearch, get
the right identifier in there (perhaps by using C-w), and then hit M-e
to restrict the search to exactly that symbol.
;;;; Easily convert regexp isearches to whole-symbol searches.
(defun jimb-isearch-regexp-whole-symbol ()
"Wrap the current regexp in \_< and \_> operators, to search for a
(if (not isearch-regexp) (ding)
(if (not (string-match "^\\\\_<.*\\\\_>" isearch-string))
(setq isearch-string (concat "\\_<" isearch-string "\\_>")
isearch-message (mapconcat 'isearch-text-char-description
;; Don't move cursor in reverse search.
(define-key isearch-mode-map "\M-e" 'jimb-isearch-regexp-whole-symbol)
More information about the Arcana