Subject: Re: bug#32543: 26.1; list-matching-lines-jump-to-current breaks revert-buffer in occur-mode

From: Juri Linkov <[email-masked]>
Date: Sun, 02 Sep 2018 01:49:08 +0300

> 0. emacs -Q
> 1. M-: (setq list-matching-lines-jump-to-current-line t) <RET>
> 2. M-s o text <RET>
> 3. C-x o
> 4. g
>
> (wrong-type-argument number-or-marker-p nil)
>   occur-engine("text" (#<buffer *scratch*>) #<buffer *Occur*> 0 t underline shadow match t)
>   occur-1("text" nil (#<buffer *scratch*>) "*Occur*")
>   apply(occur-1 ("text" nil (#<buffer *scratch*>) "*Occur*"))
>   occur-revert-function(t nil)
>   revert-buffer(t)
>   funcall-interactively(revert-buffer t)
>   call-interactively(revert-buffer nil nil)
>   command-execute(revert-buffer)
>
> I think it's because occur--orig-line not initialized in occur-revert-function and it fails on
>
> (when (and list-matching-lines-jump-to-current-line
>  (null orig-line-shown-p)
>  (> curr-line orig-line))

We have two solutions here: on reverting reset the current line number to
the default numeric value of occur--orig-line (e.g. 0), or better to
remember occur--orig-line in occur-revert-arguments.  Maybe Tino has
better ideas (Cc'ed).