2007-10-31 Juanma Barranquero <lekktu@gmail.com>
* whitespace.el (whitespace-write-file-hook): Remove interactive spec.
- (whitespace-unload-function): New-style unload function.
- If run, stop old style `-hook' function from running.
+ (whitespace-unload-function): New-style unload function. When run,
+ unintern `whitespace-unload-hook' and call `unload-feature' recursively
+ to stop the old hook from messing with the unloading.
* strokes.el (strokes-alphabetic-lessp): Doc fix.
(defun whitespace-unload-function ()
"Unload the whitespace library."
- (whitespace-global-mode -1)
- (save-current-buffer
- (dolist (buf (buffer-list))
- (set-buffer buf)
- (remove-hook 'write-file-functions 'whitespace-write-file-hook t)))
- ;; new-style unloading, stop old style from running
- (with-no-warnings (setq whitespace-unload-hook nil))
- ;; continue standard unloading
- nil)
+ (if (unintern "whitespace-unload-hook")
+ ;; if whitespace-unload-hook is defined, let's get rid of it
+ ;; and recursively call `unload-feature'
+ (progn (unload-feature 'whitespace) t)
+ ;; this only happens in the recursive call
+ (whitespace-global-mode -1)
+ (save-current-buffer
+ (dolist (buf (buffer-list))
+ (set-buffer buf)
+ (remove-hook 'write-file-functions 'whitespace-write-file-hook t)))
+ ;; continue standard unloading
+ nil))
(defun whitespace-unload-hook ()
(remove-hook 'find-file-hook 'whitespace-buffer)