bug-gnu-emacs
[Top][All Lists]
Advanced

[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."









reply via email to

[Prev in Thread] Current Thread [Next in Thread]