GNU bug report logs -
#10760
24.0.93; [patch] Convert artist-mode to use define-minor-mode
Previous Next
Reported by: William Stevenson <yhvh2000 <at> gmail.com>
Date: Wed, 8 Feb 2012 07:15:02 UTC
Severity: minor
Tags: patch
Found in version 24.0.93
Fixed in version 24.2
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> - (defvar artist-mode-map
>
> The keymap does not have to be defined within the call to
> define-minor-mode (actually I recommend you don't do that in general),
> so you can leave the (defvar artist-mode-map ...) untouched.
I did :keymap artist-mode-map.
>> ! (defun artist-mode-init ()
> [...]
>> ! (defun artist-mode-exit ()
>
> You can also keep these functions. This will significantly reduce the
> size of your patch and will make it much easier to figure out what is
> really changed (and hence, whether or not the change is safe).
Done.
>> ! :init-value nil :group 'artist :lighter " Artist"
>
> You should use artist-mode-name here.
Done.
>
> 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.
=== 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."
This bug report was last modified 13 years and 126 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.