bug#81547: 31.0.90; Defcustom's docstring does not mention new `BUFFER-LOCAL' optional argument for :set function

Antonio Romano <[email protected]> Mon, 03 Aug 2026 21:25:47 +0000
Newsgroups gmane.emacs.bugs
Message-ID <[email protected]>
According to NEWS:

---
** New macro 'setopt-local'.
This is the buffer-local version of 'setopt' for user options rather
than plain variables and uses 'custom-set'/'set-local' to set variable
values.  A new argument, BUFFER-LOCAL, is passed to 'custom-set'
functions to indicate the buffer-local context.
---

However, this is currently `defcustom' docstring regarding `:set':

---
:set	VALUE should be a function to set the value of the symbol
	when using the Customize user interface.  It takes two arguments,
	the symbol to set and the value to give it.  The function should
	not modify its value argument destructively.  The default choice
	of function is `set-default-toplevel-value'.  If this keyword is
	defined, modifying the value of SYMBOL via `setopt' will call the
	function specified by VALUE to install the new value.
---

When it now takes two arguments plus an optional argument called
BUFFER-LOCAL that is non-nil when the value is set through
`setopt-local'.





In GNU Emacs 31.0.90 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.52, cairo version 1.18.4) of 2026-07-01 built on X13
Repository revision: 5dd8fe25c23944cb8ac97d2d54b946c6a394d0fb
Repository branch: emacs-31
System Description: GNOME 50 (Flatpak runtime)

Configured using:
 'configure --prefix=/app --with-gnutls --with-tree-sitter --with-pgtk
 --with-native-compilation=aot --with-modules 'CFLAGS=-O2 -pipe -g
 -Wp,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions
 -fstack-protector-strong -grecord-gcc-switches
 -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '
 'LDFLAGS=-L/app/lib -Wl,-z,relro,-z,now -Wl,--as-needed ''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PGTK
PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: it_IT.UTF-8
  value of $LC_NUMERIC: it_IT.UTF-8
  value of $LC_TIME: it_IT.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  runbox-maode: t
  corfu-mode: t
  gcmh-mode: t
  ligature-mode: t
  electric-pair-mode: t
  whitespace-page-delimiters-mode: t
  whitespace-mode: t
  flyspell-mode: t
  display-line-numbers-mode: t
  diff-hl-flydiff-mode: t
  diff-hl-margin-local-mode: t
  diff-hl-margin-mode: t
  diff-hl-show-hunk-mouse-mode: t
  diff-hl-mode: t
  hl-line-mode: t
  xref-mouse-mode: t
  flymake-mode: t
  override-global-mode: t
  which-key-mode: t
  savehist-mode: t
  save-place-mode: t
  repeat-mode: t
  recentf-mode: t
  pixel-scroll-precision-mode: t
  minibuffer-electric-default-mode: t
  marginalia-mode: t
  global-so-long-mode: t
  global-auto-revert-mode: t
  delete-selection-mode: t
  auto-insert-mode: t
  package-autosuggest-mode: t
  server-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-mode: t
  file-name-shadow-mode: t
  horizontal-scroll-bar-mode: t
  mouse-shift-adjust-mode: t
  context-menu-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  window-divider-mode: t
  minibuffer-nonselected-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  delete-trailing-whitespace-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  temp-buffer-resize-mode: t
  hs-minor-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message yank-media puny rfc822 mml
mml-sec epa derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies
mm-encode mailabbrev gmm-utils mailheader sendmail mail-parse rfc2231
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils backline
outline-minor-faces mixed-pitch emacs-news-mode cus-dep cus-theme tabify
corfu mode-local xscheme scheme misearch multi-isearch vc-git char-fold
pulse face-remap color consult-xref consult bookmark view jka-compr
disass disp-table thai-util thai-word cl-print novice noutline outline
dired-aux secrets runbox runbox-tramp-prefix runbox-locals send-to
elisp-scope shortdoc shortdoc-doc help-fns cursor-sensor gcmh checkdoc
ligature elec-pair whitespace flyspell ispell display-line-numbers
diff-hl-flydiff diff-hl-margin diff-hl-dired dired dired-loaddefs
diff-hl-show-hunk diff-hl log-view log-edit add-log pcvs-util vc-dir vc
vc-dispatcher hl-line hideshow init eglot external-completion jsonrpc
xref flymake thingatpt diff diff-mode track-changes ert ewoc debug
backtrace find-func imenu tramp-sh edmacro kmacro bind-key easy-mmode
which-key treesit tramp-container tramp-cmds savehist saveplace repeat
recentf tree-widget project pixel-scroll minibuf-eldef marginalia
so-long autorevert filenotify delsel libadwaita-theme orderless compat
color-scheme-sync dbus xml autoinsert misc-defs doom-lib benchmark-init
comp comp-cstr warnings .user-lisp-autoloads pcase tramp-cache
time-stamp tramp trampver tramp-integration files-x tramp-message
tramp-compat shell pcomplete parse-time iso8601 time-date format-spec
tramp-loaddefs byte-opt compile text-property-search comint ansi-osc
ansi-color ring comp-run comp-common rx loaddefs-gen lisp-mnt radix-tree
bytecomp byte-compile early-init finder-inf info advice-patch-autoloads
adwaita-dark-theme-autoloads auctex-autoloads tex-site
auto-dim-other-buffers-autoloads auto-scroll-bar-autoloads
backline-autoloads benchmark-init-el-autoloads breadcrumb-autoloads
buffer-env-autoloads buffer-to-pdf-autoloads cape-autoloads
cdlatex-autoloads colorful-mode-autoloads corfu-autoloads
corg.el-autoloads crux-autoloads custom-css-autoloads diff-hl-autoloads
eat-autoloads eglot-jdtls-autoloads cl-extra help-mode dape-autoloads
elenv-autoloads embark-consult-autoloads consult-autoloads
embark-autoloads engrave-faces-autoloads gcmh-autoloads
haskell-mode-autoloads helpful-autoloads elisp-refs-autoloads
indent-bars-autoloads keycast-autoloads ligature-autoloads
list-utils-autoloads magit-autoloads magit-section-autoloads
llama-autoloads cond-let-autoloads marginalia-autoloads
material-icon-autoloads math-delimiters-autoloads math-symbols-autoloads
mixed-pitch-autoloads modern-fringes-autoloads msgu-autoloads
nix-ts-mode-autoloads nov-autoloads olivetti-autoloads
on-demand-scroll-bar-autoloads orderless-autoloads org-appear-autoloads
org-download-autoloads async-autoloads org-link-completion-autoloads
org-modern-autoloads org-ql-autoloads f-autoloads org-rnote-autoloads
org-special-block-extras-autoloads lolcat-autoloads dad-joke-autoloads
lf-autoloads org-super-agenda-autoloads ht-autoloads org-xopp-autoloads
outline-minor-faces-autoloads ov-autoloads project-x-autoloads
rainbow-delimiters-autoloads rainbow-mode-autoloads
solaire-mode-autoloads ts-autoloads s-autoloads vala-mode-autoloads
cc-styles cc-align cc-engine cc-vars cc-defs vundo-autoloads
windresize-autoloads with-editor-autoloads xeft-autoloads xr-autoloads
xref-union-autoloads yascroll-autoloads yasnippet-autoloads
zone-nyan-autoloads esxml-autoloads zone-rainbow-autoloads
zone-select-autoloads dash-autoloads zone-sl-autoloads package
browse-url xdg url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs gv
password-cache json subr-x mule-util map url-vars package-activate
cus-edit pp cus-start cus-load icons wid-edit cl-loaddefs cl-lib server
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win touch-screen pgtk-dnd 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 dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
lcms2 multi-tty move-toolbar make-network-process tty-child-frames
native-compile emacs)

Memory information:
((conses 16 986383 2270401) (symbols 48 35286 46) (strings 32 210035 68345)
 (string-bytes 1 8254434) (vectors 16 61815) (vector-slots 8 1443344 920076)
 (floats 8 487 29717) (intervals 56 34709 5360) (buffers 1064 50))