Subject: bug#62749: 28.2; Emacs keeps opening related file from vc-diff buffer

From: Juri Linkov <[email-masked]>
Date: Mon, 15 May 2023 19:46:36 +0300

> After bisecting my long .emacs config I pinpointed the culprit:
>
> (which-func-mode 1)
>
> During the movement through a diff buffer this mode loads corresponding
> files:
>
>   if the cursor reaches a new hunk - the corresponding file is opened ((
>
> This is done one by one file while I scroll down with the cursor.
>
> Removing the line significantly improved performance during scromming in VC
> diff buffer in Cygwin and no more new files opened!

This is an interesting problem, I can reproduce it by
'M-x which-function-mode'.

> I think which-function-mode is broken for diff-mode, the workaround for
> those who wants this mode is to deal with:
>
> (defcustom which-func-modes t
>   ;; '(emacs-lisp-mode c-mode c++-mode objc-mode perl-mode cperl-mode python-mode
>   ;;               makefile-mode sh-mode fortran-mode f90-mode ada-mode
>   ;;               diff-mode)
>   "List of major modes for which Which Function mode should be used.
> For other modes it is disabled.  If this is equal to t,
> then Which Function mode is enabled in any major mode that supports it."
>
> What are the next actions?

Maybe 'diff-syntax-fontify' could have a similar list of minor modes
that should be ignored.  Then such a list should at least contain
'which-func-mode' by default.