Mercurial > emacs
annotate lisp/play/zone.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 60516122d066 |
children | 417b1e4d63cd |
rev | line source |
---|---|
30565 | 1 ;;; zone.el --- idle display hacks |
2 | |
109299 | 3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, |
4 ;; 2009, 2010 Free Software Foundation, Inc. | |
30565 | 5 |
38414
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
32348
diff
changeset
|
6 ;; Author: Victor Zandy <zandy@cs.wisc.edu> |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
32348
diff
changeset
|
7 ;; Maintainer: Thien-Thi Nguyen <ttn@gnu.org> |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
32348
diff
changeset
|
8 ;; Keywords: games |
67b464da13ec
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
32348
diff
changeset
|
9 ;; Created: June 6, 1998 |
30565 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
94675
949bd6ad1ba4
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
30565 | 14 ;; it under the terms of the GNU General Public License as published by |
94675
949bd6ad1ba4
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
949bd6ad1ba4
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
16 ;; (at your option) any later version. |
30565 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
94675
949bd6ad1ba4
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93975
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
30565 | 25 |
26 ;;; Commentary: | |
27 | |
28 ;; Don't zone out in front of Emacs! Try M-x zone. | |
29 ;; If it eventually irritates you, try M-x zone-leave-me-alone. | |
30 | |
31 ;; Bored by the zone pyrotechnics? Write your own! Add it to | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
32 ;; `zone-programs'. See `zone-call' for higher-ordered zoning. |
30565 | 33 |
34 ;; WARNING: Not appropriate for Emacs sessions over modems or | |
59000
ee201fcb86f7
Commentary munging; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58998
diff
changeset
|
35 ;; computers as slow as mine. |
30565 | 36 |
59000
ee201fcb86f7
Commentary munging; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58998
diff
changeset
|
37 ;; THANKS: Christopher Mayer, Scott Flinchbaugh, |
ee201fcb86f7
Commentary munging; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58998
diff
changeset
|
38 ;; Rachel Kalmar, Max Froumentin, Juri Linkov, |
ee201fcb86f7
Commentary munging; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58998
diff
changeset
|
39 ;; Luigi Panzeri, John Paul Wallington. |
30565 | 40 |
41 ;;; Code: | |
42 | |
45819
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
43 (defvar zone-timer nil |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
44 "The timer we use to decide when to zone out, or nil if none.") |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
45 |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
46 (defvar zone-timeout nil |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
47 "*Seconds to timeout the zoning. |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
48 If nil, don't interrupt for about 1^26 seconds.") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
49 |
30565 | 50 ;; Vector of functions that zone out. `zone' will execute one of |
51 ;; these functions, randomly chosen. The chosen function is invoked | |
52 ;; in the *zone* buffer, which contains the text of the selected | |
53 ;; window. If the function loops, it *must* periodically check and | |
54 ;; halt if `input-pending-p' is t (because quitting is disabled when | |
55 ;; Emacs idle timers are run). | |
56 (defvar zone-programs [ | |
57 zone-pgm-jitter | |
58 zone-pgm-putz-with-case | |
59 zone-pgm-dissolve | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
60 ;; zone-pgm-explode |
30565 | 61 zone-pgm-whack-chars |
62 zone-pgm-rotate | |
63 zone-pgm-rotate-LR-lockstep | |
64 zone-pgm-rotate-RL-lockstep | |
65 zone-pgm-rotate-LR-variable | |
66 zone-pgm-rotate-RL-variable | |
67 zone-pgm-drip | |
68 zone-pgm-drip-fretfully | |
69 zone-pgm-five-oclock-swan-dive | |
70 zone-pgm-martini-swan-dive | |
82823
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
71 zone-pgm-rat-race |
30565 | 72 zone-pgm-paragraph-spaz |
73 zone-pgm-stress | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
74 zone-pgm-stress-destress |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
75 zone-pgm-random-life |
30565 | 76 ]) |
77 | |
78 (defmacro zone-orig (&rest body) | |
79 `(with-current-buffer (get 'zone 'orig-buffer) | |
80 ,@body)) | |
81 | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
82 (defmacro zone-hiding-modeline (&rest body) |
84982
0bb1eda0b839
(zone-hiding-modeline): Use mode-line-format.
Richard M. Stallman <rms@gnu.org>
parents:
84916
diff
changeset
|
83 ;; This formerly worked by temporarily altering face `mode-line', |
0bb1eda0b839
(zone-hiding-modeline): Use mode-line-format.
Richard M. Stallman <rms@gnu.org>
parents:
84916
diff
changeset
|
84 ;; which did not even work right, it seems. |
0bb1eda0b839
(zone-hiding-modeline): Use mode-line-format.
Richard M. Stallman <rms@gnu.org>
parents:
84916
diff
changeset
|
85 `(let (mode-line-format) |
0bb1eda0b839
(zone-hiding-modeline): Use mode-line-format.
Richard M. Stallman <rms@gnu.org>
parents:
84916
diff
changeset
|
86 ,@body)) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
87 |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
88 (defun zone-call (program &optional timeout) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
89 "Call PROGRAM in a zoned way. |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
90 If PROGRAM is a function, call it, interrupting after the amount |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
91 of time in seconds specified by optional arg TIMEOUT, or `zone-timeout' |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
92 if unspecified, q.v. |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
93 PROGRAM can also be a list of elements, which are interpreted like so: |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
94 If the element is a function or a list of a function and a number, |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
95 apply `zone-call' recursively." |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
96 (cond ((functionp program) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
97 (with-timeout ((or timeout zone-timeout (ash 1 26))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
98 (funcall program))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
99 ((listp program) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
100 (mapcar (lambda (elem) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
101 (cond ((functionp elem) (zone-call elem)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
102 ((and (listp elem) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
103 (functionp (car elem)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
104 (numberp (cadr elem))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
105 (apply 'zone-call elem)) |
53856
ac105516179d
(zone-call): Fix format string.
Andreas Schwab <schwab@suse.de>
parents:
52401
diff
changeset
|
106 (t (error "bad `zone-call' elem: %S" elem)))) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
107 program)))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
108 |
30565 | 109 ;;;###autoload |
110 (defun zone () | |
111 "Zone out, completely." | |
112 (interactive) | |
65878
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
113 (save-window-excursion |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
114 (let ((f (selected-frame)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
115 (outbuf (get-buffer-create "*zone*")) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
116 (text (buffer-substring (window-start) (window-end))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
117 (wp (1+ (- (window-point (selected-window)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
118 (window-start))))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
119 (put 'zone 'orig-buffer (current-buffer)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
120 (put 'zone 'modeline-hidden-level 0) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
121 (switch-to-buffer outbuf) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
122 (setq mode-name "Zone") |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
123 (erase-buffer) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
124 (setq buffer-undo-list t |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
125 truncate-lines t |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
126 tab-width (zone-orig tab-width) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
127 line-spacing (zone-orig line-spacing)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
128 (insert text) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
129 (untabify (point-min) (point-max)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
130 (set-window-start (selected-window) (point-min)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
131 (set-window-point (selected-window) wp) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
132 (sit-for 0 500) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
133 (let ((pgm (elt zone-programs (random (length zone-programs)))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
134 (ct (and f (frame-parameter f 'cursor-type))) |
84996
a4806daa82af
(zone): Let-bind show-trailing-whitespace to nil.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
84982
diff
changeset
|
135 (show-trailing-whitespace nil) |
65878
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
136 (restore (list '(kill-buffer outbuf)))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
137 (when ct |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
138 (modify-frame-parameters f '((cursor-type . (bar . 0)))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
139 (setq restore (cons '(modify-frame-parameters |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
140 f (list (cons 'cursor-type ct))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
141 restore))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
142 ;; Make `restore' a self-disabling one-shot thunk. |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
143 (setq restore `(lambda () ,@restore (setq restore nil))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
144 (condition-case nil |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
145 (progn |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
146 (message "Zoning... (%s)" pgm) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
147 (garbage-collect) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
148 ;; If some input is pending, zone says "sorry", which |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
149 ;; isn't nice; this might happen e.g. when they invoke the |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
150 ;; game by clicking the menu bar. So discard any pending |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
151 ;; input before zoning out. |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
152 (if (input-pending-p) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
153 (discard-input)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
154 (zone-call pgm) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
155 (message "Zoning...sorry")) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
156 (error |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
157 (funcall restore) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
158 (while (not (input-pending-p)) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
159 (message "We were zoning when we wrote %s..." pgm) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
160 (sit-for 3) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
161 (message "...here's hoping we didn't hose your buffer!") |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
162 (sit-for 3))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
163 (quit |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
164 (funcall restore) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
165 (ding) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
166 (message "Zoning...sorry"))) |
011947140bc7
(zone): Wrap body with save-window-excursion.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
65585
diff
changeset
|
167 (when restore (funcall restore)))))) |
30565 | 168 |
169 ;;;; Zone when idle, or not. | |
170 | |
171 (defun zone-when-idle (secs) | |
172 "Zone out when Emacs has been idle for SECS seconds." | |
173 (interactive "nHow long before I start zoning (seconds): ") | |
45819
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
174 (if (timerp zone-timer) |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
175 (cancel-timer zone-timer)) |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
176 (setq zone-timer nil) |
30565 | 177 (or (<= secs 0) |
45819
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
178 (setq zone-timer (run-with-idle-timer secs t 'zone)))) |
30565 | 179 |
180 (defun zone-leave-me-alone () | |
181 "Don't zone out when Emacs is idle." | |
182 (interactive) | |
45819
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
183 (if (timerp zone-timer) |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
184 (cancel-timer zone-timer)) |
a04951f92260
(zone-timer): New variable holds the idle timer.
Richard M. Stallman <rms@gnu.org>
parents:
42645
diff
changeset
|
185 (setq zone-timer nil) |
30565 | 186 (message "I won't zone out any more")) |
187 | |
188 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
189 ;;;; jittering |
30565 | 190 |
191 (defun zone-shift-up () | |
192 (let* ((b (point)) | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
193 (e (progn (forward-line 1) (point))) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
194 (s (buffer-substring b e))) |
30565 | 195 (delete-region b e) |
196 (goto-char (point-max)) | |
197 (insert s))) | |
198 | |
199 (defun zone-shift-down () | |
200 (goto-char (point-max)) | |
201 (let* ((b (point)) | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
202 (e (progn (forward-line -1) (point))) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
203 (s (buffer-substring b e))) |
30565 | 204 (delete-region b e) |
205 (goto-char (point-min)) | |
206 (insert s))) | |
207 | |
208 (defun zone-shift-left () | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
209 (let ((inhibit-point-motion-hooks t) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
210 s) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
211 (while (not (eobp)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
212 (unless (eolp) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
213 (setq s (buffer-substring (point) (1+ (point)))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
214 (delete-char 1) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
215 (end-of-line) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
216 (insert s)) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
217 (ignore-errors (forward-char 1))))) |
30565 | 218 |
219 (defun zone-shift-right () | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
220 (goto-char (point-max)) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
221 (let ((inhibit-point-motion-hooks t) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
222 s) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
223 (while (not (bobp)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
224 (unless (bolp) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
225 (setq s (buffer-substring (1- (point)) (point))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
226 (delete-char -1) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
227 (beginning-of-line) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
228 (insert s)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
229 (end-of-line 0)))) |
30565 | 230 |
231 (defun zone-pgm-jitter () | |
232 (let ((ops [ | |
233 zone-shift-left | |
234 zone-shift-right | |
235 zone-shift-down | |
236 zone-shift-up | |
237 ])) | |
238 (goto-char (point-min)) | |
239 (while (not (input-pending-p)) | |
240 (funcall (elt ops (random (length ops)))) | |
241 (goto-char (point-min)) | |
242 (sit-for 0 10)))) | |
243 | |
244 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
245 ;;;; whacking chars |
30565 | 246 |
247 (defun zone-pgm-whack-chars () | |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
248 (let ((tbl (copy-sequence (get 'zone-pgm-whack-chars 'wc-tbl)))) |
30565 | 249 (while (not (input-pending-p)) |
250 (let ((i 48)) | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
251 (while (< i 122) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
252 (aset tbl i (+ 48 (random (- 123 48)))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
253 (setq i (1+ i))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
254 (translate-region (point-min) (point-max) tbl) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
255 (sit-for 0 2))))) |
30565 | 256 |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
257 (put 'zone-pgm-whack-chars 'wc-tbl |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
258 (let ((tbl (make-string 128 ?x)) |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
259 (i 0)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
260 (while (< i 128) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
261 (aset tbl i i) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
262 (setq i (1+ i))) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
263 tbl)) |
30565 | 264 |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
265 ;;;; dissolving |
30565 | 266 |
267 (defun zone-remove-text () | |
268 (let ((working t)) | |
269 (while working | |
270 (setq working nil) | |
271 (save-excursion | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
272 (goto-char (point-min)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
273 (while (not (eobp)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
274 (if (looking-at "[^(){}\n\t ]") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
275 (let ((n (random 5))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
276 (if (not (= n 0)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
277 (progn |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
278 (setq working t) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
279 (forward-char 1)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
280 (delete-char 1) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
281 (insert " "))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
282 (forward-char 1)))) |
30565 | 283 (sit-for 0 2)))) |
284 | |
285 (defun zone-pgm-dissolve () | |
286 (zone-remove-text) | |
287 (zone-pgm-jitter)) | |
288 | |
289 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
290 ;;;; exploding |
30565 | 291 |
292 (defun zone-exploding-remove () | |
293 (let ((i 0)) | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
294 (while (< i 5) |
30565 | 295 (save-excursion |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
296 (goto-char (point-min)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
297 (while (not (eobp)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
298 (if (looking-at "[^*\n\t ]") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
299 (let ((n (random 5))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
300 (if (not (= n 0)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
301 (forward-char 1)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
302 (insert " "))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
303 (forward-char 1))) |
30565 | 304 (setq i (1+ i)) |
305 (sit-for 0 2))) | |
306 (zone-pgm-jitter)) | |
307 | |
308 (defun zone-pgm-explode () | |
309 (zone-exploding-remove) | |
310 (zone-pgm-jitter)) | |
311 | |
312 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
313 ;;;; putzing w/ case |
30565 | 314 |
315 ;; Faster than `zone-pgm-putz-with-case', but not as good: all | |
316 ;; instances of the same letter have the same case, which produces a | |
317 ;; less interesting effect than you might imagine. | |
318 (defun zone-pgm-2nd-putz-with-case () | |
319 (let ((tbl (make-string 128 ?x)) | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
320 (i 0)) |
30565 | 321 (while (< i 128) |
322 (aset tbl i i) | |
323 (setq i (1+ i))) | |
324 (while (not (input-pending-p)) | |
325 (setq i ?a) | |
326 (while (<= i ?z) | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
327 (aset tbl i |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
328 (if (zerop (random 5)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
329 (upcase i) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
330 (downcase i))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
331 (setq i (+ i (1+ (random 5))))) |
30565 | 332 (setq i ?A) |
333 (while (<= i ?z) | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
334 (aset tbl i |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
335 (if (zerop (random 5)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
336 (downcase i) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
337 (upcase i))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
338 (setq i (+ i (1+ (random 5))))) |
30565 | 339 (translate-region (point-min) (point-max) tbl) |
340 (sit-for 0 2)))) | |
341 | |
342 (defun zone-pgm-putz-with-case () | |
343 (goto-char (point-min)) | |
344 (while (not (input-pending-p)) | |
345 (let ((np (+ 2 (random 5))) | |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
346 (pm (point-max))) |
30565 | 347 (while (< np pm) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
348 (funcall (if (zerop (random 2)) 'upcase-region |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
349 'downcase-region) (1- np) np) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
350 (setq np (+ np (1+ (random 5)))))) |
30565 | 351 (goto-char (point-min)) |
352 (sit-for 0 2))) | |
353 | |
354 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
355 ;;;; rotating |
30565 | 356 |
357 (defun zone-line-specs () | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
358 (let ((ok t) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
359 ret) |
30565 | 360 (save-excursion |
361 (goto-char (window-start)) | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
362 (while (and ok (< (point) (window-end))) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
363 (when (looking-at "[\t ]*\\([^\n]+\\)") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
364 (setq ret (cons (cons (match-beginning 1) (match-end 1)) ret))) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
365 (setq ok (zerop (forward-line 1))))) |
30565 | 366 ret)) |
367 | |
368 (defun zone-pgm-rotate (&optional random-style) | |
369 (let* ((specs (apply | |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
370 'vector |
30565 | 371 (let (res) |
84916
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
372 (mapc (lambda (ent) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
373 (let* ((beg (car ent)) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
374 (end (cdr ent)) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
375 (amt (if random-style |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
376 (funcall random-style) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
377 (- (random 7) 3)))) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
378 (when (< (- end (abs amt)) beg) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
379 (setq amt (random (- end beg)))) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
380 (unless (= 0 amt) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
381 (setq res |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
382 (cons |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
383 (vector amt beg (- end (abs amt))) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
384 res))))) |
e41433198a1b
(zone-pgm-rotate): Use `mapc' rather than `mapcar'.
Juanma Barranquero <lekktu@gmail.com>
parents:
82823
diff
changeset
|
385 (zone-line-specs)) |
30565 | 386 res))) |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
387 (n (length specs)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
388 amt aamt cut paste txt i ent) |
30565 | 389 (while (not (input-pending-p)) |
390 (setq i 0) | |
391 (while (< i n) | |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
392 (setq ent (aref specs i)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
393 (setq amt (aref ent 0) aamt (abs amt)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
394 (if (> 0 amt) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
395 (setq cut 1 paste 2) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
396 (setq cut 2 paste 1)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
397 (goto-char (aref ent cut)) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
398 (setq aamt (min aamt (- (point-max) (point)))) |
32348
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
399 (setq txt (buffer-substring (point) (+ (point) aamt))) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
400 (delete-char aamt) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
401 (goto-char (aref ent paste)) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
402 (insert txt) |
abc299ad3386
(zone-timer, zone-wc-tbl): Rework
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
30628
diff
changeset
|
403 (setq i (1+ i))) |
30565 | 404 (sit-for 0.04)))) |
405 | |
406 (defun zone-pgm-rotate-LR-lockstep () | |
407 (zone-pgm-rotate (lambda () 1))) | |
408 | |
409 (defun zone-pgm-rotate-RL-lockstep () | |
410 (zone-pgm-rotate (lambda () -1))) | |
411 | |
412 (defun zone-pgm-rotate-LR-variable () | |
413 (zone-pgm-rotate (lambda () (1+ (random 3))))) | |
414 | |
415 (defun zone-pgm-rotate-RL-variable () | |
416 (zone-pgm-rotate (lambda () (1- (- (random 3)))))) | |
417 | |
418 | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
419 ;;;; dripping |
30565 | 420 |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
421 (defsubst zone-cpos (pos) |
30565 | 422 (buffer-substring pos (1+ pos))) |
423 | |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
424 (defsubst zone-replace-char (count del-count char-as-string new-value) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
425 (delete-char (or del-count (- count))) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
426 (aset char-as-string 0 new-value) |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
427 (dotimes (i count) (insert char-as-string))) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
428 |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
429 (defsubst zone-park/sit-for (pos seconds) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
430 (let ((p (point))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
431 (goto-char pos) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
432 (prog1 (sit-for seconds) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
433 (goto-char p)))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
434 |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
435 (defun zone-fret (wbeg pos) |
30565 | 436 (let* ((case-fold-search nil) |
437 (c-string (zone-cpos pos)) | |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
438 (cw-ceil (ceiling (char-width (aref c-string 0)))) |
30565 | 439 (hmm (cond |
440 ((string-match "[a-z]" c-string) (upcase c-string)) | |
441 ((string-match "[A-Z]" c-string) (downcase c-string)) | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
442 (t (propertize " " 'display `(space :width ,cw-ceil))))) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
443 (wait 0.5)) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
444 (dotimes (i 20) |
30565 | 445 (goto-char pos) |
446 (delete-char 1) | |
447 (insert (if (= 0 (% i 2)) hmm c-string)) | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
448 (zone-park/sit-for wbeg (setq wait (* wait 0.8)))) |
30565 | 449 (delete-char -1) (insert c-string))) |
450 | |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
451 (defun zone-fill-out-screen (width height) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
452 (let ((start (window-start)) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
453 (line (make-string width 32)) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
454 (inhibit-point-motion-hooks t)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
455 (goto-char start) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
456 ;; fill out rectangular ws block |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
457 (while (progn (end-of-line) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
458 (let ((cc (current-column))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
459 (if (< cc width) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
460 (insert (substring line cc)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
461 (delete-char (- width cc))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
462 (cond ((eobp) (insert "\n") nil) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
463 (t (forward-char 1) t))))) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
464 ;; pad ws past bottom of screen |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
465 (let ((nl (- height (count-lines (point-min) (point))))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
466 (when (> nl 0) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
467 (setq line (concat line "\n")) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
468 (dotimes (i nl) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
469 (insert line)))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
470 (goto-char start) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
471 (recenter 0) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
472 (sit-for 0))) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
473 |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
474 (defun zone-fall-through-ws (c wbeg wend) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
475 (let* ((cw-ceil (ceiling (char-width (aref c 0)))) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
476 (spaces (make-string cw-ceil 32)) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
477 (col (current-column)) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
478 (wait 0.15) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
479 newpos fall-p) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
480 (while (when (save-excursion |
109299 | 481 (and (zerop (forward-line 1)) |
482 (progn | |
483 (forward-char col) | |
484 (= col (current-column))) | |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
485 (setq newpos (point)) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
486 (string= spaces (buffer-substring-no-properties |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
487 newpos (+ newpos cw-ceil))) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
488 (setq newpos (+ newpos (1- cw-ceil))))) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
489 (setq fall-p t) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
490 (delete-char 1) |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
491 (insert spaces) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
492 (goto-char newpos) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
493 (when (< (point) wend) |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
494 (delete-char cw-ceil) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
495 (insert c) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
496 (forward-char -1) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
497 (zone-park/sit-for wbeg (setq wait (* wait 0.8)))))) |
30565 | 498 fall-p)) |
499 | |
500 (defun zone-pgm-drip (&optional fret-p pancake-p) | |
501 (let* ((ww (1- (window-width))) | |
502 (wh (window-height)) | |
503 (mc 0) ; miss count | |
504 (total (* ww wh)) | |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
505 (fall-p nil) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
506 wbeg wend c) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
507 (zone-fill-out-screen ww wh) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
508 (setq wbeg (window-start) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
509 wend (window-end)) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
510 (catch 'done |
30565 | 511 (while (not (input-pending-p)) |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
512 (setq mc 0 wend (window-end)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
513 ;; select non-ws character, but don't miss too much |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
514 (goto-char (+ wbeg (random (- wend wbeg)))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
515 (while (looking-at "[ \n\f]") |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
516 (if (= total (setq mc (1+ mc))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
517 (throw 'done 'sel) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
518 (goto-char (+ wbeg (random (- wend wbeg)))))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
519 ;; character animation sequence |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
520 (let ((p (point))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
521 (when fret-p (zone-fret wbeg p)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
522 (goto-char p) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
523 (setq c (zone-cpos p) |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
524 fall-p (zone-fall-through-ws c wbeg wend))) |
30565 | 525 ;; assuming current-column has not changed... |
526 (when (and pancake-p | |
527 fall-p | |
528 (< (count-lines (point-min) (point)) | |
529 wh)) | |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
530 (let ((cw (ceiling (char-width (aref c 0))))) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
531 (zone-replace-char cw 1 c ?@) (zone-park/sit-for wbeg 0.137) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
532 (zone-replace-char cw nil c ?*) (zone-park/sit-for wbeg 0.137) |
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
533 (zone-replace-char cw nil c ?_))))))) |
30565 | 534 |
535 (defun zone-pgm-drip-fretfully () | |
536 (zone-pgm-drip t)) | |
537 | |
538 (defun zone-pgm-five-oclock-swan-dive () | |
539 (zone-pgm-drip nil t)) | |
540 | |
541 (defun zone-pgm-martini-swan-dive () | |
542 (zone-pgm-drip t t)) | |
543 | |
82823
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
544 (defun zone-pgm-rat-race () |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
545 (while (not (input-pending-p)) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
546 (zone-call '((zone-pgm-rotate 10) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
547 (zone-pgm-drip-fretfully 15) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
548 (zone-pgm-drip 10) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
549 ((lambda () |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
550 (goto-char (point-min)) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
551 (while (re-search-forward " +$" nil t) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
552 (delete-region (match-beginning 0) (match-end 0)))) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
553 5))))) |
ee04117a2f17
(zone-pgm-rat-race): New func.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
78227
diff
changeset
|
554 |
30565 | 555 |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
556 ;;;; paragraph spazzing (for textish modes) |
30565 | 557 |
558 (defun zone-pgm-paragraph-spaz () | |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
559 (if (memq (zone-orig major-mode) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
560 ;; there should be a better way to distinguish textish modes |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
561 '(text-mode texinfo-mode fundamental-mode)) |
30565 | 562 (let ((fill-column fill-column) |
563 (fc-min fill-column) | |
564 (fc-max fill-column) | |
565 (max-fc (1- (frame-width)))) | |
566 (while (sit-for 0.1) | |
567 (fill-paragraph 1) | |
568 (setq fill-column (+ fill-column (- (random 5) 2))) | |
569 (when (< fill-column fc-min) | |
570 (setq fc-min fill-column)) | |
571 (when (> fill-column max-fc) | |
572 (setq fill-column max-fc)) | |
573 (when (> fill-column fc-max) | |
574 (setq fc-max fill-column)))) | |
575 (message "Zoning... (zone-pgm-rotate)") | |
576 (zone-pgm-rotate))) | |
577 | |
578 | |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
579 ;;;; stressing and destressing |
30565 | 580 |
581 (defun zone-pgm-stress () | |
582 (goto-char (point-min)) | |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
583 (let ((ok t) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
584 lines) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
585 (while (and ok (< (point) (point-max))) |
30565 | 586 (let ((p (point))) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
587 (setq ok (zerop (forward-line 1)) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
588 lines (cons (buffer-substring p (point)) lines)))) |
30565 | 589 (sit-for 5) |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
590 (zone-hiding-modeline |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
591 (let ((msg "Zoning... (zone-pgm-stress)")) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
592 (while (not (string= msg "")) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
593 (message (setq msg (substring msg 1))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
594 (sit-for 0.05))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
595 (while (not (input-pending-p)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
596 (when (< 50 (random 100)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
597 (goto-char (point-max)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
598 (forward-line -1) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
599 (let ((kill-whole-line t)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
600 (kill-line)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
601 (goto-char (point-min)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
602 (insert (nth (random (length lines)) lines))) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
603 (message (concat (make-string (random (- (frame-width) 5)) ? ) "grrr")) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
604 (sit-for 0.1))))) |
38677
7177c6c2aaba
(zone-pgm-stress): Use unwind-protect to make sure
Gerd Moellmann <gerd@gnu.org>
parents:
38414
diff
changeset
|
605 |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
606 (defun zone-pgm-stress-destress () |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
607 (zone-call 'zone-pgm-stress 25) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
608 (zone-hiding-modeline |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
609 (sit-for 3) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
610 (erase-buffer) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
611 (sit-for 3) |
64433
e0e9bea5acc5
(zone-pgm-stress-destress): Use `insert-buffer-substring', not `insert-buffer'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64085
diff
changeset
|
612 (insert-buffer-substring "*Messages*") |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
613 (message "") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
614 (goto-char (point-max)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
615 (recenter -1) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
616 (sit-for 3) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
617 (delete-region (point-min) (window-start)) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
618 (message "hey why stress out anyway?") |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
619 (zone-call '((zone-pgm-rotate 30) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
620 (zone-pgm-whack-chars 10) |
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
621 zone-pgm-drip)))) |
30565 | 622 |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
623 |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
624 ;;;; the lyfe so short the craft so long to lerne --chaucer |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
625 |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
626 (defvar zone-pgm-random-life-wait nil |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
627 "*Seconds to wait between successive `life' generations. |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
628 If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).") |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
629 |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
630 (defun zone-pgm-random-life () |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
631 (require 'life) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
632 (zone-fill-out-screen (1- (window-width)) (1- (window-height))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
633 (let ((top (progn (goto-char (window-start)) (forward-line 7) (point))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
634 (bot (progn (goto-char (window-end)) (forward-line -7) (point))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
635 (rtc (- (frame-width) 11)) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
636 (min (window-start)) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
637 (max (1- (window-end))) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
638 s c col) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
639 (delete-region max (point-max)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
640 (while (and (progn (goto-char min) (sit-for 0.05)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
641 (progn (goto-char (+ min (random max))) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
642 (or (progn (skip-chars-forward " @\n" max) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
643 (not (= max (point)))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
644 (unless (or (= 0 (skip-chars-backward " @\n" min)) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
645 (= min (point))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
646 (forward-char -1) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
647 t)))) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
648 (unless (or (eolp) (eobp)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
649 (setq s (zone-cpos (point)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
650 c (aref s 0)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
651 (zone-replace-char |
59013
811c3c23099a
(zone): Init `line-spacing' from orig buffer.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59000
diff
changeset
|
652 (char-width c) |
59015
34b8a83e2361
(zone-pgm-random-life): Fix typo.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
59013
diff
changeset
|
653 1 s (cond ((or (> top (point)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
654 (< bot (point)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
655 (or (> 11 (setq col (current-column))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
656 (< rtc col))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
657 32) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
658 ((and (<= ?a c) (>= ?z c)) (+ c (- ?A ?a))) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
659 ((and (<= ?A c) (>= ?Z c)) ?*) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
660 (t ?@))))) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
661 (sit-for 3) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
662 (setq col nil) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
663 (goto-char bot) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
664 (while (< top (point)) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
665 (setq c (point)) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
666 (move-to-column 9) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
667 (setq col (cons (buffer-substring (point) c) col)) |
109157
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
668 ; (let ((inhibit-point-motion-hooks t)) |
76b683a5339b
Minor zone.el fixes for bug#6483.
Glenn Morris <rgm@gnu.org>
parents:
106815
diff
changeset
|
669 (end-of-line 0);) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
670 (forward-char -10)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
671 (let ((life-patterns (vector |
58998
dd8c66d7733c
(zone): Fix omission bug: Use a self-disabling
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58979
diff
changeset
|
672 (if (and col (search-forward "@" max t)) |
58978
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
673 (cons (make-string (length (car col)) 32) col) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
674 (list (mapconcat 'identity |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
675 (make-list (/ (- rtc 11) 15) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
676 (make-string 5 ?@)) |
848f5e78398e
(zone): Set `truncate-lines'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
58889
diff
changeset
|
677 (make-string 10 32))))))) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
678 (life (or zone-pgm-random-life-wait (random 4))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
679 (kill-buffer nil)))) |
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
680 |
84996
a4806daa82af
(zone): Let-bind show-trailing-whitespace to nil.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
84982
diff
changeset
|
681 |
76953 | 682 (random t) |
58889
f3d97fc520ff
(zone-programs): Add `zone-pgm-random-life'.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
53856
diff
changeset
|
683 |
42645
ac1b9223bb7f
(zone-timeout): New var.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
40347
diff
changeset
|
684 ;;;;;;;;;;;;;;; |
30565 | 685 (provide 'zone) |
686 | |
93975
1e3a407766b9
Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
687 ;; arch-tag: 7092503d-74a9-4325-a55c-a026ede58cea |
30565 | 688 ;;; zone.el ends here |