Remove incorrect uses of "modeline".
[bpt/emacs.git] / lisp / strokes.el
index 228d662..1ae2300 100644 (file)
@@ -1,7 +1,6 @@
 ;;; strokes.el --- control Emacs through mouse strokes
 
-;; Copyright (C) 1997, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 2000-2012  Free Software Foundation, Inc.
 
 ;; Author: David Bakhash <cadet@alum.mit.edu>
 ;; Maintainer: FSF
@@ -9,10 +8,10 @@
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,9 +19,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -215,19 +212,21 @@ static char * stroke_xpm[] = {
   :link '(emacs-commentary-link "strokes")
   :group 'mouse)
 
-(defcustom strokes-modeline-string " Strokes"
-  "*Modeline identification when Strokes mode is on \(default is \" Strokes\"\)."
+(defcustom strokes-lighter " Strokes"
+  "Mode line identifier for Strokes mode."
   :type 'string
   :group 'strokes)
 
+(define-obsolete-variable-alias 'strokes-modeline-string 'strokes-lighter "24.2")
+
 (defcustom strokes-character ?@
-  "*Character used when drawing strokes in the strokes buffer.
+  "Character used when drawing strokes in the strokes buffer.
 \(The default is `@', which works well.\)"
   :type 'character
   :group 'strokes)
 
 (defcustom strokes-minimum-match-score 1000
-  "*Minimum score for a stroke to be considered a possible match.
+  "Minimum score for a stroke to be considered a possible match.
 Setting this variable to 0 would require a perfectly precise match.
 The default value is 1000, but it's mostly dependent on how precisely
 you manage to replicate your user-defined strokes.  It also depends on
@@ -244,7 +243,7 @@ ones, then strokes should NOT pick the one that came closest."
   :group 'strokes)
 
 (defcustom strokes-grid-resolution 9
-  "*Integer defining dimensions of the stroke grid.
+  "Integer defining dimensions of the stroke grid.
 The grid is a square grid, where `strokes-grid-resolution' defaults to
 `9', making a 9x9 grid whose coordinates go from (0 . 0) on the top
 left to ((strokes-grid-resolution - 1) . (strokes-grid-resolution - 1))
@@ -261,7 +260,7 @@ WARNING: Changing the value of this variable will gravely affect the
   :group 'strokes)
 
 (defcustom strokes-file (convert-standard-filename "~/.strokes")
-  "*File containing saved strokes for Strokes mode (default is ~/.strokes)."
+  "File containing saved strokes for Strokes mode (default is ~/.strokes)."
   :type 'file
   :group 'strokes)
 
@@ -269,7 +268,7 @@ WARNING: Changing the value of this variable will gravely affect the
   "The name of the buffer that the strokes take place in.")
 
 (defcustom strokes-use-strokes-buffer t
-  "*If non-nil, the strokes buffer is used and strokes are displayed.
+  "If non-nil, the strokes buffer is used and strokes are displayed.
 If nil, strokes will be read the same, however the user will not be
 able to see the strokes.  This be helpful for people who don't like
 the delay in switching to the strokes buffer."
@@ -721,6 +720,14 @@ Returns the corresponding match as (COMMAND . SCORE)."
          nil))
     nil))
 
+(defsubst strokes-fill-current-buffer-with-whitespace ()
+  "Erase the contents of the current buffer and fill it with whitespace."
+  (erase-buffer)
+  (loop repeat (frame-height) do
+       (insert-char ?\s (1- (frame-width)))
+       (newline))
+  (goto-char (point-min)))
+
 ;;;###autoload
 (defun strokes-read-stroke (&optional prompt event)
   "Read a simple stroke (interactively) and return the stroke.
@@ -738,6 +745,11 @@ Optional EVENT is acceptable as the starting event of the stroke."
          ;; display the stroke as it's being read
          (save-window-excursion
            (set-window-configuration strokes-window-configuration)
+           ;; The frame has been resized, so we need to refill the
+           ;; strokes buffer so that the strokes canvas is the whole
+           ;; visible buffer.
+           (unless (> 1 (abs (- (line-end-position) (window-width))))
+             (strokes-fill-current-buffer-with-whitespace))
            (when prompt
              (message "%s" prompt)
              (setq event (read-event))
@@ -1002,7 +1014,7 @@ If you'd like to create graphical files with strokes, you'll have to
 be running a version of Emacs with XPM support.  You use the binding
 to `strokes-compose-complex-stroke' to start drawing your strokes.
 These are just complex strokes, and thus continue drawing with mouse-1
-or mouse-2 and end with mouse-3.  Then the stroke image gets inserted
+or mouse-2 and   end with mouse-3.  Then the stroke image gets inserted
 into the buffer.  You treat it somewhat like any other character,
 which you can copy, paste, delete, move, etc.  When all is done, you
 may want to send the file, or save it.  This is done with
@@ -1030,17 +1042,9 @@ o Strokes are a bit computer-dependent in that they depend somewhat on
   by customizing the group `strokes' via \\[customize-group]."))
     (set-buffer standard-output)
     (help-mode)
-    (print-help-return-message)))
+    (help-print-return-message)))
 
-(defalias 'strokes-report-bug 'report-emacs-bug)
-
-(defsubst strokes-fill-current-buffer-with-whitespace ()
-  "Erase the contents of the current buffer and fill it with whitespace."
-  (erase-buffer)
-  (loop repeat (frame-height) do
-       (insert-char ?\s (1- (frame-width)))
-       (newline))
-  (goto-char (point-min)))
+(define-obsolete-function-alias 'strokes-report-bug 'report-emacs-bug "24.1")
 
 (defun strokes-window-configuration-changed-p ()
   "Non-nil if the `strokes-window-configuration' frame properties changed.
@@ -1057,19 +1061,18 @@ This is based on the last time `strokes-window-configuration' was updated."
           ;; don't try to update strokes window configuration
           ;; if window is dedicated or a minibuffer
           nil)
-         ((or (interactive-p)
+         ((or (called-interactively-p 'interactive)
               (not (buffer-live-p (get-buffer strokes-buffer-name)))
               (null strokes-window-configuration))
           ;; create `strokes-window-configuration' from scratch...
           (save-excursion
             (save-window-excursion
-              (get-buffer-create strokes-buffer-name)
+              (set-buffer (get-buffer-create strokes-buffer-name))
               (set-window-buffer current-window strokes-buffer-name)
               (delete-other-windows)
               (fundamental-mode)
               (auto-save-mode 0)
-              (if (featurep 'font-lock)
-                  (font-lock-mode 0))
+              (font-lock-mode 0)
               (abbrev-mode 0)
               (buffer-disable-undo (current-buffer))
               (setq truncate-lines nil)
@@ -1094,7 +1097,7 @@ This is based on the last time `strokes-window-configuration' was updated."
   (cond ((and (file-exists-p strokes-file)
              (file-readable-p strokes-file))
         (load-file strokes-file))
-       ((interactive-p)
+       ((called-interactively-p 'interactive)
         (error "Trouble loading user-defined strokes; nothing done"))
        (t
         (message "No user-defined strokes, sorry"))))
@@ -1109,7 +1112,7 @@ This is based on the last time `strokes-window-configuration' was updated."
            (setq strokes-global-map nil)
            (strokes-load-user-strokes)
            (if (and (not (equal current strokes-global-map))
-                    (or (interactive-p)
+                    (or (called-interactively-p 'interactive)
                         (yes-or-no-p "Save your strokes? ")))
                (progn
                  (require 'pp)         ; pretty-print variables
@@ -1189,20 +1192,22 @@ the stroke as a character in some language."
                       (let ((char (or (car rainbow-chars) ?\.)))
                         (loop for i from 0 to 2 do
                               (loop for j from 0 to 2 do
-                                    (goto-line (+ 16 i y))
+                                    (goto-char (point-min))
+                                    (forward-line (+ 15 i y))
                                     (forward-char (+ 1 j x))
                                     (delete-char 1)
                                     (insert char)))
                         (setq rainbow-chars (cdr rainbow-chars)
                               lift-flag nil))
                     ;; Otherwise, just plot the point...
-                    (goto-line (+ 17 y))
+                    (goto-char (point-min))
+                    (forward-line (+ 16 y))
                     (forward-char (+ 2 x))
                     (subst-char-in-region (point) (1+ (point)) ?\s ?\*)))
                  ((strokes-lift-p point)
                   ;; a lift--tell the loop to X out the next point...
                   (setq lift-flag t))))
-      (when (interactive-p)
+      (when (called-interactively-p 'interactive)
        (pop-to-buffer " *strokes-xpm*")
        ;;      (xpm-mode 1)
        (goto-char (point-min))
@@ -1313,7 +1318,7 @@ the stroke as a character in some language."
 ;;;;;###autoload
 ;;(defalias 'edit-strokes 'strokes-edit-strokes)
 
-(eval-when-compile (defvar view-mode-map))
+(defvar view-mode-map)
 
 ;;;###autoload
 (defun strokes-list-strokes (&optional chronological strokes-map)
@@ -1383,8 +1388,12 @@ If STROKES-MAP is not given, `strokes-global-map' will be used instead."
 
 ;;;###autoload
 (define-minor-mode strokes-mode
-  "Toggle Strokes global minor mode.\\<strokes-mode-map>
-With ARG, turn strokes on if and only if ARG is positive.
+  "Toggle Strokes mode, a global minor mode.
+With a prefix argument ARG, enable Strokes mode if ARG is
+positive, and disable it otherwise.  If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+\\<strokes-mode-map>
 Strokes are pictographic mouse gestures which invoke commands.
 Strokes are invoked with \\[strokes-do-stroke].  You can define
 new strokes with \\[strokes-global-set-stroke].  See also
@@ -1396,7 +1405,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer],
 \\[strokes-decode-buffer].
 
 \\{strokes-mode-map}"
-  nil strokes-modeline-string strokes-mode-map
+  nil strokes-lighter strokes-mode-map
   :group 'strokes :global t
   (cond ((not (display-mouse-p))
         (error "Can't use Strokes without a mouse"))
@@ -1536,8 +1545,7 @@ Encode/decode your strokes with \\[strokes-encode-buffer],
 (defun strokes-xpm-to-compressed-string (&optional xpm-buffer)
   "Convert XPM in XPM-BUFFER to compressed string representing the stroke.
 XPM-BUFFER defaults to ` *strokes-xpm*'."
-  (save-excursion
-    (set-buffer (setq xpm-buffer (or xpm-buffer " *strokes-xpm*")))
+  (with-current-buffer (setq xpm-buffer (or xpm-buffer " *strokes-xpm*"))
     (goto-char (point-min))
     (search-forward "/* pixels */")    ; skip past header junk
     (forward-char 2)
@@ -1620,8 +1628,7 @@ Optional BUFFER defaults to the current buffer.
 Optional FORCE non-nil will ignore the buffer's read-only status."
   (interactive)
   ;;  (interactive "*bStrokify buffer: ")
-  (save-excursion
-    (set-buffer (setq buffer (get-buffer (or buffer (current-buffer)))))
+  (with-current-buffer (setq buffer (get-buffer (or buffer (current-buffer))))
     (when (or (not buffer-read-only)
              force
              inhibit-read-only
@@ -1630,7 +1637,7 @@ Optional FORCE non-nil will ignore the buffer's read-only status."
       (let ((inhibit-read-only t))
        (message "Strokifying %s..." buffer)
        (goto-char (point-min))
-       (let (ext string image)
+       (let (string image)
          ;; The comment below is what I'd have to do if I wanted to
          ;; deal with random newlines in the midst of the compressed
          ;; strings.  If I do this, I'll also have to change
@@ -1669,8 +1676,7 @@ Optional FORCE non-nil will ignore the buffer's read-only status."
   ;; buffer is killed?
   ;;  (interactive "*bUnstrokify buffer: ")
   (interactive)
-  (save-excursion
-    (set-buffer (setq buffer (or buffer (current-buffer))))
+  (with-current-buffer (setq buffer (or buffer (current-buffer)))
     (when (or (not buffer-read-only)
              force
              inhibit-read-only
@@ -1706,9 +1712,8 @@ Optional FORCE non-nil will ignore the buffer's read-only status."
 (defun strokes-xpm-for-compressed-string (compressed-string &optional bufname)
   "Convert the stroke represented by COMPRESSED-STRING into an XPM.
 Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
-  (save-excursion
-    (or bufname (setq bufname " *strokes-xpm*"))
-    (set-buffer (get-buffer-create bufname))
+  (or bufname (setq bufname " *strokes-xpm*"))
+  (with-current-buffer (get-buffer-create bufname)
     (erase-buffer)
     (insert compressed-string)
     (goto-char (point-min))
@@ -1754,5 +1759,4 @@ Store XPM in buffer BUFNAME if supplied \(default is ` *strokes-xpm*'\)"
 (run-hooks 'strokes-load-hook)
 (provide 'strokes)
 
-;;; arch-tag: 8377f60e-43fb-467a-bbcd-2774f91f833e
 ;;; strokes.el ends here