-(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
+ (add-hook 'window-configuration-change-hook 'winner-change-fun)
+ (add-hook 'post-command-hook 'winner-save-old-configurations)
+ (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 'minibuffer-setup-hook 'winner-save-unconditionally)))