summaryrefslogtreecommitdiff
path: root/lisp/winner.el
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-09-29 16:52:03 -0700
committerGlenn Morris <rgm@gnu.org>2012-09-29 16:52:03 -0700
commit5cc2e639c3eacf72c4864c45454a196279a0d512 (patch)
treed13e9995b806a8165bb492592e4b5b1274d70f66 /lisp/winner.el
parent7bd302ebcb9562d98abc1c6c63f42967fc46007e (diff)
downloademacs-5cc2e639c3eacf72c4864c45454a196279a0d512.tar.gz
Use define-minor-mode for winner-mode
* 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.
Diffstat (limited to 'lisp/winner.el')
-rw-r--r--lisp/winner.el70
1 files changed, 22 insertions, 48 deletions
diff --git a/lisp/winner.el b/lisp/winner.el
index d808a54a10e..453330598b6 100644
--- a/lisp/winner.el
+++ b/lisp/winner.el
@@ -63,19 +63,8 @@
"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)
-
-
;;;; 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*,
;;;###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)