Subject: 29.0.50; Visiting files in Emacs Git pops up "unsafe variable" prompt

From: Eli Zaretskii <[email-masked]>
Date: Sat, 19 Nov 2022 14:59:51 +0200

To reproduce, just visit any file in the Emacs Git repository from
"emacs -Q".  You will see a "*Local Variables*" buffer pop up with
this text:

  The local variables list in <REDACTED>
  or .dir-locals.el contains values that may not be safe (*).

  Do you want to apply it?  You can type
  y  -- to apply the local variables list.
  n  -- to ignore the local variables list.
  !  -- to apply the local variables list, and permanently mark these
	values (*) as safe (in the future, they will be set automatically.)
  i  -- to ignore the local variables list, and permanently mark these
	values (*) as ignored

      tab-width : 8
      sentence-end-double-space : t
      fill-column : 70
      emacs-lisp-docstring-fill-column : 65
      vc-git-annotate-switches : "-w"
      bug-reference-url-format : "https://debbugs.gnu.org/%s"
      diff-add-log-use-relative-names : t
    * vc-prepare-patches-separately : nil
      c-file-style : "GNU"
      c-noise-macro-names : ("INLINE" "NO_INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "UNINIT" "CALLBACK" "ALIGN_STACK")
      electric-quote-comment : nil
      electric-quote-string : nil
      indent-tabs-mode : t
      mode : bug-reference-prog

The problem here AFAIU is that vc-prepare-patches-separately and its
'safep' property is not known to Emacs until vc.el is loaded.

One way of fixing this would be to autoload the defcustom of this
variable, but AFAIR this is sometimes frowned upon?

In GNU Emacs 29.0.50 (build 2217, i686-pc-mingw32) of 2022-11-19 built
 on HOME-C4E4A596F7
Repository revision: 46ceb2ac4bceec9c5fb55d9d02a34e2c78136cf3
Repository branch: master
Windowing system distributor 'Microsoft Corp.', version 5.1.2600
System Description: Microsoft Windows XP Service Pack 3 (v5.1.0.2600)

Configured using:
 'configure -C --prefix=/d/usr --with-wide-int
 --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3''

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY
W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS WEBP XPM ZLIB

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1255

Major mode: C/*l

Minor modes in effect:
  bug-reference-prog-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils vc-git diff-mode
easy-mmode vc vc-dispatcher bug-reference byte-opt gv bytecomp
byte-compile time-date subr-x cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table
term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty
make-network-process emacs)

Memory information:
((conses 16 86033 12227)
 (symbols 48 9270 0)
 (strings 16 27174 3318)
 (string-bytes 1 878557)
 (vectors 16 15151)
 (vector-slots 8 203313 15154)
 (floats 8 29 77)
 (intervals 40 3489 63)
 (buffers 888 11))