;ELC ;;; Compiled ;;; in Emacs version 27.1 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@61 Vector of rectangles containing some Life startup patterns. (defvar life-patterns [("@@@" " @@" "@@@") ("@@@ @@@" "@@ @@ " "@@@ @@@") ("@@@ @@@" "@@ @@" "@@@ @@@") ("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@") ("@@@@@@@@@@") (" @@@@@@@@@@ " " @@@@@@@@@@ " " @@@@@@@@@@ " "@@@@@@@@@@ " "@@@@@@@@@@ ") ("@" "@" "@" "@" "@" "@" "@" "@" "@" "@" "@" "@" "@" "@" "@") ("@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @" "@ @") ("@@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@ " " @@") ("@@@@@@@@@" "@ @ @" "@ @@@@@ @" "@ @ @ @" "@@@ @@@" "@ @ @ @" "@ @@@@@ @" "@ @ @" "@@@@@@@@@") (" @ " " @ @ " " @@ @@ @@" " @ @ @@ @@" "@@ @ @ @@ " "@@ @ @ @@ @ @ " " @ @ @ " " @ @ " " @@ ") (" @ " " @ @@" " @ @ " " @ " " @ " "@ @ ") ("@@@ @" "@ " " @@" " @@ @" "@ @ @") ("@@@@@@@@ @@@@@ @@@ @@@@@@@ @@@@@")] (#$ . 408)) (defalias 'life-life-char '(macro . #[nil "\300\207" [64] 1])) (defalias 'life-death-char '(macro . #[nil "\300\207" [65] 1])) (defalias 'life-birth-char '(macro . #[nil "\300\207" [3] 1])) (defalias 'life-void-char '(macro . #[nil "\300\207" [32] 1])) (defalias 'life-life-string '(macro . #[nil "\300\301!\207" [char-to-string 64] 2])) (defalias 'life-death-string '(macro . #[nil "\300\301!\207" [char-to-string 65] 2])) (defalias 'life-birth-string '(macro . #[nil "\300\301!\207" [char-to-string 3] 2])) (defalias 'life-void-string '(macro . #[nil "\300\301!\207" [char-to-string 32] 2])) (defalias 'life-not-void-regexp '(macro . #[nil "\300\207" ["[^ \n]"] 1])) (defalias 'life-increment '(macro . #[(variable) "\301\302DE\207" [variable setq 1+] 4])) (defvar life-neighbor-deltas nil) (defvar life-window-start nil) (defvar life-current-generation nil) (defvar life-generation-string nil) #@206 Run Conway's Life simulation. The starting pattern is randomly selected. Prefix arg (optional first arg non-nil from a program) is the number of seconds to sleep between generations (this defaults to 1). (defalias 'life #[(&optional sleeptime) "\204\303\304 \210\3052\"\306\211\307!\210\310 \210\311 \210\312 \210*\202 \207" [sleeptime inhibit-read-only inhibit-quit 1 life-setup life-exit t life-display-generation life-grim-reaper life-expand-plane-if-needed life-increment-generation] 2 (#$ . 2964) "p"]) (defvar life-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [life-mode-hook variable-documentation put "Hook run after entering Life mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp life-mode-map definition-name life-mode] 4) (defvar life-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [life-mode-abbrev-table life-mode-map variable-documentation put purecopy "Keymap for `life-mode'." boundp life-mode-syntax-table definition-name life-mode (lambda (#1=#:def-tmp-var) (defvar life-mode-syntax-table #1#)) make-syntax-table "Syntax table for `life-mode'." (lambda (#1#) (defvar life-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `life-mode'." derived-mode-parent special-mode] 5) #@227 Major mode for the buffer of `life'. In addition to any hooks its parent mode `special-mode' might have run, this mode runs the hook `life-mode-hook', as the final or penultimate step during initialization. \{life-mode-map} (defalias 'life-mode #[nil "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2036 \321 =\203<\322\f\323 \"\210)\324*\325\"\204V*+=\204V\326*\325+C#\210\327 !\210\330\f!\210*+\306\331!\210\332\306\333!\210\307\306\334!\210\332\306\335!\210\336\306\337!\210\340\306\341!\210\342!\306\343!\210\344 S#\306\345!\210\346%\347 \210)\350\351!\207" [delay-mode-hooks major-mode mode-name life-mode-map life-mode-syntax-table parent make-local-variable t special-mode life-mode "Life" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table case-fold-search nil truncate-lines show-trailing-whitespace life-current-generation 0 life-generation-string "0" mode-line-buffer-identification ("Life: generation " life-generation-string) fill-column window-width life-window-start 1 buffer-disable-undo run-mode-hooks life-mode-hook life-mode-abbrev-table local-abbrev-table] 6 (#$ . 4600) nil]) (defalias 'life-setup #[nil "\303\304\305!\306\"\210\307 \210\310 \210\306\311 \210eb\210\312\313\314\306#\203&\315\316\306\211#\210\202eb\210 \317 Z\320\245m\204=\nj\210\314y\210\2020)\321 S\322ed\"Z\320\245eb\210\323\n!\210db\210\323\n!\210)eb\210m\204v\314\210 j\210\324 !\210`\314\210`|\210\314y\210\202[\325ed\"\210\326 \210\327 )\207" [inhibit-read-only fill-column n switch-to-buffer get-buffer-create "*Life*" t erase-buffer life-mode life-insert-random-pattern re-search-forward "[^ \n]" nil replace-match "@" line-end-position 2 window-height count-lines newline move-to-column untabify life-expand-plane-if-needed life-compute-neighbor-deltas] 4]) (defalias 'life-compute-neighbor-deltas #[nil "\302[T[\303\\[\304\211T\303\\\257\211\207" [fill-column life-neighbor-deltas -1 2 1] 9]) (defalias 'life-insert-random-pattern #[nil "\301\302G!\234!\210\303c\207" [life-patterns insert-rectangle random 10] 4]) (defalias 'life-increment-generation #[nil "T\302!\211\207" [life-current-generation life-generation-string int-to-string] 2]) (defalias 'life-grim-reaper #[nil "\306\307!\210eb\210\307\211\211\211\211\310\311\307\312#\203\205 \313`S\203s\n@\\\211f\211\314=\203>\315\f\211T\314\316\312%\210\202l \317W\203Q\315\f\211T \211T\312%\210\202l \320W\203c\315\f\211T \320\312%\210\202l \321Y\203l TA\211\204$ \322>\204\315\n\211T\321\323\312%\210\202-\313\224\204\216\324 \210\315\316d\320\314\312%\210\315\316d\316\314\312%\210\315\316d\325\314\312%\210\315\316d\317\321\312%\210\315\316d\323\314\312%\207" [list living-neighbors pivot char point life-neighbor-deltas set-match-data nil search-forward "@" t 0 32 subst-char-in-region 1 3 9 64 (2 3) 65 life-extinct-quit 2] 7]) (defalias 'life-expand-plane-if-needed #[nil "\3022Heb\210m?\205Gg\303=\204\304\210h\303=\203Aeb\210m\2041\305c\210\304\210\305c\210\304u\210\202\306\\\307\310!\210\311 \210\312\302\313\"\210\304y\210\2020\210eb\210\314\315\316`\211\306$\313#\203reb\210\317\305\"\210\320c\210\317\305\"\210\320c\210\316 \310#db\210\321\315\322`\211\306$\313#\205\234db\210\317\305\"\210\320c\210\317\305\"\210\320c\210\316 \310#\211\207" [fill-column life-window-start done 64 nil 32 2 scroll-left 1 life-compute-neighbor-deltas throw t search-forward "@" + insert-char 10 search-backward -] 7]) (defalias 'life-display-generation #[(sleeptime) "b\210\302\303!\210\304 !\203\303 W\206\305 ?\206\306\307\310\"\207" [life-window-start sleeptime recenter 0 sit-for input-pending-p throw life-exit nil] 3]) (defalias 'life-extinct-quit #[nil "\300\301!\210\302\303\304\"\207" [life-display-generation 0 signal life-extinct nil] 3]) (byte-code "\300\301\302\303#\210\304\305!\207" [define-error life-extinct "All life has perished" quit provide life] 4)