[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#10760: 24.0.93; [patch] Convert artist-mode to use define-minor-mode
From: |
Stefan Monnier |
Subject: |
bug#10760: 24.0.93; [patch] Convert artist-mode to use define-minor-mode |
Date: |
Thu, 09 Feb 2012 17:01:42 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) |
>> Stefan "who actually prefers `diff -u' format"
> Me too, serves me right for reading the manual :B
> In summary:
> Updated artist-mode to use define-minor-mode.
> As a consequence, artist-mode-init-hook and artist-mode-exit-hook were
> removed from artist-mode-init and artist-mode-exit, because d-m-m creates
> artist-mode-hook, and runs it when the mode is turned on or off.
> Documentation was updated to reflect this.
Looks good, please install, and thank you,
Stefan
> === modified file 'lisp/textmodes/artist.el'
> --- lisp/textmodes/artist.el 2012-01-19 07:21:25 +0000
> +++ lisp/textmodes/artist.el 2012-02-09 03:00:37 +0000
> @@ -1196,9 +1196,9 @@
> ;;; ---------------------------------
> ;;;###autoload
> -(defun artist-mode (&optional state)
> +(define-minor-mode artist-mode
> "Toggle Artist mode.
> -With argument STATE, turn Artist mode on if STATE is positive.
> +With argument ARG, turn Artist mode on if ARG is positive.
> Artist lets you draw lines, squares, rectangles and poly-lines,
> ellipses and circles with your mouse and/or keyboard.
> @@ -1387,36 +1387,24 @@
> Hooks
> - When entering artist-mode, the hook `artist-mode-init-hook' is called.
> - When quitting artist-mode, the hook `artist-mode-exit-hook' is called.
> + Turning the mode on or off runs `artist-mode-hook'.
> Keymap summary
> \\{artist-mode-map}"
> - (interactive)
> - (if (setq artist-mode
> - (if (null state) (not artist-mode)
> - (> (prefix-numeric-value state) 0)))
> - (artist-mode-init)
> - (artist-mode-exit)))
> -
> -;; insert our minor mode string
> -(or (assq 'artist-mode minor-mode-alist)
> - (setq minor-mode-alist
> - (cons '(artist-mode artist-mode-name)
> - minor-mode-alist)))
> -
> -;; insert our minor mode keymap
> -(or (assq 'artist-mode minor-mode-map-alist)
> - (setq minor-mode-map-alist
> - (cons (cons 'artist-mode artist-mode-map)
> - minor-mode-map-alist)))
> -
> + :init-value nil :group 'artist :lighter artist-mode-name
> + :keymap artist-mode-map
> + (cond ((null artist-mode)
> + ;; Turn mode off
> + (artist-mode-exit))
> + (t
> + ;; Turn mode on
> + (artist-mode-init))))
> ;; Init and exit
> (defun artist-mode-init ()
> - "Init Artist mode. This will call the hook `artist-mode-init-hook'."
> + "Init Artist mode. This will call the hook `artist-mode-hook'."
> ;; Set up a conversion table for mapping tabs and new-lines to spaces.
> ;; the last case, 0, is for the last position in buffer/region, where
> ;; the `following-char' function returns 0.
> @@ -1458,15 +1446,13 @@
> (progn
> (picture-mode)
> (message "")))
> - (run-hooks 'artist-mode-init-hook)
> (artist-mode-line-show-curr-operation artist-key-is-drawing))
> (defun artist-mode-exit ()
> - "Exit Artist mode. This will call the hook `artist-mode-exit-hook'."
> + "Exit Artist mode. This will call the hook `artist-mode-hook'."
> (if (and artist-picture-compatibility (eq major-mode 'picture-mode))
> (picture-mode-exit))
> - (kill-local-variable 'next-line-add-newlines)
> - (run-hooks 'artist-mode-exit-hook))
> + (kill-local-variable 'next-line-add-newlines))
> (defun artist-mode-off ()
> "Turn Artist mode off."