Subject: bug#34686: closed (Re: bug#5293: 23.1; unload-feature on buffer-local hooks)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 21 Oct 2020 16:59:02 +0000

Your bug report

#5293: 26.1; unload-feature doesn't remove functions locally from hooks

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
5293: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5293
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#5293: 23.1; unload-feature on buffer-local hooks
From: Štěpán Němec <[email-masked]>
To: Lars Ingebrigtsen <[email-masked]>
Cc: Juanma Barranquero <[email-masked]>, Kevin Ryde <[email-masked]>, Stefan Monnier <[email-masked]>, [email-masked]
Date: Wed, 21 Oct 2020 19:00:33 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

On Tue, 20 Oct 2020 13:13:00 +0200
Lars Ingebrigtsen wrote:

> Štěpán Němec <[email-masked]> writes:
>
>> But this version seems fast enough, so maybe we can push this and be
>> done with it, at least for the time being.
>
> Yeah, I think so -- your patch looks like a good idea, and we can always
> tweak this more later, so please go ahead and push the patch series.

Done, thank you.

0e9e36747f (unload-feature: Improve logic (don't repeat computation))
2020-04-06T13:25:41+02:[email-masked]

5c266a71c1 (unload-feature: Handle local hooks (bug#5293))
2020-04-06T13:30:11+02:[email-masked]

8dc8ab6b42 (unload-feature: Correct doc string to match info manual and reality)
2020-04-06T17:05:33+02:[email-masked]

-- 
Štěpán

Subject: 26.1; unload-feature doesn't remove functions locally from hooks
From: Braun Gábor <[email-masked]>
To: [email-masked]
Date: Sat, 23 Feb 2019 22:16:45 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Create in the current directory the following two files:

------------------------- test.el -------------------------------------
(with-temp-buffer
  (load-file "./test-unload.el")
  (add-hook 'test-hook #'test-function nil t)
  (unload-feature 'test-unload)
  (run-hooks 'test-hook))
-----------------------------------------------------------------------

------------------------- test-unload.el ------------------------------
(defun test-function () "Test function, does nothing." nil)
(provide 'test-unload)
-----------------------------------------------------------------------

Start Emacs via

emacs -Q --eval '(setq debug-on-error t)' -l test.el

Expectation: Emacs starts up with no error.
(`unload-feature' should remove `test-function' from `test-hook' as
documented, so `(run-hooks 'test-hook)' should be a no-op.)

A split frame is shown with buffer *Backtrace* having the following 
content:

-------------------- buffer *Backtrace* -------------------------------
Debugger entered--Lisp error: (void-function test-function)
  test-function()
  run-hooks(test-hook)
  (progn (load-file "./test-unload.el") (add-hook 'test-hook (function 
test-function) nil t) (unload-feature 'test-unload) (run-hooks 'test-
hook))
  (unwind-protect (progn (load-file "./test-unload.el") (add-hook 'test-
hook (function test-function) nil t) (unload-feature 'test-unload) (run-
hooks 'test-hook)) (and (buffer-name temp-buffer) (kill-buffer temp-
buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn 
(load-file "./test-unload.el") (add-hook 'test-hook (function test-
function) nil t) (unload-feature 'test-unload) (run-hooks 'test-hook)) 
(and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-
buffer (set-buffer temp-buffer) (unwind-protect (progn (load-file "./
test-unload.el") (add-hook 'test-hook (function test-function) nil t) 
(unload-feature 'test-unload) (run-hooks 'test-hook)) (and (buffer-name 
temp-buffer) (kill-buffer temp-buffer)))))
  eval-buffer(#<buffer  *load*> nil "/run/shm/test.el" nil t)  ; Reading 
at buffer position 155
  load-with-code-conversion("/run/shm/test.el" "/run/shm/test.el" nil t)
  load("/run/shm/test.el" nil t)
  command-line-1(("--eval" "(setq debug-on-error t)" "-l" "test.el"))
  command-line()
  normal-top-level()
-----------------------------------------------------------------------

Best wishes,

     Gábor Braun

System information:

In GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.2)
 of 2018-12-26, modified by Debian built on x86-ubc-01
Windowing system distributor 'The X.Org Foundation', version 
11.0.12003000
System Description:	Debian GNU/Linux buster/sid

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading /run/shm/test-unload.el (source)...done
Entering debugger...

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --enable-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-
lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/
usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --enable-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-
lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/
usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs-3ThesY/emacs-26.1+1=. -fstack-
protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LANG: hu_HU.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Debugger

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-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
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny seq dired
dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived
epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode
easymenu cl-print debug loadhist byte-opt gv bytecomp byte-compile
cl-loaddefs cl-lib cconv elec-pair time-date mule-util tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic 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 charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 99661 8330)
 (symbols 48 20573 1)
 (miscs 40 65 104)
 (strings 32 28942 1190)
 (string-bytes 1 759566)
 (vectors 16 14967)
 (vector-slots 8 500780 7422)
 (floats 8 55 154)
 (intervals 56 296 0)
 (buffers 992 14))