GNU bug report logs - #10760
24.0.93; [patch] Convert artist-mode to use define-minor-mode

Previous Next

Package: emacs;

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

From: William Stevenson <yhvh2000 <at> gmail.com>
To: 10760 <at> debbugs.gnu.org
Subject: bug#10760: 24.0.93; [patch] Convert artist-mode to use define-minor-mode
Date: Wed, 08 Feb 2012 07:34:37 +0000
Apologies, an error snuck in to that last diff, a line in the doc was
changed uselessly.


=== modified file 'lisp/textmodes/artist.el'
*** lisp/textmodes/artist.el	2012-01-19 07:21:25 +0000
--- lisp/textmodes/artist.el	2012-02-08 07:28:48 +0000
***************
*** 415,427 ****
  
  ;; Internal variables
  ;;
- (defvar artist-mode nil
-   "Non-nil to enable `artist-mode' and nil to disable.")
- (make-variable-buffer-local 'artist-mode)
- 
- (defvar artist-mode-name " Artist"
-   "Name of Artist mode beginning with a space (appears in the mode-line).")
- 
  (defvar artist-curr-go 'pen-line
    "Current selected graphics operation.")
  (make-variable-buffer-local 'artist-curr-go)
--- 415,420 ----
***************
*** 545,606 ****
      		    :button (:radio . (eq artist-curr-go ',(nth 2 op))))))
      map))
  
- (defvar artist-mode-map
-   (let ((map (make-sparse-keymap)))
-     (setq artist-mode-map (make-sparse-keymap))
-     (define-key map [down-mouse-1] 'artist-down-mouse-1)
-     (define-key map [S-down-mouse-1] 'artist-down-mouse-1)
-     (define-key map [down-mouse-2] 'artist-mouse-choose-operation)
-     (define-key map [S-down-mouse-2] 'artist-mouse-choose-operation)
-     (define-key map [down-mouse-3] 'artist-down-mouse-3)
-     (define-key map [S-down-mouse-3] 'artist-down-mouse-3)
-     (define-key map [C-mouse-4] 'artist-select-prev-op-in-list)
-     (define-key map [C-mouse-5] 'artist-select-next-op-in-list)
-     (define-key map "\r" 'artist-key-set-point) ; return
-     (define-key map [up] 'artist-previous-line)
-     (define-key map "\C-p" 'artist-previous-line)
-     (define-key map [down] 'artist-next-line)
-     (define-key map "\C-n" 'artist-next-line)
-     (define-key map [left] 'artist-backward-char)
-     (define-key map "\C-b" 'artist-backward-char)
-     (define-key map [right] 'artist-forward-char)
-     (define-key map "\C-f" 'artist-forward-char)
-     (define-key map "<" 'artist-toggle-first-arrow)
-     (define-key map ">" 'artist-toggle-second-arrow)
-     (define-key map "\C-c\C-a\C-e" 'artist-select-erase-char)
-     (define-key map "\C-c\C-a\C-f" 'artist-select-fill-char)
-     (define-key map "\C-c\C-a\C-l" 'artist-select-line-char)
-     (define-key map "\C-c\C-a\C-o" 'artist-select-operation)
-     (define-key map "\C-c\C-a\C-r" 'artist-toggle-rubber-banding)
-     (define-key map "\C-c\C-a\C-t" 'artist-toggle-trim-line-endings)
-     (define-key map "\C-c\C-a\C-s" 'artist-toggle-borderless-shapes)
-     (define-key map "\C-c\C-c"     'artist-mode-off)
-     (define-key map "\C-c\C-al"    'artist-select-op-line)
-     (define-key map "\C-c\C-aL"    'artist-select-op-straight-line)
-     (define-key map "\C-c\C-ar"    'artist-select-op-rectangle)
-     (define-key map "\C-c\C-aR"    'artist-select-op-square)
-     (define-key map "\C-c\C-as"    'artist-select-op-square)
-     (define-key map "\C-c\C-ap"    'artist-select-op-poly-line)
-     (define-key map "\C-c\C-aP"    'artist-select-op-straight-poly-line)
-     (define-key map "\C-c\C-ae"    'artist-select-op-ellipse)
-     (define-key map "\C-c\C-ac"    'artist-select-op-circle)
-     (define-key map "\C-c\C-at"    'artist-select-op-text-see-thru)
-     (define-key map "\C-c\C-aT"    'artist-select-op-text-overwrite)
-     (define-key map "\C-c\C-aS"    'artist-select-op-spray-can)
-     (define-key map "\C-c\C-az"    'artist-select-op-spray-set-size)
-     (define-key map "\C-c\C-a\C-d" 'artist-select-op-erase-char)
-     (define-key map "\C-c\C-aE"    'artist-select-op-erase-rectangle)
-     (define-key map "\C-c\C-av"    'artist-select-op-vaporize-line)
-     (define-key map "\C-c\C-aV"    'artist-select-op-vaporize-lines)
-     (define-key map "\C-c\C-a\C-k" 'artist-select-op-cut-rectangle)
-     (define-key map "\C-c\C-a\M-w" 'artist-select-op-copy-rectangle)
-     (define-key map "\C-c\C-a\C-y" 'artist-select-op-paste)
-     (define-key map "\C-c\C-af"    'artist-select-op-flood-fill)
-     (define-key map "\C-c\C-a\C-b" 'artist-submit-bug-report)
-     (define-key map [menu-bar artist] (cons "Artist" artist-menu-map))
-     map)
-   "Keymap for `artist-minor-mode'.")
- 
  (defvar artist-replacement-table (make-vector 256 0)
    "Replacement table for `artist-replace-char'.")
  
--- 538,543 ----
***************
*** 1196,1204 ****
  ;;; ---------------------------------
  
  ;;;###autoload
! (defun artist-mode (&optional state)
    "Toggle Artist mode.
! With argument STATE, turn Artist mode on if STATE is positive.
  Artist lets you draw lines, squares, rectangles and poly-lines,
  ellipses and circles with your mouse and/or keyboard.
  
--- 1133,1141 ----
  ;;; ---------------------------------
  
  ;;;###autoload
! (define-minor-mode artist-mode
    "Toggle Artist mode.
! 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,1472 ****
  
  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.
  
  
  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 and exit
! (defun artist-mode-init ()
!   "Init Artist mode.  This will call the hook `artist-mode-init-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.
!   (let ((i 0))
!     (while (< i 256)
!       (aset artist-replacement-table i i)
!       (setq i (1+ i))))
!   (aset artist-replacement-table ?\n ?\s)
!   (aset artist-replacement-table ?\t ?\s)
!   (aset artist-replacement-table 0 ?\s)
!   ;; More setup
!   (make-local-variable 'artist-key-is-drawing)
!   (make-local-variable 'artist-key-endpoint1)
!   (make-local-variable 'artist-key-poly-point-list)
!   (make-local-variable 'artist-key-shape)
!   (make-local-variable 'artist-key-draw-how)
!   (make-local-variable 'artist-popup-menu-table)
!   (make-local-variable 'artist-key-compl-table)
!   (make-local-variable 'artist-prev-next-op-alist)
!   (make-local-variable 'artist-rb-save-data)
!   (make-local-variable 'artist-arrow-point-1)
!   (make-local-variable 'artist-arrow-point-2)
!   (setq artist-key-is-drawing nil)
!   (setq artist-key-endpoint1 nil)
!   (setq artist-key-poly-point-list nil)
!   (setq artist-key-shape nil)
!   (setq artist-popup-menu-table (artist-compute-popup-menu-table artist-mt))
!   (setq artist-key-compl-table (artist-compute-key-compl-table artist-mt))
!   (setq artist-prev-next-op-alist
! 	(artist-make-prev-next-op-alist artist-key-compl-table))
!   (setq artist-rb-save-data (make-vector 7 0))
!   (setq artist-arrow-point-1 nil)
!   (setq artist-arrow-point-2 nil)
!   (make-local-variable 'next-line-add-newlines)
!   (setq next-line-add-newlines t)
!   (setq artist-key-draw-how
! 	(artist-go-get-draw-how-from-symbol artist-curr-go))
!   (if (and artist-picture-compatibility (not (eq major-mode 'picture-mode)))
!       (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'."
!   (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))
  
  (defun artist-mode-off ()
    "Turn Artist mode off."
--- 1324,1438 ----
  
  Hooks
  
! Turning the mode on or off runs `artist-mode-hook'.
  
  
  Keymap summary
  
  \\{artist-mode-map}"
!   :init-value nil   :group 'artist :lighter " Artist"
!   :keymap
!   '(([down-mouse-1]	.	artist-down-mouse-1)
!     ([S-down-mouse-1]	.	artist-down-mouse-1)
!     ([down-mouse-2]	.	artist-mouse-choose-operation)
!     ([S-down-mouse-2]	.	artist-mouse-choose-operation)
!     ([down-mouse-3]	.	artist-down-mouse-3)
!     ([S-down-mouse-3]	.	artist-down-mouse-3)
!     ([C-mouse-4]	.	artist-select-prev-op-in-list)
!     ([C-mouse-5]	.	artist-select-next-op-in-list)
!     ("\r"		.	artist-key-set-point) ; return
!     ([up]		.	artist-previous-line)
!     ("\C-p"		.	artist-previous-line)
!     ([down]		.	artist-next-line)
!     ("\C-n"		.	artist-next-line)
!     ([left]		.	artist-backward-char)
!     ("\C-b"		.	artist-backward-char)
!     ([right]		.	artist-forward-char)
!     ("\C-f"		.	artist-forward-char)
!     ("<"		.	artist-toggle-first-arrow)
!     (">"		.	artist-toggle-second-arrow)
!     ("\C-c\C-a\C-e"	.	artist-select-erase-char)
!     ("\C-c\C-a\C-f"	.	artist-select-fill-char)
!     ("\C-c\C-a\C-l"	.	artist-select-line-char)
!     ("\C-c\C-a\C-o"	.	artist-select-operation)
!     ("\C-c\C-a\C-r"	.	artist-toggle-rubber-banding)
!     ("\C-c\C-a\C-t"	.	artist-toggle-trim-line-endings)
!     ("\C-c\C-a\C-s"	.	artist-toggle-borderless-shapes)
!     ("\C-c\C-c"		.	artist-mode-off)
!     ("\C-c\C-al"	.	artist-select-op-line)
!     ("\C-c\C-aL"	.	artist-select-op-straight-line)
!     ("\C-c\C-ar"	.	artist-select-op-rectangle)
!     ("\C-c\C-aR"	.	artist-select-op-square)
!     ("\C-c\C-as"	.	artist-select-op-square)
!     ("\C-c\C-ap"	.	artist-select-op-poly-line)
!     ("\C-c\C-aP"	.	artist-select-op-straight-poly-line)
!     ("\C-c\C-ae"	.	artist-select-op-ellipse)
!     ("\C-c\C-ac"	.	artist-select-op-circle)
!     ("\C-c\C-at"	.	artist-select-op-text-see-thru)
!     ("\C-c\C-aT"	.	artist-select-op-text-overwrite)
!     ("\C-c\C-aS"	.	artist-select-op-spray-can)
!     ("\C-c\C-az"	.	artist-select-op-spray-set-size)
!     ("\C-c\C-a\C-d"	.	artist-select-op-erase-char)
!     ("\C-c\C-aE"	.	artist-select-op-erase-rectangle)
!     ("\C-c\C-av"	.	artist-select-op-vaporize-line)
!     ("\C-c\C-aV"	.	artist-select-op-vaporize-lines)
!     ("\C-c\C-a\C-k"	.	artist-select-op-cut-rectangle)
!     ("\C-c\C-a\M-w"	.	artist-select-op-copy-rectangle)
!     ("\C-c\C-a\C-y"	.	artist-select-op-paste)
!     ("\C-c\C-af"	.	artist-select-op-flood-fill)
!     ("\C-c\C-a\C-b"	.	artist-submit-bug-report)
!     ([menu-bar artist]	.	artist-menu-map))
!   (cond ((null artist-mode)
! 	 ;; Turn mode off
! 	 (if (and artist-picture-compatibility (eq major-mode 'picture-mode))
! 	     (picture-mode-exit))
! 	 (kill-local-variable 'next-line-add-newlines))
! 	
! 	(t
! 	 ;; Turn mode on
! 	 ;; 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.
! 	 (let ((i 0))
! 	   (while (< i 256)
! 	     (aset artist-replacement-table i i)
! 	     (setq i (1+ i))))
! 	 (aset artist-replacement-table ?\n ?\s)
! 	 (aset artist-replacement-table ?\t ?\s)
! 	 (aset artist-replacement-table 0 ?\s)
! 	 ;; More setup
! 	 (make-local-variable 'artist-key-is-drawing)
! 	 (make-local-variable 'artist-key-endpoint1)
! 	 (make-local-variable 'artist-key-poly-point-list)
! 	 (make-local-variable 'artist-key-shape)
! 	 (make-local-variable 'artist-key-draw-how)
! 	 (make-local-variable 'artist-popup-menu-table)
! 	 (make-local-variable 'artist-key-compl-table)
! 	 (make-local-variable 'artist-prev-next-op-alist)
! 	 (make-local-variable 'artist-rb-save-data)
! 	 (make-local-variable 'artist-arrow-point-1)
! 	 (make-local-variable 'artist-arrow-point-2)
! 	 (setq artist-key-is-drawing nil)
! 	 (setq artist-key-endpoint1 nil)
! 	 (setq artist-key-poly-point-list nil)
! 	 (setq artist-key-shape nil)
! 	 (setq artist-popup-menu-table (artist-compute-popup-menu-table artist-mt))
! 	 (setq artist-key-compl-table (artist-compute-key-compl-table artist-mt))
! 	 (setq artist-prev-next-op-alist
! 	       (artist-make-prev-next-op-alist artist-key-compl-table))
! 	 (setq artist-rb-save-data (make-vector 7 0))
! 	 (setq artist-arrow-point-1 nil)
! 	 (setq artist-arrow-point-2 nil)
! 	 (make-local-variable 'next-line-add-newlines)
! 	 (setq next-line-add-newlines t)
! 	 (setq artist-key-draw-how
! 	       (artist-go-get-draw-how-from-symbol artist-curr-go))
! 	 (if (and artist-picture-compatibility (not (eq major-mode 'picture-mode)))
! 	     (progn
! 	       (picture-mode)
! 	       (message "")))
! 	 (artist-mode-line-show-curr-operation artist-key-is-drawing))))
! 
  
  (defun artist-mode-off ()
    "Turn Artist mode off."
***************
*** 1484,1490 ****
  
  (defun artist-mode-line-show-curr-operation (is-drawing)
    "Show current operation in mode-line.  If IS-DRAWING, show that."
!   (let ((mtext (concat artist-mode-name "/"
  		       (artist-go-get-mode-line-from-symbol artist-curr-go)
  		       (if is-drawing "/*" ""))))
      (setcdr (assq 'artist-mode minor-mode-alist) (list mtext)))
--- 1450,1456 ----
  
  (defun artist-mode-line-show-curr-operation (is-drawing)
    "Show current operation in mode-line.  If IS-DRAWING, show that."
!   (let ((mtext (concat " Artist/"
  		       (artist-go-get-mode-line-from-symbol artist-curr-go)
  		       (if is-drawing "/*" ""))))
      (setcdr (assq 'artist-mode minor-mode-alist) (list mtext)))






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.