Subject: bug#23675: Feature request: Emacs 25.0.94: count-lines should offer a way to ignore invisible lines, e.g. outline mode

From: Lars Ingebrigtsen <[email-masked]>
Date: Tue, 25 Jun 2019 15:30:44 +0200

Some comments on the patch:

Robert Weiner <[email-masked]> writes:

> ! (defun count-lines (start end)
>     "Return number of lines between START and END.
>   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)
> ! 	  (save-match-data

Hm...  the current version of the function doesn't mention
selective-display at all, which it probably should, anyway...

> ! (defun count-lines (start end &optional ignore-invisible-lines-flag)

I think we tend to avoid -flag in arguments these days?

> ! With optional IGNORE-INVISIBLE-LINES-FLAG non-nil,
> ! lines collapsed with selective-display are excluded
> ! from the line count."

This is very confusing, because it only mentions selective-display when
this flag is non-nil, but not what the flag does otherwise.

> !       (cond ((and (not ignore-invisible-lines-flag) (eq selective-display t))
> ! 	     (save-match-data

[...]

> ! 		  (while (re-search-forward "\n\\|\r[^\n]" nil t)

And the selective-display bit saves match data and the
non-selective-display one doesn't.

But other than that, I think this sounds like a useful addition.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no