annotate lisp/misc.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 280c8ae2476d
children 249a1455856a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1 ;;; misc.el --- some nonstandard basic editing commands for Emacs
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 35
diff changeset
2
74442
b2e5081b9320 Update copyright years.
Glenn Morris <rgm@gnu.org>
parents: 74260
diff changeset
3 ;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105489
diff changeset
4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
6 ;; Maintainer: FSF
45078
829beb9a6a4b Follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38412
diff changeset
7 ;; Keywords: convenience
110015
280c8ae2476d Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
8 ;; Package: emacs
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
12 ;; GNU Emacs is free software: you can redistribute it and/or modify
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
15 ;; (at your option) any later version.
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
23 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
25 ;;; Commentary:
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 18383
diff changeset
26
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
27 ;;; Code:
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 (defun copy-from-above-command (&optional arg)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 "Copy characters from previous nonblank line, starting just above point.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 Copy ARG characters, but not past the end of that line.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 If no argument given, copy the entire rest of the line.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 The characters copied are inserted in the buffer before point."
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 (interactive "P")
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 (let ((cc (current-column))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 n
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 (string ""))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 (save-excursion
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 (beginning-of-line)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 (backward-char 1)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 (skip-chars-backward "\ \t\n")
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 (move-to-column cc)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 ;; Default is enough to copy the whole rest of the line.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 (setq n (if arg (prefix-numeric-value arg) (point-max)))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 ;; If current column winds up in middle of a tab,
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46 ;; copy appropriate number of "virtual" space chars.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 (if (< cc (current-column))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 (if (= (preceding-char) ?\t)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (progn
74237
8dbfc40e9ab8 (copy-from-above-command): "?\ " -> "?\s".
Juanma Barranquero <lekktu@gmail.com>
parents: 68651
diff changeset
50 (setq string (make-string (min n (- (current-column) cc)) ?\s))
35
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (setq n (- n (min n (- (current-column) cc)))))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 ;; In middle of ctl char => copy that whole char.
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (backward-char 1)))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 (setq string (concat string
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 (buffer-substring
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 (point)
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 (min (save-excursion (end-of-line) (point))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 (+ n (point)))))))
63b375f17a65 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (insert string)))
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 35
diff changeset
60
52600
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
61 ;; Variation of `zap-to-char'.
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
62
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
63 (defun zap-up-to-char (arg char)
74260
b55f65338d33 (zap-up-to-char): Doc fix.
Juanma Barranquero <lekktu@gmail.com>
parents: 74237
diff changeset
64 "Kill up to, but not including ARGth occurrence of CHAR.
52600
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
65 Case is ignored if `case-fold-search' is non-nil in the current buffer.
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
66 Goes backward if ARG is negative; error if CHAR not found.
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
67 Ignores CHAR at point."
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
68 (interactive "p\ncZap up to char: ")
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
69 (let ((direction (if (>= arg 0) 1 -1)))
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
70 (kill-region (point)
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
71 (progn
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
72 (forward-char direction)
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
73 (unwind-protect
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
74 (search-forward (char-to-string char) nil nil arg)
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
75 (backward-char direction))
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
76 (point)))))
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
77
51340
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
78 ;; These were added with an eye to making possible a more CCA-compatible
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
79 ;; command set; but that turned out not to be interesting.
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
80
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
81 (defun mark-beginning-of-buffer ()
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
82 "Set mark at the beginning of the buffer."
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
83 (interactive)
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
84 (push-mark (point-min)))
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
85
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
86 (defun mark-end-of-buffer ()
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
87 "Set mark at the end of the buffer."
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
88 (interactive)
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
89 (push-mark (point-max)))
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
90
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
91 (defun upcase-char (arg)
52600
7a4a7a399a2f (upcase-char): Fix docstring.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
92 "Uppercasify ARG chars starting from point. Point doesn't move."
51340
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
93 (interactive "p")
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
94 (save-excursion
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
95 (upcase-region (point) (progn (forward-char arg) (point)))))
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
96
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
97 (defun forward-to-word (arg)
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
98 "Move forward until encountering the beginning of a word.
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
99 With argument, do this that many times."
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
100 (interactive "p")
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
101 (or (re-search-forward (if (> arg 0) "\\W\\b" "\\b\\W") nil t arg)
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
102 (goto-char (if (> arg 0) (point-max) (point-min)))))
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
103
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
104 (defun backward-to-word (arg)
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
105 "Move backward until encountering the end of a word.
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
106 With argument, do this that many times."
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
107 (interactive "p")
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
108 (forward-to-word (- arg)))
bd66b46adcc8 (mark-beginning-of-buffer, mark-end-of-buffer, upcase-char, forward-to-word,
Juanma Barranquero <lekktu@gmail.com>
parents: 45078
diff changeset
109
100739
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
110 ;;;###autoload
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
111 (defun butterfly ()
100740
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
112 "Use butterflies to flip the desired bit on the drive platter.
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
113 Open hands and let the delicate wings flap once. The disturbance
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
114 ripples outward, changing the flow of the eddy currents in the
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
115 upper atmosphere. These cause momentary pockets of higher-pressure
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
116 air to form, which act as lenses that deflect incoming cosmic rays,
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
117 focusing them to strike the drive platter and flip the desired bit.
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
118 You can type `M-x butterfly C-M-c' to run it. This is a permuted
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
119 variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'."
100739
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
120 (interactive)
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
121 (if (yes-or-no-p "Do you really want to unleash the powers of the butterfly? ")
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
122 (progn
100740
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
123 (switch-to-buffer (get-buffer-create "*butterfly*"))
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
124 (erase-buffer)
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
125 (sit-for 0)
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
126 (animate-string "Amazing physics going on..."
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
127 (/ (window-height) 2) (- (/ (window-width) 2) 12))
100739
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
128 (sit-for (* 5 (/ (abs (random)) (float most-positive-fixnum))))
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
129 (message "Successfully flipped one bit!"))
100740
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
130 (message "Well, then go to xkcd.com!")
2dbcf419b682 (butterfly): Doc fix. Add `animate-string' and `browse-url'.
Juri Linkov <juri@jurta.org>
parents: 100739
diff changeset
131 (browse-url "http://xkcd.com/378/")))
100739
dd817152aca5 (butterfly): New command.
Juri Linkov <juri@jurta.org>
parents: 94678
diff changeset
132
18383
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
133 (provide 'misc)
11218164bc54 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
134
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79721
diff changeset
135 ;; arch-tag: 908f7884-c19e-4388-920c-9cfa425e449b
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 35
diff changeset
136 ;;; misc.el ends here