[gnu.emacs.bug] A better report of the bug in regular expression search for meta characters

mjab@THINK.COM (02/04/89)

"GNU Emacs 18.49.20 of Wed Nov 11 1987 on medusa.think.com (berkeley-unix)"

The following code demonstrates a bug in GNU Emacs when searching for
patterns which contain meta characters.  This comes up often if a 256
character font such as APL is in use.

The variable case-fold-search seems to affect searching for these 
non-alphabetic characters in an odd way.  When case-fold-search is T, the
pattern is not found correctly.  When case-fold-search is nil it is found.
The variable case-fold-search should have no effect on non-alphabetic
characters which do not have "case".  If it must have an effect, I would
expect it to be the opposite of what it is.  (setq case-fold-search t)
should make the search more permissive, not less.  

(defun demonstrate-bug()
  "Return value of nil means search for metacharacters affected by case-fold-search"
  (let ((under128 "I think GNU emacs is wonderful")
	(over127) ;manufacture these because they can't be emailed
	(string)
	(when-nil))
    (setq over127 (mapconcat
		    (function (lambda (c) (char-to-string (logior 128 c))))
			      under128
			      "")) 
    (setq string (concat under128 over127 "but I want it to handle APL characters"))
    ;(elt string 30) is character 201 "iota"
    (setq case-fold-search nil)
    (setq when-nil (string-match "[^ a-zA-z0-9]+but" string))
    (setq case-fold-search t)
    (debug)
    (= when-nil (string-match "[^ a-zA-z0-9]+but" string))))
    

=============================================
Michael J. A. Berrry

Internet: mjab@think.com
uucp:     {harvard, ihnp4, seismo}!think!mjab
=============================================