Subject: bug#19566: closed (Re: bug#19566: unloading support for misearch )

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 23 Jan 2015 14:27:03 +0000

Your bug report

#19566: (unload-feature 'misearch) breaks isearch 

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].

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

Subject: Re: bug#19566: unloading support for misearch
From: Ivan Shmakov <[email-masked]>
To: [email-masked]
Date: Fri, 23 Jan 2015 14:25:55 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 25.1

	I’ve pushed the change proposed to ‘master’ last Saturday;
	closing.

commit 0aaa5d699bf95afb152317f0788b8e2d2042f59d
CommitDate: Sat Jan 17 19:35:52 2015 +0000

    Unloading support for misearch.

    * lisp/misearch.el (multi-isearch-unload-function): New function.
    (misearch-unload-function): New alias.

    Fixes: debbugs:19566

-- 
FSF associate member #7257  http://boycottsystemd.org/  … 3013 B6A0 230E 334A

Subject: (unload-feature 'misearch) breaks isearch
From: Ivan Shmakov <[email-masked]>
To: [email-masked]
Date: Sun, 11 Jan 2015 11:37:57 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Package:  emacs
Severity: minor
Tags: patch

	Using unload-feature to unload misearch.el also undefines the
	autoloaded variables, which breaks isearch.el as it still uses
	them.

	Please thus consider the patch MIMEd.

	* lisp/misearch.el (multi-isearch-unload-function): New function
	to retain definitions of autoloaded variables when unloading.
	(misearch-unload-function): New alias.

-- 
FSF associate member #7257  np. The Middle Path — David Modica B6A0 230E 334A
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -377,6 +377,25 @@
     (goto-char (if isearch-forward (point-min) (point-max)))
     (isearch-forward-regexp nil t)))
 
+(defun multi-isearch-unload-function ()
+  "Remove autoloaded variables from `unload-function-defs-list'.
+Also prevent the feature from being reloaded via `isearch-mode-hook'."
+  (remove-hook 'isearch-mode-hook 'multi-isearch-setup)
+  (let ((defs (list (car unload-function-defs-list)))
+	(auto '(multi-isearch-next-buffer-function
+		multi-isearch-next-buffer-current-function
+		multi-isearch-current-buffer
+		multi-isearch-buffer-list multi-isearch-file-list)))
+    (dolist (def (cdr unload-function-defs-list))
+      (unless (and (symbolp def)
+		   (memq def auto))
+	(push def defs)))
+    (setq unload-function-defs-list (nreverse defs))
+    ;; .
+    nil))
+
+(defalias 'misearch-unload-function 'multi-isearch-unload-function)
+
 
 (provide 'multi-isearch)
 (provide 'misearch)