]> git.eshelyaron.com Git - emacs.git/commitdiff
Use define-minor-mode for winner-mode
authorGlenn Morris <rgm@gnu.org>
Sat, 29 Sep 2012 23:52:03 +0000 (16:52 -0700)
committerGlenn Morris <rgm@gnu.org>
Sat, 29 Sep 2012 23:52:03 +0000 (16:52 -0700)
* lisp/winner.el (winner-mode): Remove variable (let define-minor-mode
handle it).
(winner-dont-bind-my-keys, winner-boring-buffers, winner-mode-hook):
Doc fixes.
(winner-mode-leave-hook): Rename to winner-mode-off-hook.
(winner-mode): Use define-minor-mode.

* etc/NEWS: Mention winner-mode-hook.

etc/NEWS
lisp/ChangeLog
lisp/winner.el

index d860baa014b263155faf85f19fe06b8a7a7806fa..b2444edcafeb7c718749044430dffe7012557c84 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -568,6 +568,9 @@ in case that is not properly encoded.
 
 ** which-function-mode now applies to all applicable major modes by default.
 
+---
+** winner-mode-hook now runs when the mode is disabled, as well as when it is
+enabled.
 
 ** FIXME something happened to ses.el, 2012-04-17.
 
index f567369b46bead8652493e3b680ae98af73ed64f..5dc8d4eb87ec2421a3457cee03a2d3c655551411 100644 (file)
@@ -1,5 +1,12 @@
 2012-09-29  Glenn Morris  <rgm@gnu.org>
 
+       * winner.el (winner-mode): Remove variable (let define-minor-mode
+       handle it).
+       (winner-dont-bind-my-keys, winner-boring-buffers, winner-mode-hook):
+       Doc fixes.
+       (winner-mode-leave-hook): Rename to winner-mode-off-hook.
+       (winner-mode): Use define-minor-mode.
+
        * vc/vc-sccs.el (vc-sccs-registered): Use the progn trick to get
        the full definition in loaddefs, rather than duplicating it.
 
index d808a54a10e8ec2cf934d51abe84e8b10ea08fec..453330598b6f988fe29c2b0e7d96bd3c4a5585b1 100644 (file)
   "Restoring window configurations."
   :group 'windows)
 
-;;;###autoload
-(defcustom winner-mode nil
-  "Toggle Winner mode.
-Setting this variable directly does not take effect;
-use either \\[customize] or the function `winner-mode'."
-  :set #'(lambda (symbol value) (funcall symbol (or value 0)))
-  :initialize 'custom-initialize-default
-  :type    'boolean
-  :group   'winner
-  :require 'winner)
-
 (defcustom winner-dont-bind-my-keys nil
-  "If non-nil: Do not use `winner-mode-map' in Winner mode."
+  "Non-nil means do not use `winner-mode-map' in Winner mode."
   :type  'boolean
   :group 'winner)
 
@@ -85,15 +74,13 @@ use either \\[customize] or the function `winner-mode'."
   :group 'winner)
 
 (defcustom winner-boring-buffers '("*Completions*")
-  "`winner-undo' will not restore windows displaying any of these buffers.
+  "List of buffer names whose windows `winner-undo' will not restore.
 You may want to include buffer names such as *Help*, *Apropos*,
 *Buffer List*, *info* and *Compile-Log*."
   :type '(repeat string)
   :group 'winner)
 
 
-
-
 \f
 ;;;; Saving old configurations (internal variables and subroutines)
 
@@ -337,11 +324,14 @@ You may want to include buffer names such as *Help*, *Apropos*,
 ;;;; Winner mode  (a minor mode)
 
 (defcustom winner-mode-hook nil
-  "Functions to run whenever Winner mode is turned on."
+  "Functions to run whenever Winner mode is turned on or off."
   :type 'hook
   :group 'winner)
 
-(defcustom winner-mode-leave-hook nil
+(define-obsolete-variable-alias 'winner-mode-leave-hook
+  'winner-mode-off-hook "24.3")
+
+(defcustom winner-mode-off-hook nil
   "Functions to run whenever Winner mode is turned off."
   :type 'hook
   :group 'winner)
@@ -364,37 +354,21 @@ You may want to include buffer names such as *Help*, *Apropos*,
 
 \f
 ;;;###autoload
-(defun winner-mode (&optional arg)
-  "Toggle Winner mode.
-With arg, turn Winner mode on if and only if arg is positive."
-  (interactive "P")
-  (let ((on-p (if arg (> (prefix-numeric-value arg) 0)
-               (not winner-mode))))
-    (cond
-     ;; Turn mode on
-     (on-p
-      (setq winner-mode t)
-      (cond
-       ((winner-hook-installed-p)
-       (add-hook 'window-configuration-change-hook 'winner-change-fun)
-      (add-hook 'post-command-hook 'winner-save-old-configurations))
-       (t (add-hook 'post-command-hook 'winner-save-conditionally)))
-      (add-hook 'minibuffer-setup-hook 'winner-save-unconditionally)
-      (setq winner-modified-list (frame-list))
-      (winner-save-old-configurations)
-      (run-hooks 'winner-mode-hook)
-      (when (called-interactively-p 'interactive)
-       (message "Winner mode enabled")))
-     ;; Turn mode off
-     (winner-mode
-      (setq winner-mode nil)
-      (remove-hook 'window-configuration-change-hook 'winner-change-fun)
-      (remove-hook 'post-command-hook 'winner-save-old-configurations)
-      (remove-hook 'post-command-hook 'winner-save-conditionally)
-      (remove-hook 'minibuffer-setup-hook 'winner-save-unconditionally)
-      (run-hooks 'winner-mode-leave-hook)
-      (when (called-interactively-p 'interactive)
-       (message "Winner mode disabled"))))))
+(define-minor-mode winner-mode nil :global t ; let d-m-m make the doc
+  (if winner-mode
+      (progn
+        (if (winner-hook-installed-p)
+            (progn
+              (add-hook 'window-configuration-change-hook 'winner-change-fun)
+              (add-hook 'post-command-hook 'winner-save-old-configurations))
+          (add-hook 'post-command-hook 'winner-save-conditionally))
+        (add-hook 'minibuffer-setup-hook 'winner-save-unconditionally)
+        (setq winner-modified-list (frame-list))
+        (winner-save-old-configurations))
+    (remove-hook 'window-configuration-change-hook 'winner-change-fun)
+    (remove-hook 'post-command-hook 'winner-save-old-configurations)
+    (remove-hook 'post-command-hook 'winner-save-conditionally)
+    (remove-hook 'minibuffer-setup-hook 'winner-save-unconditionally)))
 
 ;; Inspired by undo (simple.el)