Next: , Previous: Regexp Example, Up: Search


20.8 Searching and Case

Incremental searches in Emacs normally ignore the case of the text they are searching through, if you specify the text in lower case. Thus, if you specify searching for ‘foo’, then ‘Foo’ and ‘foo’ are also considered a match. Regexps, and in particular character sets, are included: ‘[ab]’ would match ‘a’ or ‘A’ or ‘b’ or ‘B’.

An upper-case letter anywhere in the incremental search string makes the search case-sensitive. Thus, searching for ‘Foo’ does not find ‘foo’ or ‘FOO’. This applies to regular expression search as well as to string search. The effect ceases if you delete the upper-case letter from the search string.

Typing M-c within an incremental search toggles the case sensitivity of that search. The effect does not extend beyond the current incremental search to the next one, but it does override the effect of including an upper-case letter in the current search.

If you set the variable case-fold-search to nil, then all letters must match exactly, including case. This is a per-buffer variable; altering the variable affects only the current buffer, but there is a default value in default-case-fold-search that you can also set. See Locals. This variable applies to nonincremental searches also, including those performed by the replace commands (see Replace) and the minibuffer history matching commands (see Minibuffer History).

Several related variables control case-sensitivity of searching and matching for specific commands or activities. For instance, tags-case-fold-search controls case sensitivity for find-tag. To find these variables, do M-x apropos-variable <RET> case-fold-search <RET>.