# HG changeset patch # User Richard M. Stallman # Date 908369238 0 # Node ID 3ca22a8738595709c1248504dce5fbdbb03a09f7 # Parent 934152e1b9a4549425ee60b6bcebcf495330c5bd (keep-lines, flush-lines, how-many): Don't ignore case if arg has upper case letters. diff -r 934152e1b9a4 -r 3ca22a873859 lisp/replace.el --- a/lisp/replace.el Wed Oct 14 12:41:02 1998 +0000 +++ b/lisp/replace.el Wed Oct 14 12:47:18 1998 +0000 @@ -80,7 +80,8 @@ string is used as FROM-STRING--you don't have to specify it with the minibuffer. -Preserves case in each replacement if `case-replace' and `case-fold-search' +Replacement transfers the case of the old text to the new text, +if `case-replace' and `case-fold-search' are non-nil and FROM-STRING has no uppercase letters. \(Preserving case means that if the string matched is all caps, or capitalized, then its replacement is upcased or capitalized.) @@ -220,13 +221,18 @@ (defun keep-lines (regexp) "Delete all lines except those containing matches for REGEXP. A match split across lines preserves all the lines it lies in. -Applies to all lines after point." +Applies to all lines after point. + +If REGEXP contains upper case characters (excluding those preceded by `\\'), +the matching is case-sensitive." (interactive (list (read-from-minibuffer "Keep lines (containing match for regexp): " nil nil nil 'regexp-history nil t))) (save-excursion (or (bolp) (forward-line 1)) - (let ((start (point))) + (let ((start (point)) + (case-fold-search (and case-fold-search + (isearch-no-upper-case-p regexp t)))) (while (not (eobp)) ;; Start is first char not preserved by previous match. (if (not (re-search-forward regexp nil 'move)) @@ -247,25 +253,35 @@ (defun flush-lines (regexp) "Delete lines containing matches for REGEXP. If a match is split across lines, all the lines it lies in are deleted. -Applies to lines after point." +Applies to lines after point. + +If REGEXP contains upper case characters (excluding those preceded by `\\'), +the matching is case-sensitive." (interactive (list (read-from-minibuffer "Flush lines (containing match for regexp): " nil nil nil 'regexp-history nil t))) - (save-excursion - (while (and (not (eobp)) - (re-search-forward regexp nil t)) - (delete-region (save-excursion (goto-char (match-beginning 0)) - (beginning-of-line) - (point)) - (progn (forward-line 1) (point)))))) + (let ((case-fold-search (and case-fold-search + (isearch-no-upper-case-p regexp t)))) + (save-excursion + (while (and (not (eobp)) + (re-search-forward regexp nil t)) + (delete-region (save-excursion (goto-char (match-beginning 0)) + (beginning-of-line) + (point)) + (progn (forward-line 1) (point))))))) (defalias 'count-matches 'how-many) (defun how-many (regexp) - "Print number of matches for REGEXP following point." + "Print number of matches for REGEXP following point. + +If REGEXP contains upper case characters (excluding those preceded by `\\'), +the matching is case-sensitive." (interactive (list (read-from-minibuffer "How many matches for (regexp): " nil nil nil 'regexp-history nil t))) - (let ((count 0) opoint) + (let ((count 0) opoint + (case-fold-search (and case-fold-search + (isearch-no-upper-case-p regexp t)))) (save-excursion (while (and (not (eobp)) (progn (setq opoint (point))