mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-26 10:49:33 +00:00
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.
This commit is contained in:
parent
7bd302ebcb
commit
5cc2e639c3
3
etc/NEWS
3
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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user