Bug fix for vc-dispatcher split.
[bpt/emacs.git] / lisp / play / life.el
index c3bc0b3..66251d8 100644 (file)
@@ -1,15 +1,17 @@
 ;;; life.el --- John Horton Conway's `Life' game for GNU Emacs
 
-;; Copyright (C) 1988, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 2001, 2002, 2003, 2004,
+;;   2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 
 ;; Author: Kyle Jones <kyleuunet.uu.net>
+;; Maintainer: FSF
 ;; Keywords: games
 
 ;; This file is part of GNU Emacs.
 
 ;; 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 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
@@ -19,8 +21,8 @@
 
 ;; 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., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -30,7 +32,7 @@
 
 ;;; Code:
 
-(defconst life-patterns
+(defvar life-patterns
   [("@@@" " @@" "@@@")
    ("@@@ @@@" "@@  @@ " "@@@ @@@")
    ("@@@ @@@" "@@   @@" "@@@ @@@")
     "            @@   " "             @@  " "              @@ "
     "               @@")
    ("@@@@@@@@@" "@   @   @" "@ @@@@@ @" "@ @   @ @" "@@@   @@@"
-    "@ @   @ @" "@ @@@@@ @" "@   @   @" "@@@@@@@@@")]
+    "@ @   @ @" "@ @@@@@ @" "@   @   @" "@@@@@@@@@")
+   ("                        @           "
+    "                      @ @           "
+    "            @@      @@            @@"
+    "           @   @    @@            @@"
+    "@@        @     @   @@              "
+    "@@        @   @ @@    @ @           "
+    "          @     @       @           "
+    "           @   @                    "
+    "            @@                      ")
+   ("      @ "
+    "    @ @@"
+    "    @ @ "
+    "    @   "
+    "  @     "
+    "@ @     ")
+   ("@@@ @"
+    "@    "
+    "   @@"
+    " @@ @"
+    "@ @ @")
+   ("@@@@@@@@ @@@@@   @@@      @@@@@@@ @@@@@")]
   "Vector of rectangles containing some Life startup patterns.")
 
 ;; Macros are used macros for manifest constants instead of variables
 
 ;; list of numbers that tell how many characters to move to get to
 ;; each of a cell's eight neighbors.
-(defconst life-neighbor-deltas nil)
+(defvar life-neighbor-deltas nil)
 
 ;; window display always starts here.  Easier to deal with than
 ;; (scroll-up) and (scroll-down) when trying to center the display.
-(defconst life-window-start nil)
+(defvar life-window-start nil)
 
 ;; For mode line
-(defconst life-current-generation nil)
+(defvar life-current-generation nil)
 ;; Sadly, mode-line-format won't display numbers.
-(defconst life-generation-string nil)
+(defvar life-generation-string nil)
 
 (defvar life-initialized nil
   "Non-nil if `life' has been run at least once.")
@@ -126,6 +149,7 @@ generations (this defaults to 1)."
          mode-name "Life"
          major-mode 'life-mode
          truncate-lines t
+          show-trailing-whitespace nil
          life-current-generation 0
          life-generation-string "0"
          mode-line-buffer-identification '("Life: generation "
@@ -267,7 +291,8 @@ generations (this defaults to 1)."
   (recenter 0)
 
   ;; Redisplay; if the user has hit a key, exit the loop.
-  (or (eq t (sit-for sleeptime))
+  (or (and (sit-for sleeptime) (< 0 sleeptime))
+      (not (input-pending-p))
       (throw 'life-exit nil)))
 
 (defun life-extinct-quit ()
@@ -279,4 +304,5 @@ generations (this defaults to 1)."
 
 (provide 'life)
 
+;; arch-tag: e9373544-755e-42f5-a9a1-4d4c422bb97a
 ;;; life.el ends here