Mercurial > emacs
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 |
rev | line source |
---|---|
18383 | 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 | 3 ;; Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, |
106815 | 4 ;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
845 | 5 |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
659
diff
changeset
|
6 ;; Maintainer: FSF |
45078 | 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 | 9 |
10 ;; This file is part of GNU Emacs. | |
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 | 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 | 16 |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
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 | 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 | 28 |
29 (defun copy-from-above-command (&optional arg) | |
30 "Copy characters from previous nonblank line, starting just above point. | |
31 Copy ARG characters, but not past the end of that line. | |
32 If no argument given, copy the entire rest of the line. | |
33 The characters copied are inserted in the buffer before point." | |
34 (interactive "P") | |
35 (let ((cc (current-column)) | |
36 n | |
37 (string "")) | |
38 (save-excursion | |
39 (beginning-of-line) | |
40 (backward-char 1) | |
41 (skip-chars-backward "\ \t\n") | |
42 (move-to-column cc) | |
43 ;; Default is enough to copy the whole rest of the line. | |
44 (setq n (if arg (prefix-numeric-value arg) (point-max))) | |
45 ;; If current column winds up in middle of a tab, | |
46 ;; copy appropriate number of "virtual" space chars. | |
47 (if (< cc (current-column)) | |
48 (if (= (preceding-char) ?\t) | |
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 | 51 (setq n (- n (min n (- (current-column) cc))))) |
52 ;; In middle of ctl char => copy that whole char. | |
53 (backward-char 1))) | |
54 (setq string (concat string | |
55 (buffer-substring | |
56 (point) | |
57 (min (save-excursion (end-of-line) (point)) | |
58 (+ n (point))))))) | |
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 | 110 ;;;###autoload |
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 | 120 (interactive) |
121 (if (yes-or-no-p "Do you really want to unleash the powers of the butterfly? ") | |
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 | 128 (sit-for (* 5 (/ (abs (random)) (float most-positive-fixnum)))) |
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 | 132 |
18383 | 133 (provide 'misc) |
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 |