diff --git a/lisp/simple.el b/lisp/simple.el index a07ce68a9fe5cc52ad5c32d613b5d2dea33b414e..ef6a011afdf0b500f46f99a5739fc09258e6aa54 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -321,18 +321,19 @@ that uses or sets the mark." This is usually the number of newlines between them, but can be one more if START is not equal to END and the greater of them is not at the start of a line." - (save-excursion - (save-restriction - (narrow-to-region start end) - (goto-char (point-min)) - (if (eq selective-display t) - (let ((done 0)) - (while (re-search-forward "[\n\C-m]" nil t 40) - (setq done (+ 40 done))) - (while (re-search-forward "[\n\C-m]" nil t 1) - (setq done (+ 1 done))) - done) - (- (buffer-size) (forward-line (buffer-size))))))) + (save-match-data + (save-excursion + (save-restriction + (narrow-to-region start end) + (goto-char (point-min)) + (if (eq selective-display t) + (let ((done 0)) + (while (re-search-forward "[\n\C-m]" nil t 40) + (setq done (+ 40 done))) + (while (re-search-forward "[\n\C-m]" nil t 1) + (setq done (+ 1 done))) + done) + (- (buffer-size) (forward-line (buffer-size)))))))) (defun what-cursor-position () "Print info on cursor position (on screen and within buffer)."