aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2007-04-22 12:42:47 +0000
committerKaroly Lorentey2007-04-22 12:42:47 +0000
commit9d0799072a0d09bc14a99eaf372b262d1ba61399 (patch)
tree76acd4ae0559776a5ec27fbd5c25598285ec71d1 /lisp
parente18c709364b095ea0be8ecabe458ac9a642a252f (diff)
parenta20becf321f023c6dc1831595712576d64e2ef4b (diff)
downloademacs-9d0799072a0d09bc14a99eaf372b262d1ba61399.tar.gz
emacs-9d0799072a0d09bc14a99eaf372b262d1ba61399.zip
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-674 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-675 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-676 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-677 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-678 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-679 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-680 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-681 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-682 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-683 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-684 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-685 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-686 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-687 Release ERC 5.2. * emacs@sv.gnu.org/emacs--devo--0--patch-688 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-689 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-690 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-691 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-692 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-693 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-694 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-695 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-696 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-697 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-698 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-699 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-700 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-701 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-209 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-210 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-211 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-212 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-213 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-214 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-215 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-601
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog742
-rw-r--r--lisp/arc-mode.el19
-rw-r--r--lisp/autorevert.el4
-rw-r--r--lisp/button.el38
-rw-r--r--lisp/calc/calc.el8
-rw-r--r--lisp/calendar/appt.el8
-rw-r--r--lisp/calendar/cal-china.el6
-rw-r--r--lisp/calendar/cal-coptic.el6
-rw-r--r--lisp/calendar/cal-dst.el18
-rw-r--r--lisp/calendar/cal-french.el6
-rw-r--r--lisp/calendar/cal-hebrew.el6
-rw-r--r--lisp/calendar/cal-islam.el6
-rw-r--r--lisp/calendar/cal-iso.el6
-rw-r--r--lisp/calendar/cal-julian.el6
-rw-r--r--lisp/calendar/cal-mayan.el2
-rw-r--r--lisp/calendar/cal-menu.el6
-rw-r--r--lisp/calendar/cal-move.el6
-rw-r--r--lisp/calendar/cal-persia.el10
-rw-r--r--lisp/calendar/cal-x.el6
-rw-r--r--lisp/calendar/calendar.el24
-rw-r--r--lisp/calendar/diary-lib.el141
-rw-r--r--lisp/calendar/holidays.el6
-rw-r--r--lisp/calendar/lunar.el6
-rw-r--r--lisp/calendar/solar.el6
-rw-r--r--lisp/comint.el9
-rw-r--r--lisp/compare-w.el25
-rw-r--r--lisp/complete.el126
-rw-r--r--lisp/cus-edit.el4
-rw-r--r--lisp/cus-start.el6
-rw-r--r--lisp/desktop.el94
-rw-r--r--lisp/dframe.el4
-rw-r--r--lisp/diff-mode.el6
-rw-r--r--lisp/dired-x.el14
-rw-r--r--lisp/dnd.el2
-rw-r--r--lisp/dos-w32.el3
-rw-r--r--lisp/emacs-lisp/authors.el2
-rw-r--r--lisp/emacs-lisp/byte-opt.el81
-rw-r--r--lisp/emacs-lisp/bytecomp.el33
-rw-r--r--lisp/emacs-lisp/edebug.el49
-rw-r--r--lisp/emacs-lisp/ewoc.el9
-rw-r--r--lisp/emacs-lisp/lisp-mode.el3
-rw-r--r--lisp/emacs-lisp/lisp.el3
-rw-r--r--lisp/emacs-lisp/sregex.el2
-rw-r--r--lisp/emacs-lisp/testcover.el12
-rw-r--r--lisp/emacs-lisp/timer.el17
-rw-r--r--lisp/emacs-lisp/warnings.el13
-rw-r--r--lisp/emulation/viper.el40
-rw-r--r--lisp/erc/ChangeLog1516
-rw-r--r--lisp/erc/ChangeLog.061457
-rw-r--r--lisp/erc/erc-autoaway.el125
-rw-r--r--lisp/erc/erc-backend.el198
-rw-r--r--lisp/erc/erc-button.el16
-rw-r--r--lisp/erc/erc-capab.el30
-rw-r--r--lisp/erc/erc-compat.el8
-rw-r--r--lisp/erc/erc-fill.el11
-rw-r--r--lisp/erc/erc-ibuffer.el3
-rw-r--r--lisp/erc/erc-identd.el34
-rw-r--r--lisp/erc/erc-log.el78
-rw-r--r--lisp/erc/erc-match.el9
-rw-r--r--lisp/erc/erc-menu.el7
-rw-r--r--lisp/erc/erc-netsplit.el2
-rw-r--r--lisp/erc/erc-networks.el8
-rw-r--r--lisp/erc/erc-notify.el5
-rw-r--r--lisp/erc/erc-pcomplete.el4
-rw-r--r--lisp/erc/erc-ring.el3
-rw-r--r--lisp/erc/erc-services.el100
-rw-r--r--lisp/erc/erc-speedbar.el5
-rw-r--r--lisp/erc/erc-spelling.el40
-rw-r--r--lisp/erc/erc-stamp.el18
-rw-r--r--lisp/erc/erc-track.el187
-rw-r--r--lisp/erc/erc.el354
-rw-r--r--lisp/eshell/esh-proc.el2
-rw-r--r--lisp/expand.el15
-rw-r--r--lisp/faces.el6
-rw-r--r--lisp/ffap.el19
-rw-r--r--lisp/files.el16
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/gnus/ChangeLog123
-rw-r--r--lisp/gnus/gmm-utils.el4
-rw-r--r--lisp/gnus/gnus-art.el4
-rw-r--r--lisp/gnus/gnus-msg.el9
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/gnus-util.el2
-rw-r--r--lisp/gnus/message.el123
-rw-r--r--lisp/gnus/nnmail.el7
-rw-r--r--lisp/help.el2
-rw-r--r--lisp/ido.el10
-rw-r--r--lisp/info.el33
-rw-r--r--lisp/international/mule.el14
-rw-r--r--lisp/isearch.el3
-rw-r--r--lisp/ldefs-boot.el302
-rw-r--r--lisp/loadhist.el28
-rw-r--r--lisp/mail/footnote.el19
-rw-r--r--lisp/mail/rmail.el24
-rw-r--r--lisp/mail/sendmail.el10
-rw-r--r--lisp/mail/smtpmail.el22
-rw-r--r--lisp/man.el9
-rw-r--r--lisp/menu-bar.el4
-rw-r--r--lisp/mouse.el6
-rw-r--r--lisp/net/tls.el15
-rw-r--r--lisp/net/tramp.el27
-rw-r--r--lisp/newcomment.el4
-rw-r--r--lisp/outline.el22
-rw-r--r--lisp/pcomplete.el8
-rw-r--r--lisp/play/5x5.el2
-rw-r--r--lisp/play/animate.el4
-rw-r--r--lisp/play/dissociate.el2
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/play/gomoku.el2
-rw-r--r--lisp/play/landmark.el2
-rw-r--r--lisp/play/tetris.el2
-rw-r--r--lisp/play/zone.el1
-rw-r--r--lisp/progmodes/cc-awk.el1
-rw-r--r--lisp/progmodes/cc-cmds.el44
-rw-r--r--lisp/progmodes/cc-defs.el18
-rw-r--r--lisp/progmodes/cc-engine.el134
-rw-r--r--lisp/progmodes/cc-fonts.el92
-rw-r--r--lisp/progmodes/cc-langs.el25
-rw-r--r--lisp/progmodes/cc-mode.el10
-rw-r--r--lisp/progmodes/cc-subword.el54
-rw-r--r--lisp/progmodes/cc-vars.el3
-rw-r--r--lisp/progmodes/compile.el3
-rw-r--r--lisp/progmodes/cperl-mode.el5
-rw-r--r--lisp/progmodes/dcl-mode.el5
-rw-r--r--lisp/progmodes/ebnf2ps.el4
-rw-r--r--lisp/progmodes/flymake.el4
-rw-r--r--lisp/progmodes/gdb-ui.el13
-rw-r--r--lisp/progmodes/grep.el20
-rw-r--r--lisp/progmodes/gud.el56
-rw-r--r--lisp/progmodes/hideshow.el8
-rw-r--r--lisp/progmodes/idlw-shell.el19
-rw-r--r--lisp/progmodes/idlwave.el1
-rw-r--r--lisp/progmodes/m4-mode.el11
-rw-r--r--lisp/progmodes/perl-mode.el1
-rw-r--r--lisp/progmodes/python.el9
-rw-r--r--lisp/recentf.el9
-rw-r--r--lisp/replace.el3
-rw-r--r--lisp/simple.el51
-rw-r--r--lisp/startup.el10
-rw-r--r--lisp/subr.el78
-rw-r--r--lisp/t-mouse.el2
-rw-r--r--lisp/term.el54
-rw-r--r--lisp/term/xterm.el43
-rw-r--r--lisp/textmodes/bibtex.el64
-rw-r--r--lisp/textmodes/flyspell.el6
-rw-r--r--lisp/textmodes/org.el9
-rw-r--r--lisp/textmodes/reftex-auc.el1
-rw-r--r--lisp/textmodes/reftex-cite.el1
-rw-r--r--lisp/textmodes/reftex-dcr.el2
-rw-r--r--lisp/textmodes/reftex-global.el1
-rw-r--r--lisp/textmodes/reftex-index.el1
-rw-r--r--lisp/textmodes/reftex-parse.el2
-rw-r--r--lisp/textmodes/reftex-ref.el1
-rw-r--r--lisp/textmodes/reftex-sel.el1
-rw-r--r--lisp/textmodes/reftex-toc.el1
-rw-r--r--lisp/textmodes/reftex-vars.el1
-rw-r--r--lisp/textmodes/reftex.el1
-rw-r--r--lisp/tmm.el90
-rw-r--r--lisp/url/ChangeLog31
-rw-r--r--lisp/url/url-cookie.el18
-rw-r--r--lisp/url/url-http.el58
-rw-r--r--lisp/url/url-parse.el36
-rw-r--r--lisp/url/url-vars.el6
-rw-r--r--lisp/vc-arch.el15
-rw-r--r--lisp/vc-rcs.el9
-rw-r--r--lisp/view.el4
-rw-r--r--lisp/whitespace.el8
-rw-r--r--lisp/wid-edit.el2
-rw-r--r--lisp/woman.el113
-rw-r--r--lisp/xt-mouse.el28
170 files changed, 5134 insertions, 2946 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 47b9b292aa7..9fc26846057 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,694 @@
12007-04-17 Glenn Morris <rgm@gnu.org>
2
3 * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
4 be encoded, fall back to current year.
5
62007-04-14 Kevin Ryde <user42@zip.com.au>
7
8 * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
9 all upcase" rule to OS-ID 0 "generic". Always downcase for OS-ID
10 M "MSDOS".
11
122007-04-16 Chong Yidong <cyd@stupidchicken.com>
13
14 * progmodes/python.el (python-end-of-block): Avoid looping forever
15 if python-next-statement fails.
16
172007-04-16 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
18
19 * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
20
212007-04-16 Dan Nicolaescu <dann@ics.uci.edu>
22
23 * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
24 * progmodes/cperl-mode.el (cperl-indent-level): Likewise.
25
262007-04-15 Jay Belanger <belanger@truman.edu>
27
28 * calc/calc.el (calc-version): New function.
29 (calc-trail-mode): Shorten the title.
30
312007-04-15 Chong Yidong <cyd@stupidchicken.com>
32
33 * mail/footnote.el (footnote-style): Clarify docstring to state
34 that customizing this only applies to future footnotes.
35
362007-04-15 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
37
38 * textmodes/bibtex.el (bibtex-field-list): Use functionp.
39 (bibtex-make-field): Check that INIT is a string. Use functionp.
40
412007-04-14 Glenn Morris <rgm@gnu.org>
42
43 * complete.el (PC-goto-end): New buffer-local variable.
44 (PC-do-completion-end): Make buffer-local.
45 (partial-completion-mode) <choose-completion-string-functions>:
46 Do not go to the end of the minibuffer if PC-goto-end is non-nil.
47 (PC-do-completion): New optional fourth argument GOTO-END. Add a
48 doc string. Set PC-goto-end for choose-completion.
49 (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
50 PC-do-completion.
51
52 * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
53 arg to bibtex-make-field.
54 (bibtex-make-field): Add optional fourth arg NODELIM. Insert
55 delimiters around INIT unless this arg is non-nil.
56
572007-04-14 Nick Roberts <nickrob@snap.net.nz>
58
59 * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
60 global map isn't modified
61
622007-04-14 Glenn Morris <rgm@gnu.org>
63
64 * calendar/appt.el (appt-disp-window): Do not split small windows.
65 Suggested by Jeff Miller <jmiller@cablespeed.com>.
66
672007-04-13 Chong Yidong <cyd@stupidchicken.com>
68
69 * progmodes/compile.el (compilation-start): Revert 2007-03-25
70 change.
71
72 * files.el: Ditto.
73
742007-04-13 Juanma Barranquero <lekktu@gmail.com>
75
76 * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
77
78 * term.el (term-buffer-maximum-size, term-exec, term-escape-char)
79 (term-set-escape-char, term-termcap-format, term-get-old-input-default)
80 (term-skip-prompt, term-send-string, term-send-region, term-pager-page)
81 (term-pager-help): Fix typos in docstrings.
82
83 * wid-edit.el (widget-documentation): Fix typo in docstring.
84
85 * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
86 Fix typos in error messages.
87
882007-04-13 Martin Rudalics <rudalics@gmx.at>
89
90 * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
91 window marked as dedicated.
92
93 * mail/footnote.el (footnote-latin-string): New variable.
94 (footnote-latin-regexp): Redefined as regexp alternative.
95 (Footnote-latin): Use footnote-latin-string instead of
96 footnote-latin-regexp.
97
982007-04-13 Glenn Morris <rgm@gnu.org>
99
100 * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
101 inherited keymaps.
102
1032007-04-12 Chong Yidong <cyd@stupidchicken.com>
104
105 * outline.el (outline-get-next-sibling): Clarify docstring.
106 (outline-get-last-sibling): Handle case where we are at the first
107 heading. Clarify docstring.
108
1092007-04-12 Nick Roberts <nickrob@snap.net.nz>
110
111 * progmodes/gud.el (gud-minor-mode-map): Make go button same
112 length as stop button to lessen flicker.
113 (jdb): Add gud-print.
114 (gud-find-expr): Jdb prints the expression with the value, so
115 don't insert it in the output.
116
1172007-04-11 Jason Rumney <jasonr@gnu.org>
118
119 * dnd.el (dnd-get-local-file-name): Decode both upper and lower
120 case hex. Do not try to decode non-hex letters.
121
1222007-04-11 Markus Triska <markus.triska@gmx.at>
123
124 * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
125 (byte-optimize-backward-word): Remove (move to bytecomp.el).
126 (byte-optimize-form-code-walker): Evaluate pure function calls if
127 possible.
128 (byte-optimize-all-constp): New function.
129
130 * emacs-lisp/bytecomp.el (byte-compile-char-before): Improve
131 numeric argument case.
132 (byte-compile-backward-char, byte-compile-backward-word): New
133 functions, performing rewriting previously done in byte-opt.el.
134 Fix their "Fixme" item (restriction to numeric arguments).
135
1362007-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
137
138 * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar with
139 dolist.
140 (after-init-hook): Don't quote lambda.
141 (desktop-first-buffer): Don't wrap it in eval-when-compile.
142 (desktop-internal-v2s): Remove unused var `el'.
143 (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
144 desktop-restore-file-buffer.
145 (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
146 desktop-create-buffer.
147
1482007-04-10 Chong Yidong <cyd@stupidchicken.com>
149
150 * woman.el (woman-decode-buffer): Postpone macro-set check...
151 (woman-decode-region): ...to here.
152
1532007-04-10 Thien-Thi Nguyen <ttn@gnu.org>
154
155 * startup.el (tty-handle-args): Use %S to log ARGS.
156
1572007-04-10 Glenn Morris <rgm@gnu.org>
158
159 * dframe.el (dframe-frame-mode): Do not set auto-show-mode, since
160 it is obsolete and has no effect.
161
162 * dos-w32.el (default-buffer-file-type): Add defvar to quieten
163 byte-compiler.
164
165 * progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to
166 obsolete function make-local-hook.
167
168 * progmodes/dcl-mode.el (top-level): Move (require 'tempo) to
169 start to quieten byte-compiler.
170
1712007-04-10 Markus Triska <markus.triska@gmx.at>
172
173 * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
174 to bytecomp.el as byte-compile-char-before).
175 * emacs-lisp/bytecomp.el (byte-compile-char-before):
176 New function (modified replacement for byte-optimize-char-before in
177 byte-opt.el).
178
1792007-04-09 Alan Mackenzie <acm@muc.de>
180
181 * startup.el (inhibit-splash-screen): Emphatically state that it
182 can't be set in site-start.el.
183
1842007-04-09 Masatake YAMATO <jet@gyve.org>
185
186 * progmodes/cc-subword.el (c-capitalize-subword): More closely
187 mimic the behavior of `capitalize-word'. Do not move point with a
188 negative argument. Based on tiny change by Paul Curry.
189
1902007-04-09 Paul Curry <dashteacup@gmail.com> (tiny change)
191
192 * progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword):
193 Don't move point if ARG is negative.
194
1952007-04-09 Alan Mackenzie <acm@muc.de>
196
197 Changes to make `narrow-to-defun' and `mark-defun' work properly
198 in CC Mode:
199
200 * progmodes/cc-defs.el (c-beginning-of-defun-1):
201 * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
202 Bind beginning/end-of-defun-function to nil around calls to
203 beginning/end-of-defun.
204
205 * progmodes/cc-langs.el (beginning-of-defun-function)
206 (end-of-defun-function): New c-lang-setvar's.
207
208 * progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg
209 (setq arg 1))" to enable non-interactive call.
210
2112007-04-09 Eli Zaretskii <eliz@gnu.org>
212
213 * simple.el (set-mark-command): Doc fix.
214
2152007-04-09 Nick Roberts <nickrob@snap.net.nz>
216
217 * progmodes/gud.el (gdb): Restore existing session if user
218 tries to start a second one in graphical mode.
219
2202007-04-08 Martin Rudalics <rudalics@gmx.at>
221
222 * cus-start.el <scroll-preserve-screen-position>: Add choices.
223
2242007-04-08 Johan Bockg,Ae(Brd <bojohan+news@dd.chalmers.se>
225
226 * term/xterm.el (terminal-init-xterm): Fix key definitions.
227 Add binding for C-M-SPC.
228
2292007-04-08 Richard Stallman <rms@gnu.org>
230
231 * pcomplete.el (pcomplete-read-event): One single definition,
232 and not a defsubst.
233
2342007-04-08 Chong Yidong <cyd@stupidchicken.com>
235
236 * progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate
237 byte-compiler warning "value unused".
238
2392007-04-08 Andreas Schwab <schwab@suse.de>
240
241 * term/xterm.el (terminal-init-xterm): Add bindings for keypad keys.
242
2432007-04-07 Glenn Morris <rgm@gnu.org>
244
245 * calendar/calendar.el (diary-font-lock-keywords, diary-live-p):
246 Autoload these functions.
247 (diary-date-forms): Add a custom :set form.
248
249 * calendar/diary-lib.el (diary-set-maybe-redraw): Move definition
250 before first use.
251 (diary-font-lock-keywords): New function with old code for
252 initialization of variable of same name.
253
2542007-04-07 David Hansen <david.hansen@gmx.net> (tiny change)
255
256 * progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall
257 clean-up: only insert space when on identifier, etc.
258
2592007-04-07 Chong Yidong <cyd@stupidchicken.com>
260
261 * progmodes/grep.el (grep-find-use-xargs): Rewrite docstring.
262
263 * net/tls.el (open-tls-stream): Properly handle case where there
264 is no associated buffer.
265
2662007-04-07 Glenn Morris <rgm@gnu.org>
267
268 * ffap.el (ffap-file-at-point): Lower the priority of the
269 ffap-ftp-sans-slash-regexp check.
270
2712007-04-06 Alan Mackenzie <acm@muc.de>
272
273 Fix fontification of labels, and other things with ":".
274
275 * progmodes/cc-engine.el (c-forward-label): The function now
276 returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as
277 the former t.
278
279 * progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the
280 new return code from c-forward-label, fontifying tokens properly.
281 Add some general comments throughout the file.
282
2832007-04-06 Chong Yidong <cyd@stupidchicken.com>
284
285 * textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect):
286 Revert 2006-01-27 change.
287
288 * diff-mode.el (diff-mode): Revert 2007-03-04 change.
289
290 * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
291
292 * desktop.el (desktop-create-buffer, desktop-save):
293 Revert 2004-11-12 change for lack of copyright papers.
294
295 * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
296 (dired-guess-default): Respect case.
297
298 * isearch.el (isearch-forward): Revert 1998-08-26 doc change.
299
300 * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function;
301 was originally checked in as byte-optimize-concat on 1997-11-02.
302
303 * mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of
304 1995-05-19 doc changes.
305
3062007-04-06 Kim F. Storm <storm@cua.dk>
307
308 * loadhist.el (read-feature): Reimplement. New optional arg LOADED-P.
309 (unload-feature): Update interactive spec accordingly.
310
311 * progmodes/grep.el (grep-program): Remove commentary about zgrep.
312
3132007-04-06 John Paul Wallington <jpw@pobox.com>
314
315 * subr.el (with-case-table): Use `make-symbol' to avoid variable
316 capture. Restore the table in the same buffer.
317
318 * font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'.
319
3202007-04-05 Chong Yidong <cyd@stupidchicken.com>
321
322 * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
323 Print entire form.
324
3252007-04-05 Nick Roberts <nickrob@snap.net.nz>
326
327 * progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again)
328 for low-color displays.
329
3302007-04-05 Glenn Morris <rgm@gnu.org>
331
332 * play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el,
333 * play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el:
334 Seed random number generator on loading.
335
336 * emacs-lisp/authors.el (top-level): Provide self.
337
338 * play/animate.el (top-level): Provide self.
339
3402007-04-04 Alan Mackenzie <acm@muc.de>
341
342 * progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string
343 to mention c-syntactic-indentation.
344
3452007-04-04 Chong Yidong <cyd@stupidchicken.com>
346
347 * subr.el (with-case-table): New macro.
348
349 * international/mule.el (ascii-case-table): New var.
350
351 * mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when
352 downcasing.
353
3542007-04-03 Nick Roberts <nickrob@snap.net.nz>
355
356 * progmodes/gud.el (gud-minor-mode-map): Simplify.
357
358 * t-mouse.el (t-mouse-make-event-element): Don't use the left edge
359 of the window if we're outside it e.g menu-bar.
360
361 * xt-mouse.el (xterm-mouse-event): Don't use the left edge of the
362 window if we're outside it e.g menu-bar.
363
3642007-04-03 Eli Zaretskii <eliz@gnu.org>
365
366 * mail/rmail.el (rmail-convert-to-babyl-format): Don't try to
367 decode base-64 encoded body if its content-type is something other
368 than text/* or message/*.
369
3702007-04-03 Juanma Barranquero <lekktu@gmail.com>
371
372 * simple.el (activate-mark-hook): Fix typo in docstring.
373
3742007-04-03 Nick Roberts <nickrob@snap.net.nz>
375
376 * tmm.el (tmm-c-prompt): Initialize.
377 (tmm-menubar): Deal with extended menu-items at top level.
378 (tmm-get-keybind): Handle bindings redefined/undefined locally.
379 (tmm-prompt): Handle visibility of top level menu-items.
380
381 * progmodes/gud.el (gud-menu-map): Simplify.
382 (gud-minor-mode-map): Add tool-bar like bindings to the text mode
383 menubar.
384
3852007-04-02 Chong Yidong <cyd@stupidchicken.com>
386
387 * mail/smtpmail.el (smtpmail-via-smtp): Revert last change.
388
389 * comint.el (comint-send-input): Widen the buffer first.
390
391 * info.el (Info-fontify-maximum-menu-size): Revert to 100000.
392
3932007-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
394
395 * emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey
396 emacs-lisp-docstring-fill-column in emacs-lisp-mode.
397
398 * newcomment.el (comment-search-forward): Discard comment starters
399 before point.
400
4012007-04-01 Guanpeng Xu <herberteuler@hotmail.com>
402
403 * mouse.el (mouse-set-secondary): Update mouse-secondary-overlay.
404
4052007-04-01 Chong Yidong <cyd@stupidchicken.com>
406
407 * mail/smtpmail.el (smtpmail-via-smtp): Use standard case table
408 when downcasing.
409
410 * button.el (previous-button): Rewrite to account for adjacent buttons.
411
4122007-04-01 J.D. Smith <jdsmith@as.arizona.edu>
413
414 * progmodes/idlwave.el (idlwave-auto-fill):
415 Revert paragraph-separate change.
416
417 * progmodes/idlw-shell.el (idlwave-shell-break-in):
418 Simplify module calc.
419 (idlwave-shell-set-bp-in-module): Compute module.
420
4212007-03-31 Glenn Morris <rgm@gnu.org>
422
423 * emacs-lisp/timer.el (run-at-time): Doc fix.
424
425 * emacs-lisp/warnings.el (display-warning): If we create the
426 buffer displaying the warning, disable undo there.
427
4282007-03-31 Michael Albinus <michael.albinus@gmx.de>
429
430 * net/tramp.el (tramp-register-file-name-handler)
431 (tramp-register-completion-file-name-handler): New defsubst,
432 derived from `tramp-register-file-name-handlers'. The split is
433 necessary because Tramp's file name handlers must be registered at
434 different startup places.
435
4362007-03-31 Chong Yidong <cyd@stupidchicken.com>
437
438 * progmodes/hideshow.el (turn-off-hideshow): New function.
439 (hs-minor-mode): Use it instead of a lambda expression in
440 change-major-mode-hook.
441
4422007-03-31 David Kastrup <dak@gnu.org>
443
444 * woman.el (woman-Cyg-to-Win): Don't convert cons cells
445 corresponding to MANPATH_MAP entries.
446 (woman-man.conf-path, woman-parse-man.conf): Doc fix.
447 (woman-parse-man.conf): Use more discriminating man.conf name.
448 (woman-parse-man.conf): Parse MANPATH_MAP entries.
449 (woman-manpath): Doc fix and type fix.
450 (woman-cached-data): Check for MANPATH_MAP entries.
451 (woman-expand-directory-path): Treat MANPATH_MAP entries.
452
4532007-03-31 Stuart Herring <herring@lanl.gov>
454
455 * emacs-lisp/sregex.el (sregexq): Doc fix.
456
4572007-03-31 Markus Triska <markus.triska@gmx.at>
458
459 * flymake.el (flymake-err-line-patterns): Doc fix.
460
4612007-03-30 Reiner Steib <Reiner.Steib@gmx.de>
462
463 * info.el (info-tool-bar-map): Use "exit" for Info-exit.
464 Move to the right.
465
4662007-03-30 Alan Mackenzie <acm@muc.de>
467
468 * progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug.
469
4702007-03-30 Thien-Thi Nguyen <ttn@gnu.org>
471
472 * emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL.
473 Use it, passed in explicitly, instead of from the dynamic binding.
474 (ewoc-create, ewoc-enter-before): Update to use new call sequence.
475
4762007-03-30 Juanma Barranquero <lekktu@gmail.com>
477
478 * simple.el (blink-matching-open): When in minibuffer, don't
479 search for a match inside the prompt.
480
4812007-03-30 Nick Roberts <nickrob@snap.net.nz>
482
483 * tmm.el (tmm-menubar): Select the right menu item with the mouse.
484 (tmm-prompt): Don't make the mouse user select the first menu
485 item twice.
486
4872007-03-30 Chong Yidong <cyd@stupidchicken.com>
488
489 * eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize
490 SIGUSR1 and SIGUSR2.
491
4922007-03-29 Kim F. Storm <storm@cua.dk>
493
494 * ido.el (ido-read-internal): When reading file or dir, only override
495 minibuffer-local-filename-completion-map, otherwise only override
496 minibuffer-local-completion-map.
497
4982007-03-29 Glenn Morris <rgm@gnu.org>
499
500 * complete.el (partial-completion-mode): Set PC-do-completion-end
501 to nil after use.
502 (PC-lisp-complete-symbol): Create and use a marker at `end',
503 rather than using point-marker.
504
5052007-03-28 Chong Yidong <cyd@stupidchicken.com>
506
507 * simple.el (next-error-highlight): Doc fix.
508 (compose-mail): Revert 2007-03-19 change.
509
5102007-03-28 Richard Stallman <rms@gnu.org>
511
512 * emacs-lisp/edebug.el (edebug-display): Don't go to
513 edebug-outside-buffer if it is dead.
514
5152007-03-28 Juanma Barranquero <lekktu@gmail.com>
516
517 * view.el (view-mode): Fix typos in docstring.
518
5192007-03-28 Stephen Berman <Stephen.Berman@gmx.net>
520
521 * recentf.el (recentf-save-file): Add a custom :set function.
522
5232007-03-28 Glenn Morris <rgm@gnu.org>
524
525 * complete.el (PC-do-completion-end): New variable.
526 (partial-completion-mode) <choose-completion-string-functions>:
527 Use PC-do-completion-end in the non-minibuffer case to replace the
528 correct amount of text.
529 (PC-do-completion): Set PC-do-completion-end for c-c-s-f.
530 (PC-lisp-complete-symbol): Give marker the after-insertion type,
531 to deal with improvements inserted after point.
532
5332007-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
534
535 * button.el (make-text-button): Add explicit `button' property.
536 (default-button): Don't put a `button' property on it.
537
538 * progmodes/python.el (python-mode): Skip comments when parsing.
539
540 * vc-arch.el (vc-with-current-file-buffer): New macro.
541 (vc-arch-file-source-p): Use it to avoid infloop.
542
5432007-03-28 David Hansen <david.hansen@gmx.net> (tiny change)
544
545 * emacs-lisp/lisp.el (lisp-complete-symbol):
546 Fix call to get-buffer-window to find windows in other frames.
547
5482007-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
549
550 * comint.el (comint-proc-query, comint-dynamic-list-completions):
551 Fix calls to get-buffer-window to find windows in other frames.
552 Reported by David Hansen <david.hansen@gmx.net>.
553
5542007-03-27 Kevin Ryde <user42@zip.com.au>
555
556 * info.el (Info-display-images-node): On a text-only terminal,
557 show the "text" or "alt" parts of the image blobs.
558
5592007-03-27 Glenn Morris <rgm@gnu.org>
560
561 * complete.el (PC-do-completion): Compute completion-base-size in
562 the non-filename case, rather than setting to nil.
563 (PC-lisp-complete-end): New variable.
564 (PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the
565 original end in a series of consecutive invocations.
566
567 * calendar/calendar.el (calendar-mode-hook): Declare it.
568
569 * calendar/diary-lib.el (diary-live-p): Do not check for
570 diary-selective-display.
571
5722007-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
573
574 * replace.el (occur-next-error): *Occur* might not be displayed in the
575 selected frame. Reported by David Hansen <david.hansen@gmx.net>.
576
5772007-03-26 Richard Stallman <rms@gnu.org>
578
579 * textmodes/flyspell.el (flyspell-large-region):
580 Use ispell-call-process-region.
581
5822007-03-26 Johan Bockg,Ae(Brd <bojohan+sf@dd.chalmers.se>
583
584 * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
585 Use prin1 instead of princ.
586
5872007-03-25 Chong Yidong <cyd@stupidchicken.com>
588
589 * faces.el (face-set-after-frame-default): Revert 2007-03-10 change.
590 Merge in X resources before global face.
591
592 * progmodes/compile.el (compilation-start): Save compilation-directory
593 rather than default-directory as local var.
594 (compilation-directory): Mark as safe local var.
595
596 * files.el: Don't mark default-directory as a safe local var.
597
5982007-03-25 Alan Mackenzie <acm@muc.de>
599
600 * progmodes/cc-mode.el (c-before-change): Fix BOB bug.
601 * progmodes/cc-engine.el: Fix typo.
602
6032007-03-25 Juri Linkov <juri@jurta.org>
604
605 * compare-w.el (compare-windows): Rename customization group
606 `compare-w' to `compare-windows'.
607 (compare-windows-whitespace, compare-ignore-whitespace)
608 (compare-ignore-case, compare-windows-sync)
609 (compare-windows-sync-string-size, compare-windows-recenter)
610 (compare-windows-highlight, compare-windows): Change group name in
611 the `group' tag from `compare-w' to `compare-windows'.
612 (compare-windows-sync): Add option `nil' for no sync. Doc fix.
613
6142007-03-24 Markus Triska <markus.triska@gmx.at>
615
616 * expand.el: Change example to always enable abbrev-mode,
617 and remove redundant `function'.
618 (expand-abbrev-hook): Add autoload cookie.
619
6202007-03-24 Ryan Yeske <rcyeske@gmail.com>
621
622 * emacs-lisp/testcover.el (testcover-start, testcover-end)
623 (testcover-mark-all, testcover-unmark-all): Add prompts to
624 interactive specs.
625
6262007-03-24 Jason Rumney <jasonr@gnu.org>
627
628 * autorevert.el (find-file-hook, auto-revert-tail-mode):
629 Use file size in bytes for auto-revert-tail-pos not characters.
630
6312007-03-24 Thien-Thi Nguyen <ttn@gnu.org>
632
633 * vc-rcs.el (vc-rcs-annotate-command):
634 Set text property :vc-annotate-prefix on the annotation text.
635 (vc-rcs-annotate-time): Instead of searching for ": ",
636 search for end of text propertized with :vc-annotate-prefix.
637
6382007-03-24 Martin Rudalics <rudalics@gmx.at>
639
640 * whitespace.el (top level): Remove calls putting
641 permanent-local nil property since these are no-ops.
642
643 * man.el (Man-support-local-filenames): Assure that
644 default-directory exists when doing call-process.
645
6462007-03-23 David Vazquez <xeos00@gmail.com> (tiny change)
647
648 * progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region):
649 Fix omission bug: Use m4-program-options to construct shell command.
650
6512007-03-23 David Kastrup <dak@gnu.org>
652
653 * progmodes/cc-mode.el (c-make-emacs-variables-local):
654 Use `mapcar' rather than `mapcan' to silence compiler warning.
655
6562007-03-22 Ralf Angeli <angeli@caeruleus.net>
657
658 * textmodes/reftex.el, textmodes/reftex-vars.el,
659 * textmodes/reftex-toc.el, textmodes/reftex-sel.el,
660 * textmodes/reftex-ref.el, textmodes/reftex-parse.el,
661 * textmodes/reftex-index.el, textmodes/reftex-global.el,
662 * textmodes/reftex-dcr.el, textmodes/reftex-cite.el,
663 * textmodes/reftex-auc.el: Add maintainer address.
664
6652007-03-22 Carsten Dominik <dominik@science.uva.nl>
666
667 * textmodes/org.el (org-agenda-mode, org-table-edit-formulas):
668 Make sure that `global-font-lock-mode' does not turn on font-lock
669 in these buffers.
670
6712007-03-21 Kim F. Storm <storm@cua.dk>
672
673 * xt-mouse.el (xt-mouse-epoch): New variable.
674 (xterm-mouse-event): Use float-time.
675
6762007-03-21 Nick Roberts <nickrob@snap.net.nz>
677
678 * xt-mouse.el (xterm-mouse-event): Compute a timestamp using
679 current-time.
680
6812007-03-21 Stefan Monnier <monnier@iro.umontreal.ca>
682
683 * complete.el (read-file-name-internal): Don't add the final > if the
684 completion is not finished (re-application of this patch, which was
685 accidentally undone by Eli).
686
6872007-03-21 Chong Yidong <cyd@stupidchicken.com>
688
689 * emulation/viper.el (viper-non-hook-settings): Handle mouse
690 clicks in describe-key and describe-key-briefly advice a little better.
691
12007-03-21 Juanma Barranquero <lekktu@gmail.com> 6922007-03-21 Juanma Barranquero <lekktu@gmail.com>
2 693
3 * server.el (server-process-filter): Cancel any pending isearch. 694 * server.el (server-process-filter): Cancel any pending isearch.
@@ -71,8 +762,8 @@
71 762
722007-03-19 Martin Rudalics <rudalics@gmx.at> 7632007-03-19 Martin Rudalics <rudalics@gmx.at>
73 764
74 * font-lock.el (lisp-font-lock-keywords-1): Highlight 765 * font-lock.el (lisp-font-lock-keywords-1):
75 define-globalized-minor-mode as a keyword. 766 Highlight define-globalized-minor-mode as a keyword.
76 767
772007-03-19 Kim F. Storm <storm@cua.dk> 7682007-03-19 Kim F. Storm <storm@cua.dk>
78 769
@@ -110,8 +801,7 @@
1102007-03-18 Detlev Zundel <dzu@gnu.org> 8012007-03-18 Detlev Zundel <dzu@gnu.org>
111 802
112 * emacs-lisp/re-builder.el (reb-update-overlays): Do not mark 803 * emacs-lisp/re-builder.el (reb-update-overlays): Do not mark
113 zero-width regexps as invalid but rather at least count them 804 zero-width regexps as invalid but rather at least count them correctly.
114 correctly.
115 805
1162007-03-18 Thien-Thi Nguyen <ttn@gnu.org> 8062007-03-18 Thien-Thi Nguyen <ttn@gnu.org>
117 807
@@ -143,8 +833,8 @@
143 833
1442007-03-17 Chong Yidong <cyd@stupidchicken.com> 8342007-03-17 Chong Yidong <cyd@stupidchicken.com>
145 835
146 * simple.el (line-move-1): Respect 836 * simple.el (line-move-1):
147 `inhibit-line-move-field-capture' property. 837 Respect `inhibit-line-move-field-capture' property.
148 838
1492007-03-13 Chong Yidong <cyd@stupidchicken.com> 8392007-03-13 Chong Yidong <cyd@stupidchicken.com>
150 840
@@ -157,7 +847,7 @@
1572007-03-12 Lawrence Mitchell <wence@gmx.li> (tiny change) 8472007-03-12 Lawrence Mitchell <wence@gmx.li> (tiny change)
158 848
159 * tempo.el (tempo-insert): Deal with 'r> if it appears 849 * tempo.el (tempo-insert): Deal with 'r> if it appears
160 specified with a prompt argument. 850 specified with a prompt argument.
161 851
1622007-03-12 Carsten Dominik <dominik@science.uva.nl> 8522007-03-12 Carsten Dominik <dominik@science.uva.nl>
163 853
@@ -403,7 +1093,7 @@
403 * emacs-lisp/lisp-mode.el (calculate-lisp-indent): 1093 * emacs-lisp/lisp-mode.el (calculate-lisp-indent):
404 Redo previous change. 1094 Redo previous change.
405 1095
4062007-03-04 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change) 10962007-03-04 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
407 1097
408 * diff-mode.el (diff-mode): Doc fix. 1098 * diff-mode.el (diff-mode): Doc fix.
409 1099
@@ -493,7 +1183,7 @@
493 * ps-print.el: Replace (defvar VAR nil) by (defvar VAR). 1183 * ps-print.el: Replace (defvar VAR nil) by (defvar VAR).
494 (ps-setup): Print which Emacsen is running ps-print package. 1184 (ps-setup): Print which Emacsen is running ps-print package.
495 1185
4962007-03-01 Stuart Herring <herring@lanl.gov> (tiny change) 11862007-03-01 Stuart Herring <herring@lanl.gov>
497 1187
498 * files.el (set-auto-mode-0): Use `indirect-function'. 1188 * files.el (set-auto-mode-0): Use `indirect-function'.
499 (hack-one-local-variable): Don't reapply current major mode. 1189 (hack-one-local-variable): Don't reapply current major mode.
@@ -537,7 +1227,7 @@
537 1227
538 * help.el (where-is): Fail gracefully when not passed a command. 1228 * help.el (where-is): Fail gracefully when not passed a command.
539 1229
5402007-02-28 Stuart Herring <herring@lanl.gov> (tiny change) 12302007-02-28 Stuart Herring <herring@lanl.gov>
541 1231
542 * find-lisp.el (find-lisp-default-directory-predicate): 1232 * find-lisp.el (find-lisp-default-directory-predicate):
543 Fix bug: Do symlink check on expanded filename. 1233 Fix bug: Do symlink check on expanded filename.
@@ -1437,7 +2127,7 @@
14372007-01-27 Guanpeng Xu <herberteuler@hotmail.com> 21272007-01-27 Guanpeng Xu <herberteuler@hotmail.com>
1438 2128
1439 * add-log.el (add-log-current-defun): Skip the semicolon ``;'' for 2129 * add-log.el (add-log-current-defun): Skip the semicolon ``;'' for
1440 enum/union/struct/class definition. 2130 enum/union/struct/class definition.
1441 Revert change to call `forward-sexp' multiple times. 2131 Revert change to call `forward-sexp' multiple times.
1442 2132
14432007-01-27 Chong Yidong <cyd@stupidchicken.com> 21332007-01-27 Chong Yidong <cyd@stupidchicken.com>
@@ -2044,7 +2734,7 @@
2044 * international/mule-cmds.el (select-safe-coding-system-interactively): 2734 * international/mule-cmds.el (select-safe-coding-system-interactively):
2045 Fix message. 2735 Fix message.
2046 2736
20472006-12-30 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change) 27372006-12-30 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
2048 2738
2049 * files.el (backup-buffer): Show entire backup file name in msg. 2739 * files.el (backup-buffer): Show entire backup file name in msg.
2050 2740
@@ -2501,20 +3191,20 @@
25012006-12-09 Martin Rudalics <rudalics@gmx.at> 31912006-12-09 Martin Rudalics <rudalics@gmx.at>
2502 3192
2503 * wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit) 3193 * wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit)
2504 (wdired-search-and-rename): Simplify code. 3194 (wdired-search-and-rename): Simplify code.
2505 (wdired-preprocess-files, wdired-preprocess-perms): Make 3195 (wdired-preprocess-files, wdired-preprocess-perms): Make
2506 read-only property of preceding character rear-nonsticky to 3196 read-only property of preceding character rear-nonsticky to
2507 avoid that it can be modified. Put old-name and old-link 3197 avoid that it can be modified. Put old-name and old-link
2508 properties on character preceding name and replace 3198 properties on character preceding name and replace
2509 put-text-property by add-text-properties. 3199 put-text-property by add-text-properties.
2510 (wdired-get-filename, wdired-get-previous-link): Get old-name 3200 (wdired-get-filename, wdired-get-previous-link): Get old-name
2511 and old-link properties from character preceding name and 3201 and old-link properties from character preceding name and
2512 simplify code. 3202 simplify code.
2513 (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit) 3203 (wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit)
2514 (wdired-perms-to-number): Make local-map property 3204 (wdired-perms-to-number): Make local-map property
2515 rear-nonsticky to avoid that text following permissions may be 3205 rear-nonsticky to avoid that text following permissions may be
2516 modified. Use add-text-properties instead of put-text-property 3206 modified. Use add-text-properties instead of put-text-property
2517 when changing a permission bit. 3207 when changing a permission bit.
2518 (wdired-change-to-dired-mode): Remove stickiness properties. 3208 (wdired-change-to-dired-mode): Remove stickiness properties.
2519 3209
25202006-12-09 Juanma Barranquero <lekktu@gmail.com> 32102006-12-09 Juanma Barranquero <lekktu@gmail.com>
@@ -12650,7 +13340,7 @@
12650 English aspell dictionary is installed, use the first entry of 13340 English aspell dictionary is installed, use the first entry of
12651 ispell-dictionary-alist-1. 13341 ispell-dictionary-alist-1.
12652 13342
126532006-01-27 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change) 133432006-01-27 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
12654 13344
12655 * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate): 13345 * textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
12656 Doc fix. 13346 Doc fix.
@@ -14672,7 +15362,7 @@
14672 (hi-lock-find-patterns, hi-lock-font-lock-hook): 15362 (hi-lock-find-patterns, hi-lock-font-lock-hook):
14673 Replace hi-lock-buffer-mode with hi-lock-mode. 15363 Replace hi-lock-buffer-mode with hi-lock-mode.
14674 15364
146752005-12-10 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change) 153652005-12-10 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
14676 15366
14677 * emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the 15367 * emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the
14678 completion list, even after a partial completion has been 15368 completion list, even after a partial completion has been
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 1b0f3a3d584..8630d3e8b06 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1415,7 +1415,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1415 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.) 1415 (time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
1416 (hdrlvl (char-after (+ p 20))) ;header level 1416 (hdrlvl (char-after (+ p 20))) ;header level
1417 thsize ;total header size (base + extensions) 1417 thsize ;total header size (base + extensions)
1418 fnlen efnname fiddle ifnname width p2 1418 fnlen efnname osid fiddle ifnname width p2
1419 neh ;beginning of next extension header (level 1 and 2) 1419 neh ;beginning of next extension header (level 1 and 2)
1420 mode modestr uid gid text dir prname 1420 mode modestr uid gid text dir prname
1421 gname uname modtime moddate) 1421 gname uname modtime moddate)
@@ -1474,7 +1474,22 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
1474 (setq thsize (- neh p)))) 1474 (setq thsize (- neh p))))
1475 (if (= hdrlvl 0) ;total header size 1475 (if (= hdrlvl 0) ;total header size
1476 (setq thsize hsize)) 1476 (setq thsize hsize))
1477 (setq fiddle (if efnname (string= efnname (upcase efnname)))) 1477 ;; OS ID field not present in level 0 header, use code 0 "generic"
1478 ;; in that case as per lha program header.c get_header()
1479 (setq osid (cond ((= hdrlvl 0) 0)
1480 ((= hdrlvl 1) (char-after (+ p 22 fnlen 2)))
1481 ((= hdrlvl 2) (char-after (+ p 23)))))
1482 ;; Filename fiddling must follow the lha program, otherwise the name
1483 ;; passed to "lha pq" etc won't match (which for an extract silently
1484 ;; results in no output). As of version 1.14i it goes from the OS ID,
1485 ;; - For 'M' MSDOS: msdos_to_unix_filename() downcases always, and
1486 ;; converts "\" to "/".
1487 ;; - For 0 generic: generic_to_unix_filename() downcases if there's
1488 ;; no lower case already present, and converts "\" to "/".
1489 ;; - For 'm' MacOS: macos_to_unix_filename() changes "/" to ":" and
1490 ;; ":" to "/"
1491 (setq fiddle (cond ((= ?M osid) t)
1492 ((= 0 osid) (string= efnname (upcase efnname)))))
1478 (setq ifnname (if fiddle (downcase efnname) efnname)) 1493 (setq ifnname (if fiddle (downcase efnname) efnname))
1479 (setq prname (if dir (concat dir ifnname) ifnname)) 1494 (setq prname (if dir (concat dir ifnname) ifnname))
1480 (setq width (if prname (string-width prname) 0)) 1495 (setq width (if prname (string-width prname) 0))
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index bd9d6fe76e8..170ca4b88c2 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -278,7 +278,7 @@ the list of old buffers.")
278(add-hook 'find-file-hook 278(add-hook 'find-file-hook
279 (lambda () 279 (lambda ()
280 (set (make-local-variable 'auto-revert-tail-pos) 280 (set (make-local-variable 'auto-revert-tail-pos)
281 (save-restriction (widen) (1- (point-max)))))) 281 (nth 7 (file-attributes buffer-file-name)))))
282 282
283;; Functions: 283;; Functions:
284 284
@@ -341,7 +341,7 @@ Use `auto-revert-mode' for changes other than appends!"
341 (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t) 341 (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
342 (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position 342 (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
343 (set (make-local-variable 'auto-revert-tail-pos) 343 (set (make-local-variable 'auto-revert-tail-pos)
344 (save-restriction (widen) (1- (point-max))))) 344 (nth 7 (file-attributes buffer-file-name))))
345 ;; let auto-revert-mode set up the mechanism for us if it isn't already 345 ;; let auto-revert-mode set up the mechanism for us if it isn't already
346 (or auto-revert-mode 346 (or auto-revert-mode
347 (let ((auto-revert-tail-mode t)) 347 (let ((auto-revert-tail-mode t))
diff --git a/lisp/button.el b/lisp/button.el
index d3c4cd8ea9e..423aef5f78f 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -89,9 +89,6 @@ Mode-specific keymaps may want to use this as their parent keymap.")
89;; Prevent insertions adjacent to the text-property buttons from 89;; Prevent insertions adjacent to the text-property buttons from
90;; inheriting its properties. 90;; inheriting its properties.
91(put 'default-button 'rear-nonsticky t) 91(put 'default-button 'rear-nonsticky t)
92;; Text property buttons don't have a `button' property of their own, so
93;; they inherit this.
94(put 'default-button 'button t)
95 92
96;; A `category-symbol' property for the default button type 93;; A `category-symbol' property for the default button type
97(put 'button 'button-category-symbol 'default-button) 94(put 'button 'button-category-symbol 'default-button)
@@ -316,7 +313,11 @@ Also see `insert-text-button'."
316 (setcar (cdr type-entry) 313 (setcar (cdr type-entry)
317 (button-category-symbol (car (cdr type-entry)))))) 314 (button-category-symbol (car (cdr type-entry))))))
318 ;; Now add all the text properties at once 315 ;; Now add all the text properties at once
319 (add-text-properties beg end properties) 316 (add-text-properties beg end
317 ;; Each button should have a non-eq `button'
318 ;; property so that next-single-property-change can
319 ;; detect boundaries reliably.
320 (cons 'button (cons (list t) properties)))
320 ;; Return something that can be used to get at the button. 321 ;; Return something that can be used to get at the button.
321 beg) 322 beg)
322 323
@@ -365,16 +366,29 @@ instead of starting at the next button."
365 (next-button pos)))) 366 (next-button pos))))
366 367
367(defun previous-button (pos &optional count-current) 368(defun previous-button (pos &optional count-current)
368 "Return the Nth button before position POS in the current buffer. 369 "Return the previous button before position POS in the current buffer.
369If COUNT-CURRENT is non-nil, count any button at POS in the search, 370If COUNT-CURRENT is non-nil, count any button at POS in the search,
370instead of starting at the next button." 371instead of starting at the next button."
371 (unless count-current 372 (let ((button (button-at pos)))
372 (setq pos (previous-single-char-property-change pos 'button))) 373 (if button
373 (and (> pos (point-min)) 374 (if count-current
374 (or (button-at (1- pos)) 375 button
375 ;; We must have originally been on a button, and are now in 376 ;; We started out on a button, so move to its start and look
376 ;; the inter-button space. Recurse to find a button. 377 ;; for the previous button boundary.
377 (previous-button pos)))) 378 (setq pos (previous-single-char-property-change
379 (button-start button) 'button))
380 (let ((new-button (button-at pos)))
381 (if new-button
382 ;; We are in a button again; this can happen if there
383 ;; are adjacent buttons (or at bob).
384 (unless (= pos (button-start button)) new-button)
385 ;; We are now in the space between buttons.
386 (previous-button pos))))
387 ;; We started out in the space between buttons.
388 (setq pos (previous-single-char-property-change pos 'button))
389 (or (button-at pos)
390 (and (> pos (point-min))
391 (button-at (1- pos)))))))
378 392
379 393
380;; User commands 394;; User commands
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 75e1c83df03..12b1dc6da02 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1148,6 +1148,11 @@ If nil, selections displayed but ignored.")
1148 1148
1149(defvar calc-alg-map) ; Defined in calc-ext.el 1149(defvar calc-alg-map) ; Defined in calc-ext.el
1150 1150
1151(defun calc-version ()
1152 "Return version of this version of Calc."
1153 (interactive)
1154 (message (concat "Calc version " calc-version)))
1155
1151(defun calc-mode () 1156(defun calc-mode ()
1152 "Calculator major mode. 1157 "Calculator major mode.
1153 1158
@@ -1258,8 +1263,7 @@ commands given here will actually operate on the *Calculator* stack."
1258 (set (make-local-variable 'calc-main-buffer) buf)) 1263 (set (make-local-variable 'calc-main-buffer) buf))
1259 (when (= (buffer-size) 0) 1264 (when (= (buffer-size) 0)
1260 (let ((buffer-read-only nil)) 1265 (let ((buffer-read-only nil))
1261 (insert (propertize (concat "Emacs Calculator v" calc-version 1266 (insert (propertize (concat "Emacs Calculator Trail\n")
1262 " by Dave Gillespie\n")
1263 'font-lock-face 'italic)))) 1267 'font-lock-face 'italic))))
1264 (run-mode-hooks 'calc-trail-mode-hook)) 1268 (run-mode-hooks 'calc-trail-mode-hook))
1265 1269
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 82fa0e66dbf..02865c994e3 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -233,8 +233,8 @@ The variable `appt-audible' controls the audible reminder."
233 ;; vars appt-msg-window and appt-visible are dropped. 233 ;; vars appt-msg-window and appt-visible are dropped.
234 (let ((appt-display-format 234 (let ((appt-display-format
235 (if (eq appt-display-format 'ignore) 235 (if (eq appt-display-format 'ignore)
236 (cond (appt-msg-window 'window) 236 (cond (appt-msg-window 'window)
237 (appt-visible 'echo)) 237 (appt-visible 'echo))
238 appt-display-format))) 238 appt-display-format)))
239 (cond ((eq appt-display-format 'window) 239 (cond ((eq appt-display-format 'window)
240 (funcall appt-disp-window-function 240 (funcall appt-disp-window-function
@@ -457,7 +457,9 @@ NEW-TIME is a string giving the date."
457 (same-window-p (buffer-name appt-disp-buf))) 457 (same-window-p (buffer-name appt-disp-buf)))
458 ;; By default, split the bottom window and use the lower part. 458 ;; By default, split the bottom window and use the lower part.
459 (appt-select-lowest-window) 459 (appt-select-lowest-window)
460 (select-window (split-window))) 460 ;; Split the window, unless it's too small to do so.
461 (when (>= (window-height) (* 2 window-min-height))
462 (select-window (split-window))))
461 (switch-to-buffer appt-disp-buf)) 463 (switch-to-buffer appt-disp-buf))
462 (calendar-set-mode-line 464 (calendar-set-mode-line
463 (format " Appointment in %s minutes. %s " min-to-app new-time)) 465 (format " Appointment in %s minutes. %s " min-to-app new-time))
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index a838141db1c..7f6646dda64 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -43,12 +43,6 @@
43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
44;; and Nachum Dershowitz, Cambridge University Press (2001). 44;; and Nachum Dershowitz, Cambridge University Press (2001).
45 45
46;; Comments, corrections, and improvements should be sent to
47;; Edward M. Reingold Department of Computer Science
48;; (217) 333-6733 University of Illinois at Urbana-Champaign
49;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
50;; Urbana, Illinois 61801
51
52;;; Code: 46;;; Code:
53 47
54(defvar date) 48(defvar date)
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 23de17a16a8..b5cf96949c6 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el
index 3aea69b8ccf..6159d7e9dc1 100644
--- a/lisp/calendar/cal-dst.el
+++ b/lisp/calendar/cal-dst.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements the features of calendar.el and 31;; This collection of functions implements the features of calendar.el and
32;; holiday.el that deal with daylight saving time. 32;; holiday.el that deal with daylight saving time.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(require 'calendar) 36(require 'calendar)
@@ -266,12 +260,20 @@ Returns a list (YEAR START END), where START and END are
266expressions that when evaluated return the start and end dates, 260expressions that when evaluated return the start and end dates,
267respectively. This function first attempts to use pre-calculated 261respectively. This function first attempts to use pre-calculated
268data from `calendar-dst-transition-cache', otherwise it calls 262data from `calendar-dst-transition-cache', otherwise it calls
269`calendar-dst-find-data' (and adds the results to the cache)." 263`calendar-dst-find-data' (and adds the results to the cache).
264If dates in YEAR cannot be handled by `encode-time' (e.g. if they
265are too large to be represented as a lisp integer), then rather
266than an error this function returns the result appropriate for
267the current year."
270 (let ((e (assoc year calendar-dst-transition-cache)) 268 (let ((e (assoc year calendar-dst-transition-cache))
271 f) 269 f)
272 (or e 270 (or e
273 (progn 271 (progn
274 (setq e (calendar-dst-find-data (encode-time 1 0 0 1 1 year)) 272 (setq e (calendar-dst-find-data
273 (condition-case nil
274 (encode-time 1 0 0 1 1 year)
275 (error
276 (encode-time 1 0 0 1 1 (nth 5 (decode-time))))))
275 f (nth 4 e) 277 f (nth 4 e)
276 e (list year f (nth 5 e)) 278 e (list year f (nth 5 e))
277 calendar-dst-transition-cache 279 calendar-dst-transition-cache
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index 99af7042472..439dbd34632 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -37,12 +37,6 @@
37;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and 37;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and
38;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404. 38;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404.
39 39
40;; Comments, corrections, and improvements should be sent to
41;; Edward M. Reingold Department of Computer Science
42;; (217) 333-6733 University of Illinois at Urbana-Champaign
43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
44;; Urbana, Illinois 61801
45
46;;; Code: 40;;; Code:
47 41
48(defvar date) 42(defvar date)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index a61bea8eacf..9f32d9df471 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -35,12 +35,6 @@
35;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 35;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
36;; and Nachum Dershowitz, Cambridge University Press (2001). 36;; and Nachum Dershowitz, Cambridge University Press (2001).
37 37
38;; Comments, corrections, and improvements should be sent to
39;; Edward M. Reingold Department of Computer Science
40;; (217) 333-6733 University of Illinois at Urbana-Champaign
41;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
42;; Urbana, Illinois 61801
43
44;;; Code: 38;;; Code:
45 39
46(defvar date) 40(defvar date)
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index 28faed4d397..57c0f9de65e 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 93b39cd4d15..052087e2558 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index 768e57bbab5..ff6a3f72e1b 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -34,12 +34,6 @@
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001). 35;; and Nachum Dershowitz, Cambridge University Press (2001).
36 36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 37;;; Code:
44 38
45(defvar date) 39(defvar date)
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index 20703cb85b6..2cb6d31022e 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -43,8 +43,6 @@
43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue 43;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
44;; Urbana, Illinois 61801 44;; Urbana, Illinois 61801
45 45
46;; Comments, improvements, and bug reports should be sent to Reingold.
47
48;; Technical details of the Mayan calendrical calculations can be found in 46;; Technical details of the Mayan calendrical calculations can be found in
49;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 47;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
50;; and Nachum Dershowitz, Cambridge University Press (2001), and in 48;; and Nachum Dershowitz, Cambridge University Press (2001), and in
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 1320f778cc6..25929976dbd 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements menu bar and popup menu support for 31;; This collection of functions implements menu bar and popup menu support for
32;; calendar.el. 32;; calendar.el.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(defvar displayed-month) 36(defvar displayed-month)
diff --git a/lisp/calendar/cal-move.el b/lisp/calendar/cal-move.el
index b12289c7456..3a08b98bf00 100644
--- a/lisp/calendar/cal-move.el
+++ b/lisp/calendar/cal-move.el
@@ -30,12 +30,6 @@
30;; This collection of functions implements movement in the calendar for 30;; This collection of functions implements movement in the calendar for
31;; calendar.el. 31;; calendar.el.
32 32
33;; Comments, corrections, and improvements should be sent to
34;; Edward M. Reingold Department of Computer Science
35;; (217) 333-6733 University of Illinois at Urbana-Champaign
36;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
37;; Urbana, Illinois 61801
38
39;;; Code: 33;;; Code:
40 34
41(defvar displayed-month) 35(defvar displayed-month)
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index 6055de121af..a37f9c1f27e 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -30,16 +30,6 @@
30;; This collection of functions implements the features of calendar.el and 30;; This collection of functions implements the features of calendar.el and
31;; diary.el that deal with the Persian calendar. 31;; diary.el that deal with the Persian calendar.
32 32
33;; Technical details of all the calendrical calculations can be found in
34;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
35;; and Nachum Dershowitz, Cambridge University Press (2001).
36
37;; Comments, corrections, and improvements should be sent to
38;; Edward M. Reingold Department of Computer Science
39;; (217) 333-6733 University of Illinois at Urbana-Champaign
40;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
41;; Urbana, Illinois 61801
42
43;;; Code: 33;;; Code:
44 34
45(defvar date) 35(defvar date)
diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el
index b7f1748ff34..5f2c89e82c5 100644
--- a/lisp/calendar/cal-x.el
+++ b/lisp/calendar/cal-x.el
@@ -31,12 +31,6 @@
31;; This collection of functions implements dedicated frames in X for 31;; This collection of functions implements dedicated frames in X for
32;; calendar.el. 32;; calendar.el.
33 33
34;; Comments, corrections, and improvements should be sent to
35;; Edward M. Reingold Department of Computer Science
36;; (217) 333-6733 University of Illinois at Urbana-Champaign
37;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
38;; Urbana, Illinois 61801
39
40;;; Code: 34;;; Code:
41 35
42(require 'calendar) 36(require 'calendar)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index fa7a68acd30..03f9a95fe37 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -90,12 +90,6 @@
90;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and 90;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
91;; the message BODY containing your mailing address (snail). 91;; the message BODY containing your mailing address (snail).
92 92
93;; Comments, corrections, and improvements should be sent to
94;; Edward M. Reingold Department of Computer Science
95;; (217) 333-6733 University of Illinois at Urbana-Champaign
96;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
97;; Urbana, Illinois 61801
98
99;;; Code: 93;;; Code:
100 94
101(defvar displayed-month) 95(defvar displayed-month)
@@ -301,6 +295,11 @@ calendar."
301 :type 'boolean 295 :type 'boolean
302 :group 'holidays) 296 :group 'holidays)
303 297
298(defcustom calendar-mode-hook nil
299 "Hook run when entering `calendar-mode'."
300 :type 'hook
301 :group 'calendar-hooks)
302
304;;;###autoload 303;;;###autoload
305(defcustom calendar-load-hook nil 304(defcustom calendar-load-hook nil
306 "List of functions to be called after the calendar is first loaded. 305 "List of functions to be called after the calendar is first loaded.
@@ -624,6 +623,10 @@ See the documentation of `diary-date-forms' for an explanation."
624 (choice symbol regexp))))) 623 (choice symbol regexp)))))
625 :group 'diary) 624 :group 'diary)
626 625
626(autoload 'diary-font-lock-keywords "diary-lib")
627(autoload 'diary-live-p "diary-lib")
628(defvar diary-font-lock-keywords)
629
627(defcustom diary-date-forms 630(defcustom diary-date-forms
628 (if european-calendar-style 631 (if european-calendar-style
629 european-date-diary-pattern 632 european-date-diary-pattern
@@ -661,6 +664,15 @@ a portion of the first word of the diary entry."
661 (repeat (list :inline t :format "%v" 664 (repeat (list :inline t :format "%v"
662 (symbol :tag "Keyword") 665 (symbol :tag "Keyword")
663 (choice symbol regexp))))) 666 (choice symbol regexp)))))
667 :initialize 'custom-initialize-default
668 :set (lambda (symbol value)
669 (unless (equal value (eval symbol))
670 (custom-set-default symbol value)
671 (setq diary-font-lock-keywords (diary-font-lock-keywords))
672 ;; Need to redraw not just to get new font-locking, but also
673 ;; to pick up any newly recognized entries.
674 (and (diary-live-p)
675 (diary))))
664 :group 'diary) 676 :group 'diary)
665 677
666;;;###autoload 678;;;###autoload
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 72620a7f9bb..df01a508031 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -29,12 +29,6 @@
29;; This collection of functions implements the diary features as described 29;; This collection of functions implements the diary features as described
30;; in calendar.el. 30;; in calendar.el.
31 31
32;; Comments, corrections, and improvements should be sent to
33;; Edward M. Reingold Department of Computer Science
34;; (217) 333-6733 University of Illinois at Urbana-Champaign
35;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
36;; Urbana, Illinois 61801
37
38;;; Code: 32;;; Code:
39 33
40(require 'calendar) 34(require 'calendar)
@@ -263,6 +257,16 @@ search."
263 (setq attr-list (cdr attr-list))))) 257 (setq attr-list (cdr attr-list)))))
264 (list entry ret-attr)))) 258 (list entry ret-attr))))
265 259
260(defun diary-set-maybe-redraw (symbol value)
261 "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
262Redraws the diary if it is being displayed (note this is not the same as
263just visiting the `diary-file'), and SYMBOL's value is to be changed."
264 (let ((oldvalue (eval symbol)))
265 (custom-set-default symbol value)
266 (and (not (equal value oldvalue))
267 (diary-live-p)
268 ;; Note this assumes diary was called without prefix arg.
269 (diary))))
266 270
267;; This can be removed once the kill/yank treatment of invisible text 271;; This can be removed once the kill/yank treatment of invisible text
268;; (see etc/TODO) is fixed. -- gm 272;; (see etc/TODO) is fixed. -- gm
@@ -292,27 +296,22 @@ Only used if `diary-header-line-flag' is non-nil."
292 296
293(defvar diary-saved-point) ; internal 297(defvar diary-saved-point) ; internal
294 298
299;; The first version of this also checked for diary-selective-display
300;; in the non-fancy case. This was an attempt to distinguish between
301;; displaying the diary and just visiting the diary file. However,
302;; when using fancy diary, calling diary when there are no entries to
303;; display does not create the fancy buffer, nor does it switch on
304;; selective-display in the diary buffer. This means some
305;; customizations will not take effect, eg:
306;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00466.html
307;; So the check for selective-display was dropped. This means the
308;; diary will be displayed if one customizes a diary variable while
309;; just visiting the diary-file. This is i) unlikely, and ii) no great loss.
295(defun diary-live-p () 310(defun diary-live-p ()
296 "Return non-nil if the diary is being displayed. 311 "Return non-nil if the diary is being displayed."
297This is not the same as just visiting the `diary-file'."
298 (or (get-buffer fancy-diary-buffer) 312 (or (get-buffer fancy-diary-buffer)
299 (when diary-file 313 (and diary-file
300 (let ((dbuff (find-buffer-visiting 314 (find-buffer-visiting (substitute-in-file-name diary-file)))))
301 (substitute-in-file-name diary-file))))
302 (when dbuff
303 (with-current-buffer dbuff
304 diary-selective-display))))))
305
306(defun diary-set-maybe-redraw (symbol value)
307 "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
308Redraws the diary if it is being displayed (note this is not the same as
309just visiting the `diary-file'), and SYMBOL's value is to be changed."
310 (let ((oldvalue (eval symbol)))
311 (custom-set-default symbol value)
312 (and (not (equal value oldvalue))
313 (diary-live-p)
314 ;; Note this assumes diary was called without prefix arg.
315 (diary))))
316 315
317(defcustom number-of-diary-entries 1 316(defcustom number-of-diary-entries 1
318 "Specifies how many days of diary entries are to be displayed initially. 317 "Specifies how many days of diary entries are to be displayed initially.
@@ -1990,51 +1989,53 @@ names."
1990(eval-when-compile (require 'cal-hebrew) 1989(eval-when-compile (require 'cal-hebrew)
1991 (require 'cal-islam)) 1990 (require 'cal-islam))
1992 1991
1993(defvar diary-font-lock-keywords 1992(defun diary-font-lock-keywords ()
1994 (append 1993 "Return a value for the variable `diary-font-lock-keywords'."
1995 (diary-font-lock-date-forms calendar-month-name-array 1994 (append
1996 nil calendar-month-abbrev-array) 1995 (diary-font-lock-date-forms calendar-month-name-array
1997 (when (or (memq 'mark-hebrew-diary-entries 1996 nil calendar-month-abbrev-array)
1998 nongregorian-diary-marking-hook) 1997 (when (or (memq 'mark-hebrew-diary-entries
1999 (memq 'list-hebrew-diary-entries 1998 nongregorian-diary-marking-hook)
2000 nongregorian-diary-listing-hook)) 1999 (memq 'list-hebrew-diary-entries
2001 (require 'cal-hebrew) 2000 nongregorian-diary-listing-hook))
2002 (diary-font-lock-date-forms 2001 (require 'cal-hebrew)
2003 calendar-hebrew-month-name-array-leap-year 2002 (diary-font-lock-date-forms
2004 hebrew-diary-entry-symbol)) 2003 calendar-hebrew-month-name-array-leap-year
2005 (when (or (memq 'mark-islamic-diary-entries 2004 hebrew-diary-entry-symbol))
2006 nongregorian-diary-marking-hook) 2005 (when (or (memq 'mark-islamic-diary-entries
2007 (memq 'list-islamic-diary-entries 2006 nongregorian-diary-marking-hook)
2008 nongregorian-diary-listing-hook)) 2007 (memq 'list-islamic-diary-entries
2009 (require 'cal-islam) 2008 nongregorian-diary-listing-hook))
2010 (diary-font-lock-date-forms 2009 (require 'cal-islam)
2011 calendar-islamic-month-name-array 2010 (diary-font-lock-date-forms
2012 islamic-diary-entry-symbol)) 2011 calendar-islamic-month-name-array
2013 (list 2012 islamic-diary-entry-symbol))
2014 (cons 2013 (list
2015 (concat "^" (regexp-quote diary-include-string) ".*$") 2014 (cons
2016 'font-lock-keyword-face) 2015 (concat "^" (regexp-quote diary-include-string) ".*$")
2017 (cons 2016 'font-lock-keyword-face)
2018 (concat "^" (regexp-quote diary-nonmarking-symbol) 2017 (cons
2019 "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)") 2018 (concat "^" (regexp-quote diary-nonmarking-symbol)
2020 '(1 font-lock-reference-face)) 2019 "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)")
2021 (cons 2020 '(1 font-lock-reference-face))
2022 (concat "^" (regexp-quote diary-nonmarking-symbol)) 2021 (cons
2023 'font-lock-reference-face) 2022 (concat "^" (regexp-quote diary-nonmarking-symbol))
2024 (cons 2023 'font-lock-reference-face)
2025 (concat "^" (regexp-quote diary-nonmarking-symbol) 2024 (cons
2026 "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)") 2025 (concat "^" (regexp-quote diary-nonmarking-symbol)
2027 '(1 font-lock-reference-face)) 2026 "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)")
2028 (cons 2027 '(1 font-lock-reference-face))
2029 (concat "^" (regexp-quote diary-nonmarking-symbol) 2028 (cons
2030 "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)") 2029 (concat "^" (regexp-quote diary-nonmarking-symbol)
2031 '(1 font-lock-reference-face)) 2030 "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)")
2032 '(diary-font-lock-sexps . font-lock-keyword-face) 2031 '(1 font-lock-reference-face))
2033 `(,(concat "\\(^\\|\\s-\\)" 2032 '(diary-font-lock-sexps . font-lock-keyword-face)
2034 diary-time-regexp "\\(-" diary-time-regexp "\\)?") 2033 `(,(concat "\\(^\\|\\s-\\)"
2035 . 'diary-time))) 2034 diary-time-regexp "\\(-" diary-time-regexp "\\)?")
2036 "Forms to highlight in `diary-mode'.") 2035 . 'diary-time))))
2037 2036
2037(defvar diary-font-lock-keywords (diary-font-lock-keywords)
2038 "Forms to highlight in `diary-mode'.")
2038 2039
2039;; Following code from Dave Love <fx@gnu.org>. 2040;; Following code from Dave Love <fx@gnu.org>.
2040;; Import Outlook-format appointments from mail messages in Gnus or 2041;; Import Outlook-format appointments from mail messages in Gnus or
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 6f53a47221a..fc6e6315916 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -45,12 +45,6 @@
45;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and 45;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
46;; the message BODY containing your mailing address (snail). 46;; the message BODY containing your mailing address (snail).
47 47
48;; Comments, corrections, and improvements should be sent to
49;; Edward M. Reingold Department of Computer Science
50;; (217) 333-6733 University of Illinois at Urbana-Champaign
51;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
52;; Urbana, Illinois 61801
53
54;;; Code: 48;;; Code:
55 49
56(defvar displayed-month) 50(defvar displayed-month)
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index 33da7cef8e0..8aa062d69c3 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -43,12 +43,6 @@
43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 43;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
44;; and Nachum Dershowitz, Cambridge University Press (2001). 44;; and Nachum Dershowitz, Cambridge University Press (2001).
45 45
46;; Comments, corrections, and improvements should be sent to
47;; Edward M. Reingold Department of Computer Science
48;; (217) 333-6733 University of Illinois at Urbana-Champaign
49;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
50;; Urbana, Illinois 61801
51
52;;; Code: 46;;; Code:
53 47
54(defvar date) 48(defvar date)
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index c4a8352a8d8..4281c0e1307 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -53,12 +53,6 @@
53;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold 53;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
54;; and Nachum Dershowitz, Cambridge University Press (2001). 54;; and Nachum Dershowitz, Cambridge University Press (2001).
55 55
56;; Comments, corrections, and improvements should be sent to
57;; Edward M. Reingold Department of Computer Science
58;; (217) 333-6733 University of Illinois at Urbana-Champaign
59;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
60;; Urbana, Illinois 61801
61
62;;; Code: 56;;; Code:
63 57
64(defvar date) 58(defvar date)
diff --git a/lisp/comint.el b/lisp/comint.el
index ee102c423b4..7d81f357e22 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -1502,6 +1502,7 @@ Similarly for Soar, Scheme, etc."
1502 ;; Note that the input string does not include its terminal newline. 1502 ;; Note that the input string does not include its terminal newline.
1503 (let ((proc (get-buffer-process (current-buffer)))) 1503 (let ((proc (get-buffer-process (current-buffer))))
1504 (if (not proc) (error "Current buffer has no process") 1504 (if (not proc) (error "Current buffer has no process")
1505 (widen)
1505 (let* ((pmark (process-mark proc)) 1506 (let* ((pmark (process-mark proc))
1506 (intxt (if (>= (point) (marker-position pmark)) 1507 (intxt (if (>= (point) (marker-position pmark))
1507 (progn (if comint-eol-on-send (end-of-line)) 1508 (progn (if comint-eol-on-send (end-of-line))
@@ -1646,8 +1647,8 @@ and moves the prompt overlay."
1646 (let ((inhibit-read-only t) 1647 (let ((inhibit-read-only t)
1647 (inhibit-modification-hooks t)) 1648 (inhibit-modification-hooks t))
1648 (add-text-properties (overlay-start comint-last-prompt-overlay) 1649 (add-text-properties (overlay-start comint-last-prompt-overlay)
1649 (overlay-end comint-last-prompt-overlay) 1650 (overlay-end comint-last-prompt-overlay)
1650 (overlay-properties comint-last-prompt-overlay))))) 1651 (overlay-properties comint-last-prompt-overlay)))))
1651 1652
1652(defun comint-carriage-motion (start end) 1653(defun comint-carriage-motion (start end)
1653 "Interpret carriage control characters in the region from START to END. 1654 "Interpret carriage control characters in the region from START to END.
@@ -2593,7 +2594,7 @@ its response can be seen."
2593 (proc-mark (process-mark proc))) 2594 (proc-mark (process-mark proc)))
2594 (display-buffer proc-buf) 2595 (display-buffer proc-buf)
2595 (set-buffer proc-buf) ; but it's not the selected *window* 2596 (set-buffer proc-buf) ; but it's not the selected *window*
2596 (let ((proc-win (get-buffer-window proc-buf)) 2597 (let ((proc-win (get-buffer-window proc-buf 0))
2597 (proc-pt (marker-position proc-mark))) 2598 (proc-pt (marker-position proc-mark)))
2598 (comint-send-string proc str) ; send the query 2599 (comint-send-string proc str) ; send the query
2599 (accept-process-output proc) ; wait for some output 2600 (accept-process-output proc) ; wait for some output
@@ -2959,7 +2960,7 @@ See also `comint-dynamic-complete-filename'."
2959(defun comint-dynamic-list-completions (completions) 2960(defun comint-dynamic-list-completions (completions)
2960 "List in help buffer sorted COMPLETIONS. 2961 "List in help buffer sorted COMPLETIONS.
2961Typing SPC flushes the help buffer." 2962Typing SPC flushes the help buffer."
2962 (let ((window (get-buffer-window "*Completions*"))) 2963 (let ((window (get-buffer-window "*Completions*" 0)))
2963 (setq completions (sort completions 'string-lessp)) 2964 (setq completions (sort completions 'string-lessp))
2964 (if (and (eq last-command this-command) 2965 (if (and (eq last-command this-command)
2965 window (window-live-p window) (window-buffer window) 2966 window (window-live-p window) (window-buffer window)
diff --git a/lisp/compare-w.el b/lisp/compare-w.el
index e81c6cd3bc2..19ad84e11c0 100644
--- a/lisp/compare-w.el
+++ b/lisp/compare-w.el
@@ -32,7 +32,7 @@
32 32
33;;; Code: 33;;; Code:
34 34
35(defgroup compare-w nil 35(defgroup compare-windows nil
36 "Compare text between windows." 36 "Compare text between windows."
37 :prefix "compare-" 37 :prefix "compare-"
38 :group 'tools) 38 :group 'tools)
@@ -52,18 +52,18 @@ any text before that point.
52If the function returns the same value for both windows, then the 52If the function returns the same value for both windows, then the
53whitespace is considered to match, and is skipped." 53whitespace is considered to match, and is skipped."
54 :type '(choice regexp function) 54 :type '(choice regexp function)
55 :group 'compare-w) 55 :group 'compare-windows)
56 56
57(defcustom compare-ignore-whitespace nil 57(defcustom compare-ignore-whitespace nil
58 "*Non-nil means `compare-windows' ignores whitespace." 58 "*Non-nil means `compare-windows' ignores whitespace."
59 :type 'boolean 59 :type 'boolean
60 :group 'compare-w 60 :group 'compare-windows
61 :version "22.1") 61 :version "22.1")
62 62
63(defcustom compare-ignore-case nil 63(defcustom compare-ignore-case nil
64 "*Non-nil means `compare-windows' ignores case differences." 64 "*Non-nil means `compare-windows' ignores case differences."
65 :type 'boolean 65 :type 'boolean
66 :group 'compare-w) 66 :group 'compare-windows)
67 67
68(defcustom compare-windows-sync 'compare-windows-sync-default-function 68(defcustom compare-windows-sync 'compare-windows-sync-default-function
69 "*Function or regexp that is used to synchronize points in two 69 "*Function or regexp that is used to synchronize points in two
@@ -87,10 +87,11 @@ regexp containing some field separator or a newline, depending on
87the nature of the difference units separator. The variable can 87the nature of the difference units separator. The variable can
88be made buffer-local. 88be made buffer-local.
89 89
90If the value of this variable is `nil', then function `ding' is 90If the value of this variable is `nil' (option \"No sync\"), then
91called to beep or flash the screen when points are mismatched." 91no synchronization is performed, and the function `ding' is called
92 :type '(choice regexp function) 92to beep or flash the screen when points are mismatched."
93 :group 'compare-w 93 :type '(choice function regexp (const :tag "No sync" nil))
94 :group 'compare-windows
94 :version "22.1") 95 :version "22.1")
95 96
96(defcustom compare-windows-sync-string-size 32 97(defcustom compare-windows-sync-string-size 32
@@ -102,7 +103,7 @@ difference regions more coarse-grained.
102 103
103The default value 32 is good for the most cases." 104The default value 32 is good for the most cases."
104 :type 'integer 105 :type 'integer
105 :group 'compare-w 106 :group 'compare-windows
106 :version "22.1") 107 :version "22.1")
107 108
108(defcustom compare-windows-recenter nil 109(defcustom compare-windows-recenter nil
@@ -113,7 +114,7 @@ matching points side-by-side.
113The value `(-1 0)' is useful if windows are split vertically, 114The value `(-1 0)' is useful if windows are split vertically,
114and the value `((4) (4))' for horizontally split windows." 115and the value `((4) (4))' for horizontally split windows."
115 :type '(list sexp sexp) 116 :type '(list sexp sexp)
116 :group 'compare-w 117 :group 'compare-windows
117 :version "22.1") 118 :version "22.1")
118 119
119(defcustom compare-windows-highlight t 120(defcustom compare-windows-highlight t
@@ -125,13 +126,13 @@ out all highlighting later with the command `compare-windows-dehighlight'."
125 :type '(choice (const :tag "No highlighting" nil) 126 :type '(choice (const :tag "No highlighting" nil)
126 (const :tag "Persistent highlighting" persistent) 127 (const :tag "Persistent highlighting" persistent)
127 (other :tag "Highlight until next command" t)) 128 (other :tag "Highlight until next command" t))
128 :group 'compare-w 129 :group 'compare-windows
129 :version "22.1") 130 :version "22.1")
130 131
131(defface compare-windows 132(defface compare-windows
132 '((t :inherit lazy-highlight)) 133 '((t :inherit lazy-highlight))
133 "Face for highlighting of compare-windows difference regions." 134 "Face for highlighting of compare-windows difference regions."
134 :group 'compare-w 135 :group 'compare-windows
135 :version "22.1") 136 :version "22.1")
136 137
137(defvar compare-windows-overlay1 nil) 138(defvar compare-windows-overlay1 nil)
diff --git a/lisp/complete.el b/lisp/complete.el
index ce5094d1aef..b1bb36f9dfa 100644
--- a/lisp/complete.el
+++ b/lisp/complete.el
@@ -187,6 +187,17 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
187 187
188 (define-key global-map [remap lisp-complete-symbol] 'PC-lisp-complete-symbol))))) 188 (define-key global-map [remap lisp-complete-symbol] 'PC-lisp-complete-symbol)))))
189 189
190(defvar PC-do-completion-end nil
191 "Internal variable used by `PC-do-completion'.")
192
193(make-variable-buffer-local 'PC-do-completion-end)
194
195(defvar PC-goto-end nil
196 "Internal variable set in `PC-do-completion', used in
197`choose-completion-string-functions'.")
198
199(make-variable-buffer-local 'PC-goto-end)
200
190;;;###autoload 201;;;###autoload
191(define-minor-mode partial-completion-mode 202(define-minor-mode partial-completion-mode
192 "Toggle Partial Completion mode. 203 "Toggle Partial Completion mode.
@@ -239,7 +250,16 @@ second TAB brings up the `*Completions*' buffer."
239 (if partial-completion-mode 'add-hook 'remove-hook) 250 (if partial-completion-mode 'add-hook 'remove-hook)
240 'choose-completion-string-functions 251 'choose-completion-string-functions
241 (lambda (choice buffer mini-p base-size) 252 (lambda (choice buffer mini-p base-size)
242 (if mini-p (goto-char (point-max))) 253 ;; When completing M-: (lisp- ) with point before the ), it is
254 ;; not appropriate to go to point-max (unlike the filename case).
255 (if (and (not PC-goto-end)
256 mini-p)
257 (goto-char (point-max))
258 ;; Need a similar hack for the non-minibuffer-case -- gm.
259 (when PC-do-completion-end
260 (goto-char PC-do-completion-end)
261 (setq PC-do-completion-end nil)))
262 (setq PC-goto-end nil)
243 nil)) 263 nil))
244 ;; Build the env-completion and mapping table. 264 ;; Build the env-completion and mapping table.
245 (when (and partial-completion-mode (null PC-env-vars-alist)) 265 (when (and partial-completion-mode (null PC-env-vars-alist))
@@ -410,13 +430,19 @@ of `minibuffer-completion-table' and the minibuffer contents.")
410 (let ((result (try-completion string alist predicate))) 430 (let ((result (try-completion string alist predicate)))
411 (if (eq result t) string result))) 431 (if (eq result t) string result)))
412 432
413(defun PC-do-completion (&optional mode beg end) 433;; TODO document MODE magic...
434(defun PC-do-completion (&optional mode beg end goto-end)
435 "Internal function to do the work of partial completion.
436Text to be completed lies between BEG and END. Normally when
437replacing text in the minibuffer, this function replaces up to
438point-max (as is appropriate for completing a file name). If
439GOTO-END is non-nil, however, it instead replaces up to END."
414 (or beg (setq beg (minibuffer-prompt-end))) 440 (or beg (setq beg (minibuffer-prompt-end)))
415 (or end (setq end (point-max))) 441 (or end (setq end (point-max)))
416 (let* ((table minibuffer-completion-table) 442 (let* ((table minibuffer-completion-table)
417 (pred minibuffer-completion-predicate) 443 (pred minibuffer-completion-predicate)
418 (filename (funcall PC-completion-as-file-name-predicate)) 444 (filename (funcall PC-completion-as-file-name-predicate))
419 (dirname nil) ; non-nil only if a filename is being completed 445 (dirname nil) ; non-nil only if a filename is being completed
420 ;; The following used to be "(dirlength 0)" which caused the erasure of 446 ;; The following used to be "(dirlength 0)" which caused the erasure of
421 ;; the entire buffer text before `point' when inserting a completion 447 ;; the entire buffer text before `point' when inserting a completion
422 ;; into a buffer. 448 ;; into a buffer.
@@ -681,7 +707,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
681 (forward-char 1) 707 (forward-char 1)
682 (if (and (< (point) end) 708 (if (and (< (point) end)
683 (and (looking-at " ") 709 (and (looking-at " ")
684 (memq (aref prefix i) 710 (memq (aref prefix i)
685 PC-delims-list))) 711 PC-delims-list)))
686 ;; replace " " by the actual delimiter 712 ;; replace " " by the actual delimiter
687 (progn 713 (progn
@@ -689,12 +715,12 @@ of `minibuffer-completion-table' and the minibuffer contents.")
689 (insert (substring prefix i (1+ i)))) 715 (insert (substring prefix i (1+ i))))
690 ;; insert a new character 716 ;; insert a new character
691 (progn 717 (progn
692 (and filename (looking-at "\\*") 718 (and filename (looking-at "\\*")
693 (progn 719 (progn
694 (delete-char 1) 720 (delete-char 1)
695 (setq end (1- end)))) 721 (setq end (1- end))))
696 (setq improved t) 722 (setq improved t)
697 (insert (substring prefix i (1+ i))) 723 (insert (substring prefix i (1+ i)))
698 (setq end (1+ end))))) 724 (setq end (1+ end)))))
699 (setq i (1+ i))) 725 (setq i (1+ i)))
700 (or pt (setq pt (point))) 726 (or pt (setq pt (point)))
@@ -729,7 +755,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
729 755
730 ;; We changed it... would it be complete without the space? 756 ;; We changed it... would it be complete without the space?
731 (if (test-completion (buffer-substring 1 (1- end)) 757 (if (test-completion (buffer-substring 1 (1- end))
732 table pred) 758 table pred)
733 (delete-region (1- end) end))) 759 (delete-region (1- end) end)))
734 760
735 (if improved 761 (if improved
@@ -743,13 +769,30 @@ of `minibuffer-completion-table' and the minibuffer contents.")
743 (and completion-auto-help 769 (and completion-auto-help
744 (eq last-command this-command)) 770 (eq last-command this-command))
745 (eq mode 'help)) 771 (eq mode 'help))
746 (with-output-to-temp-buffer "*Completions*" 772 (let ((prompt-end (minibuffer-prompt-end)))
747 (display-completion-list (sort helpposs 'string-lessp)) 773 (with-output-to-temp-buffer "*Completions*"
748 (with-current-buffer standard-output 774 (display-completion-list (sort helpposs 'string-lessp))
749 ;; Record which part of the buffer we are completing 775 (setq PC-do-completion-end end
750 ;; so that choosing a completion from the list 776 PC-goto-end goto-end)
751 ;; knows how much old text to replace. 777 (with-current-buffer standard-output
752 (setq completion-base-size dirlength))) 778 ;; Record which part of the buffer we are completing
779 ;; so that choosing a completion from the list
780 ;; knows how much old text to replace.
781 ;; This was briefly nil in the non-dirname case.
782 ;; However, if one calls PC-lisp-complete-symbol
783 ;; on "(ne-f" with point on the hyphen, PC offers
784 ;; all completions starting with "(ne", some of
785 ;; which do not match the "-f" part (maybe it
786 ;; should not, but it does). In such cases,
787 ;; completion gets confused trying to figure out
788 ;; how much to replace, so we tell it explicitly
789 ;; (ie, the number of chars in the buffer before beg).
790 ;;
791 ;; Note that choose-completion-string-functions
792 ;; plays around with point.
793 (setq completion-base-size (if dirname
794 dirlength
795 (- beg prompt-end))))))
753 (PC-temp-minibuffer-message " [Next char not unique]")) 796 (PC-temp-minibuffer-message " [Next char not unique]"))
754 nil))))) 797 nil)))))
755 798
@@ -799,6 +842,10 @@ of `minibuffer-completion-table' and the minibuffer contents.")
799 (setq quit-flag nil 842 (setq quit-flag nil
800 unread-command-events '(7)))))))) 843 unread-command-events '(7))))))))
801 844
845;; Does not need to be buffer-local (?) because only used when one
846;; PC-l-c-s immediately follows another.
847(defvar PC-lisp-complete-end nil
848 "Internal variable used by `PC-lisp-complete-symbol'.")
802 849
803(defun PC-lisp-complete-symbol () 850(defun PC-lisp-complete-symbol ()
804 "Perform completion on Lisp symbol preceding point. 851 "Perform completion on Lisp symbol preceding point.
@@ -811,6 +858,12 @@ Otherwise, all symbols with function definitions, values
811or properties are considered." 858or properties are considered."
812 (interactive) 859 (interactive)
813 (let* ((end (point)) 860 (let* ((end (point))
861 ;; To complete the word under point, rather than just the portion
862 ;; before point, use this:
863;;; (save-excursion
864;;; (with-syntax-table lisp-mode-syntax-table
865;;; (forward-sexp 1)
866;;; (point))))
814 (beg (save-excursion 867 (beg (save-excursion
815 (with-syntax-table lisp-mode-syntax-table 868 (with-syntax-table lisp-mode-syntax-table
816 (backward-sexp 1) 869 (backward-sexp 1)
@@ -825,7 +878,39 @@ or properties are considered."
825 (or (boundp sym) (fboundp sym) 878 (or (boundp sym) (fboundp sym)
826 (symbol-plist sym)))))) 879 (symbol-plist sym))))))
827 (PC-not-minibuffer t)) 880 (PC-not-minibuffer t))
828 (PC-do-completion nil beg end))) 881 ;; http://lists.gnu.org/archive/html/emacs-devel/2007-03/msg01211.html
882 ;;
883 ;; This deals with cases like running PC-l-c-s on "M-: (n-f".
884 ;; The first call to PC-l-c-s expands this to "(ne-f", and moves
885 ;; point to the hyphen [1]. If one calls PC-l-c-s immediately after,
886 ;; then without the last-command check, one is offered all
887 ;; completions of "(ne", which is presumably not what one wants.
888 ;;
889 ;; This is arguably (at least, it seems to be the existing intended
890 ;; behaviour) what one _does_ want if point has been explicitly
891 ;; positioned on the hyphen. Note that if PC-do-completion (qv) binds
892 ;; completion-base-size to nil, then completion does not replace the
893 ;; correct amount of text in such cases.
894 ;;
895 ;; Neither of these problems occur when using PC for filenames in the
896 ;; minibuffer, because in that case PC-do-completion is called without
897 ;; an explicit value for END, and so uses (point-max). This is fine for
898 ;; a filename, because the end of the filename must be at the end of
899 ;; the minibuffer. The same is not true for lisp symbols.
900 ;;
901 ;; [1] An alternate fix would be to not move point to the hyphen
902 ;; in such cases, but that would make the behaviour different from
903 ;; that for filenames. It seems PC moves point to the site of the
904 ;; first difference between the possible completions.
905 ;;
906 ;; Alternatively alternatively, maybe end should be computed in
907 ;; the same way as beg. That would change the behaviour though.
908 (if (equal last-command 'PC-lisp-complete-symbol)
909 (PC-do-completion nil beg PC-lisp-complete-end t)
910 (if PC-lisp-complete-end
911 (move-marker PC-lisp-complete-end end)
912 (setq PC-lisp-complete-end (copy-marker end t)))
913 (PC-do-completion nil beg end t))))
829 914
830(defun PC-complete-as-file-name () 915(defun PC-complete-as-file-name ()
831 "Perform completion on file names preceding point. 916 "Perform completion on file names preceding point.
@@ -1026,10 +1111,11 @@ absolute rather than relative to some directory on the SEARCH-PATH."
1026 (if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0)) 1111 (if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
1027 (let* ((string (ad-get-arg 0)) 1112 (let* ((string (ad-get-arg 0))
1028 (action (ad-get-arg 2)) 1113 (action (ad-get-arg 2))
1029 (name (substring string (match-beginning 1) (match-end 1))) 1114 (name (match-string 1 string))
1030 (str2 (substring string (match-beginning 0))) 1115 (str2 (substring string (match-beginning 0)))
1031 (completion-table 1116 (completion-table
1032 (mapcar (lambda (x) (format "<%s>" x)) 1117 (mapcar (lambda (x)
1118 (format (if (string-match "/\\'" x) "<%s" "<%s>") x))
1033 (PC-include-file-all-completions 1119 (PC-include-file-all-completions
1034 name (PC-include-file-path))))) 1120 name (PC-include-file-path)))))
1035 (setq ad-return-value 1121 (setq ad-return-value
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index d8fdf966374..4dae3bab018 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -422,7 +422,7 @@
422 :group 'development) 422 :group 'development)
423 423
424(defgroup minibuffer nil 424(defgroup minibuffer nil
425 "Controling the behavior of the minibuffer." 425 "Controlling the behavior of the minibuffer."
426 :link '(custom-manual "(emacs)Minibuffer") 426 :link '(custom-manual "(emacs)Minibuffer")
427 :group 'environment) 427 :group 'environment)
428 428
@@ -443,7 +443,7 @@
443 :group 'environment) 443 :group 'environment)
444 444
445(defgroup auto-save nil 445(defgroup auto-save nil
446 "Preventing accidential loss of data." 446 "Preventing accidental loss of data."
447 :group 'files) 447 :group 'files)
448 448
449(defgroup processes-basics nil 449(defgroup processes-basics nil
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index b7aa673f1b8..a4f5d580718 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -338,7 +338,11 @@ since it could result in memory overflow and make Emacs crash."
338 (split-height-threshold windows integer) 338 (split-height-threshold windows integer)
339 (window-min-height windows integer) 339 (window-min-height windows integer)
340 (window-min-width windows integer) 340 (window-min-width windows integer)
341 (scroll-preserve-screen-position windows boolean) 341 (scroll-preserve-screen-position
342 windows (choice
343 (const :tag "Off (nil)" :value nil)
344 (const :tag "Full screen (t)" :value t)
345 (other :tag "Always" 1)))
342 (display-buffer-reuse-frames windows boolean "21.1") 346 (display-buffer-reuse-frames windows boolean "21.1")
343 ;; xdisp.c 347 ;; xdisp.c
344 (scroll-step windows integer) 348 (scroll-step windows integer)
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 4328b8e3839..92f6a448574 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -45,9 +45,9 @@
45;; "Saving Emacs Sessions" in the GNU Emacs Manual. 45;; "Saving Emacs Sessions" in the GNU Emacs Manual.
46 46
47;; When the desktop module is loaded, the function `desktop-kill' is 47;; When the desktop module is loaded, the function `desktop-kill' is
48;; added to the `kill-emacs-hook'. This function is responsible for 48;; added to the `kill-emacs-hook'. This function is responsible for
49;; saving the desktop when Emacs is killed. Furthermore an anonymous 49;; saving the desktop when Emacs is killed. Furthermore an anonymous
50;; function is added to the `after-init-hook'. This function is 50;; function is added to the `after-init-hook'. This function is
51;; responsible for loading the desktop when Emacs is started. 51;; responsible for loading the desktop when Emacs is started.
52 52
53;; Special handling. 53;; Special handling.
@@ -55,12 +55,12 @@
55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers' 55;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers'
56;; are supplied to handle special major and minor modes respectively. 56;; are supplied to handle special major and minor modes respectively.
57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions 57;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions
58;; to restore a desktop buffer. Elements must have the form 58;; to restore a desktop buffer. Elements must have the form
59;; 59;;
60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 60;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
61;; 61;;
62;; Functions listed are called by `desktop-create-buffer' when `desktop-read' 62;; Functions listed are called by `desktop-create-buffer' when `desktop-read'
63;; evaluates the desktop file. Buffers with a major mode not specified here, 63;; evaluates the desktop file. Buffers with a major mode not specified here,
64;; are restored by the default handler `desktop-restore-file-buffer'. 64;; are restored by the default handler `desktop-restore-file-buffer'.
65;; `desktop-minor-mode-handlers' is an alist of functions to restore 65;; `desktop-minor-mode-handlers' is an alist of functions to restore
66;; non-standard minor modes. Elements must have the form 66;; non-standard minor modes. Elements must have the form
@@ -85,7 +85,7 @@
85;; '(bar-mode . bar-desktop-restore)) 85;; '(bar-mode . bar-desktop-restore))
86 86
87;; in the module itself, and make shure that the mode function is 87;; in the module itself, and make shure that the mode function is
88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and 88;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
89;; `desktop-minor-mode-handlers' for more info. 89;; `desktop-minor-mode-handlers' for more info.
90 90
91;; Minor modes. 91;; Minor modes.
@@ -100,7 +100,7 @@
100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers' 100;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers'
101;; are used to handle non-conventional minor modes. `desktop-save' uses 101;; are used to handle non-conventional minor modes. `desktop-save' uses
102;; `desktop-minor-mode-table' to map minor mode variables to minor mode 102;; `desktop-minor-mode-table' to map minor mode variables to minor mode
103;; functions before writing `desktop-minor-modes'. If a minor mode has a 103;; functions before writing `desktop-minor-modes'. If a minor mode has a
104;; variable name that is different form its function name, an entry 104;; variable name that is different form its function name, an entry
105 105
106;; (NAME RESTORE-FUNCTION) 106;; (NAME RESTORE-FUNCTION)
@@ -619,8 +619,7 @@ QUOTE may be `may' (value may be quoted),
619 (setq newlist (cons q.txt newlist))) 619 (setq newlist (cons q.txt newlist)))
620 (setq p (cdr p))) 620 (setq p (cdr p)))
621 (if p 621 (if p
622 (let ((last (desktop-internal-v2s p)) 622 (let ((last (desktop-internal-v2s p)))
623 (el (car newlist)))
624 (or anynil (setq anynil (null (car last)))) 623 (or anynil (setq anynil (null (car last))))
625 (or anynil 624 (or anynil
626 (setq newlist (cons '(must . ".") newlist))) 625 (setq newlist (cons '(must . ".") newlist)))
@@ -782,7 +781,8 @@ See also `desktop-base-file-name'."
782 ";; Desktop file format version " desktop-file-version "\n" 781 ";; Desktop file format version " desktop-file-version "\n"
783 ";; Emacs version " emacs-version "\n\n" 782 ";; Emacs version " emacs-version "\n\n"
784 ";; Global section:\n") 783 ";; Global section:\n")
785 (mapc (function desktop-outvar) desktop-globals-to-save) 784 (dolist (varspec desktop-globals-to-save)
785 (desktop-outvar varspec))
786 (if (memq 'kill-ring desktop-globals-to-save) 786 (if (memq 'kill-ring desktop-globals-to-save)
787 (insert 787 (insert
788 "(setq kill-ring-yank-pointer (nthcdr " 788 "(setq kill-ring-yank-pointer (nthcdr "
@@ -790,22 +790,20 @@ See also `desktop-base-file-name'."
790 " kill-ring))\n")) 790 " kill-ring))\n"))
791 791
792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") 792 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
793 (mapc #'(lambda (l) 793 (dolist (l info)
794 (when (apply 'desktop-save-buffer-p l) 794 (when (apply 'desktop-save-buffer-p l)
795 (insert "(" 795 (insert "("
796 (if (or (not (integerp eager)) 796 (if (or (not (integerp eager))
797 (unless (zerop eager) 797 (unless (zerop eager)
798 (setq eager (1- eager)) 798 (setq eager (1- eager))
799 t)) 799 t))
800 "desktop-create-buffer" 800 "desktop-create-buffer"
801 "desktop-append-buffer-args") 801 "desktop-append-buffer-args")
802 " " 802 " "
803 desktop-file-version) 803 desktop-file-version)
804 (mapc #'(lambda (e) 804 (dolist (e l)
805 (insert "\n " (desktop-value-to-string e))) 805 (insert "\n " (desktop-value-to-string e)))
806 l) 806 (insert ")\n\n")))
807 (insert ")\n\n")))
808 info)
809 (setq default-directory dirname) 807 (setq default-directory dirname)
810 (let ((coding-system-for-write 'emacs-mule)) 808 (let ((coding-system-for-write 'emacs-mule))
811 (write-region (point-min) (point-max) filename nil 'nomessage))))) 809 (write-region (point-min) (point-max) filename nil 'nomessage)))))
@@ -941,14 +939,13 @@ directory DIRNAME."
941 (desktop-clear) 939 (desktop-clear)
942 (desktop-read desktop-dirname)) 940 (desktop-read desktop-dirname))
943 941
942(defvar desktop-buffer-major-mode)
943(defvar desktop-buffer-locals)
944;; ---------------------------------------------------------------------------- 944;; ----------------------------------------------------------------------------
945(defun desktop-restore-file-buffer (desktop-buffer-file-name 945(defun desktop-restore-file-buffer (desktop-buffer-file-name
946 desktop-buffer-name 946 desktop-buffer-name
947 desktop-buffer-misc) 947 desktop-buffer-misc)
948 "Restore a file buffer." 948 "Restore a file buffer."
949 (eval-when-compile ; Just to silence the byte compiler
950 (defvar desktop-buffer-major-mode)
951 (defvar desktop-buffer-locals))
952 (if desktop-buffer-file-name 949 (if desktop-buffer-file-name
953 (if (or (file-exists-p desktop-buffer-file-name) 950 (if (or (file-exists-p desktop-buffer-file-name)
954 (let ((msg (format "Desktop: File \"%s\" no longer exists." 951 (let ((msg (format "Desktop: File \"%s\" no longer exists."
@@ -985,8 +982,12 @@ directory DIRNAME."
985;; called from Desktop file only. 982;; called from Desktop file only.
986 983
987;; Just to silence the byte compiler. 984;; Just to silence the byte compiler.
988(eval-when-compile 985
989 (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read' 986(defvar desktop-first-buffer) ; Dynamically bound in `desktop-read'
987
988;; Bound locally in `desktop-read'.
989(defvar desktop-buffer-ok-count)
990(defvar desktop-buffer-fail-count)
990 991
991(defun desktop-create-buffer 992(defun desktop-create-buffer
992 (desktop-file-version 993 (desktop-file-version
@@ -1000,10 +1001,6 @@ directory DIRNAME."
1000 desktop-buffer-misc 1001 desktop-buffer-misc
1001 &optional 1002 &optional
1002 desktop-buffer-locals) 1003 desktop-buffer-locals)
1003 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
1004 (eval-when-compile
1005 (defvar desktop-buffer-ok-count)
1006 (defvar desktop-buffer-fail-count))
1007 ;; To make desktop files with relative file names possible, we cannot 1004 ;; To make desktop files with relative file names possible, we cannot
1008 ;; allow `default-directory' to change. Therefore we save current buffer. 1005 ;; allow `default-directory' to change. Therefore we save current buffer.
1009 (save-current-buffer 1006 (save-current-buffer
@@ -1045,21 +1042,22 @@ directory DIRNAME."
1045 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible 1042 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
1046 (auto-fill-mode 0)) 1043 (auto-fill-mode 0))
1047 (t 1044 (t
1048 (mapc #'(lambda (minor-mode) 1045 (dolist (minor-mode desktop-buffer-minor-modes)
1049 ;; Give minor mode module a chance to add a handler. 1046 ;; Give minor mode module a chance to add a handler.
1050 (desktop-load-file minor-mode) 1047 (desktop-load-file minor-mode)
1051 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers)))) 1048 (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
1052 (if handler 1049 (if handler
1053 (funcall handler desktop-buffer-locals) 1050 (funcall handler desktop-buffer-locals)
1054 (when (functionp minor-mode) 1051 (when (functionp minor-mode)
1055 (funcall minor-mode 1))))) 1052 (funcall minor-mode 1)))))))
1056 desktop-buffer-minor-modes))) 1053 ;; Even though point and mark are non-nil when written by
1057 ;; Even though point and mark are non-nil when written by `desktop-save', 1054 ;; `desktop-save', they may be modified by handlers wanting to set
1058 ;; they may be modified by handlers wanting to set point or mark themselves. 1055 ;; point or mark themselves.
1059 (when desktop-buffer-point 1056 (when desktop-buffer-point
1060 (goto-char 1057 (goto-char
1061 (condition-case err 1058 (condition-case err
1062 ;; Evaluate point. Thus point can be something like '(search-forward ... 1059 ;; Evaluate point. Thus point can be something like
1060 ;; '(search-forward ...
1063 (eval desktop-buffer-point) 1061 (eval desktop-buffer-point)
1064 (error (message "%s" (error-message-string err)) 1)))) 1062 (error (message "%s" (error-message-string err)) 1))))
1065 (when desktop-buffer-mark 1063 (when desktop-buffer-mark
@@ -1167,7 +1165,7 @@ If there are no buffers left to create, kill the timer."
1167;; functions are processed after `after-init-hook'. 1165;; functions are processed after `after-init-hook'.
1168(add-hook 1166(add-hook
1169 'after-init-hook 1167 'after-init-hook
1170 '(lambda () 1168 (lambda ()
1171 (let ((key "--no-desktop")) 1169 (let ((key "--no-desktop"))
1172 (when (member key command-line-args) 1170 (when (member key command-line-args)
1173 (setq command-line-args (delete key command-line-args)) 1171 (setq command-line-args (delete key command-line-args))
@@ -1176,5 +1174,5 @@ If there are no buffers left to create, kill the timer."
1176 1174
1177(provide 'desktop) 1175(provide 'desktop)
1178 1176
1179;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9 1177;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
1180;;; desktop.el ends here 1178;;; desktop.el ends here
diff --git a/lisp/dframe.el b/lisp/dframe.el
index a640540a46a..eda6d45bf21 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -354,9 +354,7 @@ CREATE-HOOK are hooks to run after creating a frame."
354 t)))) 354 t))))
355 ;; Enable mouse tracking in emacs 355 ;; Enable mouse tracking in emacs
356 (if dframe-track-mouse-function 356 (if dframe-track-mouse-function
357 (set (make-local-variable 'track-mouse) t)) ;this could be messy. 357 (set (make-local-variable 'track-mouse) t))) ;this could be messy.
358 ;; disable auto-show-mode for Emacs
359 (setq auto-show-mode nil))
360;;;; DISABLED: This causes problems for users with multiple frames. 358;;;; DISABLED: This causes problems for users with multiple frames.
361;;;; ;; Set this up special just for the passed in buffer 359;;;; ;; Set this up special just for the passed in buffer
362;;;; ;; Terminal minibuffer stuff does not require this. 360;;;; ;; Terminal minibuffer stuff does not require this.
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index 543e1bd6a39..3cd2fb37dbb 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -985,8 +985,7 @@ See `after-change-functions' for the meaning of BEG, END and LEN."
985(define-derived-mode diff-mode fundamental-mode "Diff" 985(define-derived-mode diff-mode fundamental-mode "Diff"
986 "Major mode for viewing/editing context diffs. 986 "Major mode for viewing/editing context diffs.
987Supports unified and context diffs as well as (to a lesser extent) 987Supports unified and context diffs as well as (to a lesser extent)
988normal diffs. If you edit the buffer manually, diff-mode will try 988normal diffs.
989to update the hunk headers for you on-the-fly.
990 989
991When the buffer is read-only, the ESC prefix is not necessary. 990When the buffer is read-only, the ESC prefix is not necessary.
992If you edit the buffer manually, diff-mode will try to update the hunk 991If you edit the buffer manually, diff-mode will try to update the hunk
@@ -996,9 +995,6 @@ You can also switch between context diff and unified diff with \\[diff-context->
996or vice versa with \\[diff-unified->context] and you can also reverse the direction of 995or vice versa with \\[diff-unified->context] and you can also reverse the direction of
997a diff with \\[diff-reverse-direction]. 996a diff with \\[diff-reverse-direction].
998 997
999When the buffer is read-only, the Meta- modifier is not necessary
1000to run the Diff mode commands:
1001
1002 \\{diff-mode-map}" 998 \\{diff-mode-map}"
1003 999
1004 (set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults) 1000 (set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 1a1cdd5a542..f5e6250b475 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -45,12 +45,8 @@
45;; (add-hook 'dired-load-hook 45;; (add-hook 'dired-load-hook
46;; (function (lambda () 46;; (function (lambda ()
47;; (load "dired-x") 47;; (load "dired-x")
48;; ;; Set global variables here. For example: 48;; ;; Set variables here. For example:
49;; ;; (setq dired-guess-shell-gnutar "gtar") 49;; ;; (setq dired-guess-shell-gnutar "gtar")
50;; )))
51;; (add-hook 'dired-mode-hook
52;; (function (lambda ()
53;; ;; Set buffer-local variables here. For example:
54;; ;; (dired-omit-mode 1) 50;; ;; (dired-omit-mode 1)
55;; ))) 51;; )))
56;; 52;;
@@ -1130,17 +1126,11 @@ You can set this variable in your ~/.emacs. For example, to add rules for
1130 :group 'dired-x 1126 :group 'dired-x
1131 :type '(alist :key-type regexp :value-type (repeat sexp))) 1127 :type '(alist :key-type regexp :value-type (repeat sexp)))
1132 1128
1133(defcustom dired-guess-shell-case-fold-search t
1134 "If non-nil, `dired-guess-shell-alist-default' and
1135`dired-guess-shell-alist-user' are matched case-insensitively."
1136 :group 'dired-x
1137 :type 'boolean)
1138
1139(defun dired-guess-default (files) 1129(defun dired-guess-default (files)
1140 "Guess a shell commands for FILES. Return command or list of commands. 1130 "Guess a shell commands for FILES. Return command or list of commands.
1141See `dired-guess-shell-alist-user'." 1131See `dired-guess-shell-alist-user'."
1142 1132
1143 (let* ((case-fold-search dired-guess-shell-case-fold-search) 1133 (let* ((case-fold-search t)
1144 ;; Prepend the user's alist to the default alist. 1134 ;; Prepend the user's alist to the default alist.
1145 (alist (append dired-guess-shell-alist-user 1135 (alist (append dired-guess-shell-alist-user
1146 dired-guess-shell-alist-default)) 1136 dired-guess-shell-alist-default))
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 2b523476a4f..df081539cf0 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -146,7 +146,7 @@ Return nil if URI is not a local file."
146 (substring uri (match-end 0)))))) 146 (substring uri (match-end 0))))))
147 (when (and f must-exist) 147 (when (and f must-exist)
148 (setq f (replace-regexp-in-string 148 (setq f (replace-regexp-in-string
149 "%[A-Z0-9][A-Z0-9]" 149 "%[A-Fa-f0-9][A-Fa-f0-9]"
150 (lambda (arg) 150 (lambda (arg)
151 (format "%c" (string-to-number (substring arg 1) 16))) 151 (format "%c" (string-to-number (substring arg 1) 16)))
152 f nil t)) 152 f nil t))
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index 94ba5def7b5..aeebb9c3d08 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -74,6 +74,9 @@ against the file name, and TYPE is nil for text, t for binary.")
74 (setq alist (cdr alist))) 74 (setq alist (cdr alist)))
75 found))) 75 found)))
76 76
77;; Silence compiler. Defined in src/buffer.c on DOS_NT.
78(defvar default-buffer-file-type)
79
77;; Don't check for untranslated file systems here. 80;; Don't check for untranslated file systems here.
78(defun find-buffer-file-type (filename) 81(defun find-buffer-file-type (filename)
79 (let ((match (find-buffer-file-type-match filename)) 82 (let ((match (find-buffer-file-type-match filename))
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index d93d80e0c8e..31464269567 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -688,5 +688,7 @@ the Emacs source tree, from which to build the file."
688 (authors root) 688 (authors root)
689 (write-file file))) 689 (write-file file)))
690 690
691(provide 'authors)
692
691;;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1 693;;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
692;;; authors.el ends here 694;;; authors.el ends here
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index dd7e042499c..2c9dc8e3314 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -545,8 +545,8 @@
545 (eq (car-safe (nth 2 last)) 'cdr) 545 (eq (car-safe (nth 2 last)) 'cdr)
546 (eq (cadr (nth 2 last)) var)))) 546 (eq (cadr (nth 2 last)) var))))
547 (progn 547 (progn
548 (byte-compile-warn "value returned by `%s' is not used" 548 (byte-compile-warn "value returned from %s is unused"
549 (prin1-to-string (car form))) 549 (prin1-to-string form))
550 nil))) 550 nil)))
551 (byte-compile-log " %s called for effect; deleted" fn) 551 (byte-compile-log " %s called for effect; deleted" fn)
552 ;; appending a nil here might not be necessary, but it can't hurt. 552 ;; appending a nil here might not be necessary, but it can't hurt.
@@ -557,8 +557,20 @@
557 ;; Otherwise, no args can be considered to be for-effect, 557 ;; Otherwise, no args can be considered to be for-effect,
558 ;; even if the called function is for-effect, because we 558 ;; even if the called function is for-effect, because we
559 ;; don't know anything about that function. 559 ;; don't know anything about that function.
560 (cons fn (mapcar 'byte-optimize-form (cdr form))))))) 560 (let ((args (mapcar #'byte-optimize-form (cdr form))))
561 561 (if (and (get fn 'pure)
562 (byte-optimize-all-constp args))
563 (list 'quote (apply fn (mapcar #'eval args)))
564 (cons fn args)))))))
565
566(defun byte-optimize-all-constp (list)
567 "Non-nil iff all elements of LIST satisfy `byte-compile-constp'."
568 (let ((constant t))
569 (while (and list constant)
570 (unless (byte-compile-constp (car list))
571 (setq constant nil))
572 (setq list (cdr list)))
573 constant))
562 574
563(defun byte-optimize-form (form &optional for-effect) 575(defun byte-optimize-form (form &optional for-effect)
564 "The source-level pass of the optimizer." 576 "The source-level pass of the optimizer."
@@ -1117,55 +1129,6 @@
1117 (byte-optimize-predicate form)) 1129 (byte-optimize-predicate form))
1118 form)) 1130 form))
1119 1131
1120(put 'concat 'byte-optimizer 'byte-optimize-pure-func)
1121(put 'symbol-name 'byte-optimizer 'byte-optimize-pure-func)
1122(put 'regexp-opt 'byte-optimizer 'byte-optimize-pure-func)
1123(put 'regexp-quote 'byte-optimizer 'byte-optimize-pure-func)
1124(put 'string-to-syntax 'byte-optimizer 'byte-optimize-pure-func)
1125(defun byte-optimize-pure-func (form)
1126 "Do constant folding for pure functions.
1127This assumes that the function will not have any side-effects and that
1128its return value depends solely on its arguments.
1129If the function can signal an error, this might change the semantics
1130of FORM by signaling the error at compile-time."
1131 (let ((args (cdr form))
1132 (constant t))
1133 (while (and args constant)
1134 (or (byte-compile-constp (car args))
1135 (setq constant nil))
1136 (setq args (cdr args)))
1137 (if constant
1138 (list 'quote (eval form))
1139 form)))
1140
1141;; Avoid having to write forward-... with a negative arg for speed.
1142;; Fixme: don't be limited to constant args.
1143(put 'backward-char 'byte-optimizer 'byte-optimize-backward-char)
1144(defun byte-optimize-backward-char (form)
1145 (cond ((and (= 2 (safe-length form))
1146 (numberp (nth 1 form)))
1147 (list 'forward-char (eval (- (nth 1 form)))))
1148 ((= 1 (safe-length form))
1149 '(forward-char -1))
1150 (t form)))
1151
1152(put 'backward-word 'byte-optimizer 'byte-optimize-backward-word)
1153(defun byte-optimize-backward-word (form)
1154 (cond ((and (= 2 (safe-length form))
1155 (numberp (nth 1 form)))
1156 (list 'forward-word (eval (- (nth 1 form)))))
1157 ((= 1 (safe-length form))
1158 '(forward-word -1))
1159 (t form)))
1160
1161(put 'char-before 'byte-optimizer 'byte-optimize-char-before)
1162(defun byte-optimize-char-before (form)
1163 (cond ((= 2 (safe-length form))
1164 `(char-after (1- ,(nth 1 form))))
1165 ((= 1 (safe-length form))
1166 '(char-after (1- (point))))
1167 (t form)))
1168
1169;; Fixme: delete-char -> delete-region (byte-coded) 1132;; Fixme: delete-char -> delete-region (byte-coded)
1170;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte, 1133;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte,
1171;; string-make-multibyte for constant args. 1134;; string-make-multibyte for constant args.
@@ -1290,6 +1253,18 @@ of FORM by signaling the error at compile-time."
1290 (setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns))) 1253 (setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns)))
1291 nil) 1254 nil)
1292 1255
1256
1257;; pure functions are side-effect free functions whose values depend
1258;; only on their arguments. For these functions, calls with constant
1259;; arguments can be evaluated at compile time. This may shift run time
1260;; errors to compile time.
1261
1262(let ((pure-fns
1263 '(concat symbol-name regexp-opt regexp-quote string-to-syntax)))
1264 (while pure-fns
1265 (put (car pure-fns) 'pure t)
1266 (setq pure-fns (cdr pure-fns)))
1267 nil)
1293 1268
1294(defun byte-compile-splice-in-already-compiled-code (form) 1269(defun byte-compile-splice-in-already-compiled-code (form)
1295 ;; form is (byte-code "..." [...] n) 1270 ;; form is (byte-code "..." [...] n)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index f74e48c4635..f1761c125ac 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2341,7 +2341,7 @@ list that represents a doc string reference.
2341 (eq (car (car (cdr tail))) 'declare)) 2341 (eq (car (car (cdr tail))) 'declare))
2342 (let ((declaration (car (cdr tail)))) 2342 (let ((declaration (car (cdr tail))))
2343 (setcdr tail (cdr (cdr tail))) 2343 (setcdr tail (cdr (cdr tail)))
2344 (princ `(if macro-declaration-function 2344 (prin1 `(if macro-declaration-function
2345 (funcall macro-declaration-function 2345 (funcall macro-declaration-function
2346 ',name ',declaration)) 2346 ',name ',declaration))
2347 outbuffer))))) 2347 outbuffer)))))
@@ -3148,6 +3148,9 @@ That command is designed for interactive use only" fn))
3148 3148
3149;; more complicated compiler macros 3149;; more complicated compiler macros
3150 3150
3151(byte-defop-compiler char-before)
3152(byte-defop-compiler backward-char)
3153(byte-defop-compiler backward-word)
3151(byte-defop-compiler list) 3154(byte-defop-compiler list)
3152(byte-defop-compiler concat) 3155(byte-defop-compiler concat)
3153(byte-defop-compiler fset) 3156(byte-defop-compiler fset)
@@ -3159,6 +3162,34 @@ That command is designed for interactive use only" fn))
3159(byte-defop-compiler19 (/ byte-quo) byte-compile-quo) 3162(byte-defop-compiler19 (/ byte-quo) byte-compile-quo)
3160(byte-defop-compiler19 nconc) 3163(byte-defop-compiler19 nconc)
3161 3164
3165(defun byte-compile-char-before (form)
3166 (cond ((= 2 (length form))
3167 (byte-compile-form (list 'char-after (if (numberp (nth 1 form))
3168 (1- (nth 1 form))
3169 `(1- ,(nth 1 form))))))
3170 ((= 1 (length form))
3171 (byte-compile-form '(char-after (1- (point)))))
3172 (t (byte-compile-subr-wrong-args form "0-1"))))
3173
3174;; backward-... ==> forward-... with negated argument.
3175(defun byte-compile-backward-char (form)
3176 (cond ((= 2 (length form))
3177 (byte-compile-form (list 'forward-char (if (numberp (nth 1 form))
3178 (- (nth 1 form))
3179 `(- ,(nth 1 form))))))
3180 ((= 1 (length form))
3181 (byte-compile-form '(forward-char -1)))
3182 (t (byte-compile-subr-wrong-args form "0-1"))))
3183
3184(defun byte-compile-backward-word (form)
3185 (cond ((= 2 (length form))
3186 (byte-compile-form (list 'forward-word (if (numberp (nth 1 form))
3187 (- (nth 1 form))
3188 `(- ,(nth 1 form))))))
3189 ((= 1 (length form))
3190 (byte-compile-form '(forward-word -1)))
3191 (t (byte-compile-subr-wrong-args form "0-1"))))
3192
3162(defun byte-compile-list (form) 3193(defun byte-compile-list (form)
3163 (let ((count (length (cdr form)))) 3194 (let ((count (length (cdr form))))
3164 (cond ((= count 0) 3195 (cond ((= count 0)
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 2777ea775e9..9ae33599f09 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -364,31 +364,39 @@ Return the result of the last expression in BODY."
364 364
365(defun edebug-pop-to-buffer (buffer &optional window) 365(defun edebug-pop-to-buffer (buffer &optional window)
366 ;; Like pop-to-buffer, but select window where BUFFER was last shown. 366 ;; Like pop-to-buffer, but select window where BUFFER was last shown.
367 ;; Select WINDOW if it provided and it still exists. Otherwise, 367 ;; Select WINDOW if it is provided and still exists. Otherwise,
368 ;; if buffer is currently shown in several windows, choose one. 368 ;; if buffer is currently shown in several windows, choose one.
369 ;; Otherwise, find a new window, possibly splitting one. 369 ;; Otherwise, find a new window, possibly splitting one.
370 (setq window (if (and (windowp window) (edebug-window-live-p window) 370 (setq window
371 (eq (window-buffer window) buffer)) 371 (cond
372 window 372 ((and (windowp window) (edebug-window-live-p window)
373 (if (eq (window-buffer (selected-window)) buffer) 373 (eq (window-buffer window) buffer))
374 (selected-window) 374 window)
375 (edebug-get-buffer-window buffer)))) 375 ((eq (window-buffer (selected-window)) buffer)
376 (if window 376 ;; Selected window already displays BUFFER.
377 (select-window window) 377 (selected-window))
378 (if (one-window-p) 378 ((edebug-get-buffer-window buffer))
379 (split-window)) 379 ((one-window-p 'nomini)
380 ;; (message "next window: %s" (next-window)) (sit-for 1) 380 ;; When there's one window only, split it.
381 (if (eq (get-buffer-window edebug-trace-buffer) (next-window)) 381 (split-window))
382 ;; Don't select trace window 382 ((let ((trace-window (get-buffer-window edebug-trace-buffer)))
383 nil 383 (catch 'found
384 (select-window (next-window)))) 384 (dolist (elt (window-list nil 'nomini))
385 (set-window-buffer (selected-window) buffer) 385 (unless (or (eq elt (selected-window)) (eq elt trace-window)
386 (set-window-hscroll (selected-window) 0);; should this be?? 386 (window-dedicated-p elt))
387 ;; Found a non-dedicated window not showing
388 ;; `edebug-trace-buffer', use it.
389 (throw 'found elt))))))
390 ;; All windows are dedicated or show `edebug-trace-buffer', split
391 ;; selected one.
392 (t (split-window))))
393 (select-window window)
394 (set-window-buffer window buffer)
395 (set-window-hscroll window 0);; should this be??
387 ;; Selecting the window does not set the buffer until command loop. 396 ;; Selecting the window does not set the buffer until command loop.
388 ;;(set-buffer buffer) 397 ;;(set-buffer buffer)
389 ) 398 )
390 399
391
392(defun edebug-get-displayed-buffer-points () 400(defun edebug-get-displayed-buffer-points ()
393 ;; Return a list of buffer point pairs, for all displayed buffers. 401 ;; Return a list of buffer point pairs, for all displayed buffers.
394 (let (list) 402 (let (list)
@@ -2755,7 +2763,8 @@ MSG is printed after `::::} '."
2755 ) ; if edebug-save-windows 2763 ) ; if edebug-save-windows
2756 2764
2757 ;; Restore current buffer always, in case application needs it. 2765 ;; Restore current buffer always, in case application needs it.
2758 (set-buffer edebug-outside-buffer) 2766 (if (buffer-name edebug-outside-buffer)
2767 (set-buffer edebug-outside-buffer))
2759 ;; Restore point, and mark. 2768 ;; Restore point, and mark.
2760 ;; Needed even if restoring windows because 2769 ;; Needed even if restoring windows because
2761 ;; that doesn't restore point and mark in the current buffer. 2770 ;; that doesn't restore point and mark in the current buffer.
diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el
index 3649757f782..9fec81ec2c5 100644
--- a/lisp/emacs-lisp/ewoc.el
+++ b/lisp/emacs-lisp/ewoc.el
@@ -191,8 +191,9 @@ BUT if it is the header or the footer in EWOC return nil instead."
191 (not (eq dll node)))) 191 (not (eq dll node))))
192 (setq node (ewoc--node-right node)))))) 192 (setq node (ewoc--node-right node))))))
193 193
194(defun ewoc--insert-new-node (node data pretty-printer) 194(defun ewoc--insert-new-node (node data pretty-printer dll)
195 "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER. 195 "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER.
196Fourth arg DLL -- from `(ewoc--dll EWOC)' -- is for internal purposes.
196Call PRETTY-PRINTER with point at NODE's start, thus pushing back 197Call PRETTY-PRINTER with point at NODE's start, thus pushing back
197NODE and leaving the new node's start there. Return the new node." 198NODE and leaving the new node's start there. Return the new node."
198 (save-excursion 199 (save-excursion
@@ -262,8 +263,8 @@ fourth arg NOSEP non-nil inhibits this."
262 (unless header (setq header "")) 263 (unless header (setq header ""))
263 (unless footer (setq footer "")) 264 (unless footer (setq footer ""))
264 (setf (ewoc--node-start-marker dll) (copy-marker pos) 265 (setf (ewoc--node-start-marker dll) (copy-marker pos)
265 foot (ewoc--insert-new-node dll footer hf-pp) 266 foot (ewoc--insert-new-node dll footer hf-pp dll)
266 head (ewoc--insert-new-node foot header hf-pp) 267 head (ewoc--insert-new-node foot header hf-pp dll)
267 (ewoc--hf-pp new-ewoc) hf-pp 268 (ewoc--hf-pp new-ewoc) hf-pp
268 (ewoc--footer new-ewoc) foot 269 (ewoc--footer new-ewoc) foot
269 (ewoc--header new-ewoc) head)) 270 (ewoc--header new-ewoc) head))
@@ -301,7 +302,7 @@ Return the new node."
301 "Enter a new element DATA before NODE in EWOC. 302 "Enter a new element DATA before NODE in EWOC.
302Return the new node." 303Return the new node."
303 (ewoc--set-buffer-bind-dll ewoc 304 (ewoc--set-buffer-bind-dll ewoc
304 (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc)))) 305 (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc) dll)))
305 306
306(defun ewoc-next (ewoc node) 307(defun ewoc-next (ewoc node)
307 "Return the node in EWOC that follows NODE. 308 "Return the node in EWOC that follows NODE.
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 09cb8436c89..164756dfdc3 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -1280,7 +1280,8 @@ and initial semicolons."
1280 "\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)")) 1280 "\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)"))
1281 (paragraph-separate 1281 (paragraph-separate
1282 (concat paragraph-separate "\\|\\s-*\".*[,\\.]$")) 1282 (concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
1283 (fill-column (if (integerp emacs-lisp-docstring-fill-column) 1283 (fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
1284 (derived-mode-p 'emacs-lisp-mode))
1284 emacs-lisp-docstring-fill-column 1285 emacs-lisp-docstring-fill-column
1285 fill-column))) 1286 fill-column)))
1286 (fill-paragraph justify)) 1287 (fill-paragraph justify))
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 947b4063ad4..5254a8389b4 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -582,8 +582,7 @@ symbols with function definitions are considered. Otherwise, all
582symbols with function definitions, values or properties are 582symbols with function definitions, values or properties are
583considered." 583considered."
584 (interactive) 584 (interactive)
585 585 (let ((window (get-buffer-window "*Completions*" 0)))
586 (let ((window (get-buffer-window "*Completions*")))
587 (if (and (eq last-command this-command) 586 (if (and (eq last-command this-command)
588 window (window-live-p window) (window-buffer window) 587 window (window-live-p window) (window-buffer window)
589 (buffer-name (window-buffer window))) 588 (buffer-name (window-buffer window)))
diff --git a/lisp/emacs-lisp/sregex.el b/lisp/emacs-lisp/sregex.el
index 447691d4046..8041aefc077 100644
--- a/lisp/emacs-lisp/sregex.el
+++ b/lisp/emacs-lisp/sregex.el
@@ -425,7 +425,7 @@ Here are the clauses allowed in an `sregex' or `sregexq' expression:
425 Stands for \"\\\\'\", matching the empty string at the end of text. 425 Stands for \"\\\\'\", matching the empty string at the end of text.
426 426
427- the symbol `point' 427- the symbol `point'
428 Stands for \"\\\\=\", matching the empty string at point. 428 Stands for \"\\\\=\\=\", matching the empty string at point.
429 429
430- the symbol `word-boundary' 430- the symbol `word-boundary'
431 Stands for \"\\\\b\", matching the empty string at the beginning or 431 Stands for \"\\\\b\", matching the empty string at the beginning or
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index d8c171e111d..7d7e788523b 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -190,7 +190,7 @@ call to one of the `testcover-1value-functions'."
190changes the instrumentation from edebug to testcover--much faster, no 190changes the instrumentation from edebug to testcover--much faster, no
191problems with type-ahead or post-command-hook, etc. If BYTE-COMPILE is 191problems with type-ahead or post-command-hook, etc. If BYTE-COMPILE is
192non-nil, byte-compiles each function after instrumenting." 192non-nil, byte-compiles each function after instrumenting."
193 (interactive "f") 193 (interactive "fStart covering file: ")
194 (let ((buf (find-file filename)) 194 (let ((buf (find-file filename))
195 (load-read-function 'testcover-read) 195 (load-read-function 'testcover-read)
196 (edebug-all-defs t)) 196 (edebug-all-defs t))
@@ -428,10 +428,10 @@ FUN should be `testcover-reinstrument' for compositional functions,
428 list) 428 list)
429 result)) 429 result))
430 430
431(defun testcover-end (buffer) 431(defun testcover-end (filename)
432 "Turn off instrumentation of all macros and functions in FILENAME." 432 "Turn off instrumentation of all macros and functions in FILENAME."
433 (interactive "b") 433 (interactive "fStop covering file: ")
434 (let ((buf (find-file-noselect buffer))) 434 (let ((buf (find-file-noselect filename)))
435 (eval-buffer buf t))) 435 (eval-buffer buf t)))
436 436
437 437
@@ -513,7 +513,7 @@ eliminated by adding more test cases."
513(defun testcover-mark-all (&optional buffer) 513(defun testcover-mark-all (&optional buffer)
514 "Mark all forms in BUFFER that did not get completley tested during 514 "Mark all forms in BUFFER that did not get completley tested during
515coverage tests. This function creates many overlays." 515coverage tests. This function creates many overlays."
516 (interactive "b") 516 (interactive "bMark forms in buffer: ")
517 (if buffer 517 (if buffer
518 (switch-to-buffer buffer)) 518 (switch-to-buffer buffer))
519 (goto-char 1) 519 (goto-char 1)
@@ -523,7 +523,7 @@ coverage tests. This function creates many overlays."
523 523
524(defun testcover-unmark-all (buffer) 524(defun testcover-unmark-all (buffer)
525 "Remove all overlays from FILENAME." 525 "Remove all overlays from FILENAME."
526 (interactive "b") 526 (interactive "bUnmark forms in buffer: ")
527 (condition-case nil 527 (condition-case nil
528 (progn 528 (progn
529 (set-buffer buffer) 529 (set-buffer buffer)
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index db6586838bb..092611632ca 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -360,11 +360,16 @@ This function is called, by name, directly by the C code."
360(defun run-at-time (time repeat function &rest args) 360(defun run-at-time (time repeat function &rest args)
361 "Perform an action at time TIME. 361 "Perform an action at time TIME.
362Repeat the action every REPEAT seconds, if REPEAT is non-nil. 362Repeat the action every REPEAT seconds, if REPEAT is non-nil.
363TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds 363TIME should be one of: a string giving an absolute time like
364from now, a value from `current-time', or t (with non-nil REPEAT) 364\"11:23pm\" (the acceptable formats are those recognized by
365meaning the next integral multiple of REPEAT. 365`diary-entry-time'; note that such times are interpreted as times
366REPEAT may be an integer or floating point number. 366today, even if in the past); a string giving a relative time like
367The action is to call FUNCTION with arguments ARGS. 367\"2 hours 35 minutes\" (the acceptable formats are those
368recognized by `timer-duration'); nil meaning now; a number of
369seconds from now; a value from `encode-time'; or t (with non-nil
370REPEAT) meaning the next integral multiple of REPEAT. REPEAT may
371be an integer or floating point number. The action is to call
372FUNCTION with arguments ARGS.
368 373
369This function returns a timer object which you can use in `cancel-timer'." 374This function returns a timer object which you can use in `cancel-timer'."
370 (interactive "sRun at time: \nNRepeat interval: \naFunction: ") 375 (interactive "sRun at time: \nNRepeat interval: \naFunction: ")
@@ -385,7 +390,7 @@ This function returns a timer object which you can use in `cancel-timer'."
385 (if (numberp time) 390 (if (numberp time)
386 (setq time (timer-relative-time (current-time) time))) 391 (setq time (timer-relative-time (current-time) time)))
387 392
388 ;; Handle relative times like "2 hours and 35 minutes" 393 ;; Handle relative times like "2 hours 35 minutes"
389 (if (stringp time) 394 (if (stringp time)
390 (let ((secs (timer-duration time))) 395 (let ((secs (timer-duration time)))
391 (if secs 396 (if secs
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index b75f0fd242f..99b0b3f3448 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -218,8 +218,9 @@ Default is :warning.
218 but raise suspicion of a possible problem. 218 but raise suspicion of a possible problem.
219:debug -- info for debugging only. 219:debug -- info for debugging only.
220 220
221BUFFER-NAME, if specified, is the name of the buffer for logging the 221BUFFER-NAME, if specified, is the name of the buffer for logging
222warning. By default, it is `*Warnings*'. 222the warning. By default, it is `*Warnings*'. If this function
223has to create the buffer, it disables undo in the buffer.
223 224
224See the `warnings' custom group for user customization features. 225See the `warnings' custom group for user customization features.
225 226
@@ -227,16 +228,22 @@ See also `warning-series', `warning-prefix-function' and
227`warning-fill-prefix' for additional programming features." 228`warning-fill-prefix' for additional programming features."
228 (unless level 229 (unless level
229 (setq level :warning)) 230 (setq level :warning))
231 (unless buffer-name
232 (setq buffer-name "*Warnings*"))
230 (if (assq level warning-level-aliases) 233 (if (assq level warning-level-aliases)
231 (setq level (cdr (assq level warning-level-aliases)))) 234 (setq level (cdr (assq level warning-level-aliases))))
232 (or (< (warning-numeric-level level) 235 (or (< (warning-numeric-level level)
233 (warning-numeric-level warning-minimum-log-level)) 236 (warning-numeric-level warning-minimum-log-level))
234 (warning-suppress-p type warning-suppress-log-types) 237 (warning-suppress-p type warning-suppress-log-types)
235 (let* ((typename (if (consp type) (car type) type)) 238 (let* ((typename (if (consp type) (car type) type))
236 (buffer (get-buffer-create (or buffer-name "*Warnings*"))) 239 (old (get-buffer buffer-name))
240 (buffer (get-buffer-create buffer-name))
237 (level-info (assq level warning-levels)) 241 (level-info (assq level warning-levels))
238 start end) 242 start end)
239 (with-current-buffer buffer 243 (with-current-buffer buffer
244 ;; If we created the buffer, disable undo.
245 (unless old
246 (setq buffer-undo-list t))
240 (goto-char (point-max)) 247 (goto-char (point-max))
241 (when (and warning-series (symbolp warning-series)) 248 (when (and warning-series (symbolp warning-series))
242 (setq warning-series 249 (setq warning-series
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index ddd37b16cc2..67ec3660c65 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -1027,14 +1027,46 @@ It also can't undo some Viper settings."
1027 1027
1028 (defadvice describe-key (before viper-describe-key-ad protect activate) 1028 (defadvice describe-key (before viper-describe-key-ad protect activate)
1029 "Force to read key via `viper-read-key-sequence'." 1029 "Force to read key via `viper-read-key-sequence'."
1030 (interactive (list (viper-read-key-sequence "Describe key: ")) 1030 (interactive (let (key)
1031 )) 1031 (setq key (viper-read-key-sequence
1032 "Describe key (or click or menu item): "))
1033 (list key
1034 (prefix-numeric-value current-prefix-arg)
1035 ;; If KEY is a down-event, read also the
1036 ;; corresponding up-event.
1037 (and (vectorp key)
1038 (let ((last-idx (1- (length key))))
1039 (and (eventp (aref key last-idx))
1040 (memq 'down (event-modifiers
1041 (aref key last-idx)))))
1042 (or (and (eventp (aref key 0))
1043 (memq 'down (event-modifiers
1044 (aref key 0)))
1045 ;; For the C-down-mouse-2 popup
1046 ;; menu, there is no subsequent up-event.
1047 (= (length key) 1))
1048 (and (> (length key) 1)
1049 (eventp (aref key 1))
1050 (memq 'down (event-modifiers (aref key 1)))))
1051 (read-event))))))
1032 1052
1033 (defadvice describe-key-briefly 1053 (defadvice describe-key-briefly
1034 (before viper-describe-key-briefly-ad protect activate) 1054 (before viper-describe-key-briefly-ad protect activate)
1035 "Force to read key via `viper-read-key-sequence'." 1055 "Force to read key via `viper-read-key-sequence'."
1036 (interactive (list (viper-read-key-sequence "Describe key briefly: ")))) 1056 (interactive (let (key)
1037 1057 (setq key (viper-read-key-sequence
1058 "Describe key (or click or menu item): "))
1059 ;; If KEY is a down-event, read and discard the
1060 ;; corresponding up-event.
1061 (and (vectorp key)
1062 (let ((last-idx (1- (length key))))
1063 (and (eventp (aref key last-idx))
1064 (memq 'down (event-modifiers (aref key last-idx)))))
1065 (read-event))
1066 (list key
1067 (if current-prefix-arg
1068 (prefix-numeric-value current-prefix-arg))
1069 1))))
1038 1070
1039 (defadvice find-file (before viper-add-suffix-advice activate) 1071 (defadvice find-file (before viper-add-suffix-advice activate)
1040 "Use `read-file-name' for reading arguments." 1072 "Use `read-file-name' for reading arguments."
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 62e7eaa21fe..70ffa4ede48 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,259 @@
12007-04-01 Michael Olson <mwolson@gnu.org>
2
3 * erc.el (erc-version-string): Release ERC 5.2.
4
5 * erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
6 * erc-viper.el: Update copyright notices.
7
8 * erc.texi: Make Emacs Lisp source code in this document
9 essentially public domain. Update version to 5.2.
10 (Obtaining ERC): Mention extras tarball.
11 (Releases): Mention local GNU mirror.
12 (Sample Configuration): Remove notice.
13
14 * FOR-RELEASE (5.3): Add item for erc-nicklist.
15 Mark NEWS as done. Mark extras tarball as done.
16
17 * Makefile (VERSION): Increment to 5.2.
18 (TESTING): Remove.
19 (EXTRAS): New variable containing the contents of our "Emacs 22
20 extras" tarball.
21 (SOURCE): Remove $(TESTING).
22 (MISC): Add COPYING and ChangeLog.06. Fix ChangeLog.NNNN ->
23 ChangeLog.NN.
24 (release): Use $(SNAPDIR) instead of erc-$(VERSION).
25 (extras): New rule which implements the building of the extras
26 tarball.
27 (upload-extras): New rule to upload the extras tarball. It's
28 yucky to replicate upload, but oh well.
29
30 * NEWS: Mention extras tarball. Note which files have been
31 renamed. Note that erc-list is enabled by default, except in
32 Emacs 22.
33
34 * README.extras: New file which serves as a README for the extras
35 tarball.
36
372007-03-31 Michael Olson <mwolson@gnu.org>
38
39 * NEWS: Update for the 5.2 release.
40
41 * FOR-RELEASE: Finish up 5.2 manual item. Add documentation item
42 for 5.3.
43
44 * erc.texi (Sample Session): Flesh out. Mention #erc.
45 (Modules): Defer to 5.3 release.
46 (Advanced Usage): Move Sample Configuration chapter ahead of
47 unfinished chapters.
48 (Sample Configuration): Write.
49 (Options): Mention how to see available ERC options. Defer to 5.3
50 release.
51 (Tips and Tricks): Remove, since it seems better to just include
52 tips and tricks in the sample configuration, commented out.
53
54 * erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
55 informative about how to skip merging.
56 (erc-bbdb-insinuate-and-show-entry-1): Move contents of
57 erc-bbdb-insinuate-and-show-entry here.
58 (erc-bbdb-insinuate-and-show-entry): Run
59 erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
60 function, so that we can avoid triggering a process-filter error
61 if the user hits C-g.
62
632007-03-30 Michael Olson <mwolson@gnu.org>
64
65 * FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
66
67 * erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
68 `cond' and `set' rather than `set-default'.
69
70 * erc-log.el: Avoid compiler warning by requiring erc-network
71 during compilation.
72 (erc-generate-log-file-name-function): Add tag to each option.
73 Add erc-generate-log-file-name-network.
74 (erc-generate-log-file-name-network): New function which generates
75 a log file name that uses network name rather than server name,
76 when possible.
77
78 * erc-track.el (track): Assimilate track-when-inactive module,
79 since there's no need to have two modules in one file -- an option
80 will do. Remove track-modified-channels alias. Call
81 erc-track-minor-mode-maybe, and tear down the minor mode when
82 disabling.
83 (erc-track-when-inactive): New option which determines whether to
84 track visible buffers when inactive. The default is not to do so.
85 (erc-track-visibility): Mention erc-track-when-inactive.
86 (erc-buffer-visible): Use erc-track-when-inactive.
87 (erc-track-enable-keybindings): New option which determines
88 whether to enable the global-level tracking keybindings. The
89 default is to do so, unless they would override another binding,
90 in which case we prompt the user about it.
91 (erc-track-minor-mode-map): Move global keybindings here.
92 (erc-track-minor-mode): New minor mode which only enables the
93 keybindings and does nothing else.
94 (erc-track-minor-mode-maybe): New function which starts
95 erc-track-minor-mode, but only if it hasn't already been started,
96 an ERC buffer exists, and the user OK's it, depending on the value
97 of `erc-track-enable-keybindings'.
98 (erc-track-switch-buffer): Display a message if someone calls this
99 without first enabling erc-track-mode.
100
1012007-03-17 Michael Olson <mwolson@gnu.org>
102
103 * erc.texi (Development): Mention ErcDevelopment page on
104 emacswiki.
105 (Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
106 interface.
107 (Sample Session): New section that has a very rough draft for a
108 sample ERC session.
109 (Special Features): New section that explains some of the special
110 features of ERC. Taken from ErcFeatures on emacswiki, with
111 enhancements.
112
1132007-03-12 Diane Murray <disumu@x3y2z1.net>
114
115 * erc-autoaway.el (erc-autoaway-idle-method): When setting the new
116 value, disable and re-enable `erc-autoaway-mode' only if it was
117 already enabled. This fixes a bug where autoaway was enabled just
118 by loading the file.
119
1202007-03-10 Diane Murray <disumu@x3y2z1.net>
121
122 * erc-capab.el: Added more information to the Usage section.
123 (erc-capab-identify-prefix): Doc fix.
124 (erc-capab-identify-unidentified): New face.
125 (290): Removed. Definition moved to erc-backend.el.
126 (erc-capab-identify-send-messages): Renamed from
127 `erc-capab-send-identify-messages'.
128 (erc-capab-identify-setup): Use it.
129 (erc-capab-identify-get-unidentified-nickname): Renamed from
130 `erc-capab-get-unidentified-nickname'.
131 (erc-capab-identify-add-prefix): Use it. Use
132 `erc-capab-identify-unidentified' as the face.
133
134 * erc-backend.el (290): Moved here from erc-capab.el.
135
136 * erc.el (erc-select): Added an autoload cookie.
137 (erc-message-type-member, erc-restore-text-properties): Use
138 `erc-get-parsed-vector'.
139 (erc-auto-query): Set the default to 'bury since many new users
140 expect private messages from others to be in dedicated query
141 buffers, not the server buffer.
142 (erc-common-server-suffixes): Use "freenode" for freenode.net, not
143 "OPN". Added oftc.net.
144
145 * NEWS: Added note about erc-auto-query's new default setting.
146
1472007-03-03 Michael Olson <mwolson@gnu.org>
148
149 * erc.el (erc-open, erc): Docfixes.
150
1512007-03-02 Michael Olson <mwolson@gnu.org>
152
153 * FOR-RELEASE: Make section for 5.3 release and move erc-backend
154 cleanup there. Awaiting discussion before doing other things.
155 Add tasks for merging filename changes from the 5.2 release
156 branch, and for making a tarball of modules not in Emacs 22. Add
157 item to remind me to update NEWS. Mark backtab entry as done.
158
159 * erc-button.el (button): Add call to `erc-button-add-keys'.
160 (erc-button-keys-added): New variable tracking whether we've added
161 the keys yet.
162 (erc-button-add-keys): New function that adds the <backtab> key to
163 erc-mode-map.
164
165 * erc.texi: Change version to 5.2 (pre-release).
166
1672007-02-15 Michael Olson <mwolson@gnu.org>
168
169 * CREDITS: Update.
170
171 * erc-backend.el (erc-server-send-ping-interval): Change to use a
172 default of 30 seconds. Improve customize interface.
173 (erc-server-send-ping-timeout): New option that determines when to
174 consider a connection stalled and restart it. The default is
175 after 120 seconds.
176 (erc-server-send-ping): Use erc-server-send-ping-timeout instead
177 of erc-server-send-ping-interval. If
178 erc-server-send-ping-timeout is nil, do not ever kill and restart
179 a hung IRC process.
180
181 * erc.el (erc-modules): Include the name of the module in its
182 description. This should make it easier for people to find and
183 enable a particular module.
184
1852007-02-15 Vivek Dasmohapatra <vivek@etla.org>
186
187 * erc.el (erc-cmd-RECONNECT): Kill old process if it is still
188 alive.
189 (erc-message-english-PART): Properly escape "%" characters in
190 reason.
191
192 * erc-backend.el (erc-server-reconnecting): New variable that is
193 set when the user requests a reconnect, but the old process is
194 still alive. This forces the reconnect to work even though the
195 process is killed manually during reconnect.
196 (erc-server-connect): Initialize it.
197 (erc-server-reconnect-p): Use it.
198 (erc-process-sentinel-1): Set it to nil after the first reconnect
199 attempt.
200
2012007-02-07 Diane Murray <disumu@x3y2z1.net>
202
203 * erc-menu.el (erc-menu-definition): Fixed so that the separator
204 is between "Current channel" and "Pals, fools and other keywords",
205 not at the bottom of the "Current channel" submenu.
206
2072007-01-25 Diane Murray <disumu@x3y2z1.net>
208
209 * erc-networks.el (erc-server-alist): Removed SSL server for now
210 since `erc-server-select' doesn't know to use `erc-ssl'.
211
212 * erc-networks.el (erc-server-alist, erc-networks-alist): Added
213 definitions for oftc.net.
214
215 * erc-services.el (erc-nickserv-alist): Fixed OFTC message regexp.
216
2172007-01-22 Michael Olson <mwolson@gnu.org>
218
219 * erc-backend.el (erc-server-error-occurred): New variable that
220 indicates when an error has been signaled by the server. This
221 should fix an infinite reconnect bug when giving some servers a
222 bogus :full-name. Thanks to Angelina Carlton for the report.
223 (erc-server-connect): Initialize erc-server-error-occurred.
224 (erc-server-reconnect-p): Use it.
225 (ERROR): Set it.
226
227 * erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
228 and QuakeNet. Standardize look of entries. Fix type mismatch
229 error in customize interface.
230 (erc-nickserv-passwords): Alphabetize and add missing entries from
231 erc-nickserv-alist.
232
2332007-01-21 Michael Olson <mwolson@gnu.org>
234
235 * erc.el (erc-header-line-format): Document how to disable the
236 header line, and add a customization type for it. Also, make the
237 changes take effect immediately.
238
2392007-01-19 Michael Olson <mwolson@gnu.org>
240
241 * erc.texi (Modules): Document new menu module. Thanks to Leo
242 for noticing.
243
2442007-01-16 Diane Murray <disumu@x3y2z1.net>
245
246 * erc-stamp.el (erc-insert-timestamp-left): Fixed so that the
247 whitespace string filler is hidden correctly when timestamps are
248 hidden.
249 (erc-toggle-timestamps): New function to use instead of
250 `erc-show-timestamps' and `erc-hide-timestamps'.
251
252 * erc.el (erc-restore-text-properties): Moved here from
253 erc-fill.el since it could be useful in general.
254
255 * erc-fill.el (erc-restore-text-properties): Removed.
256
12007-01-13 Michael Olson <mwolson@gnu.org> 2572007-01-13 Michael Olson <mwolson@gnu.org>
2 258
3 * erc.el (erc-command-regexp): New variable that is used to match 259 * erc.el (erc-command-regexp): New variable that is used to match
@@ -73,6 +329,10 @@
73 (erc-format-lag-time): New function. 329 (erc-format-lag-time): New function.
74 (erc-update-mode-line-buffer): Use it. 330 (erc-update-mode-line-buffer): Use it.
75 331
3322007-01-10 Michael Olson <mwolson@gnu.org>
333
334 * erc.el: Fix typo in url-irc-function instructions.
335
762007-01-09 Michael Olson <mwolson@gnu.org> 3362007-01-09 Michael Olson <mwolson@gnu.org>
77 337
78 * erc.el (erc-system-name): New option that determines the system 338 * erc.el (erc-system-name): New option that determines the system
@@ -89,1260 +349,10 @@
89 (erc-menu-add, erc-menu-remove): New functions that add and remove 349 (erc-menu-add, erc-menu-remove): New functions that add and remove
90 the ERC menu. 350 the ERC menu.
91 351
922006-12-28 Michael Olson <mwolson@gnu.org>
93
94 * erc-list.el: Change header to mention that this is part of ERC,
95 rather than GNU Emacs.
96
97 * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
98 LinuxChix networks. Thanks to Angelina Carlton for mentioning
99 them. Properly escape periods in Konfido.Net and Kewl.Org.
100 (erc-networks-alist): Add entries for Ars and LinuxChix, though
101 the latter does not actually provide an announced network name.
102
103 * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
104 which waits for a NickServ message if the network supports it,
105 otherwise sends the password after connecting.
106 (erc-nickserv-identify-mode): Default to 'both.
107 (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
108 (erc-nickserv-alist): Indentation fix.
109 (erc-nickserv-identify-on-connect)
110 (erc-nickserv-identify-on-nick-change): Handle 'both method.
111
1122006-12-28 Leo <sdl.web@gmail.com> (tiny change)
113
114 * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
115 hitting C-g does not leave iswitchb-mode on.
116
1172006-12-27 Michael Olson <mwolson@gnu.org>
118
119 * erc.el (erc-cmd-RECONNECT): New command that calls
120 erc-server-reconnect.
121
122 * erc-backend.el (erc-server-reconnect-count): New server variable
123 that keeps track of reconnection attempts.
124 (erc-server-reconnect-attempts): New option that determines the
125 number of reconnection attempts that ERC will make per server.
126 (erc-server-reconnect-timeout): New option that determines the
127 amount of time, in seconds, that ERC will wait between successive
128 reconnect attempts.
129 (erc-server-reconnect): New function that reestablishes the
130 current IRC connection. Move some commands from
131 erc-process-sentinel-1 here.
132 (erc-process-sentinel-1): If we have been disconnected, loop until
133 we either reconnect or run out of attempts.
134 (erc-server-reconnect-p): Move higher and make this a defsubst,
135 since I'm worried about the current buffer changing from
136 underneath us. Implement limit of number of reconnect attempts..
137
138 * erc.texi (Getting Started): Update for /RECONNECT command.
139
1402006-12-26 Michael Olson <mwolson@gnu.org>
141
142 * erc.el (erc-open): Restore old point correctly, or at least get
143 closer to doing so than before.
144
1452006-12-13 Leo <sdl.web@gmail.com> (tiny change)
146
147 * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
148 isn't active already, instead of leaving it on.
149
1502006-12-10 Juanma Barranquero <lekktu@gmail.com>
151
152 * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
153
1542006-12-08 Michael Olson <mwolson@gnu.org>
155
156 * erc.el: Re-evaluate contributions from a contributor, and found
157 them under 15 lines of non-obvious code, so it is safe to remove
158 the copyright notice.
159 (erc-modules): Remove list module.
160
161 * erc-list.el: Remove, since a contributor who has not completed
162 their assignment has contributed significantly more than 15 lines
163 of code to this file.
164
1652006-11-28 Juanma Barranquero <lekktu@gmail.com>
166
167 * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
168 (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
169 (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
170 (erc-modules, erc-display-message-highlight, erc-process-input-line)
171 (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
172 (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
173 (erc-echo-notice-in-first-user-buffer, erc-connection-established)
174 (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
175 (erc-command-symbol, erc-add-query, erc-process-script-line)
176 (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
177 (erc-script-echo): Fix typos in docstrings.
178 (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
179 (define-erc-module, erc-once-with-server-event)
180 (erc-once-with-server-event-global, erc-debug-irc-protocol)
181 (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
182 (erc-update-current-channel-member, erc-load-script):
183 (erc-mode-line-away-status-format): Doc fixes.
184
1852006-11-20 Andrea Russo <rastandy@inventati.org> (tiny change)
186
187 * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
188 before calling `erc-display-prompt'.
189
1902006-11-24 Juanma Barranquero <lekktu@gmail.com>
191
192 * erc.el (erc-after-connect, erc-open-ssl-stream)
193 (erc-display-line-1, erc-display-line):
194 * erc-backend.el (005): Fix space/tab mixup in docstrings.
195
1962006-11-20 Michael Olson <mwolson@gnu.org>
197
198 * erc.el (erc-version-string): Call this Version 5.2 stable
199 pre-release, since it diverges slightly from our 5.2 branch, in
200 that unstable features are not included.
201 (erc-update-modules): Display better error message when module not
202 found.
203
2042006-11-12 Michael Olson <mwolson@gnu.org>
205
206 * erc-log.el: Save all log buffers when Emacs exits, in case
207 someone ignores the warning about open processes. Remove the
208 advice code in the commentary.
209 (erc-save-query-buffers): Docfix.
210 (erc-log-save-all-buffers): New function that saves all ERC
211 buffers to logs.
212 (erc-current-logfile): Fix bug in filename selection, where the
213 current buffer was erroneously being preferred over the given
214 buffer.
215
2162006-11-08 Michael Olson <mwolson@gnu.org>
217
218 * erc.el (erc-string-to-port): Avoid error when a numerical port
219 is passed. Thanks to Zekeriya KOÇ for the report.
220
2212006-11-08 Åukasz Demianiuk <ldemianiuk@gmail.com> (tiny change)
222
223 * erc.el (erc-header-line): Fix typo.
224
2252006-11-06 Juanma Barranquero <lekktu@gmail.com>
226
227 * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
228
229 * erc.el (read-passwd):
230 * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
231 * erc-truncate.el (truncate): Fix typo in docstring.
232
2332006-10-21 Michael Olson <mwolson@gnu.org>
234
235 * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
236 first loading iswitchb. Thanks to Leo for the report.
237
2382006-10-10 Michael Olson <mwolson@gnu.org>
239
240 * erc.el (erc-default-port): Make the default be 6667 instead of
241 ircd. since Mac OS X apparently has problems with looking up that
242 port name.
243
244 * erc-backend.el (353): Receive names after displaying the initial
245 message, instead of before.
246
2472006-10-05 Diane Murray <disumu@x3y2z1.net>
248
249 * erc.el (erc-my-nick-face): New face.
250 (erc): Use FULL-NAME argument, not `erc-user-full-name'. This
251 fixes a bug where the :full-name argument passed to the function
252 was not respected.
253 (erc-format-my-nick): Use `erc-my-nick-face'. This should help
254 make it easier to find messages you sent in conversations when
255 `erc-show-my-nick' is non-nil.
256 (erc-compute-server): Doc fix.
257
2582006-10-01 John J Foerch <jjfoerch@earthlink.net> (tiny change)
259
260 * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
261 from the erc-timestamp field.
262
2632006-09-11 Michael Olson <mwolson@gnu.org>
264
265 * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
266 parenthesis. Thanks to Stephan Stahl for the report.
267
2682006-09-10 Eric Hanchrow <offby1@blarg.net> (tiny change)
269
270 * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
271 instead of a single user.
272
2732006-09-10 Michael Olson <mwolson@gnu.org>
274
275 * erc.el (erc-generate-new-buffer-name): If this is a server
276 buffer and a process exists already, create a new buffer.
277 (erc-open): If the IRC session was continued, restore the old
278 point. Thanks to Stephan Stahl for the report.
279 (erc-member-ignore-case): Coding style tweak.
280 (erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
281 find the user listed verbatim, try to match them against the list
282 using string-match. In this case, prompt as to whether the regexp
283 should be removed.
284 (erc-ignored-user-p): Remove CL-ism.
285
286 * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
287 whether we are already away.
288
289 * erc-menu.el: Fix potential compiler warning.
290
2912006-09-07 Diane Murray <disumu@x3y2z1.net>
292
293 * erc.el: Updated Commentary and URL.
294 (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
295 (erc-arrange-session-in-multiple-windows): No need to check if
296 `erc-server-process' is bound.
297 (erc-server-buffer-live-p): Doc fix.
298 (erc-part-from-channel): Don't use any initial contents at prompt.
299 (erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
300 (s367): Fixed to support only banmask and channel which is the
301 standard. Also, there's no reason to add a message to each banned
302 user entry trying to persuade the user to use /banlist instead of
303 /mode #channel +b. That part of the message was a little
304 confusing, anyways.
305 (s367-set-by): New catalog entry. The user who set the ban and
306 the time of ban seem to be specific to only certain servers such
307 as freenode.
308
309 * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
310
311 * erc-backend.el (erc-server-process-alive): No need to check if
312 `erc-server-process' is bound.
313 (367): Use s367 or s367-set-by where appropriate.
314
315 * erc-compat.el: Fixed URL.
316
317 * erc-dcc.el: Updated copyright years. Added Usage section.
318 Changed supported Emacs version number from 21.3.50 to 22 in
319 Commentary.
320
321 * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
322 to check if `erc-server-process' is bound.
323
324 * erc-nicklist.el: Added to the Commentary section an explanation
325 that `erc-nicklist-quit' should be called from within the nicklist
326 buffer. Set file coding to utf-8 so a contributor's name is
327 displayed correctly.
328 (erc-nicklist-icons-directory): Use customize type directory
329 instead of string.
330 (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
331 if it wasn't found. This fixes a bug where an error would occur
332 when using `string=' on bbdb-nick if it was nil.
333
334 * erc-replace.el: Removed URL from file information since it
335 doesn't exist.
336
337 * erc-sound.el: Updated copyright years. Fixed Commentary and
338 added Usage section.
339 (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
340 `erc-ctcp-query-SOUND-hook' here. Removed the keybinding
341 definitions.
342 (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
343 (erc-ctcp-query-SOUND): Doc fix.
344 (erc-play-command): Removed, not necessary anymore.
345 (erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
346 higher in code, added docstring.
347 (erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
348 as well since version 21 or earlier. Removed commented-out older
349 version of function.
350
351 * NEWS: Fixed formatting, added channel tracking change.
352
3532006-09-03 Diane Murray <disumu@x3y2z1.net>
354
355 * erc.el: M-x erc RET can now be used to start ERC.
356 (erc-open): Renamed from `erc'.
357 (erc-before-connect): Change erc-select to erc.
358 (erc): Renamed from `erc-select'. Use `erc-open'.
359 (erc-select): Defined as alias of `erc'.
360 (erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
361 (erc-select-ssl): Defined as alias of `erc-ssl'.
362 (erc-cmd-SERVER): Use `erc'.
363 (erc-query, erc-handle-irc-url): Use `erc-open'.
364
365 * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
366
367 * erc-menu.el (erc-menu-definition): Use `erc'.
368
369 * erc-networks.el: Updated copyright years.
370 (erc-server-select): Use keyword arguments when calling `erc'.
371
372 * erc.texi (Getting Started, Connecting): Changed erc-select to
373 erc.
374
375 * NEWS: Added note about these changes.
376
3772006-08-20 Diane Murray <disumu@x3y2z1.net>
378
379 * erc-backend.el (erc-process-sentinel-1): Doc fix. Let
380 `erc-server-reconnect-p' check all condition cases.
381 (erc-server-reconnect-p): Moved rest of checks from
382 `erc-process-sentinel-1' to here. Now takes an argument, EVENT.
383
3842006-08-21 Diane Murray <disumu@x3y2z1.net>
385
386 * erc-track.el (erc-track-mode-line-mouse-face): New variable.
387 (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
388 properties to channel name.
389
3902006-08-20 Michael Olson <mwolson@gnu.org>
391
392 * erc.el (erc-with-server-buffer): New macro that switches to the
393 current ERC server buffer and runs some code. If no server buffer
394 is available, return nil. This is a useful way to access
395 variables in the server buffer.
396 (erc-open-server-buffer-p): New function that returns non-nil if
397 the given buffer is an ERC server buffer that has an open IRC
398 process.
399
4002006-08-14 Diane Murray <disumu@x3y2z1.net>
401
402 * erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
403 (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
404 avoid confusion with rcirc and other clients.
405
406 * erc-backend.el (erc-server-banned): New variable.
407 (erc-server-connect): Set `erc-server-banned' to nil.
408 (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
409 (erc-server-reconnect-p): New function. Return non-nil if the
410 user wants automatic reconnects and if the user has not been
411 banned from the server. This should fix a bug where ERC gets into
412 a loop trying to reconnect with no way to stop it when the user is
413 denied access to the server due to a server ban. It might also
414 help when Tor users are blocked from freenode if freenode servers
415 send the 465 message before disconnecting.
416 (465): Handle "banned from server" error notices.
417
4182006-08-13 Romain Francoise <romain@orebokech.com>
419
420 * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
421 prompt with a space.
422
4232006-08-11 Michael Olson <mwolson@gnu.org>
424
425 * erc-fill.el (erc-fill): Skip any initial empty lines so that we
426 avoid errors when inserting disconnect messages and other messages
427 that begin with newlines.
428
4292006-08-07 Michael Olson <mwolson@gnu.org>
430
431 * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
432 in several places instead of inserting text.
433 (erc-process-sentinel): Move to the input-marker before removing
434 the prompt.
435
436 * erc.el (erc-port): Fix customization options.
437 (erc-display-message): Handle null type explicitly. Previously,
438 this was relying on a chance side-effect. Cosmetic indentation
439 tweak.
440 (english): Add 'finished and 'terminated entries to the catalog.
441 Add initial and terminal newlines to 'disconnected and
442 'disconnected-noreconnect entries. Avoid long lines.
443
4442006-08-06 Michael Olson <mwolson@gnu.org>
445
446 * erc-backend.el (erc-server-send-queue): Update from Circe
447 version of this function.
448
449 * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
450 multi-tty Emacs.
451 (erc-select-startup-file): Fix bug introduced by recent change.
452
4532006-08-05 Michael Olson <mwolson@gnu.org>
454
455 * erc-log.el (erc-log-standardize-name): New function that returns
456 a filename that is safe for use for a log file.
457 (erc-current-logfile): Use it.
458
459 * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
460 since that is a fairly standard directory.
461 (erc-select-startup-file): Re-write to use
462 convert-standard-filename, which will ensure that MS-DOS systems
463 look for the _ercrc.el file.
464
4652006-08-02 Michael Olson <mwolson@gnu.org>
466
467 * erc.el (erc-version-string): Release ERC 5.1.4.
468
469 * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
470
471 * erc.el (erc-active-buffer): Fix bug that caused messages to go
472 to the wrong buffer. Thanks to offby1 for the report.
473
474 * erc-backend.el (erc-coding-system-for-target): Handle case where
475 target is nil. Thanks to Kai Fan for the patch.
476
4772006-07-29 Michael Olson <mwolson@gnu.org>
478
479 * erc-log.el (erc-log-setup-logging): Don't offer to save the
480 buffer. It will be saved automatically killed. Thanks to Johan
481 Bockgård and Tassilo Horn for pointing this out.
482
4832006-07-27 Johan Bockgård <bojohan@users.sourceforge.net>
484
485 * erc.el (define-erc-module): Make find-function and find-variable
486 find the names constructed by `define-erc-module' in Emacs 22.
487
4882006-07-14 Michael Olson <mwolson@gnu.org>
489
490 * erc-log.el (log): Make sure that we enable logging on
491 already-opened buffers as well, in case the user toggles this
492 module after loading ERC. Also be sure to remove logging ability
493 from all ERC buffers when the module is disabled.
494 (erc-log-setup-logging): Set buffer-file-name to nil rather than
495 the empty string. This should fix some errors that occur when
496 quitting Emacs without first killing all ERC buffers.
497 (erc-log-disable-logging): New function that removes the logging
498 ability from the current buffer.
499
500 * erc-spelling.el (spelling): Use dolist and buffer-live-p.
501
5022006-07-12 Michael Olson <mwolson@gnu.org>
503
504 * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
505 than call toggle-read-only.
506
507 * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
508 add autoload cookie.
509
5102006-07-09 Michael Olson <mwolson@gnu.org>
511
512 * erc.el (erc-version-string): Release ERC 5.1.3.
513
514 * erc.texi: Update for the 5.1.3 release.
515
516 * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
517 from being set automatically away and current buffer is not an ERC
518 buffer.
519
520 * erc-identd.el: Fix compiler error.
521
522 * erc.texi (Development): Use @subheading instead of @subsection.
523 (Advanced Usage): Add menu.
524 (Connecting): Fully document how to connect to an IRC server.
525 (Options, Tips and Tricks, Sample Configuration): New unwritten
526 sections.
527
528 * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
529 (erc-user-full-name, erc-password): Docfixes and customization
530 interface tweaks.
531 (erc-try-new-nick-p): Rename from
532 `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
533 (erc-nickname-in-use): Use `erc-try-new-nick-p'. Check the length
534 of `erc-nick-uniquifier', in case someone wants multiple
535 characters.
536 (erc-compute-server, erc-compute-nick, erc-compute-full-name)
537 (erc-compute-port): Docfixes.
538
539 * erc-log.el (log): Move all add-hook calls here, rather than
540 executing them immediately, and also cause them to be un-hooked
541 when the module is removed.
542 (erc-save-buffer-on-part): Move next to
543 `erc-save-queries-on-quit'.
544 (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
545 (erc-log-write-after-send, erc-log-write-after-insert): Default to
546 nil. This makes things fast, but reasonably failsafe, by default.
547
5482006-07-08 Michael Olson <mwolson@gnu.org>
549
550 * erc-log.el (erc-log-insert-log-on-open): Make this nil by
551 default, since most IRC clients don't do this.
552 (erc-log-write-after-send): New option that determines whether the
553 log file will be written to after every sent message.
554 (erc-log-write-after-insert): New option that determines whether
555 the log file will be written to when new text is added to a logged
556 ERC buffer.
557 (log): Use the aforementioned options.
558
559 * erc.texi (Modules): Document the "completion" module.
560
561 * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
562 have a nil element in the list when ignore-self is non-nil.
563
5642006-07-05 Michael Olson <mwolson@gnu.org>
565
566 * erc.el (erc-modules): Add the `page' module to the list.
567
568 * erc.texi (Modules): Add entries for `list' and `page' modules.
569 Change "spell" to "spelling".
570 (History): Use past tense throughout.
571
5722006-07-02 Michael Olson <mwolson@gnu.org>
573
574 * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
575 can happen when doing /PART.
576
577 * erc.el (erc-quit-reason-various-alist)
578 (erc-part-reason-various-alist): In the example, use "^$" as an
579 example, since "" matches anything.
580 (erc-quit-reason-various, erc-part-reason-various): If no argument
581 is given, and no matches are found, use our default reason instead
582 of "nil".
583
5842006-06-30 Michael Olson <mwolson@gnu.org>
585
586 * erc.texi (Modules): Mention identd.
587 (Releases): Update mailing list address and download location.
588 (Development): Refactor. Provide updated directions for Arch.
589 Make URLs clickable.
590 (Keystroke Summary): Typo fix. Use more Texinfo syntax.
591 (Getting Started): Give simpler example. We do not need to
592 explicitly load every module.
593 (History): Update.
594
595 * erc.el (erc-version-modules): Remove, since we do not use this
596 function anymore.
597 (erc-latest-version, erc-ediff-latest-version): Remove, since this
598 was only useful back when ERC consisted of one file.
599 (erc-modules): Add line for identd.
600 (erc-get-channel-mode-from-keypress): Typo fix.
601
602 * erc-imenu.el: Remove unnecessary lines in header.
603
604 * erc-goodies.el (erc-handle-irc-url): Docfix.
605
606 * erc-identd.el: Define an ERC module for this.
607 (erc-identd-start): Don't create a process buffer if possible.
608 Otherwise, use conventional hidden names for process buffers.
609
6102006-06-29 Michael Olson <mwolson@gnu.org>
611
612 * erc-backend.el (erc-coding-system-for-target): Match
613 case-insensitively. Use a pattern match instead of `assoc', as
614 per the documentation for `erc-encoding-coding-alist'.
615
616 * erc-track.el (erc-track-shorten-aggressively): Fix typo.
617
6182006-06-27 Michael Olson <mwolson@gnu.org>
619
620 * erc.el: Update maintainer information and URLs.
621
6222006-06-14 Michael Olson <mwolson@gnu.org>
623
624 * erc.el (erc-active-buffer): If the active buffer has been
625 deleted, default to the server buffer.
626 (erc-toggle-flood-control): When the user hits C-c C-f, make flood
627 control really toggle, not unconditionally turn off.
628
6292006-06-12 Michael Olson <mwolson@gnu.org>
630
631 * NEWS: Add items since the 5.1.2 release.
632
633 * erc-autoaway.el (erc-autoaway-caused-away): New variable that
634 indicates whether the current away status was caused by this
635 module.
636 (erc-autoaway-set-back): Only set back if this module set the user
637 away.
638 (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
639 (erc-autoaway-reset-indicators): New function that resets some
640 indicators when the user is no longer away.
641 (autoaway): Add the above function to the 305 hook.
642
6432006-06-05 Romain Francoise <romain@orebokech.com>
644
645 * erc.texi (History): Fix various typos.
646
6472006-06-04 Michael Olson <mwolson@gnu.org>
648
649 * erc-autoaway.el (erc-autoaway-idle-method): Move after the
650 definition of the autoaway module.
651 (autoaway): Don't do anything if erc-autoaway-idle-method is
652 unbound. This prevents an error on startup.
653
6542006-06-03 Michael Olson <mwolson@gnu.org>
655
656 * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
657 (erc-autoaway-idle-method): Renamed from
658 `erc-autoaway-use-emacs-idle'. We have more than two choices for
659 how to do this, so it's best to make this take symbol values.
660 Improve documentation. Remove warning against Emacs idle-time;
661 the point is moot now that we get user idle time via a different
662 method. Make sure we disable and re-enable the module when
663 changing this value.
664 (autoaway): Conditionalize on the above option. If using the idle
665 timer or user idle methods, don't add anything to the
666 send-completed or server-001 hooks, since it is unnecessary.
667 (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
668 Docfix.
669 (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
670 (erc-autoaway-reset-idle-irc): Renamed from
671 `erc-autoaway-reset-idle'. Don't pass line to
672 `erc-autoaway-set-away', since it is not used.
673 (erc-autoaway-reset-idle-user): New function that resets the idle
674 state for user idle time.
675 (erc-autoaway-set-back): Remove line argument, since it is not
676 used.
677
6782006-06-01 Michael Olson <mwolson@gnu.org>
679
680 * erc.el (erc-buffer-filter): Make sure all buffers returned from
681 this are live.
682
6832006-05-01 Edward O'Connor <ted@oconnor.cx>
684
685 * erc-goodies.el (erc-handle-irc-url): New function, suitable as
686 a value for `url-irc-function'.
687
6882006-04-18 Diane Murray <disumu@x3y2z1.net>
689
690 * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
691 argument IGNORE-SELF. If this is non-nil, don't return the user's
692 current nickname. Doc fix.
693 (pcomplete/erc-mode/complete-command): Don't complete the current
694 nickname.
695
6962006-04-05 Diane Murray <disumu@x3y2z1.net>
697
698 * erc.el (erc-cmd-SV): Removed the exclamation point. Show the
699 build date as it's shown in `emacs-version'.
700
701 * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
702 with the same face property as the previous character.
703
7042006-04-02 Michael Olson <mwolson@gnu.org>
705
706 * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
707 erc.el: Make sure to include a newline inside of negated classes,
708 so that a newline is not matched.
709
7102006-04-01 Michael Olson <mwolson@gnu.org>
711
712 * erc-backend.el (erc-server-connect-function): Don't try to
713 detect the existence of the `open-network-stream-nowait' function,
714 since I can't find it in Emacs21, XEmacs21, or Emacs22.
715
7162006-03-26 Michael Olson <mwolson@gnu.org>
717
718 * erc.el (erc-header-line): New face that will be used to colorize
719 the text of the header-line, provided that
720 `erc-header-line-face-method' is non-nil.
721 (erc-prompt-face): Fix formatting.
722 (erc-header-line-face-method): New option that determines the
723 method used for colorizing header-line text. This may be a
724 function, nil, or non-nil.
725 (erc-update-mode-line-buffer): Use the aforementioned option and
726 face to colorize the header-line text, if that is what the user
727 wants.
728 (erc-send-input): If flood control is not activated, don't split
729 the input line.
730
7312006-03-25 Michael Olson <mwolson@gnu.org>
732
733 * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
734 that fixes the case where there is no leading whitespace. Only
735 remove the first space character, though.
736
737 * erc-identd.el (erc-identd-start): Fix a bug by making sure that
738 erc-identd-process is set properly.
739 (erc-identd-start, erc-identd-stop): Add autoload cookies.
740 (erc-identd-start): Pass :host parameter so this works with Emacs
741 22.
742
7432006-03-09 Diane Murray <disumu@x3y2z1.net>
744
745 * erc-button.el (erc-button-keymap): Use <backtab> rather than
746 <C-tab> for `erc-button-previous' as it is a more standard key
747 binding for this type of function.
748
7492006-02-28 Diane Murray <disumu@x3y2z1.net>
750
751 * erc-capab.el: Removed things that were accidentally committed on
752 2006-02-20. Removed Todo section.
753 (erc-capab-unidentified): Removed.
754
7552006-02-26 Michael Olson <mwolson@gnu.org>
756
757 * erc-capab.el: Use (eval-when-compile (require 'cl)).
758 (erc-capab-unidentified): Fix compiler warning by specifying
759 group.
760
7612006-02-20 Diane Murray <disumu@x3y2z1.net>
762
763 * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
764 to explain thoughts better. `erc-server-parameters' is an
765 associated list when it's set, not a string.
766
7672006-02-19 Michael Olson <mwolson@gnu.org>
768
769 * erc-capab.el (erc-capab-send-identify-messages): Make sure some
770 parameters are strings before using them. Thanks to Alejandro
771 Benitez for the report.
772
773 * erc.el (erc-version-string): Release ERC 5.1.2.
774
7752006-02-19 Diane Murray <disumu@x3y2z1.net>
776
777 * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
778 <C-tab>.
779 (erc-button-previous): New function.
780
7812006-02-15 Michael Olson <mwolson@gnu.org>
782
783 * NEWS: Add category for ERC 5.2.
784
785 * erc.el (erc): Move to the end of the buffer when a continued
786 session is detected. Thanks to e1f and indio for the report and
787 testing a potential fix.
788
7892006-02-14 Michael Olson <mwolson@gnu.org>
790
791 * debian/changelog: Prepare a new Debian package.
792
793 * Makefile (debprepare): New rule that creates an ERC snapshot
794 directory for use in both new Debian releases and revisions for
795 Debian packages.
796 (debrelease, debrevision-mwolson): Use debprepare.
797
798 * NEWS: Bring up-to-date.
799
800 * erc-stamp.el (erc-insert-timestamp-right): For now, put
801 timestamps before rather than after erc-fill-column when
802 erc-timestamp-right-column is nil. This way we won't surprise
803 anyone unpleasantly, or so it is hoped.
804
8052006-02-13 Michael Olson <mwolson@gnu.org>
806
807 * erc-dcc.el: Use (eval-when-compile (require 'cl)).
808
8092006-02-12 Michael Olson <mwolson@gnu.org>
810
811 * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
812 * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
813 * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
814 * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
815 * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
816 * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
817 * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
818 Add 2006 to copyright years, to comply with the changed guidelines.
819
8202006-02-11 Michael Olson <mwolson@gnu.org>
821
822 * erc.el (erc-update-modules): Handle erc-capab-identify
823 correctly. Make some requirements shorter, so that it's easier to
824 see why they are needed.
825
826 * erc-capab.el: Add autoload cookie for capab-identify.
827 (erc-capab-send-identify-messages, erc-capab-identify-activate):
828 Minor whitespace fix in code.
829
830 * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
831 `erc-timestamp-right-align-by-pixel'. Set the default based on
832 whether we are in Emacs 22, and using X. Improve documentation.
833 (erc-insert-aligned): Remove calculation of offset, since
834 :align-to pos works after all. Unlike the previous solution, this
835 one works when erc-stamp.el is compiled.
836 (erc-insert-timestamp-right): Don't add length of string, and then
837 later remove its displayed width. This puts timestamps after
838 erc-fill-column when erc-timestamp-right-column is nil, rather
839 than before it. It also fixes a subtle bug. Remove use of
840 `current-window', since there is no variable by that name in
841 Emacs21, Emacs22, or XEmacs21 beta. Check to see whether
842 `erc-fill-column' is non-nil before using it.
843
8442006-02-11 Diane Murray <disumu@x3y2z1.net>
845
846 * erc-list.el: Define `list' module which sets the alias
847 `erc-cmd-LIST' to `erc-list-channels' when enabled and
848 `erc-list-channels-simple' when disabled.
849 (erc-list-channels): Was `erc-cmd-LIST', renamed.
850 (erc-list-channels-simple): New function.
851
852 * erc.el (erc-modules): Added `list' to enabled modules. Changed
853 `capab-identify' description. Moved customization options left in
854 source code.
855
856 * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
857
858 * erc-capab.el: Put a little more detail into Usage section.
859 (define-erc-module): Run `erc-capab-identify-setup' in all open
860 server buffers when enabling.
861 (erc-capab-identify-setup): Make PROC and PARSED optional
862 arguments.
863 (erc-capab-identify-add-prefix): Simplified nickname regexp. This
864 should now also match nicknames that are formatted differently
865 than the default.
866
867 * erc-spelling.el (define-erc-module): Make sure there's a buffer
868 before calling `with-current-buffer'.
869
8702006-02-10 Michael Olson <mwolson@gnu.org>
871
872 * Makefile (debbuild): Split from debrelease.
873 (debrevision-mwolson): New rule that causes a Debian revision to
874 be built.
875
876 * erc.el (erc-migrate-modules): Use a better algorithm. Thanks to
877 Johan Bockgård.
878 (erc-modules): Change use of 'pcomplete to 'completion.
879
8802006-02-09 Diane Murray <disumu@x3y2z1.net>
881
882 * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
883 * erc-capab.el: Require erc.
884 (erc-capab-send-identify-messages): Use `erc-server-send'.
885 (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
886 the flags so we can also check whether the `erc-identified' text
887 property is there at all.
888 (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
889 This fixes a bug where the prefix wasn't inserted when timestamps
890 are inserted on the right. Tweaked nickname regexp.
891 (erc-capab-find-parsed): New function.
892 (erc-capab-get-unidentified-nickname): Updated to check for 0
893 flag. Only get nickname if there's a nickuserhost associated with
894 this message.
895
896 * erc-capab.el: New file. Adds the new module
897 `erc-capab-identify', which allows flagging of unidentified users
898 on servers running an ircd based on dancer - irc.freenode.net, for
899 example.
900
901 * erc.el (erc-modules): Added `capab-identify' to options.
902 (erc-get-parsed-vector, erc-get-parsed-vector-nick)
903 (erc-get-parsed-vector-type): Moved here from erc-match.el.
904
905 * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
906 (erc-get-parsed-vector-type): Moved these functions to erc.el
907 since they can be useful outside of the text matching module.
908
909 * NEWS: Added erc-capab.el.
910
911 * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
912 to "ERC".
913
9142006-02-07 Michael Olson <mwolson@gnu.org>
915
916 * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
917 ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
918 the filenames in DOS.
919
920 * erc-goodies.el: Comment fix.
921
922 * erc-hecomplete.el: Rename from erc-complete.el. Update
923 commentary. Use define-erc-module so that it's possible to
924 actually use this.
925 (erc-hecomplete): Rename function from `erc-complete'.
926 (erc-hecomplete): Rename group from `erc-old-complete'. Docfix.
927
928 * erc-join.el: Rename from erc-autojoin.el.
929
930 * erc-networks.el: Rename from erc-nets.el.
931
932 * erc-services.el: Rename from erc-nickserv.el.
933
934 * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument. Use
935 the simpler `indent-to' function when
936 `erc-timestamp-right-align-by-pixel' is nil.
937 (erc-insert-timestamp-right): If the timestamp goes on the
938 following line, don't add timestamp properties to the spaces in
939 front of it.
940
941 * erc.el (erc-migrate-modules): New function that eases migration
942 of module names.
943 (erc-modules): Call erc-migrate-modules in the :get accessor.
944 (erc-modules, erc-update-modules): Update for new modules names.
945 (erc-cmd-SMV): Remove, since this does not give useful output due
946 to the version strings being removed from ERC modules.
947
9482006-02-05 Michael Olson <mwolson@gnu.org>
949
950 * erc-spelling.el (erc-spelling-init): If
951 `erc-spelling-dictionaries' is nil, do not set
952 ispell-local-dictionary. Before, it was being set to nil, which
953 was causing a long delay while the ispell process restarted.
954 (erc-spelling-unhighlight-word): New function that removes
955 flyspell properties from a spell-checked word.
956 (erc-spelling-flyspell-verify): Don't spell-check nicks or words
957 that have '/' before them.
958
9592006-02-04 Michael Olson <mwolson@gnu.org>
960
961 * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
962
963 * erc-complete.el (erc-nick-completion-exclude-myself)
964 (erc-try-complete-nick): Use better function for getting list of
965 channel users.
966
967 * erc-goodies.el: Docfix.
968
969 * erc-stamp.el: Use new arch tagline, since the other one wasn't
970 being treated properly.
971
972 * erc.el (erc-version-string): Release ERC 5.1.1.
973
9742006-02-03 Zhang Wei <id.brep@gmail.com>
975
976 * erc.el (erc-version-string): Don't hard-code Emacs version.
977 (erc-version): Use emacs-version.
978
9792006-01-31 Michael Olson <mwolson@gnu.org>
980
981 * erc-stamp.el: Update copyright years.
982
9832006-01-30 Simon Josefsson <jas@extundo.com>
984
985 * erc.el (erc-open-ssl-stream): Use tls.el.
986
9872006-01-30 Michael Olson <mwolson@gnu.org>
988
989 * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
990 that determines whether to use pixel values to align right
991 timestamps. The default is not to do so, since it only works with
992 Emacs22 on X, and even then some people have trouble.
993 (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
994
9952006-01-29 Michael Olson <mwolson@gnu.org>
996
997 * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
998 ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
999 earlier changes. Use utf-8 encoding. Fix some accent typos.
1000
1001 * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
1002 variable.
1003 (erc-speedbar-goto-buffer): Fix compiler warning.
1004
1005 * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
1006 `ibuffer-degine-limiter'. Use `define-ibuffer-column' instead of
1007 `ibuffer-define-column'. Require 'ibuf-ext so that the macros
1008 work without compiler warnings.
1009
1010 * man/erc.texi (Obtaining ERC, Installation): Note that these
1011 sections may be skipped if using the version of ERC that comes
1012 with Emacs.
1013
10142006-01-29 Edward O'Connor <ted@oconnor.cx>
1015
1016 * erc-viper.el: Remove. Now that ERC is included in Emacs, these
1017 work-arounds live in Viper itself.
1018
10192006-01-28 Michael Olson <mwolson@gnu.org>
1020
1021 * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
1022 guidelines.
1023
1024 * erc-*.el: Space out copyright years like the rest of Emacs. Use
1025 the Emacs copyright statement. Refer to ourselves as ERC rather
1026 than "Emacs IRC Client", since there are now several IRC clients
1027 for Emacs.
1028
1029 * erc-compat.el (erc-emacs-build-time): Define as a variable.
1030
1031 * erc-log.el (erc-log-setup-logging): Use write-file-functions.
1032
1033 * erc-ibuffer.el: Require 'erc.
1034
1035 * erc-stamp.el (erc-insert-aligned): Only use the special text
1036 property when window-system is X.
1037
1038 * erc.texi: Adapt for inclusion in Emacs.
1039
10402006-01-28 Johan Bockgård <bojohan@users.sourceforge.net>
1041
1042 * erc.el (erc-format-message): More `cl' breakage; don't use
1043 `oddp'.
1044
10452006-01-27 Michael Olson <mwolson@gnu.org>
1046
1047 * debian/changelog: Update for new release.
1048
1049 * debian/control (Description): Update.
1050
1051 * debian/rules: Concatenate ChangeLog for 2005.
1052
1053 * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
1054 (debrelease, release): Copy images directory.
1055
1056 * NEWS: Spelling fixes. Add items for recent changes.
1057
1058 * erc.el (erc): Move call to erc-update-modules before the call to
1059 erc-mode. This should fix a timestamp display issue.
1060 (erc-version-string): Release ERC 5.1.
1061
10622006-01-26 Michael Olson <mwolson@gnu.org>
1063
1064 * erc-stamp.el (erc-insert-aligned): New function that inserts
1065 text in an perfectly-aligned way relative to the right margin. It
1066 only works well with Emacs22. A sane fallback is provided for
1067 other versions of Emacs.
1068 (erc-insert-timestamp-right): Use the new function.
1069
10702006-01-25 Edward O'Connor <ted@oconnor.cx>
1071
1072 * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
1073 before `erc-match-mode'.
1074
1075 * erc-match.el (match): Append `erc-match-message' to
1076 `erc-insert-modify-hook'.
1077
10782006-01-25 Michael Olson <mwolson@gnu.org>
1079
1080 * FOR-RELEASE: Mark last release requirement as done.
1081
1082 * Makefile (realclean, distclean): Remove docs.
1083
1084 * erc.texi: Take care of all pre-5.1 items.
1085
1086 * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
1087 `process-send-string' in `condition-case' to avoid an error when
1088 quitting ERC.
1089
1090 * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
1091 variable-width characters in the timestamp and on the same line.
1092 The latter is a kludge, but it seems to work with most of the
1093 input I've thrown at it so far. It's certainly better than going
1094 past the end of line consistently when we have variable-width
1095 characters on the same line. When `erc-timestamp-intangible' is
1096 non-nil, add intangible properties to the whitespace as well, so
1097 that hitting <end> does what you'd expect.
1098
1099 * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
1100 this to only use boolean values for `erc-flood-protect'. Update
1101 documentation.
1102 (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
1103 that any QUIT-related messages go there.
1104 (erc): Try to be more clever about re-using channel buffers when
1105 automatically re-connecting. Thanks to e1f for noticing.
1106
11072006-01-23 Michael Olson <mwolson@gnu.org>
1108
1109 * ChangeLog.2005: Remove erroneous line.
1110
1111 * FOR-RELEASE: Make that the Makefile tweaking is complete.
1112 (NEWS): Mark as done.
1113
1114 * Makefile (MANUAL): New option indicating the name of the manual.
1115 (PREFIX, ELISPDIR, INFODIR): New options that specify the
1116 directories to install lisp code and info manuals to. PREFIX is
1117 used only by ELISPDIR and INFODIR.
1118 (all): Call `lisp' and create the manual.
1119 (lisp): Compile lisp code.
1120 (%.info, %.html): New rules that make Info files and HTML files,
1121 respectively, from a TexInfo source.
1122 (doc): Create both the Info and HTML versions of the manual. This
1123 is for the user -- we never call it automatically.
1124 (install-info): Install Info files.
1125 (install-bin): Install compiled and source Lisp files.
1126 (todo): Remove, since it seems pointless.
1127
1128 * NEWS: Update.
1129
1130 * README: Add Installation instructions. Tweak layout.
1131
1132 * erc.texi: Work on some pre-5.1 items.
1133
1134 * erc-stamp.el, erc-track.el: Move some functions and options in
1135 order to get rid of a few compiler warnings.
1136
1137 * erc.el (erc-modules): Enable readonly by default. This will
1138 prevent new users from accidentally removing old messages, which
1139 could be disconcerting. Also enable stamp by default, since
1140 timestamps are a fairly standard feature among IRC clients.
1141
1142 * erc-button.el: Munge whitespace.
1143
1144 * erc-identd.el (erc-identd-start): Instead of throwing an error,
1145 just try to use the obsolete function.
1146
11472006-01-22 Michael Olson <mwolson@gnu.org>
1148
1149 * erc-backend.el (erc-decode-string-from-target): Make sure that
1150 we have a string as an argument. If not, coerce it to the empty
1151 string. Hopefully, this will work painlessly around an edge case
1152 related to quitting ERC around the same time a message comes in.
1153
11542006-01-22 Johan Bockgård <bojohan@users.sourceforge.net>
1155
1156 * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
1157 `case'). Doc fixes.
1158 (erc-find-parsed-property): Simplify.
1159 (erc-track-get-active-buffer): Fix logic. Simplify.
1160 (erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
1161
1162 * erc-speak.el: Doc fixes.
1163 (erc-speak-region): `propertize' --> `erc-propertize'.
1164
1165 * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
1166 `erc-propertize'.
1167
1168 * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
1169 account when wrapping URLs.
1170
1171 * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
1172
1173 * erc-backend.el (define-erc-response-handler): Doc fix.
1174
11752006-01-22 Michael Olson <mwolson@gnu.org>
1176
1177 * erc.el (erc-update-modules): Use `require' instead of `load',
1178 but prevent it from causing errors, in order to preserve the
1179 previous behavior.
1180
11812006-01-21 Michael Olson <mwolson@gnu.org>
1182
1183 * FOR-RELEASE (Source): Mark cl task as done.
1184 352
1185 * Makefile (erc-auto.el): Call erc-generate-autoloads rather than 353See ChangeLog.06 for earlier changes.
1186 generate-autoloads.
1187 (erc-auto.el, %.elc): Don't show command, just its output.
1188 354
1189 * NEWS: Add items from 2005-01-01 to 2005-08-13. 355 Copyright (C) 2007 Free Software Foundation, Inc.
1190
1191 * debian/copyright (Copyright): Update.
1192
1193 * erc-auto.in (erc-generate-autoloads): Rename from
1194 generate-autoloads.
1195
1196 * erc.el, erc-autoaway.el, erc-backend.el: Use
1197 erc-server-process-alive instead of erc-process-alive.
1198
1199 * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
1200 erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
1201 erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
1202 Use (eval-when-compile (require 'cl)), so that compilation doesn't
1203 fail.
1204
1205 * erc-fill.el, erc-truncate.el: Whitespace munging.
1206
1207 * erc.el: Update copyright notice. Remove eval-after-load code.
1208 (erc-with-buffer): Docfix.
1209 (erc-once-with-server-event, erc-once-with-server-event-global)
1210 (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
1211 instead of gensym.
1212 (erc-banlist-update): Use erc-delete-if instead of delete-if.
1213 (erc): Call `erc-update-modules' here.
1214
1215 * erc-backend.el: Require 'erc-compat to minimize compiler
1216 warnings.
1217 (erc-decode-parsed-server-response): Docfix.
1218 (erc-server-process-alive): Move here from erc.el and rename from
1219 `erc-process-alive'.
1220 (erc-server-send, erc-remove-channel-users): Make sure process is
1221 alive before sending data to it.
1222
1223 * erc-bbdb.el: Update copyright years.
1224 (erc-bbdb-whois): Remove overexuberant comment.
1225
1226 * erc-button.el: Require erc-fill, since we make liberal use of
1227 `erc-fill-column'.
1228
1229 * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
1230 functions, the latter of which provides an `assert' equivalent.
1231 (erc-remove-if-not): New function that provides a simple
1232 implementation of `remove-if-not'.
1233 (erc-gensym): New function that provides a simple implementation
1234 of `gensym'.
1235 (erc-delete-if): New function that provides a simple
1236 implementation of `delete-if'.
1237 (erc-member-if): New function that provides a simple
1238 implementation of `member-if'.
1239 (field-end): Remove this, since it is unused, and later versions
1240 of XEmacs have this function already.
1241 (erc-function-arglist): Moved here from erc.el.
1242 (erc-delete-dups): New compatibility function for dealing with
1243 XEmacs.
1244 (erc-subseq): New function copied from cl-extra.el.
1245
1246 * erc-dcc.el: Require pcomplete during compilation to avoid
1247 compiler warnings.
1248 (erc-unpack-int, erc-dcc-send-filter)
1249 (erc-dcc-get-filter): Use erc-assert instead of assert.
1250 (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
1251 remove-if-not.
1252
1253 * erc-match.el (erc-log-matches): Fix compiler warning.
1254
1255 * erc-nicklist.el: Update copyright notice.
1256 (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
1257 (erc-nicklist-bitlbee-connected-p): Remove.
1258 (erc-nicklist-insert-medium-name-or-icon): Accept channel
1259 argument. Use it to determine whether we are on bitlbee. Now
1260 that bitlbee names its channel "&bitlbee", this is trivial.
1261 (erc-nicklist-insert-contents): Pass channel as specified above.
1262 Don't try to determine whether we are on bitlbee here.
1263 (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
1264 of remove-if-not.
1265 (erc-nicklist-search-for-nick): Use erc-member-if instead of
1266 member-if.
1267
1268 * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
1269 partially-evaluated lambda expression instead of `delete' and
1270 `find'.
1271
1272 * erc-track.el: Use erc-assert.
1273 (erc-track-modified-channels): Remove use of `return'.
1274 (erc-track-modified-channels): Use `cadr' instead of `second',
1275 since otherwise we would need yet another eval-when-compile line.
1276
12772006-01-19 Michael Olson <mwolson@gnu.org>
1278
1279 * erc-backend.el (erc-process-sentinel-1): Remove attempt to
1280 detect SIGPIPE, since it doesn't work.
1281
12822006-01-10 Diane Murray <disumu@x3y2z1.net>
1283
1284 * erc-spelling.el: Updated copyright years.
1285 (define-erc-module): Enable/disable `flyspell-mode' for all open
1286 ERC buffers as well.
1287 (erc-spelling-dictionaries): Reworded customize description.
1288
1289 * erc.el (erc-command-symbol): New function.
1290 (erc-extract-command-from-line): Use `erc-command-symbol'. This
1291 fixes a bug where "Symbol's function definition is void:
1292 erc-cmd-LIST" would be shown after typing /list at the prompt (the
1293 command was interned because erc-menu.el uses it and is enabled by
1294 default whereas erc-list.el is not).
1295
1296 * NEWS: Started a list of renamed variables.
1297
1298 * erc.el: Reworded the message sent when defining variable
1299 aliases.
1300 (erc-command-indicator-face): Doc fix.
1301 (erc-modules): Enable the match module by default which makes
1302 current nickname highlighting on as the default.
1303
1304 * erc-button.el: Updated copyright years.
1305 (erc-button): New face.
1306 (erc-button-face): Use `erc-button'.
1307 (erc-button-nickname-face): New customizable variable.
1308 (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
1309 new argument to `erc-button-add-button'.
1310 (erc-button-add-button): Doc fix. Added new argument to function
1311 definition, NICK-P. If it's a nickname, use
1312 `erc-button-nickname-face', otherwise use `erc-button-face'. This
1313 makes channel tracking and buttons work better together when
1314 `erc-button-buttonize-nicks' is enabled, since there is a nickname
1315 on just about every line.
1316
1317 * erc-track.el (erc-track-use-faces): Doc fix.
1318 (erc-track-faces-priority-list): Added `erc-button' to list.
1319 (erc-track-priority-faces-only): Doc fix.
1320
13212006-01-09 Diane Murray <disumu@x3y2z1.net>
1322
1323 * erc-button.el (erc-button-url-regexp): Use `concat' so the
1324 regexp is not one long line.
1325 (erc-button-alist): Fixed so that customizing works correctly.
1326 Reorganized. Removed lambda functions with more than two lines.
1327 Doc fix.
1328 (erc-button-describe-symbol, erc-button-beats-to-time): New
1329 functions. Moved from `erc-button-alist'.
1330
13312006-01-07 Michael Olson <mwolson@gnu.org>
1332
1333 * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
1334 process if a SIGPIPE occurs. This happens when a new message
1335 comes in at the same time a /quit is requested.
1336 (erc-process-sentinel): Use string-match rather than string= to do
1337 these comparisons. Matching literal newlines makes me nervous.
1338
1339 * erc-track.el (erc-track-remove-from-mode-line): Handle case
1340 where global-mode-string is not a list. Emacs22 permits this.
1341
1342
1343See ChangeLog.05 for earlier changes.
1344
1345 Copyright (C) 2006, 2007 Free Software Foundation, Inc.
1346 356
1347 This file is part of GNU Emacs. 357 This file is part of GNU Emacs.
1348 358
@@ -1366,4 +376,4 @@ See ChangeLog.05 for earlier changes.
1366;; add-log-time-zone-rule: t 376;; add-log-time-zone-rule: t
1367;; End: 377;; End:
1368 378
1369;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a 379;; arch-tag: 3369b6e5-96b1-4b32-96cd-9a905c747496
diff --git a/lisp/erc/ChangeLog.06 b/lisp/erc/ChangeLog.06
new file mode 100644
index 00000000000..f7d891cb5f6
--- /dev/null
+++ b/lisp/erc/ChangeLog.06
@@ -0,0 +1,1457 @@
12006-12-28 Michael Olson <mwolson@gnu.org>
2
3 * erc-list.el: Change header to mention that this is part of ERC,
4 rather than GNU Emacs.
5
6 * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
7 LinuxChix networks. Thanks to Angelina Carlton for mentioning
8 them. Properly escape periods in Konfido.Net and Kewl.Org.
9 (erc-networks-alist): Add entries for Ars and LinuxChix, though
10 the latter does not actually provide an announced network name.
11
12 * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
13 which waits for a NickServ message if the network supports it,
14 otherwise sends the password after connecting.
15 (erc-nickserv-identify-mode): Default to 'both.
16 (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
17 (erc-nickserv-alist): Indentation fix.
18 (erc-nickserv-identify-on-connect)
19 (erc-nickserv-identify-on-nick-change): Handle 'both method.
20
212006-12-28 Leo <sdl.web@gmail.com> (tiny change)
22
23 * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
24 hitting C-g does not leave iswitchb-mode on.
25
262006-12-27 Michael Olson <mwolson@gnu.org>
27
28 * erc.el (erc-cmd-RECONNECT): New command that calls
29 erc-server-reconnect.
30
31 * erc-backend.el (erc-server-reconnect-count): New server variable
32 that keeps track of reconnection attempts.
33 (erc-server-reconnect-attempts): New option that determines the
34 number of reconnection attempts that ERC will make per server.
35 (erc-server-reconnect-timeout): New option that determines the
36 amount of time, in seconds, that ERC will wait between successive
37 reconnect attempts.
38 (erc-server-reconnect): New function that reestablishes the
39 current IRC connection. Move some commands from
40 erc-process-sentinel-1 here.
41 (erc-process-sentinel-1): If we have been disconnected, loop until
42 we either reconnect or run out of attempts.
43 (erc-server-reconnect-p): Move higher and make this a defsubst,
44 since I'm worried about the current buffer changing from
45 underneath us. Implement limit of number of reconnect attempts..
46
47 * erc.texi (Getting Started): Update for /RECONNECT command.
48
492006-12-26 Michael Olson <mwolson@gnu.org>
50
51 * erc.el (erc-open): Restore old point correctly, or at least get
52 closer to doing so than before.
53
542006-12-13 Leo <sdl.web@gmail.com> (tiny change)
55
56 * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
57 isn't active already, instead of leaving it on.
58
592006-12-10 Juanma Barranquero <lekktu@gmail.com>
60
61 * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
62
632006-12-08 Michael Olson <mwolson@gnu.org>
64
65 * erc.el: Re-evaluate contributions from a contributor, and found
66 them under 15 lines of non-obvious code, so it is safe to remove
67 the copyright notice.
68 (erc-modules): Remove list module.
69
70 * erc-list.el: Remove, since a contributor who has not completed
71 their assignment has contributed significantly more than 15 lines
72 of code to this file.
73
742006-11-28 Juanma Barranquero <lekktu@gmail.com>
75
76 * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
77 (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
78 (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
79 (erc-modules, erc-display-message-highlight, erc-process-input-line)
80 (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
81 (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
82 (erc-echo-notice-in-first-user-buffer, erc-connection-established)
83 (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
84 (erc-command-symbol, erc-add-query, erc-process-script-line)
85 (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
86 (erc-script-echo): Fix typos in docstrings.
87 (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
88 (define-erc-module, erc-once-with-server-event)
89 (erc-once-with-server-event-global, erc-debug-irc-protocol)
90 (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
91 (erc-update-current-channel-member, erc-load-script):
92 (erc-mode-line-away-status-format): Doc fixes.
93
942006-11-20 Andrea Russo <rastandy@inventati.org> (tiny change)
95
96 * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
97 before calling `erc-display-prompt'.
98
992006-11-24 Juanma Barranquero <lekktu@gmail.com>
100
101 * erc.el (erc-after-connect, erc-open-ssl-stream)
102 (erc-display-line-1, erc-display-line):
103 * erc-backend.el (005): Fix space/tab mixup in docstrings.
104
1052006-11-20 Michael Olson <mwolson@gnu.org>
106
107 * erc.el (erc-version-string): Call this Version 5.2 stable
108 pre-release, since it diverges slightly from our 5.2 branch, in
109 that unstable features are not included.
110 (erc-update-modules): Display better error message when module not
111 found.
112
1132006-11-12 Michael Olson <mwolson@gnu.org>
114
115 * erc-log.el: Save all log buffers when Emacs exits, in case
116 someone ignores the warning about open processes. Remove the
117 advice code in the commentary.
118 (erc-save-query-buffers): Docfix.
119 (erc-log-save-all-buffers): New function that saves all ERC
120 buffers to logs.
121 (erc-current-logfile): Fix bug in filename selection, where the
122 current buffer was erroneously being preferred over the given
123 buffer.
124
1252006-11-08 Michael Olson <mwolson@gnu.org>
126
127 * erc.el (erc-string-to-port): Avoid error when a numerical port
128 is passed. Thanks to Zekeriya KOÇ for the report.
129
1302006-11-08 Åukasz Demianiuk <ldemianiuk@gmail.com> (tiny change)
131
132 * erc.el (erc-header-line): Fix typo.
133
1342006-11-06 Juanma Barranquero <lekktu@gmail.com>
135
136 * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
137
138 * erc.el (read-passwd):
139 * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
140 * erc-truncate.el (truncate): Fix typo in docstring.
141
1422006-10-21 Michael Olson <mwolson@gnu.org>
143
144 * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
145 first loading iswitchb. Thanks to Leo for the report.
146
1472006-10-10 Michael Olson <mwolson@gnu.org>
148
149 * erc.el (erc-default-port): Make the default be 6667 instead of
150 ircd. since Mac OS X apparently has problems with looking up that
151 port name.
152
153 * erc-backend.el (353): Receive names after displaying the initial
154 message, instead of before.
155
1562006-10-05 Diane Murray <disumu@x3y2z1.net>
157
158 * erc.el (erc-my-nick-face): New face.
159 (erc): Use FULL-NAME argument, not `erc-user-full-name'. This
160 fixes a bug where the :full-name argument passed to the function
161 was not respected.
162 (erc-format-my-nick): Use `erc-my-nick-face'. This should help
163 make it easier to find messages you sent in conversations when
164 `erc-show-my-nick' is non-nil.
165 (erc-compute-server): Doc fix.
166
1672006-10-01 John J Foerch <jjfoerch@earthlink.net> (tiny change)
168
169 * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
170 from the erc-timestamp field.
171
1722006-09-11 Michael Olson <mwolson@gnu.org>
173
174 * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
175 parenthesis. Thanks to Stephan Stahl for the report.
176
1772006-09-10 Eric Hanchrow <offby1@blarg.net> (tiny change)
178
179 * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
180 instead of a single user.
181
1822006-09-10 Michael Olson <mwolson@gnu.org>
183
184 * erc.el (erc-generate-new-buffer-name): If this is a server
185 buffer and a process exists already, create a new buffer.
186 (erc-open): If the IRC session was continued, restore the old
187 point. Thanks to Stephan Stahl for the report.
188 (erc-member-ignore-case): Coding style tweak.
189 (erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
190 find the user listed verbatim, try to match them against the list
191 using string-match. In this case, prompt as to whether the regexp
192 should be removed.
193 (erc-ignored-user-p): Remove CL-ism.
194
195 * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
196 whether we are already away.
197
198 * erc-menu.el: Fix potential compiler warning.
199
2002006-09-07 Diane Murray <disumu@x3y2z1.net>
201
202 * erc.el: Updated Commentary and URL.
203 (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
204 (erc-arrange-session-in-multiple-windows): No need to check if
205 `erc-server-process' is bound.
206 (erc-server-buffer-live-p): Doc fix.
207 (erc-part-from-channel): Don't use any initial contents at prompt.
208 (erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
209 (s367): Fixed to support only banmask and channel which is the
210 standard. Also, there's no reason to add a message to each banned
211 user entry trying to persuade the user to use /banlist instead of
212 /mode #channel +b. That part of the message was a little
213 confusing, anyways.
214 (s367-set-by): New catalog entry. The user who set the ban and
215 the time of ban seem to be specific to only certain servers such
216 as freenode.
217
218 * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
219
220 * erc-backend.el (erc-server-process-alive): No need to check if
221 `erc-server-process' is bound.
222 (367): Use s367 or s367-set-by where appropriate.
223
224 * erc-compat.el: Fixed URL.
225
226 * erc-dcc.el: Updated copyright years. Added Usage section.
227 Changed supported Emacs version number from 21.3.50 to 22 in
228 Commentary.
229
230 * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
231 to check if `erc-server-process' is bound.
232
233 * erc-nicklist.el: Added to the Commentary section an explanation
234 that `erc-nicklist-quit' should be called from within the nicklist
235 buffer. Set file coding to utf-8 so a contributor's name is
236 displayed correctly.
237 (erc-nicklist-icons-directory): Use customize type directory
238 instead of string.
239 (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
240 if it wasn't found. This fixes a bug where an error would occur
241 when using `string=' on bbdb-nick if it was nil.
242
243 * erc-replace.el: Removed URL from file information since it
244 doesn't exist.
245
246 * erc-sound.el: Updated copyright years. Fixed Commentary and
247 added Usage section.
248 (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
249 `erc-ctcp-query-SOUND-hook' here. Removed the keybinding
250 definitions.
251 (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
252 (erc-ctcp-query-SOUND): Doc fix.
253 (erc-play-command): Removed, not necessary anymore.
254 (erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
255 higher in code, added docstring.
256 (erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
257 as well since version 21 or earlier. Removed commented-out older
258 version of function.
259
260 * NEWS: Fixed formatting, added channel tracking change.
261
2622006-09-03 Diane Murray <disumu@x3y2z1.net>
263
264 * erc.el: M-x erc RET can now be used to start ERC.
265 (erc-open): Renamed from `erc'.
266 (erc-before-connect): Change erc-select to erc.
267 (erc): Renamed from `erc-select'. Use `erc-open'.
268 (erc-select): Defined as alias of `erc'.
269 (erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
270 (erc-select-ssl): Defined as alias of `erc-ssl'.
271 (erc-cmd-SERVER): Use `erc'.
272 (erc-query, erc-handle-irc-url): Use `erc-open'.
273
274 * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
275
276 * erc-menu.el (erc-menu-definition): Use `erc'.
277
278 * erc-networks.el: Updated copyright years.
279 (erc-server-select): Use keyword arguments when calling `erc'.
280
281 * erc.texi (Getting Started, Connecting): Changed erc-select to
282 erc.
283
284 * README: Changed erc-select to erc.
285
286 * NEWS: Added note about these changes.
287
288 * FOR-RELEASE: Marked this item as done.
289
2902006-08-21 Diane Murray <disumu@x3y2z1.net>
291
292 * erc-track.el (erc-track-mode-line-mouse-face): New variable.
293 (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
294 properties to channel name.
295
2962006-08-20 Michael Olson <mwolson@gnu.org>
297
298 * erc-identd.el (erc-identd): New customization group.
299 (erc-identd-port): New option that specifies the port to use if
300 none is given as an argument to erc-identd-start.
301 (identd): Place erc-identd-quickstart in erc-connect-pre-hook
302 instead of erc-identd-start so that we deal with the different
303 meaning of the first argument.
304 (erc-identd-start): Use erc-identd-port.
305 (erc-identd-quickstart): New function that ignores any arguments
306 and calls erc-identd-start.
307
308 * erc.el (erc-with-server-buffer): New macro that switches to the
309 current ERC server buffer and runs some code. If no server buffer
310 is available, return nil. This is a useful way to access
311 variables in the server buffer.
312 (erc-get-server-user, erc-add-server-user)
313 (erc-remove-server-user, erc-change-user-nickname)
314 (erc-get-server-nickname-list, erc-get-server-nickname-alist)
315 (erc-ison-p, erc-active-buffer, erc-cmd-IGNORE)
316 (erc-cmd-UNIGNORE, erc-cmd-IDLE, erc-cmd-NICK, erc-cmd-BANLIST)
317 (erc-cmd-MASSUNBAN, erc-nickname-in-use, erc-ignored-user-p)
318 (erc-format-channel-modes): Use it.
319 (erc-once-with-server-event, erc-once-with-server-event-global)
320 (erc-with-buffer, erc-with-all-buffers-of-server): Use make-symbol
321 instead of gensym.
322 (erc-open-server-buffer-p): New function that returns non-nil if
323 the given buffer is an ERC server buffer that has an open IRC
324 process.
325 (erc-with-buffer): Use buffer-live-p here to set a good example,
326 though it isn't really needed here.
327 (erc-away): Mention erc-away-time.
328 (erc): Don't propagate the erc-away setting, since it makes more
329 sense to access it from the server buffer. Set up the prompt
330 before connecting rather than after. Run erc-connect-pre-hook
331 with the buffer as an argument, instead of no arguments.
332 (erc-cmd-GAWAY): Use erc-open-server-buffer-p instead of
333 erc-server-buffer-p so that only open connections are set away.
334 (erc-cmd-GQUIT): Use erc-open-server-buffer-p.
335 (erc-process-away): Docfix. Don't set erc-away in channel
336 buffers.
337 (erc-set-current-nick): Make this uniform with the style used in
338 erc-current-nick.
339 (erc-away-time): Rename from erc-away-p, since this is no longer a
340 boolean-style predicate.
341 (erc-format-away-status): Use it.
342 (erc-initialize-log-marker): Accept a `buffer' argument.
343 (erc-connect-pre-hook): Docfix.
344 (erc-connection-established): Make sure this runs in the correct
345 buffer.
346 (erc-set-initial-user-mode): Accept a `buffer' argument.
347
348 * erc-stamp.el (erc-add-timestamp): Use erc-away-time.
349
350 * erc-spelling.el (erc-spelling-init): Use
351 erc-with-server-buffer. Accept `buffer' argument.
352 (spelling): Call erc-spelling-init with the `buffer' argument.
353
354 * erc-speedbar.el (erc-speedbar-buttons): Use erc-server-buffer-p.
355
356 * erc-pcomplete.el (pcomplete/erc-mode/UNIGNORE)
357 (pcomplete-erc-all-nicks): Use erc-with-server-buffer.
358
359 * erc-notify.el (erc-notify-timer, erc-cmd-NOTIFY): Use
360 erc-with-server-buffer.
361
362 * erc-networks.el (erc-network, erc-current-network)
363 (erc-network-name): Use erc-with-server-buffer.
364
365 * erc-netsplit.el (erc-cmd-WHOLEFT): Use erc-with-server-buffer.
366
367 * erc-match.el (erc-log-matches, erc-log-matches-come-back): Use
368 erc-away-time.
369
370 * erc-log.el (log): Use erc-away-time. Remove unnecessary check.
371 Pass `buffer' argument to erc-log-setup-logging instead of setting
372 the current buffer. Ditto for erc-log-disable-logging.
373 (erc-log-setup-logging, erc-log-disable-loggin): Accept a `buffer'
374 argument.
375
376 * erc-list.el (erc-chanlist): Use erc-with-server-buffer.
377
378 * erc-ibuffer.el (erc-away): Use erc-away-time.
379
380 * erc-dcc.el (erc-dcc-get-filter): Temporarily make the buffer
381 read only instead of permanently doing so.
382
383 * erc-compat.el (erc-gensym, *erc-sym-counter*): Remove, since
384 Emacs Lisp has make-symbol, which is better.
385
386 * erc-chess.el (erc-chess-handler, erc-cmd-CHESS): Use
387 erc-with-server-buffer.
388
389 * erc-capab.el (capab-identify): Only deal with server buffers
390 that have an open IRC process.
391 (erc-capab-identify-add-prefix): Use erc-with-server-buffer.
392
393 * erc-backend.el (erc-server-connected): Docfix. Recommend the
394 `erc-server-process-alive' function.
395 (erc-coding-system-for-target): Supply a default target if one is
396 not given.
397 (erc-server-send): Simplify slightly.
398 (erc-call-hooks): Use erc-with-server-buffer.
399 (erc-server-connect, erc-server-setup-periodical-ping): Accept
400 `buffer' argument.
401
402 * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move
403 higher to avoid an automatic load snafu.
404 (erc-autoaway-some-server-buffer): New function that returns an
405 ERC server buffer with a live connection, or nil otherwise.
406 (erc-autoaway-insinuate-maybe): New function that adds the
407 autoaway reset function to post-command-hook if at least one ERC
408 process is alive.
409 (erc-autoaway-remove-maybe): New function that removes the
410 autoaway reset function from post-command-hook if no ERC process
411 is alive.
412 (autoaway): Don't touch post-command-hook unless an IRC process is
413 already open. Remove our addition to post-command-hook as soon as
414 there are no more IRC processes open. Reset the indicators before
415 connecting to an IRC server, which fixes a bug when re-connecting.
416 (erc-autoaway-reset-idle-user): Call erc-autoaway-remove-maybe if
417 there are no more IRC processes open.
418 (erc-autoaway-set-back): Pick an open IRC process. Accept an
419 argument which is a function call if we can't find one.
420 (erc-autoaway-some-open-server-buffer): New function which returns
421 an ERC server buffer with an open connection and a user that is
422 not away.
423 (erc-autoaway-possibly-set-away, erc-autoaway-set-away): Use it.
424 (erc-autoaway-set-away): Accept a `notest' argument which is used
425 to avoid testing the same thing twice.
426 (erc-autoaway-last-sent-time, erc-autoaway-caused-away): Move
427 higher in file to fix byte-compile warning.
428
4292006-08-20 Diane Murray <disumu@x3y2z1.net>
430
431 * erc-backend.el (erc-process-sentinel-1): Doc fix. Let
432 `erc-server-reconnect-p' check all condition cases.
433 (erc-server-reconnect-p): Moved rest of checks from
434 `erc-process-sentinel-1' to here. Now takes an argument, EVENT.
435
4362006-08-14 Diane Murray <disumu@x3y2z1.net>
437
438 * erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
439 (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
440 avoid confusion with rcirc and other clients.
441
442 * erc-backend.el (erc-server-banned): New variable.
443 (erc-server-connect): Set `erc-server-banned' to nil.
444 (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
445 (erc-server-reconnect-p): New function. Return non-nil if the
446 user wants automatic reconnects and if the user has not been
447 banned from the server. This should fix a bug where ERC gets into
448 a loop trying to reconnect with no way to stop it when the user is
449 denied access to the server due to a server ban. It might also
450 help when Tor users are blocked from freenode if freenode servers
451 send the 465 message before disconnecting.
452 (465): Handle "banned from server" error notices.
453
4542006-08-13 Romain Francoise <romain@orebokech.com>
455
456 * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
457 prompt with a space.
458
4592006-08-13 Michael Olson <mwolson@gnu.org>
460
461 * erc-backend.el (erc-server-timed-out): New variable that
462 indicates whether the current connection has timed out due to
463 failure to respond to a ping.
464 (erc-server-send-ping): Set erc-server-timed-out to t.
465 (erc-server-connect): Initialize erc-server-timed-out to nil.
466 (erc-process-sentinel-1): Consult erc-server-timed-out.
467
4682006-08-11 Michael Olson <mwolson@gnu.org>
469
470 * erc-fill.el (erc-fill): Skip any initial empty lines so that we
471 avoid errors when inserting disconnect messages and other messages
472 that begin with newlines.
473
4742006-08-07 Michael Olson <mwolson@gnu.org>
475
476 * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
477 in several places instead of inserting text.
478 (erc-process-sentinel): Move to the input-marker before removing
479 the prompt.
480
481 * erc.el (erc-port): Fix customization options.
482 (erc-display-message): Handle null type explicitly. Previously,
483 this was relying on a chance side-effect. Cosmetic indentation
484 tweak.
485 (english): Add 'finished and 'terminated entries to the catalog.
486 Add initial and terminal newlines to 'disconnected and
487 'disconnected-noreconnect entries. Avoid long lines.
488 (erc-cmd-QUIT): Bind the current erc-server-process to
489 server-proc. If the IRC server responds quickly, it is possible
490 for the connection to close, and hence server buffer to be killed,
491 if erc-kill-server-buffer-on-quit is non-nil. This avoids that
492 problem.
493
4942006-08-06 Michael Olson <mwolson@gnu.org>
495
496 * erc-backend.el (erc-server-send-queue): Update from Circe
497 version of this function.
498 (erc-server-ping-timer-alist): New variable that keeps track of
499 ping timers according to their associated server.
500 (erc-server-last-received-time): New variable that specifies the
501 time of the last message we received from the server. This is
502 used to detect hung processes.
503 (erc-server-send-ping): New function that sends a ping to the IRC
504 process corresponding with the given buffer. Split from
505 erc-server-setup-periodical-ping. If the server buffer no longer
506 exists, cancel the timer. If the server process has not given us
507 a message, including PING responses, since the last PING, kill it.
508 This is necessary to deal with some aberrant freenode behavior.
509 Idea taken from rcirc.
510 (erc-server-setup-periodical-ping): Rename from
511 erc-server-setup-periodical-server-ping.
512 (erc-server-filter-function): Use erc-current-time instead of
513 current-time.
514
515 * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
516 multi-tty Emacs.
517 (erc-select-startup-file): Fix bug introduced by recent change.
518 (erc-cmd-QUIT): If the IRC process has not terminated itself
519 within 4 seconds of completing our quit-hook, kill it manually.
520 Freenode in particular needs this.
521 (erc-connection-established): Use erc-server-setup-periodical-ping
522 instead of erc-server-setup-periodical-server-ping.
523
5242006-08-05 Michael Olson <mwolson@gnu.org>
525
526 * erc-log.el (erc-log-standardize-name): New function that returns
527 a filename that is safe for use for a log file.
528 (erc-current-logfile): Use it.
529
530 * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
531 since that is a fairly standard directory.
532 (erc-select-startup-file): Re-write to use
533 convert-standard-filename, which will ensure that MS-DOS systems
534 look for the _ercrc.el file.
535
5362006-08-02 Michael Olson <mwolson@gnu.org>
537
538 * erc.el (erc-version-string): Release ERC 5.1.4.
539
540 * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
541
542 * erc.el (erc-active-buffer): Fix bug that caused messages to go
543 to the wrong buffer. Thanks to offby1 for the report.
544
545 * erc-backend.el (erc-coding-system-for-target): Handle case where
546 target is nil. Thanks to Kai Fan for the patch.
547
5482006-07-29 Michael Olson <mwolson@gnu.org>
549
550 * erc-log.el (erc-log-setup-logging): Don't offer to save the
551 buffer. It will be saved automatically killed. Thanks to Johan
552 Bockgård and Tassilo Horn for pointing this out.
553
5542006-07-27 Johan Bockgård <bojohan@users.sourceforge.net>
555
556 * erc.el (define-erc-module): Make find-function and find-variable
557 find the names constructed by `define-erc-module' in Emacs 22.
558
5592006-07-14 Michael Olson <mwolson@gnu.org>
560
561 * erc-log.el (log): Make sure that we enable logging on
562 already-opened buffers as well, in case the user toggles this
563 module after loading ERC. Also be sure to remove logging ability
564 from all ERC buffers when the module is disabled.
565 (erc-log-setup-logging): Set buffer-file-name to nil rather than
566 the empty string. This should fix some errors that occur when
567 quitting Emacs without first killing all ERC buffers.
568 (erc-log-disable-logging): New function that removes the logging
569 ability from the current buffer.
570
571 * erc-spelling.el (spelling): Use dolist and buffer-live-p.
572
5732006-07-12 Michael Olson <mwolson@gnu.org>
574
575 * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
576 than call toggle-read-only.
577
578 * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
579 add autoload cookie.
580
5812006-07-09 Michael Olson <mwolson@gnu.org>
582
583 * erc.el (erc-version-string): Release ERC 5.1.3.
584
585 * erc.texi: Update for the 5.1.3 release.
586
587 * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
588 from being set automatically away and current buffer is not an ERC
589 buffer.
590
591 * erc-identd.el: Fix compiler error.
592
593 * erc.texi (Development): Use @subheading instead of @subsection.
594 (Advanced Usage): Add menu.
595 (Connecting): Fully document how to connect to an IRC server.
596 (Options, Tips and Tricks, Sample Configuration): New unwritten
597 sections.
598
599 * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
600 (erc-user-full-name, erc-password): Docfixes and customization
601 interface tweaks.
602 (erc-try-new-nick-p): Rename from
603 `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
604 (erc-nickname-in-use): Use `erc-try-new-nick-p'. Check the length
605 of `erc-nick-uniquifier', in case someone wants multiple
606 characters.
607 (erc-compute-server, erc-compute-nick, erc-compute-full-name)
608 (erc-compute-port): Docfixes.
609
610 * erc-log.el (log): Move all add-hook calls here, rather than
611 executing them immediately, and also cause them to be un-hooked
612 when the module is removed.
613 (erc-save-buffer-on-part): Move next to
614 `erc-save-queries-on-quit'.
615 (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
616 (erc-log-write-after-send, erc-log-write-after-insert): Default to
617 nil. This makes things fast, but reasonably failsafe, by default.
618
6192006-07-08 Michael Olson <mwolson@gnu.org>
620
621 * erc-log.el (erc-log-insert-log-on-open): Make this nil by
622 default, since most IRC clients don't do this.
623 (erc-log-write-after-send): New option that determines whether the
624 log file will be written to after every sent message.
625 (erc-log-write-after-insert): New option that determines whether
626 the log file will be written to when new text is added to a logged
627 ERC buffer.
628 (log): Use the aforementioned options.
629
630 * erc.texi (Modules): Document the "completion" module.
631
632 * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
633 have a nil element in the list when ignore-self is non-nil.
634
6352006-07-05 Michael Olson <mwolson@gnu.org>
636
637 * erc.el (erc-modules): Use `set' instead of `set-default', since
638 this setting should never be buffer-local. Add the `page' module
639 to the list.
640
641 * erc.texi (Modules): Add entries for `list' and `page' modules.
642 Change "spell" to "spelling".
643 (History): Use past tense throughout.
644
6452006-07-02 Michael Olson <mwolson@gnu.org>
646
647 * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
648 can happen when doing /PART.
649
650 * erc.el (erc-quit-reason-various-alist)
651 (erc-part-reason-various-alist): In the example, use "^$" as an
652 example, since "" matches anything.
653 (erc-quit-reason-various, erc-part-reason-various): If no argument
654 is given, and no matches are found, use our default reason instead
655 of "nil".
656
6572006-06-30 Michael Olson <mwolson@gnu.org>
658
659 * erc.texi (Modules): Mention identd.
660 (Releases): Update mailing list address and download location.
661 (Development): Refactor. Provide updated directions for Arch.
662 Make URLs clickable.
663 (Keystroke Summary): Typo fix. Use more Texinfo syntax.
664 (Getting Started): Give simpler example. We do not need to
665 explicitly load every module.
666 (History): Update.
667
668 * erc-autoaway.el, erc-join.el, erc-backend.el, erc-bbdb.el:
669 erc-button.el, erc-chess.el, erc-compat.el, erc-hecomplete.el:
670 erc-dcc.el, erc-ezbounce.el, erc-fill.el, erc-ibuffer.el:
671 erc-imenu.el, erc-list.el, erc-log.el, erc-match.el, erc-menu.el:
672 erc-networks.el, erc-netsplit.el, erc-nicklist.el:
673 erc-services.el, erc-pcomplete.el, erc-replace.el, erc-ring.el:
674 erc-speedbar.el, erc-spelling.el, erc-stamp.el, erc-track.el:
675 erc.el: Remove version strings.
676
677 * erc.el (erc-cmd-SMV): Remove, since we do not have meaningful
678 module versions anymore.
679 (erc-version-modules): Remove, since we do not use this function
680 anymore.
681 (erc-latest-version, erc-ediff-latest-version): Remove, since this
682 was only useful back when ERC consisted of one file.
683 (erc-modules): Add line for identd.
684 (erc-get-channel-mode-from-keypress): Typo fix.
685
686 * erc-imenu.el: Remove unnecessary lines in header.
687
688 * erc-goodies.el (erc-handle-irc-url): Docfix.
689
690 * erc-identd.el: Define an ERC module for this.
691 (erc-identd-start): Don't create a process buffer if possible.
692 Otherwise, use conventional hidden names for process buffers.
693
6942006-06-29 Michael Olson <mwolson@gnu.org>
695
696 * erc-backend.el (erc-coding-system-for-target): Match
697 case-insensitively. Use a pattern match instead of `assoc', as
698 per the documentation for `erc-encoding-coding-alist'.
699
700 * erc-track.el (erc-track-shorten-aggressively): Fix typo.
701
7022006-06-27 Michael Olson <mwolson@gnu.org>
703
704 * erc.el: Update maintainer information and URLs.
705
7062006-06-14 Michael Olson <mwolson@gnu.org>
707
708 * erc.el (erc-active-buffer): If the active buffer has been
709 deleted, default to the server buffer.
710 (erc-toggle-flood-control): When the user hits C-c C-f, make flood
711 control really toggle, not unconditionally turn off.
712
7132006-06-12 Michael Olson <mwolson@gnu.org>
714
715 * NEWS: Add items since the 5.1.2 release.
716
717 * erc-autoaway.el (erc-autoaway-caused-away): New variable that
718 indicates whether the current away status was caused by this
719 module.
720 (erc-autoaway-set-back): Only set back if this module set the user
721 away.
722 (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
723 (erc-autoaway-reset-indicators): New function that resets some
724 indicators when the user is no longer away.
725 (autoaway): Add the above function to the 305 hook.
726
7272006-06-05 Romain Francoise <romain@orebokech.com>
728
729 * erc.texi (History): Fix various typos.
730
7312006-06-04 Michael Olson <mwolson@gnu.org>
732
733 * erc-autoaway.el (erc-autoaway-idle-method): Move after the
734 definition of the autoaway module.
735 (autoaway): Don't do anything if erc-autoaway-idle-method is
736 unbound. This prevents an error on startup.
737
7382006-06-03 Michael Olson <mwolson@gnu.org>
739
740 * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
741 (erc-autoaway-idle-method): Renamed from
742 `erc-autoaway-use-emacs-idle'. We have more than two choices for
743 how to do this, so it's best to make this take symbol values.
744 Improve documentation. Remove warning against Emacs idle-time;
745 the point is moot now that we get user idle time via a different
746 method. Make sure we disable and re-enable the module when
747 changing this value.
748 (autoaway): Conditionalize on the above option. If using the idle
749 timer or user idle methods, don't add anything to the
750 send-completed or server-001 hooks, since it is unnecessary.
751 (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
752 Docfix.
753 (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
754 (erc-autoaway-reset-idle-irc): Renamed from
755 `erc-autoaway-reset-idle'. Don't pass line to
756 `erc-autoaway-set-away', since it is not used.
757 (erc-autoaway-reset-idle-user): New function that resets the idle
758 state for user idle time.
759 (erc-autoaway-set-back): Remove line argument, since it is not
760 used.
761
7622006-06-01 Michael Olson <mwolson@gnu.org>
763
764 * erc.el (erc-buffer-filter): Make sure all buffers returned from
765 this are live.
766
7672006-05-01 Edward O'Connor <ted@oconnor.cx>
768
769 * erc-goodies.el (erc-handle-irc-url): New function, suitable as
770 a value for `url-irc-function'.
771
7722006-04-18 Diane Murray <disumu@x3y2z1.net>
773
774 * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
775 argument IGNORE-SELF. If this is non-nil, don't return the user's
776 current nickname. Doc fix.
777 (pcomplete/erc-mode/complete-command): Don't complete the current
778 nickname.
779
7802006-04-05 Diane Murray <disumu@x3y2z1.net>
781
782 * erc.el (erc-cmd-SV): Removed the exclamation point. Show the
783 build date as it's shown in `emacs-version'.
784
785 * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
786 with the same face property as the previous character.
787
7882006-04-02 Michael Olson <mwolson@gnu.org>
789
790 * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
791 erc.el: Make sure to include a newline inside of negated classes,
792 so that a newline is not matched.
793
7942006-04-01 Michael Olson <mwolson@gnu.org>
795
796 * erc-backend.el (erc-server-connect-function): Don't try to
797 detect the existence of the `open-network-stream-nowait' function,
798 since I can't find it in Emacs21, XEmacs21, or Emacs22.
799
8002006-03-27 Michael Olson <mwolson@gnu.org>
801
802 * erc.texi: Update direntry. Remove unneeded local variables.
803
8042006-03-26 Michael Olson <mwolson@gnu.org>
805
806 * erc.el (erc-header-line): New face that will be used to colorize
807 the text of the header-line, provided that
808 `erc-header-line-face-method' is non-nil.
809 (erc-prompt-face): Fix formatting.
810 (erc-header-line-face-method): New option that determines the
811 method used for colorizing header-line text. This may be a
812 function, nil, or non-nil.
813 (erc-update-mode-line-buffer): Use the aforementioned option and
814 face to colorize the header-line text, if that is what the user
815 wants.
816 (erc-send-input): If flood control is not activated, don't split
817 the input line.
818
8192006-03-25 Michael Olson <mwolson@gnu.org>
820
821 * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
822 that fixes the case where there is no leading whitespace. Only
823 remove the first space character, though.
824
825 * erc-identd.el (erc-identd-start): Fix a bug by making sure that
826 erc-identd-process is set properly.
827 (erc-identd-start, erc-identd-stop): Add autoload cookies.
828 (erc-identd-start): Pass :host parameter so this works with Emacs
829 22.
830
8312006-03-09 Diane Murray <disumu@x3y2z1.net>
832
833 * erc-button.el (erc-button-keymap): Use <backtab> rather than
834 <C-tab> for `erc-button-previous' as it is a more standard key
835 binding for this type of function.
836
8372006-02-28 Diane Murray <disumu@x3y2z1.net>
838
839 * erc-capab.el: Removed things that were accidentally committed on
840 2006-02-20. Removed Todo section.
841 (erc-capab-unidentified): Removed.
842
8432006-02-26 Michael Olson <mwolson@gnu.org>
844
845 * erc-capab.el: Use (eval-when-compile (require 'cl)).
846 (erc-capab-unidentified): Fix compiler warning by specifying
847 group.
848
8492006-02-20 Diane Murray <disumu@x3y2z1.net>
850
851 * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
852 to explain thoughts better. `erc-server-parameters' is an
853 associated list when it's set, not a string.
854
8552006-02-19 Michael Olson <mwolson@gnu.org>
856
857 * erc-capab.el (erc-capab-send-identify-messages): Make sure some
858 parameters are strings before using them. Thanks to Alejandro
859 Benitez for the report.
860
861 * erc.el (erc-version-string): Release ERC 5.1.2.
862
8632006-02-19 Diane Murray <disumu@x3y2z1.net>
864
865 * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
866 <C-tab>.
867 (erc-button-previous): New function.
868
8692006-02-15 Michael Olson <mwolson@gnu.org>
870
871 * NEWS: Add category for ERC 5.2.
872
873 * erc.el (erc): Move to the end of the buffer when a continued
874 session is detected. Thanks to e1f and indio for the report and
875 testing a potential fix.
876
8772006-02-14 Michael Olson <mwolson@gnu.org>
878
879 * debian/changelog: Prepare a new Debian package.
880
881 * Makefile (debprepare): New rule that creates an ERC snapshot
882 directory for use in both new Debian releases and revisions for
883 Debian packages.
884 (debrelease, debrevision-mwolson): Use debprepare.
885
886 * NEWS: Bring up-to-date.
887
888 * erc-stamp.el (erc-insert-timestamp-right): For now, put
889 timestamps before rather than after erc-fill-column when
890 erc-timestamp-right-column is nil. This way we won't surprise
891 anyone unpleasantly, or so it is hoped.
892
8932006-02-13 Michael Olson <mwolson@gnu.org>
894
895 * erc-dcc.el: Use (eval-when-compile (require 'cl)).
896
8972006-02-12 Michael Olson <mwolson@gnu.org>
898
899 * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
900 * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
901 * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
902 * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
903 * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
904 * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
905 * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
906 Add 2006 to copyright years, to comply with the changed guidelines.
907
9082006-02-11 Michael Olson <mwolson@gnu.org>
909
910 * erc.el (erc-update-modules): Handle erc-capab-identify
911 correctly. Make some requirements shorter, so that it's easier to
912 see why they are needed.
913
914 * erc-capab.el: Add autoload cookie for capab-identify.
915 (erc-capab-send-identify-messages, erc-capab-identify-activate):
916 Minor whitespace fix in code.
917
918 * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
919 `erc-timestamp-right-align-by-pixel'. Set the default based on
920 whether we are in Emacs 22, and using X. Improve documentation.
921 (erc-insert-aligned): Remove calculation of offset, since
922 :align-to pos works after all. Unlike the previous solution, this
923 one works when erc-stamp.el is compiled.
924 (erc-insert-timestamp-right): Don't add length of string, and then
925 later remove its displayed width. This puts timestamps after
926 erc-fill-column when erc-timestamp-right-column is nil, rather
927 than before it. It also fixes a subtle bug. Remove use of
928 `current-window', since there is no variable by that name in
929 Emacs21, Emacs22, or XEmacs21 beta. Check to see whether
930 `erc-fill-column' is non-nil before using it.
931
9322006-02-11 Diane Murray <disumu@x3y2z1.net>
933
934 * erc-list.el: Define `list' module which sets the alias
935 `erc-cmd-LIST' to `erc-list-channels' when enabled and
936 `erc-list-channels-simple' when disabled.
937 (erc-list-channels): Was `erc-cmd-LIST', renamed.
938 (erc-list-channels-simple): New function.
939
940 * erc.el (erc-modules): Added `list' to enabled modules. Changed
941 `capab-identify' description. Moved customization options left in
942 source code.
943
944 * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
945
946 * erc-capab.el: Put a little more detail into Usage section.
947 (define-erc-module): Run `erc-capab-identify-setup' in all open
948 server buffers when enabling.
949 (erc-capab-identify-setup): Make PROC and PARSED optional
950 arguments.
951 (erc-capab-identify-add-prefix): Simplified nickname regexp. This
952 should now also match nicknames that are formatted differently
953 than the default.
954
955 * erc-spelling.el (define-erc-module): Make sure there's a buffer
956 before calling `with-current-buffer'.
957
9582006-02-10 Michael Olson <mwolson@gnu.org>
959
960 * Makefile (debbuild): Split from debrelease.
961 (debrevision-mwolson): New rule that causes a Debian revision to
962 be built.
963
964 * erc.el (erc-migrate-modules): Use a better algorithm. Thanks to
965 Johan Bockgård.
966 (erc-modules): Change use of 'pcomplete to 'completion.
967
9682006-02-09 Diane Murray <disumu@x3y2z1.net>
969
970 * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
971 * erc-capab.el: Require erc.
972 (erc-capab-send-identify-messages): Use `erc-server-send'.
973 (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
974 the flags so we can also check whether the `erc-identified' text
975 property is there at all.
976 (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
977 This fixes a bug where the prefix wasn't inserted when timestamps
978 are inserted on the right. Tweaked nickname regexp.
979 (erc-capab-find-parsed): New function.
980 (erc-capab-get-unidentified-nickname): Updated to check for 0
981 flag. Only get nickname if there's a nickuserhost associated with
982 this message.
983
984 * erc-capab.el: New file. Adds the new module
985 `erc-capab-identify', which allows flagging of unidentified users
986 on servers running an ircd based on dancer - irc.freenode.net, for
987 example.
988
989 * erc.el (erc-modules): Added `capab-identify' to options.
990 (erc-get-parsed-vector, erc-get-parsed-vector-nick)
991 (erc-get-parsed-vector-type): Moved here from erc-match.el.
992
993 * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
994 (erc-get-parsed-vector-type): Moved these functions to erc.el
995 since they can be useful outside of the text matching module.
996
997 * NEWS: Added erc-capab.el.
998
999 * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
1000 to "ERC".
1001
10022006-02-07 Michael Olson <mwolson@gnu.org>
1003
1004 * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
1005 ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
1006 the filenames in DOS.
1007
1008 * erc-goodies.el: Comment fix.
1009
1010 * erc-hecomplete.el: Rename from erc-complete.el. Update
1011 commentary. Use define-erc-module so that it's possible to
1012 actually use this.
1013 (erc-hecomplete): Rename function from `erc-complete'.
1014 (erc-hecomplete): Rename group from `erc-old-complete'. Docfix.
1015
1016 * erc-join.el: Rename from erc-autojoin.el.
1017
1018 * erc-networks.el: Rename from erc-nets.el.
1019
1020 * erc-services.el: Rename from erc-nickserv.el.
1021
1022 * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument. Use
1023 the simpler `indent-to' function when
1024 `erc-timestamp-right-align-by-pixel' is nil.
1025 (erc-insert-timestamp-right): If the timestamp goes on the
1026 following line, don't add timestamp properties to the spaces in
1027 front of it.
1028
1029 * erc.el (erc-migrate-modules): New function that eases migration
1030 of module names.
1031 (erc-modules): Call erc-migrate-modules in the :get accessor.
1032 (erc-modules, erc-update-modules): Update for new modules names.
1033 (erc-cmd-SMV): Remove, since this does not give useful output due
1034 to the version strings being removed from ERC modules.
1035
10362006-02-05 Michael Olson <mwolson@gnu.org>
1037
1038 * erc-spelling.el (erc-spelling-init): If
1039 `erc-spelling-dictionaries' is nil, do not set
1040 ispell-local-dictionary. Before, it was being set to nil, which
1041 was causing a long delay while the ispell process restarted.
1042 (erc-spelling-unhighlight-word): New function that removes
1043 flyspell properties from a spell-checked word.
1044 (erc-spelling-flyspell-verify): Don't spell-check nicks or words
1045 that have '/' before them.
1046
10472006-02-04 Michael Olson <mwolson@gnu.org>
1048
1049 * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
1050
1051 * erc-complete.el (erc-nick-completion-exclude-myself)
1052 (erc-try-complete-nick): Use better function for getting list of
1053 channel users.
1054
1055 * erc-goodies.el: Docfix.
1056
1057 * erc-stamp.el: Use new arch tagline, since the other one wasn't
1058 being treated properly.
1059
1060 * erc.el (erc-version-string): Release ERC 5.1.1.
1061
10622006-02-03 Zhang Wei <id.brep@gmail.com>
1063
1064 * erc.el (erc-version-string): Don't hard-code Emacs version.
1065 (erc-version): Use emacs-version.
1066
10672006-01-31 Michael Olson <mwolson@gnu.org>
1068
1069 * erc-stamp.el: Update copyright years.
1070
10712006-01-30 Simon Josefsson <jas@extundo.com>
1072
1073 * erc.el (erc-open-ssl-stream): Use tls.el.
1074
10752006-01-30 Michael Olson <mwolson@gnu.org>
1076
1077 * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
1078 that determines whether to use pixel values to align right
1079 timestamps. The default is not to do so, since it only works with
1080 Emacs22 on X, and even then some people have trouble.
1081 (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
1082
10832006-01-29 Michael Olson <mwolson@gnu.org>
1084
1085 * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
1086 ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
1087 earlier changes. Use utf-8 encoding. Fix some accent typos.
1088
1089 * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
1090 variable.
1091 (erc-speedbar-goto-buffer): Fix compiler warning.
1092
1093 * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
1094 `ibuffer-degine-limiter'. Use `define-ibuffer-column' instead of
1095 `ibuffer-define-column'. Require 'ibuf-ext so that the macros
1096 work without compiler warnings.
1097
1098 * man/erc.texi (Obtaining ERC, Installation): Note that these
1099 sections may be skipped if using the version of ERC that comes
1100 with Emacs.
1101
11022006-01-29 Edward O'Connor <ted@oconnor.cx>
1103
1104 * erc-viper.el: Remove. Now that ERC is included in Emacs, these
1105 work-arounds live in Viper itself.
1106
11072006-01-28 Michael Olson <mwolson@gnu.org>
1108
1109 * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
1110 guidelines.
1111
1112 * erc-*.el: Space out copyright years like the rest of Emacs. Use
1113 the Emacs copyright statement. Refer to ourselves as ERC rather
1114 than "Emacs IRC Client", since there are now several IRC clients
1115 for Emacs.
1116
1117 * erc-compat.el (erc-emacs-build-time): Define as a variable.
1118
1119 * erc-log.el (erc-log-setup-logging): Use write-file-functions.
1120
1121 * erc-ibuffer.el: Require 'erc.
1122
1123 * erc-stamp.el (erc-insert-aligned): Only use the special text
1124 property when window-system is X.
1125
1126 * erc.texi: Adapt for inclusion in Emacs.
1127
11282006-01-28 Johan Bockgård <bojohan@users.sourceforge.net>
1129
1130 * erc.el (erc-format-message): More `cl' breakage; don't use
1131 `oddp'.
1132
11332006-01-27 Michael Olson <mwolson@gnu.org>
1134
1135 * debian/changelog: Update for new release.
1136
1137 * debian/control (Description): Update.
1138
1139 * debian/rules: Concatenate ChangeLog for 2005.
1140
1141 * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
1142 (debrelease, release): Copy images directory.
1143
1144 * NEWS: Spelling fixes. Add items for recent changes.
1145
1146 * erc.el (erc): Move call to erc-update-modules before the call to
1147 erc-mode. This should fix a timestamp display issue.
1148 (erc-version-string): Release ERC 5.1.
1149
11502006-01-26 Michael Olson <mwolson@gnu.org>
1151
1152 * erc-stamp.el (erc-insert-aligned): New function that inserts
1153 text in an perfectly-aligned way relative to the right margin. It
1154 only works well with Emacs22. A sane fallback is provided for
1155 other versions of Emacs.
1156 (erc-insert-timestamp-right): Use the new function.
1157
11582006-01-25 Edward O'Connor <ted@oconnor.cx>
1159
1160 * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
1161 before `erc-match-mode'.
1162
1163 * erc-match.el (match): Append `erc-match-message' to
1164 `erc-insert-modify-hook'.
1165
11662006-01-25 Michael Olson <mwolson@gnu.org>
1167
1168 * FOR-RELEASE: Mark last release requirement as done.
1169
1170 * Makefile (realclean, distclean): Remove docs.
1171
1172 * erc.texi: Take care of all pre-5.1 items.
1173
1174 * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
1175 `process-send-string' in `condition-case' to avoid an error when
1176 quitting ERC.
1177
1178 * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
1179 variable-width characters in the timestamp and on the same line.
1180 The latter is a kludge, but it seems to work with most of the
1181 input I've thrown at it so far. It's certainly better than going
1182 past the end of line consistently when we have variable-width
1183 characters on the same line. When `erc-timestamp-intangible' is
1184 non-nil, add intangible properties to the whitespace as well, so
1185 that hitting <end> does what you'd expect.
1186
1187 * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
1188 this to only use boolean values for `erc-flood-protect'. Update
1189 documentation.
1190 (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
1191 that any QUIT-related messages go there.
1192 (erc): Try to be more clever about re-using channel buffers when
1193 automatically re-connecting. Thanks to e1f for noticing.
1194
11952006-01-23 Michael Olson <mwolson@gnu.org>
1196
1197 * ChangeLog.2005: Remove erroneous line.
1198
1199 * FOR-RELEASE: Make that the Makefile tweaking is complete.
1200 (NEWS): Mark as done.
1201
1202 * Makefile (MANUAL): New option indicating the name of the manual.
1203 (PREFIX, ELISPDIR, INFODIR): New options that specify the
1204 directories to install lisp code and info manuals to. PREFIX is
1205 used only by ELISPDIR and INFODIR.
1206 (all): Call `lisp' and create the manual.
1207 (lisp): Compile lisp code.
1208 (%.info, %.html): New rules that make Info files and HTML files,
1209 respectively, from a TexInfo source.
1210 (doc): Create both the Info and HTML versions of the manual. This
1211 is for the user -- we never call it automatically.
1212 (install-info): Install Info files.
1213 (install-bin): Install compiled and source Lisp files.
1214 (todo): Remove, since it seems pointless.
1215
1216 * NEWS: Update.
1217
1218 * README: Add Installation instructions. Tweak layout.
1219
1220 * erc.texi: Work on some pre-5.1 items.
1221
1222 * erc-stamp.el, erc-track.el: Move some functions and options in
1223 order to get rid of a few compiler warnings.
1224
1225 * erc.el (erc-modules): Enable readonly by default. This will
1226 prevent new users from accidentally removing old messages, which
1227 could be disconcerting. Also enable stamp by default, since
1228 timestamps are a fairly standard feature among IRC clients.
1229
1230 * erc-button.el: Munge whitespace.
1231
1232 * erc-identd.el (erc-identd-start): Instead of throwing an error,
1233 just try to use the obsolete function.
1234
12352006-01-22 Michael Olson <mwolson@gnu.org>
1236
1237 * erc-backend.el (erc-decode-string-from-target): Make sure that
1238 we have a string as an argument. If not, coerce it to the empty
1239 string. Hopefully, this will work painlessly around an edge case
1240 related to quitting ERC around the same time a message comes in.
1241
12422006-01-22 Johan Bockgård <bojohan@users.sourceforge.net>
1243
1244 * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
1245 `case'). Doc fixes.
1246 (erc-find-parsed-property): Simplify.
1247 (erc-track-get-active-buffer): Fix logic. Simplify.
1248 (erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
1249
1250 * erc-speak.el: Doc fixes.
1251 (erc-speak-region): `propertize' --> `erc-propertize'.
1252
1253 * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
1254 `erc-propertize'.
1255
1256 * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
1257 account when wrapping URLs.
1258
1259 * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
1260
1261 * erc-backend.el (define-erc-response-handler): Doc fix.
1262
12632006-01-22 Michael Olson <mwolson@gnu.org>
1264
1265 * erc.el (erc-update-modules): Use `require' instead of `load',
1266 but prevent it from causing errors, in order to preserve the
1267 previous behavior.
1268
12692006-01-21 Michael Olson <mwolson@gnu.org>
1270
1271 * FOR-RELEASE (Source): Mark cl task as done.
1272
1273 * Makefile (erc-auto.el): Call erc-generate-autoloads rather than
1274 generate-autoloads.
1275 (erc-auto.el, %.elc): Don't show command, just its output.
1276
1277 * NEWS: Add items from 2005-01-01 to 2005-08-13.
1278
1279 * debian/copyright (Copyright): Update.
1280
1281 * erc-auto.in (erc-generate-autoloads): Rename from
1282 generate-autoloads.
1283
1284 * erc.el, erc-autoaway.el, erc-backend.el: Use
1285 erc-server-process-alive instead of erc-process-alive.
1286
1287 * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
1288 erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
1289 erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
1290 Use (eval-when-compile (require 'cl)), so that compilation doesn't
1291 fail.
1292
1293 * erc-fill.el, erc-truncate.el: Whitespace munging.
1294
1295 * erc.el: Update copyright notice. Remove eval-after-load code.
1296 (erc-with-buffer): Docfix.
1297 (erc-once-with-server-event, erc-once-with-server-event-global)
1298 (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
1299 instead of gensym.
1300 (erc-banlist-update): Use erc-delete-if instead of delete-if.
1301 (erc): Call `erc-update-modules' here.
1302
1303 * erc-backend.el: Require 'erc-compat to minimize compiler
1304 warnings.
1305 (erc-decode-parsed-server-response): Docfix.
1306 (erc-server-process-alive): Move here from erc.el and rename from
1307 `erc-process-alive'.
1308 (erc-server-send, erc-remove-channel-users): Make sure process is
1309 alive before sending data to it.
1310
1311 * erc-bbdb.el: Update copyright years.
1312 (erc-bbdb-whois): Remove overexuberant comment.
1313
1314 * erc-button.el: Require erc-fill, since we make liberal use of
1315 `erc-fill-column'.
1316
1317 * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
1318 functions, the latter of which provides an `assert' equivalent.
1319 (erc-remove-if-not): New function that provides a simple
1320 implementation of `remove-if-not'.
1321 (erc-gensym): New function that provides a simple implementation
1322 of `gensym'.
1323 (erc-delete-if): New function that provides a simple
1324 implementation of `delete-if'.
1325 (erc-member-if): New function that provides a simple
1326 implementation of `member-if'.
1327 (field-end): Remove this, since it is unused, and later versions
1328 of XEmacs have this function already.
1329 (erc-function-arglist): Moved here from erc.el.
1330 (erc-delete-dups): New compatibility function for dealing with
1331 XEmacs.
1332 (erc-subseq): New function copied from cl-extra.el.
1333
1334 * erc-dcc.el: Require pcomplete during compilation to avoid
1335 compiler warnings.
1336 (erc-unpack-int, erc-dcc-send-filter)
1337 (erc-dcc-get-filter): Use erc-assert instead of assert.
1338 (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
1339 remove-if-not.
1340
1341 * erc-match.el (erc-log-matches): Fix compiler warning.
1342
1343 * erc-nicklist.el: Update copyright notice.
1344 (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
1345 (erc-nicklist-bitlbee-connected-p): Remove.
1346 (erc-nicklist-insert-medium-name-or-icon): Accept channel
1347 argument. Use it to determine whether we are on bitlbee. Now
1348 that bitlbee names its channel "&bitlbee", this is trivial.
1349 (erc-nicklist-insert-contents): Pass channel as specified above.
1350 Don't try to determine whether we are on bitlbee here.
1351 (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
1352 of remove-if-not.
1353 (erc-nicklist-search-for-nick): Use erc-member-if instead of
1354 member-if.
1355
1356 * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
1357 partially-evaluated lambda expression instead of `delete' and
1358 `find'.
1359
1360 * erc-track.el: Use erc-assert.
1361 (erc-track-modified-channels): Remove use of `return'.
1362 (erc-track-modified-channels): Use `cadr' instead of `second',
1363 since otherwise we would need yet another eval-when-compile line.
1364
13652006-01-19 Michael Olson <mwolson@gnu.org>
1366
1367 * erc-backend.el (erc-process-sentinel-1): Remove attempt to
1368 detect SIGPIPE, since it doesn't work.
1369
13702006-01-10 Diane Murray <disumu@x3y2z1.net>
1371
1372 * erc-spelling.el: Updated copyright years.
1373 (define-erc-module): Enable/disable `flyspell-mode' for all open
1374 ERC buffers as well.
1375 (erc-spelling-dictionaries): Reworded customize description.
1376
1377 * erc.el (erc-command-symbol): New function.
1378 (erc-extract-command-from-line): Use `erc-command-symbol'. This
1379 fixes a bug where "Symbol's function definition is void:
1380 erc-cmd-LIST" would be shown after typing /list at the prompt (the
1381 command was interned because erc-menu.el uses it and is enabled by
1382 default whereas erc-list.el is not).
1383
1384 * NEWS: Started a list of renamed variables.
1385
1386 * erc.el: Reworded the message sent when defining variable
1387 aliases.
1388 (erc-command-indicator-face): Doc fix.
1389 (erc-modules): Enable the match module by default which makes
1390 current nickname highlighting on as the default.
1391
1392 * erc-button.el: Updated copyright years.
1393 (erc-button): New face.
1394 (erc-button-face): Use `erc-button'.
1395 (erc-button-nickname-face): New customizable variable.
1396 (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
1397 new argument to `erc-button-add-button'.
1398 (erc-button-add-button): Doc fix. Added new argument to function
1399 definition, NICK-P. If it's a nickname, use
1400 `erc-button-nickname-face', otherwise use `erc-button-face'. This
1401 makes channel tracking and buttons work better together when
1402 `erc-button-buttonize-nicks' is enabled, since there is a nickname
1403 on just about every line.
1404
1405 * erc-track.el (erc-track-use-faces): Doc fix.
1406 (erc-track-faces-priority-list): Added `erc-button' to list.
1407 (erc-track-priority-faces-only): Doc fix.
1408
14092006-01-09 Diane Murray <disumu@x3y2z1.net>
1410
1411 * erc-button.el (erc-button-url-regexp): Use `concat' so the
1412 regexp is not one long line.
1413 (erc-button-alist): Fixed so that customizing works correctly.
1414 Reorganized. Removed lambda functions with more than two lines.
1415 Doc fix.
1416 (erc-button-describe-symbol, erc-button-beats-to-time): New
1417 functions. Moved from `erc-button-alist'.
1418
14192006-01-07 Michael Olson <mwolson@gnu.org>
1420
1421 * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
1422 process if a SIGPIPE occurs. This happens when a new message
1423 comes in at the same time a /quit is requested.
1424 (erc-process-sentinel): Use string-match rather than string= to do
1425 these comparisons. Matching literal newlines makes me nervous.
1426
1427 * erc-track.el (erc-track-remove-from-mode-line): Handle case
1428 where global-mode-string is not a list. Emacs22 permits this.
1429
1430
1431See ChangeLog.05 for earlier changes.
1432
1433 Copyright (C) 2006, 2007 Free Software Foundation, Inc.
1434
1435 This file is part of GNU Emacs.
1436
1437 GNU Emacs is free software; you can redistribute it and/or modify
1438 it under the terms of the GNU General Public License as published by
1439 the Free Software Foundation; either version 2, or (at your option)
1440 any later version.
1441
1442 GNU Emacs is distributed in the hope that it will be useful,
1443 but WITHOUT ANY WARRANTY; without even the implied warranty of
1444 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1445 GNU General Public License for more details.
1446
1447 You should have received a copy of the GNU General Public License
1448 along with GNU Emacs; see the file COPYING. If not, write to the
1449 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
1450 Boston, MA 02110-1301, USA.
1451
1452;; Local Variables:
1453;; coding: utf-8
1454;; add-log-time-zone-rule: t
1455;; End:
1456
1457;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el
index 9d90d0ae5e9..91a1150802b 100644
--- a/lisp/erc/erc-autoaway.el
+++ b/lisp/erc/erc-autoaway.el
@@ -40,6 +40,49 @@ yourself back when you type something."
40 "The Emacs idletimer. 40 "The Emacs idletimer.
41This is only used when `erc-autoaway-idle-method' is set to 'emacs.") 41This is only used when `erc-autoaway-idle-method' is set to 'emacs.")
42 42
43(defvar erc-autoaway-last-sent-time (erc-current-time)
44 "The last time the user sent something.")
45
46(defvar erc-autoaway-caused-away nil
47 "Indicates whether this module was responsible for setting the
48user's away status.")
49
50(eval-when-compile (defvar erc-autoaway-idle-seconds))
51
52(defun erc-autoaway-reestablish-idletimer ()
53 "Reestablish the Emacs idletimer.
54If `erc-autoaway-idle-method' is 'emacs, you must call this
55function each time you change `erc-autoaway-idle-seconds'."
56 (interactive)
57 (when erc-autoaway-idletimer
58 (erc-cancel-timer erc-autoaway-idletimer))
59 (setq erc-autoaway-idletimer
60 (run-with-idle-timer erc-autoaway-idle-seconds
61 t
62 'erc-autoaway-set-away
63 erc-autoaway-idle-seconds)))
64
65(defun erc-autoaway-some-server-buffer ()
66 "Return some ERC server buffer if its connection is alive.
67If none is found, return nil."
68 (car (erc-buffer-list #'erc-open-server-buffer-p)))
69
70(defun erc-autoaway-insinuate-maybe (&optional server &rest ignored)
71 "Add autoaway reset function to `post-command-hook' if at least one
72ERC process is alive.
73
74This is used when `erc-autoaway-idle-method' is 'user."
75 (when (or server (erc-autoaway-some-server-buffer))
76 (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
77
78(defun erc-autoaway-remove-maybe (&rest ignored)
79 "Remove the autoaway reset function from `post-command-hook' if
80no ERC process is alive.
81
82This is used when `erc-autoaway-idle-method' is 'user."
83 (unless (erc-autoaway-some-server-buffer)
84 (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
85
43;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway") 86;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway")
44(define-erc-module autoaway nil 87(define-erc-module autoaway nil
45 "In ERC autoaway mode, you can be set away automatically. 88 "In ERC autoaway mode, you can be set away automatically.
@@ -65,24 +108,31 @@ set you no longer away.
65Related variables: `erc-public-away-p' and `erc-away-nickname'." 108Related variables: `erc-public-away-p' and `erc-away-nickname'."
66 ;; Enable: 109 ;; Enable:
67 ((when (boundp 'erc-autoaway-idle-method) 110 ((when (boundp 'erc-autoaway-idle-method)
111 (add-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
112 (setq erc-autoaway-last-sent-time (erc-current-time))
68 (cond 113 (cond
69 ((eq erc-autoaway-idle-method 'irc) 114 ((eq erc-autoaway-idle-method 'irc)
70 (add-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc) 115 (add-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
71 (add-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc)) 116 (add-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
72 ((eq erc-autoaway-idle-method 'user) 117 ((eq erc-autoaway-idle-method 'user)
73 (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user)) 118 (add-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
119 (add-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe)
120 (erc-autoaway-insinuate-maybe))
74 ((eq erc-autoaway-idle-method 'emacs) 121 ((eq erc-autoaway-idle-method 'emacs)
75 (erc-autoaway-reestablish-idletimer))) 122 (erc-autoaway-reestablish-idletimer)))
76 (add-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away) 123 (add-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away)
77 (add-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators))) 124 (add-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators)))
78 ;; Disable: 125 ;; Disable:
79 ((when (boundp 'erc-autoaway-idle-method) 126 ((when (boundp 'erc-autoaway-idle-method)
127 (remove-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
80 (cond 128 (cond
81 ((eq erc-autoaway-idle-method 'irc) 129 ((eq erc-autoaway-idle-method 'irc)
82 (remove-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc) 130 (remove-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
83 (remove-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc)) 131 (remove-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
84 ((eq erc-autoaway-idle-method 'user) 132 ((eq erc-autoaway-idle-method 'user)
85 (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)) 133 (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)
134 (remove-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
135 (remove-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe))
86 ((eq erc-autoaway-idle-method 'emacs) 136 ((eq erc-autoaway-idle-method 'emacs)
87 (erc-cancel-timer erc-autoaway-idletimer) 137 (erc-cancel-timer erc-autoaway-idletimer)
88 (setq erc-autoaway-idletimer nil))) 138 (setq erc-autoaway-idletimer nil)))
@@ -104,9 +154,12 @@ definitions of being idle."
104 (const :tag "Emacs idle time" emacs) 154 (const :tag "Emacs idle time" emacs)
105 (const :tag "Last IRC action" irc)) 155 (const :tag "Last IRC action" irc))
106 :set (lambda (sym val) 156 :set (lambda (sym val)
107 (erc-autoaway-disable) 157 (if erc-autoaway-mode
108 (set-default sym val) 158 (progn
109 (erc-autoaway-enable))) 159 (erc-autoaway-disable)
160 (set sym val)
161 (erc-autoaway-enable))
162 (set sym val))))
110 163
111(defcustom erc-auto-set-away t 164(defcustom erc-auto-set-away t
112 "*If non-nil, set away after `erc-autoaway-idle-seconds' seconds of idling. 165 "*If non-nil, set away after `erc-autoaway-idle-seconds' seconds of idling.
@@ -133,21 +186,6 @@ See `erc-auto-discard-away'."
133 :group 'erc-autoaway 186 :group 'erc-autoaway
134 :type 'regexp) 187 :type 'regexp)
135 188
136(eval-when-compile (defvar erc-autoaway-idle-seconds))
137
138(defun erc-autoaway-reestablish-idletimer ()
139 "Reestablish the Emacs idletimer.
140If `erc-autoaway-idle-method' is 'emacs, you must call this
141function each time you change `erc-autoaway-idle-seconds'."
142 (interactive)
143 (when erc-autoaway-idletimer
144 (erc-cancel-timer erc-autoaway-idletimer))
145 (setq erc-autoaway-idletimer
146 (run-with-idle-timer erc-autoaway-idle-seconds
147 t
148 'erc-autoaway-set-away
149 erc-autoaway-idle-seconds)))
150
151(defcustom erc-autoaway-idle-seconds 1800 189(defcustom erc-autoaway-idle-seconds 1800
152 "*Number of seconds after which ERC will set you automatically away. 190 "*Number of seconds after which ERC will set you automatically away.
153If you are changing this variable using lisp instead of customizing it, 191If you are changing this variable using lisp instead of customizing it,
@@ -167,19 +205,12 @@ in seconds."
167 :group 'erc-autoaway 205 :group 'erc-autoaway
168 :type 'string) 206 :type 'string)
169 207
170(defvar erc-autoaway-last-sent-time (erc-current-time)
171 "The last time the user sent something.")
172
173(defvar erc-autoaway-caused-away nil
174 "Indicates whether this module was responsible for setting the
175user's away status.")
176
177(defun erc-autoaway-reset-idle-user (&rest stuff) 208(defun erc-autoaway-reset-idle-user (&rest stuff)
178 "Reset the stored user idle time. 209 "Reset the stored user idle time.
179This is one global variable since a user talking on one net can 210This is one global variable since a user talking on one net can
180talk on another net too." 211talk on another net too."
181 (when erc-auto-discard-away 212 (when erc-auto-discard-away
182 (erc-autoaway-set-back)) 213 (erc-autoaway-set-back #'erc-autoaway-remove-maybe))
183 (setq erc-autoaway-last-sent-time (erc-current-time))) 214 (setq erc-autoaway-last-sent-time (erc-current-time)))
184 215
185(defun erc-autoaway-reset-idle-irc (line &rest stuff) 216(defun erc-autoaway-reset-idle-irc (line &rest stuff)
@@ -192,12 +223,24 @@ talk on another net too."
192 (erc-autoaway-set-back)) 223 (erc-autoaway-set-back))
193 (setq erc-autoaway-last-sent-time (erc-current-time))) 224 (setq erc-autoaway-last-sent-time (erc-current-time)))
194 225
195(defun erc-autoaway-set-back () 226(defun erc-autoaway-set-back (&optional none-alive-func)
196 "Discard the away state globally." 227 "Discard the away state globally.
197 (let ((server-buffer (car (erc-buffer-list #'erc-server-buffer-p)))) 228
198 (when (and erc-autoaway-caused-away 229NONE-ALIVE-FUNC is the function to call if no ERC processes are alive."
199 (with-current-buffer server-buffer (erc-away-p))) 230 (let ((server-buffer (erc-autoaway-some-server-buffer)))
200 (erc-cmd-GAWAY "")))) 231 (if (and erc-autoaway-caused-away
232 (buffer-live-p server-buffer)
233 (with-current-buffer server-buffer erc-away))
234 (erc-cmd-GAWAY "")
235 (when none-alive-func (funcall none-alive-func)))))
236
237(defun erc-autoaway-some-open-server-buffer ()
238 "Return some ERC server buffer if its connection is alive and the
239user is not away.
240If none is found, return nil."
241 (car (erc-buffer-list (lambda ()
242 (and (erc-open-server-buffer-p)
243 (not erc-away))))))
201 244
202(defun erc-autoaway-possibly-set-away (current-time) 245(defun erc-autoaway-possibly-set-away (current-time)
203 "Set autoaway when `erc-auto-set-away' is true and the idletime is 246 "Set autoaway when `erc-auto-set-away' is true and the idletime is
@@ -207,7 +250,7 @@ exceeds `erc-autoaway-idle-seconds'."
207 ;; whenever the server sends something to the client. 250 ;; whenever the server sends something to the client.
208 (when (and erc-auto-set-away 251 (when (and erc-auto-set-away
209 (not erc-autoaway-caused-away) 252 (not erc-autoaway-caused-away)
210 (not (erc-away-p))) 253 (erc-autoaway-some-open-server-buffer))
211 (let ((idle-time (erc-time-diff erc-autoaway-last-sent-time 254 (let ((idle-time (erc-time-diff erc-autoaway-last-sent-time
212 current-time))) 255 current-time)))
213 (when (>= idle-time erc-autoaway-idle-seconds) 256 (when (>= idle-time erc-autoaway-idle-seconds)
@@ -215,15 +258,17 @@ exceeds `erc-autoaway-idle-seconds'."
215 nil 'notice nil 258 nil 'notice nil
216 (format "Setting automatically away after %i seconds of idle-time" 259 (format "Setting automatically away after %i seconds of idle-time"
217 idle-time)) 260 idle-time))
218 (erc-autoaway-set-away idle-time))))) 261 (erc-autoaway-set-away idle-time t)))))
262
263(defun erc-autoaway-set-away (idle-time &optional notest)
264 "Set the away state globally.
219 265
220(defun erc-autoaway-set-away (idle-time) 266If NOTEST is specified, do not check to see whether there is an
221 "Set the away state globally." 267activer server buffer available."
222 ;; Note that the idle timer runs, even when Emacs is inactive. In 268 ;; Note that the idle timer runs, even when Emacs is inactive. In
223 ;; order to prevent flooding when we connect, we test for an 269 ;; order to prevent flooding when we connect, we test for an
224 ;; existing process. 270 ;; existing process.
225 (when (and (erc-server-process-alive) 271 (when (or notest (erc-autoaway-some-open-server-buffer))
226 (not (erc-away-p)))
227 (setq erc-autoaway-caused-away t) 272 (setq erc-autoaway-caused-away t)
228 (erc-cmd-GAWAY (format erc-autoaway-message idle-time)))) 273 (erc-cmd-GAWAY (format erc-autoaway-message idle-time))))
229 274
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index fbe6f22e1d6..08cb738d360 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -174,9 +174,15 @@ WALLCHOPS - supports sending messages to all operators in a channel")
174 174
175;;; Server and connection state 175;;; Server and connection state
176 176
177(defvar erc-server-ping-timer-alist nil
178 "Mapping of server buffers to their specific ping timer.")
179
177(defvar erc-server-connected nil 180(defvar erc-server-connected nil
178 "Non-nil if the `current-buffer' is associated with an open IRC connection. 181 "Non-nil if the current buffer has been used by ERC to establish
179This variable is buffer-local.") 182an IRC connection.
183
184If you wish to determine whether an IRC connection is currently
185active, use the `erc-server-process-alive' function instead.")
180(make-variable-buffer-local 'erc-server-connected) 186(make-variable-buffer-local 'erc-server-connected)
181 187
182(defvar erc-server-reconnect-count 0 188(defvar erc-server-reconnect-count 0
@@ -187,10 +193,23 @@ This variable is buffer-local.")
187 "Non-nil if the user requests a quit.") 193 "Non-nil if the user requests a quit.")
188(make-variable-buffer-local 'erc-server-quitting) 194(make-variable-buffer-local 'erc-server-quitting)
189 195
196(defvar erc-server-reconnecting nil
197 "Non-nil if the user requests an explicit reconnect, and the
198current IRC process is still alive.")
199(make-variable-buffer-local 'erc-server-reconnecting)
200
201(defvar erc-server-timed-out nil
202 "Non-nil if the IRC server failed to respond to a ping.")
203(make-variable-buffer-local 'erc-server-timed-out)
204
190(defvar erc-server-banned nil 205(defvar erc-server-banned nil
191 "Non-nil if the user is denied access because of a server ban.") 206 "Non-nil if the user is denied access because of a server ban.")
192(make-variable-buffer-local 'erc-server-banned) 207(make-variable-buffer-local 'erc-server-banned)
193 208
209(defvar erc-server-error-occurred nil
210 "Non-nil if the user triggers some server error.")
211(make-variable-buffer-local 'erc-server-error-occurred)
212
194(defvar erc-server-lines-sent nil 213(defvar erc-server-lines-sent nil
195 "Line counter.") 214 "Line counter.")
196(make-variable-buffer-local 'erc-server-lines-sent) 215(make-variable-buffer-local 'erc-server-lines-sent)
@@ -210,6 +229,11 @@ This is useful for flood protection.")
210This is useful for flood protection.") 229This is useful for flood protection.")
211(make-variable-buffer-local 'erc-server-last-ping-time) 230(make-variable-buffer-local 'erc-server-last-ping-time)
212 231
232(defvar erc-server-last-received-time nil
233 "Time the last message was received from the server.
234This is useful for detecting hung connections.")
235(make-variable-buffer-local 'erc-server-last-received-time)
236
213(defvar erc-server-lag nil 237(defvar erc-server-lag nil
214 "Calculated server lag time in seconds. 238 "Calculated server lag time in seconds.
215This variable is only set in a server buffer.") 239This variable is only set in a server buffer.")
@@ -387,11 +411,24 @@ protection algorithm."
387 411
388;; Ping handling 412;; Ping handling
389 413
390(defcustom erc-server-send-ping-interval 90 414(defcustom erc-server-send-ping-interval 30
391 "*Interval of sending pings to the server, in seconds. 415 "*Interval of sending pings to the server, in seconds.
392If this is set to nil, pinging the server is disabled." 416If this is set to nil, pinging the server is disabled."
393 :group 'erc-server 417 :group 'erc-server
394 :type '(choice (const nil) (integer :tag "Seconds"))) 418 :type '(choice (const :tag "Disabled" nil)
419 (integer :tag "Seconds")))
420
421(defcustom erc-server-send-ping-timeout 120
422 "*If the time between ping and response is greater than this, reconnect.
423The time is in seconds.
424
425This must be greater than or equal to the value for
426`erc-server-send-ping-interval'.
427
428If this is set to nil, never try to reconnect."
429 :group 'erc-server
430 :type '(choice (const :tag "Disabled" nil)
431 (integer :tag "Seconds")))
395 432
396(defvar erc-server-ping-handler nil 433(defvar erc-server-ping-handler nil
397 "This variable holds the periodic ping timer.") 434 "This variable holds the periodic ping timer.")
@@ -424,20 +461,40 @@ Currently this is called by `erc-send-input'."
424 (upcase-word 1) 461 (upcase-word 1)
425 (buffer-string))) 462 (buffer-string)))
426 463
427(defun erc-server-setup-periodical-server-ping (&rest ignore) 464(defun erc-server-send-ping (buf)
428 "Set up a timer to periodically ping the current server." 465 "Send a ping to the IRC server buffer in BUF.
429 (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler)) 466Additionally, detect whether the IRC process has hung."
430 (when erc-server-send-ping-interval 467 (if (buffer-live-p buf)
431 (setq erc-server-ping-handler 468 (with-current-buffer buf
432 (run-with-timer 469 (if (and erc-server-send-ping-timeout
433 4 erc-server-send-ping-interval 470 (>
434 (lambda (buf) 471 (erc-time-diff (erc-current-time)
435 (when (buffer-live-p buf) 472 erc-server-last-received-time)
436 (with-current-buffer buf 473 erc-server-send-ping-timeout))
437 (erc-server-send 474 (progn
438 (format "PING %.0f" 475 ;; if the process is hung, kill it
439 (erc-current-time)))))) 476 (setq erc-server-timed-out t)
440 (current-buffer))))) 477 (delete-process erc-server-process))
478 (erc-server-send (format "PING %.0f" (erc-current-time)))))
479 ;; remove timer if the server buffer has been killed
480 (let ((timer (assq buf erc-server-ping-timer-alist)))
481 (when timer
482 (erc-cancel-timer (cdr timer))
483 (setcdr timer nil)))))
484
485(defun erc-server-setup-periodical-ping (buffer)
486 "Set up a timer to periodically ping the current server.
487The current buffer is given by BUFFER."
488 (with-current-buffer buffer
489 (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler))
490 (when erc-server-send-ping-interval
491 (setq erc-server-ping-handler (run-with-timer
492 4 erc-server-send-ping-interval
493 #'erc-server-send-ping
494 buffer))
495 (setq erc-server-ping-timer-alist (cons (cons buffer
496 erc-server-ping-handler)
497 erc-server-ping-timer-alist)))))
441 498
442(defun erc-server-process-alive () 499(defun erc-server-process-alive ()
443 "Return non-nil when `erc-server-process' is open or running." 500 "Return non-nil when `erc-server-process' is open or running."
@@ -447,40 +504,47 @@ Currently this is called by `erc-send-input'."
447 504
448;;;; Connecting to a server 505;;;; Connecting to a server
449 506
450(defun erc-server-connect (server port) 507(defun erc-server-connect (server port buffer)
451 "Perform the connection and login. 508 "Perform the connection and login using the specified SERVER and PORT.
452We will store server variables in the current buffer." 509We will store server variables in the buffer given by BUFFER."
453 (let ((msg (erc-format-message 'connect ?S server ?p port))) 510 (let ((msg (erc-format-message 'connect ?S server ?p port)))
454 (message "%s" msg) 511 (message "%s" msg)
455 (setq erc-server-process 512 (let ((process (funcall erc-server-connect-function
456 (funcall erc-server-connect-function 513 (format "erc-%s-%s" server port)
457 (format "erc-%s-%s" server port) 514 nil server port)))
458 (current-buffer) server port)) 515 (message "%s...done" msg)
459 (message "%s...done" msg)) 516 ;; Misc server variables
460 ;; Misc server variables 517 (with-current-buffer buffer
461 (setq erc-server-quitting nil) 518 (setq erc-server-process process)
462 (setq erc-server-banned nil) 519 (setq erc-server-quitting nil)
463 (setq erc-server-last-sent-time (erc-current-time)) 520 (setq erc-server-reconnecting nil)
464 (setq erc-server-last-ping-time (erc-current-time)) 521 (setq erc-server-timed-out nil)
465 (setq erc-server-lines-sent 0) 522 (setq erc-server-banned nil)
466 ;; last peers (sender and receiver) 523 (setq erc-server-error-occurred nil)
467 (setq erc-server-last-peers '(nil . nil)) 524 (let ((time (erc-current-time)))
468 ;; process handlers 525 (setq erc-server-last-sent-time time)
469 (set-process-sentinel erc-server-process 'erc-process-sentinel) 526 (setq erc-server-last-ping-time time)
470 (set-process-filter erc-server-process 'erc-server-filter-function) 527 (setq erc-server-last-received-time time))
471 ;; we do our own encoding and decoding 528 (setq erc-server-lines-sent 0)
472 (when (fboundp 'set-process-coding-system) 529 ;; last peers (sender and receiver)
473 (set-process-coding-system erc-server-process 'raw-text)) 530 (setq erc-server-last-peers '(nil . nil)))
474 (set-marker (process-mark erc-server-process) (point)) 531 ;; we do our own encoding and decoding
532 (when (fboundp 'set-process-coding-system)
533 (set-process-coding-system process 'raw-text))
534 ;; process handlers
535 (set-process-sentinel process 'erc-process-sentinel)
536 (set-process-filter process 'erc-server-filter-function)
537 (set-process-buffer process buffer)))
475 (erc-log "\n\n\n********************************************\n") 538 (erc-log "\n\n\n********************************************\n")
476 (message (erc-format-message 'login ?n (erc-current-nick))) 539 (message (erc-format-message
540 'login ?n
541 (with-current-buffer buffer (erc-current-nick))))
477 ;; wait with script loading until we receive a confirmation (first 542 ;; wait with script loading until we receive a confirmation (first
478 ;; MOTD line) 543 ;; MOTD line)
479 (if (eq erc-server-connect-function 'open-network-stream-nowait) 544 (if (eq erc-server-connect-function 'open-network-stream-nowait)
480 ;; it's a bit unclear otherwise that it's attempting to establish a 545 ;; it's a bit unclear otherwise that it's attempting to establish a
481 ;; connection 546 ;; connection
482 (erc-display-message nil nil (current-buffer) 547 (erc-display-message nil nil buffer "Opening connection..\n")
483 "Opening connection..\n")
484 (erc-login))) 548 (erc-login)))
485 549
486(defun erc-server-reconnect () 550(defun erc-server-reconnect ()
@@ -501,6 +565,7 @@ Make sure you are in an ERC buffer when running this."
501(defun erc-server-filter-function (process string) 565(defun erc-server-filter-function (process string)
502 "The process filter for the ERC server." 566 "The process filter for the ERC server."
503 (with-current-buffer (process-buffer process) 567 (with-current-buffer (process-buffer process)
568 (setq erc-server-last-received-time (erc-current-time))
504 ;; If you think this is written in a weird way - please refer to the 569 ;; If you think this is written in a weird way - please refer to the
505 ;; docstring of `erc-server-processing-p' 570 ;; docstring of `erc-server-processing-p'
506 (if erc-server-processing-p 571 (if erc-server-processing-p
@@ -529,16 +594,20 @@ Make sure you are in an ERC buffer when running this."
529(defsubst erc-server-reconnect-p (event) 594(defsubst erc-server-reconnect-p (event)
530 "Return non-nil if ERC should attempt to reconnect automatically. 595 "Return non-nil if ERC should attempt to reconnect automatically.
531EVENT is the message received from the closed connection process." 596EVENT is the message received from the closed connection process."
532 (and erc-server-auto-reconnect 597 (or erc-server-reconnecting
533 (not erc-server-banned) 598 (and erc-server-auto-reconnect
534 ;; make sure we don't infinitely try to reconnect, unless the 599 (not erc-server-banned)
535 ;; user wants that 600 (not erc-server-error-occurred)
536 (or (eq erc-server-reconnect-attempts t) 601 ;; make sure we don't infinitely try to reconnect, unless the
537 (and (integerp erc-server-reconnect-attempts) 602 ;; user wants that
538 (< erc-server-reconnect-count erc-server-reconnect-attempts))) 603 (or (eq erc-server-reconnect-attempts t)
539 (not (string-match "^deleted" event)) 604 (and (integerp erc-server-reconnect-attempts)
540 ;; open-network-stream-nowait error for connection refused 605 (< erc-server-reconnect-count
541 (not (string-match "^failed with code 111" event)))) 606 erc-server-reconnect-attempts)))
607 (or erc-server-timed-out
608 (not (string-match "^deleted" event)))
609 ;; open-network-stream-nowait error for connection refused
610 (not (string-match "^failed with code 111" event)))))
542 611
543(defun erc-process-sentinel-1 (event) 612(defun erc-process-sentinel-1 (event)
544 "Called when `erc-process-sentinel' has decided that we're disconnecting. 613 "Called when `erc-process-sentinel' has decided that we're disconnecting.
@@ -562,6 +631,7 @@ Conditionally try to reconnect and take appropriate action."
562 (if (erc-server-reconnect-p event) 631 (if (erc-server-reconnect-p event)
563 (condition-case err 632 (condition-case err
564 (progn 633 (progn
634 (setq erc-server-reconnecting nil)
565 (erc-server-reconnect) 635 (erc-server-reconnect)
566 (setq erc-server-reconnect-count 0)) 636 (setq erc-server-reconnect-count 0))
567 (error (when (integerp erc-server-reconnect-attempts) 637 (error (when (integerp erc-server-reconnect-attempts)
@@ -611,6 +681,7 @@ Conditionally try to reconnect and take appropriate action."
611 "Return the coding system or cons cell appropriate for TARGET. 681 "Return the coding system or cons cell appropriate for TARGET.
612This is determined via `erc-encoding-coding-alist' or 682This is determined via `erc-encoding-coding-alist' or
613`erc-server-coding-system'." 683`erc-server-coding-system'."
684 (unless target (setq target (erc-default-target)))
614 (or (when target 685 (or (when target
615 (let ((case-fold-search t)) 686 (let ((case-fold-search t))
616 (catch 'match 687 (catch 'match
@@ -656,14 +727,11 @@ See `erc-server-flood-margin' for an explanation of the flood
656protection algorithm." 727protection algorithm."
657 (erc-log (concat "erc-server-send: " string "(" (buffer-name) ")")) 728 (erc-log (concat "erc-server-send: " string "(" (buffer-name) ")"))
658 (setq erc-server-last-sent-time (erc-current-time)) 729 (setq erc-server-last-sent-time (erc-current-time))
659 (let ((buf (erc-server-buffer)) 730 (let ((encoding (erc-coding-system-for-target target)))
660 (encoding (erc-coding-system-for-target
661 (or target (erc-default-target)))))
662 (when (consp encoding) 731 (when (consp encoding)
663 (setq encoding (car encoding))) 732 (setq encoding (car encoding)))
664 (if (and buf 733 (if (erc-server-process-alive)
665 (erc-server-process-alive)) 734 (erc-with-server-buffer
666 (with-current-buffer buf
667 (let ((str (concat string "\r\n"))) 735 (let ((str (concat string "\r\n")))
668 (if forcep 736 (if forcep
669 (progn 737 (progn
@@ -903,10 +971,8 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
903 (let ((hook (or (erc-get-hook (erc-response.command message)) 971 (let ((hook (or (erc-get-hook (erc-response.command message))
904 'erc-default-server-functions))) 972 'erc-default-server-functions)))
905 (run-hook-with-args-until-success hook process message) 973 (run-hook-with-args-until-success hook process message)
906 (let ((server-buffer (erc-server-buffer))) 974 (erc-with-server-buffer
907 (when (buffer-live-p server-buffer) 975 (run-hook-with-args 'erc-timer-hook (erc-current-time)))))
908 (with-current-buffer server-buffer
909 (run-hook-with-args 'erc-timer-hook (erc-current-time)))))))
910 976
911(add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response) 977(add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response)
912 978
@@ -1062,6 +1128,7 @@ add things to `%s' instead."
1062 1128
1063(define-erc-response-handler (ERROR) 1129(define-erc-response-handler (ERROR)
1064 "Handle an ERROR command from the server." nil 1130 "Handle an ERROR command from the server." nil
1131 (setq erc-server-error-occurred t)
1065 (erc-display-message 1132 (erc-display-message
1066 parsed 'error nil 'ERROR 1133 parsed 'error nil 'ERROR
1067 ?s (erc-response.sender parsed) ?c (erc-response.contents parsed))) 1134 ?s (erc-response.sender parsed) ?c (erc-response.contents parsed)))
@@ -1446,6 +1513,9 @@ A server may send more than one 005 message."
1446See `erc-display-server-message'." nil 1513See `erc-display-server-message'." nil
1447 (erc-display-server-message proc parsed)) 1514 (erc-display-server-message proc parsed))
1448 1515
1516(define-erc-response-handler (290)
1517 "Handle dancer-ircd CAPAB messages." nil nil)
1518
1449(define-erc-response-handler (301) 1519(define-erc-response-handler (301)
1450 "AWAY notice." nil 1520 "AWAY notice." nil
1451 (erc-display-message parsed 'notice 'active 's301 1521 (erc-display-message parsed 'notice 'active 's301
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 1fd224fb956..435c72bba23 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -56,10 +56,12 @@
56 "This mode buttonizes all messages according to `erc-button-alist'." 56 "This mode buttonizes all messages according to `erc-button-alist'."
57 ((add-hook 'erc-insert-modify-hook 'erc-button-add-buttons 'append) 57 ((add-hook 'erc-insert-modify-hook 'erc-button-add-buttons 'append)
58 (add-hook 'erc-send-modify-hook 'erc-button-add-buttons 'append) 58 (add-hook 'erc-send-modify-hook 'erc-button-add-buttons 'append)
59 (add-hook 'erc-complete-functions 'erc-button-next)) 59 (add-hook 'erc-complete-functions 'erc-button-next)
60 (add-hook 'erc-mode-hook 'erc-button-add-keys))
60 ((remove-hook 'erc-insert-modify-hook 'erc-button-add-buttons) 61 ((remove-hook 'erc-insert-modify-hook 'erc-button-add-buttons)
61 (remove-hook 'erc-send-modify-hook 'erc-button-add-buttons) 62 (remove-hook 'erc-send-modify-hook 'erc-button-add-buttons)
62 (remove-hook 'erc-complete-functions 'erc-button-next))) 63 (remove-hook 'erc-complete-functions 'erc-button-next)
64 (remove-hook 'erc-mode-hook 'erc-button-add-keys)))
63 65
64;; Make XEmacs use `erc-button-face'. 66;; Make XEmacs use `erc-button-face'.
65(when (featurep 'xemacs) 67(when (featurep 'xemacs)
@@ -241,6 +243,16 @@ PAR is a number of a regexp grouping whose text will be passed to
241This syntax table should make all the legal nick characters word 243This syntax table should make all the legal nick characters word
242constituents.") 244constituents.")
243 245
246(defvar erc-button-keys-added nil
247 "Internal variable used to keep track of whether we've added the
248global-level ERC button keys yet.")
249
250(defun erc-button-add-keys ()
251 "Add ERC mode-level button movement keys. This is only done once."
252 (unless erc-button-keys-added
253 (define-key erc-mode-map (kbd "<backtab>") 'erc-button-previous)
254 (setq erc-button-keys-added t)))
255
244(defun erc-button-add-buttons () 256(defun erc-button-add-buttons ()
245 "Find external references in the current buffer and make buttons of them. 257 "Find external references in the current buffer and make buttons of them.
246\"External references\" are things like URLs, as 258\"External references\" are things like URLs, as
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 268c4bfe68a..b7ccade02e0 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -56,8 +56,10 @@
56;; (erc-capab-identify-mode 1) 56;; (erc-capab-identify-mode 1)
57 57
58;; `erc-capab-identify-prefix' will now be added to the beginning of 58;; `erc-capab-identify-prefix' will now be added to the beginning of
59;; unidentified users' nicknames. The default is an asterisk, "*". If 59;; unidentified users' nicknames. The default is an asterisk, "*".
60;; the value of this variable is nil or you disable this module (see 60;; You can customize the prefix and the face used to display it,
61;; `erc-capab-identify-unidentified'. If the value of
62;; `erc-capab-identify-prefix' is nil or you disable this module (see
61;; `erc-capab-identify-disable'), no prefix will be inserted, but the 63;; `erc-capab-identify-disable'), no prefix will be inserted, but the
62;; flag sent by the server will still be stripped. 64;; flag sent by the server will still be stripped.
63 65
@@ -73,14 +75,19 @@
73 :group 'erc) 75 :group 'erc)
74 76
75(defcustom erc-capab-identify-prefix "*" 77(defcustom erc-capab-identify-prefix "*"
76 "The prefix used for unidentified users." 78 "The prefix used for unidentified users.
79
80If you change this from the default \"*\", be sure to use a
81character not found in IRC nicknames to avoid confusion."
77 :group 'erc-capab 82 :group 'erc-capab
78 :type '(choice string (const nil))) 83 :type '(choice string (const nil)))
79 84
80;;; Define module: 85(defface erc-capab-identify-unidentified '((t)) ; same as `erc-default-face'
86 "Face to use for `erc-capab-identify-prefix'."
87 :group 'erc-capab
88 :group 'erc-faces)
81 89
82(define-erc-response-handler (290) 90;;; Define module:
83 "Handle dancer-ircd CAPAB messages." nil nil)
84 91
85;;;###autoload (autoload 'erc-capab-identify-mode "erc-capab" nil t) 92;;;###autoload (autoload 'erc-capab-identify-mode "erc-capab" nil t)
86(define-erc-module capab-identify nil 93(define-erc-module capab-identify nil
@@ -124,9 +131,9 @@ Optional argument PARSED is the current message, a response struct.
124These arguments are sent to this function when called as a hook in 131These arguments are sent to this function when called as a hook in
125`erc-server-005-functions'." 132`erc-server-005-functions'."
126 (unless erc-capab-identify-sent 133 (unless erc-capab-identify-sent
127 (erc-capab-send-identify-messages))) 134 (erc-capab-identify-send-messages)))
128 135
129(defun erc-capab-send-identify-messages () 136(defun erc-capab-identify-send-messages ()
130 "Send CAPAB IDENTIFY messages if the server supports it." 137 "Send CAPAB IDENTIFY messages if the server supports it."
131 (when (and (stringp erc-server-version) 138 (when (and (stringp erc-server-version)
132 (string-match "^\\(dancer-ircd\\|hyperion\\)" erc-server-version) 139 (string-match "^\\(dancer-ircd\\|hyperion\\)" erc-server-version)
@@ -175,7 +182,7 @@ PARSED is an `erc-parsed' response struct."
175 (when (and erc-capab-identify-prefix 182 (when (and erc-capab-identify-prefix
176 (erc-with-server-buffer erc-capab-identify-activated)) 183 (erc-with-server-buffer erc-capab-identify-activated))
177 (goto-char (or (erc-find-parsed-property) (point-min))) 184 (goto-char (or (erc-find-parsed-property) (point-min)))
178 (let ((nickname (erc-capab-get-unidentified-nickname 185 (let ((nickname (erc-capab-identify-get-unidentified-nickname
179 (erc-get-parsed-vector (point))))) 186 (erc-get-parsed-vector (point)))))
180 (when (and nickname 187 (when (and nickname
181 (goto-char (point-min)) 188 (goto-char (point-min))
@@ -183,10 +190,9 @@ PARSED is an `erc-parsed' response struct."
183 (re-search-forward (regexp-quote nickname) nil t)) 190 (re-search-forward (regexp-quote nickname) nil t))
184 (goto-char (match-beginning 0)) 191 (goto-char (match-beginning 0))
185 (insert (erc-propertize erc-capab-identify-prefix 192 (insert (erc-propertize erc-capab-identify-prefix
186 'face (get-char-property (- (point) 1) 193 'face 'erc-capab-identify-unidentified))))))
187 'face)))))))
188 194
189(defun erc-capab-get-unidentified-nickname (parsed) 195(defun erc-capab-identify-get-unidentified-nickname (parsed)
190 "Return the nickname of the user if unidentified. 196 "Return the nickname of the user if unidentified.
191PARSED is an `erc-parsed' response struct." 197PARSED is an `erc-parsed' response struct."
192 (when (and (erc-response-p parsed) 198 (when (and (erc-response-p parsed)
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 60cbe992d19..dcfcfe84c98 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -161,14 +161,6 @@ avoid corrupting the original SEQ."
161 (setq newseq (cons el newseq)))) 161 (setq newseq (cons el newseq))))
162 (nreverse newseq))) 162 (nreverse newseq)))
163 163
164;; Provide a simpler replacement for `gensym'.
165(defvar *erc-sym-counter* 0)
166(defun erc-gensym ()
167 "Generate a new uninterned symbol."
168 (let ((num (prog1 *erc-sym-counter*
169 (setq *erc-sym-counter* (1+ *erc-sym-counter*)))))
170 (make-symbol (format "*erc-sym-%d*" num))))
171
172;; Copied from cl-extra.el 164;; Copied from cl-extra.el
173(defun erc-subseq (seq start &optional end) 165(defun erc-subseq (seq start &optional end)
174 "Return the subsequence of SEQ from START to END. 166 "Return the subsequence of SEQ from START to END.
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 26ca86f04c6..fc1c71babdf 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -1,6 +1,7 @@
1;;; erc-fill.el --- Filling IRC messages in various ways 1;;; erc-fill.el --- Filling IRC messages in various ways
2 2
3;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Andreas Fuchs <asf@void.at> 6;; Author: Andreas Fuchs <asf@void.at>
6;; Mario Lang <mlang@delysid.org> 7;; Mario Lang <mlang@delysid.org>
@@ -187,14 +188,6 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
187 (length (format-time-string erc-timestamp-format)) 188 (length (format-time-string erc-timestamp-format))
188 0)) 189 0))
189 190
190(defun erc-restore-text-properties ()
191 "Restore the property 'erc-parsed for the region."
192 (let* ((parsed-posn (text-property-not-all (point-min) (point-max)
193 'erc-parsed nil))
194 (parsed-prop (when parsed-posn
195 (get-text-property parsed-posn 'erc-parsed))))
196 (put-text-property (point-min) (point-max) 'erc-parsed parsed-prop)))
197
198(provide 'erc-fill) 191(provide 'erc-fill)
199 192
200;;; erc-fill.el ends here 193;;; erc-fill.el ends here
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index 5266d837d64..25ad1319bd6 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -127,8 +127,7 @@
127(define-ibuffer-column erc-away (:name "A") 127(define-ibuffer-column erc-away (:name "A")
128 (if (and erc-server-process 128 (if (and erc-server-process
129 (processp erc-server-process) 129 (processp erc-server-process)
130 (with-current-buffer (process-buffer erc-server-process) 130 (erc-away-time))
131 erc-away))
132 "A" 131 "A"
133 " ")) 132 " "))
134 133
diff --git a/lisp/erc/erc-identd.el b/lisp/erc/erc-identd.el
index c7f7c615e92..8a70a743edb 100644
--- a/lisp/erc/erc-identd.el
+++ b/lisp/erc/erc-identd.el
@@ -42,12 +42,26 @@
42 42
43(defvar erc-identd-process nil) 43(defvar erc-identd-process nil)
44 44
45(defgroup erc-identd nil
46 "Run a local identd server."
47 :group 'erc)
48
49(defcustom erc-identd-port 8113
50 "Port to run the identd server on if not specified in the argument for
51`erc-identd-start'.
52
53This can be either a string or a number."
54 :group 'erc-identd
55 :type '(choice (const :tag "None" nil)
56 (integer :tag "Port number")
57 (string :tag "Port string")))
58
45;;;###autoload (autoload 'erc-identd-mode "erc-identd") 59;;;###autoload (autoload 'erc-identd-mode "erc-identd")
46(define-erc-module identd nil 60(define-erc-module identd nil
47 "This mode launches an identd server on port 8113." 61 "This mode launches an identd server on port 8113."
48 ((add-hook 'erc-connect-pre-hook 'erc-identd-start) 62 ((add-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
49 (add-hook 'erc-disconnected-hook 'erc-identd-stop)) 63 (add-hook 'erc-disconnected-hook 'erc-identd-stop))
50 ((remove-hook 'erc-connect-pre-hook 'erc-identd-start) 64 ((remove-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
51 (remove-hook 'erc-disconnected-hook 'erc-identd-stop))) 65 (remove-hook 'erc-disconnected-hook 'erc-identd-stop)))
52 66
53(defun erc-identd-filter (proc string) 67(defun erc-identd-filter (proc string)
@@ -71,12 +85,11 @@ run from inetd. The idea is to provide a simple identd server
71when you need one, without having to install one globally on your 85when you need one, without having to install one globally on your
72system." 86system."
73 (interactive (list (read-string "Serve identd requests on port: " "8113"))) 87 (interactive (list (read-string "Serve identd requests on port: " "8113")))
74 (if (null port) 88 (unless port (setq port erc-identd-port))
75 (setq port 8113) 89 (when (stringp port)
76 (if (stringp port) 90 (setq port (string-to-number port)))
77 (setq port (string-to-number port)))) 91 (when erc-identd-process
78 (if erc-identd-process 92 (delete-process erc-identd-process))
79 (delete-process erc-identd-process))
80 (setq erc-identd-process 93 (setq erc-identd-process
81 (make-network-process :name "identd" 94 (make-network-process :name "identd"
82 :buffer nil 95 :buffer nil
@@ -85,6 +98,11 @@ system."
85 :filter 'erc-identd-filter)) 98 :filter 'erc-identd-filter))
86 (set-process-query-on-exit-flag erc-identd-process nil)) 99 (set-process-query-on-exit-flag erc-identd-process nil))
87 100
101(defun erc-identd-quickstart (&rest ignored)
102 "Start the identd server with the default port.
103The default port is specified by `erc-identd-port'."
104 (erc-identd-start))
105
88;;;###autoload 106;;;###autoload
89(defun erc-identd-stop (&rest ignore) 107(defun erc-identd-stop (&rest ignore)
90 (interactive) 108 (interactive)
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 22c9b3622d3..9801192bca0 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -85,7 +85,9 @@
85;;; Code: 85;;; Code:
86 86
87(require 'erc) 87(require 'erc)
88(eval-when-compile (require 'cl)) 88(eval-when-compile
89 (require 'erc-networks)
90 (require 'cl))
89 91
90(defgroup erc-log nil 92(defgroup erc-log nil
91 "Logging facilities for ERC." 93 "Logging facilities for ERC."
@@ -100,10 +102,12 @@ NICK is the current nick,
100SERVER and PORT are the parameters used to connect BUFFERs 102SERVER and PORT are the parameters used to connect BUFFERs
101`erc-server-process'." 103`erc-server-process'."
102 :group 'erc-log 104 :group 'erc-log
103 :type '(choice (const erc-generate-log-file-name-long) 105 :type '(choice (const :tag "Long style" erc-generate-log-file-name-long)
104 (const erc-generate-log-file-name-short) 106 (const :tag "Long, but with network name rather than server"
105 (const erc-generate-log-file-name-with-date) 107 erc-generate-log-file-name-network)
106 (symbol))) 108 (const :tag "Short" erc-generate-log-file-name-short)
109 (const :tag "With date" erc-generate-log-file-name-with-date)
110 (symbol :tag "Other function")))
107 111
108(defcustom erc-truncate-buffer-on-save nil 112(defcustom erc-truncate-buffer-on-save nil
109 "Truncate any ERC (channel, query, server) buffer when it is saved." 113 "Truncate any ERC (channel, query, server) buffer when it is saved."
@@ -197,7 +201,7 @@ also be a predicate function. To only log when you are not set away, use:
197\(setq erc-enable-logging 201\(setq erc-enable-logging
198 (lambda (buffer) 202 (lambda (buffer)
199 (with-current-buffer buffer 203 (with-current-buffer buffer
200 (not erc-away))))" 204 (null (erc-away-time)))))"
201 ;; enable 205 ;; enable
202 ((when erc-log-write-after-insert 206 ((when erc-log-write-after-insert
203 (add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)) 207 (add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs))
@@ -211,8 +215,7 @@ also be a predicate function. To only log when you are not set away, use:
211 ;; append, so that 'erc-initialize-log-marker runs first 215 ;; append, so that 'erc-initialize-log-marker runs first
212 (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append) 216 (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
213 (dolist (buffer (erc-buffer-list)) 217 (dolist (buffer (erc-buffer-list))
214 (when (buffer-live-p buffer) 218 (erc-log-setup-logging buffer)))
215 (with-current-buffer buffer (erc-log-setup-logging)))))
216 ;; disable 219 ;; disable
217 ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs) 220 ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
218 (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs) 221 (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
@@ -223,30 +226,38 @@ also be a predicate function. To only log when you are not set away, use:
223 (remove-hook 'erc-part-hook 'erc-conditional-save-buffer) 226 (remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
224 (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging) 227 (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
225 (dolist (buffer (erc-buffer-list)) 228 (dolist (buffer (erc-buffer-list))
226 (when (buffer-live-p buffer) 229 (erc-log-disable-logging buffer))))
227 (with-current-buffer buffer (erc-log-disable-logging))))))
228 230
229(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs) 231(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
230 232
231;;; functionality referenced from erc.el 233;;; functionality referenced from erc.el
232(defun erc-log-setup-logging () 234(defun erc-log-setup-logging (buffer)
233 "Setup the buffer-local logging variables in the current buffer. 235 "Setup the buffer-local logging variables in the current buffer.
234This function is destined to be run from `erc-connect-pre-hook'." 236This function is destined to be run from `erc-connect-pre-hook'.
235 (when (erc-logging-enabled) 237The current buffer is given by BUFFER."
236 (auto-save-mode -1) 238 (when (erc-logging-enabled buffer)
237 (setq buffer-file-name nil) 239 (with-current-buffer buffer
238 (set (make-local-variable 'write-file-functions) 240 (auto-save-mode -1)
239 '(erc-save-buffer-in-logs)) 241 (setq buffer-file-name nil)
240 (when erc-log-insert-log-on-open 242 (cond ((boundp 'write-file-functions)
241 (ignore-errors (insert-file-contents (erc-current-logfile)) 243 (set (make-local-variable 'write-file-functions)
242 (move-marker erc-last-saved-position 244 '(erc-save-buffer-in-logs)))
243 (1- (point-max))))))) 245 ((boundp 'local-write-file-hooks)
244 246 (setq local-write-file-hooks '(erc-save-buffer-in-logs)))
245(defun erc-log-disable-logging () 247 (t
246 "Disable logging in the current buffer." 248 (set (make-local-variable 'write-file-hooks)
247 (when (erc-logging-enabled) 249 '(erc-save-buffer-in-logs))))
248 (setq buffer-offer-save nil 250 (when erc-log-insert-log-on-open
249 erc-enable-logging nil))) 251 (ignore-errors (insert-file-contents (erc-current-logfile))
252 (move-marker erc-last-saved-position
253 (1- (point-max))))))))
254
255(defun erc-log-disable-logging (buffer)
256 "Disable logging in BUFFER."
257 (when (erc-logging-enabled buffer)
258 (with-current-buffer buffer
259 (setq buffer-offer-save nil
260 erc-enable-logging nil))))
250 261
251(defun erc-log-all-but-server-buffers (buffer) 262(defun erc-log-all-but-server-buffers (buffer)
252 "Returns t if logging should be enabled in BUFFER. 263 "Returns t if logging should be enabled in BUFFER.
@@ -340,6 +351,19 @@ This function is a possible value for `erc-generate-log-file-name-function'."
340 ;; we need a make-safe-file-name function. 351 ;; we need a make-safe-file-name function.
341 (convert-standard-filename file))) 352 (convert-standard-filename file)))
342 353
354(defun erc-generate-log-file-name-network (buffer target nick server port)
355 "Generates a log-file name using the network name rather than server name.
356This results in a file name of the form #channel!nick@network.txt.
357This function is a possible value for `erc-generate-log-file-name-function'."
358 (require 'erc-networks)
359 (let ((file (concat
360 (if target (concat target "!"))
361 nick "@"
362 (or (with-current-buffer buffer (erc-network-name)) server)
363 ".txt")))
364 ;; we need a make-safe-file-name function.
365 (convert-standard-filename file)))
366
343;;;###autoload 367;;;###autoload
344(defun erc-save-buffer-in-logs (&optional buffer) 368(defun erc-save-buffer-in-logs (&optional buffer)
345 "Append BUFFER contents to the log file, if logging is enabled. 369 "Append BUFFER contents to the log file, if logging is enabled.
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 50e4cfbc521..35ba1b13492 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -1,6 +1,7 @@
1;;; erc-match.el --- Highlight messages matching certain regexps 1;;; erc-match.el --- Highlight messages matching certain regexps
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Andreas Fuchs <asf@void.at> 6;; Author: Andreas Fuchs <asf@void.at>
6;; Keywords: comm, faces 7;; Keywords: comm, faces
@@ -540,7 +541,7 @@ deactivate/activate match logging in the latter. See
540 (when (and 541 (when (and
541 (or (eq erc-log-matches-flag t) 542 (or (eq erc-log-matches-flag t)
542 (and (eq erc-log-matches-flag 'away) 543 (and (eq erc-log-matches-flag 'away)
543 erc-away)) 544 (erc-away-time)))
544 match-buffer-name) 545 match-buffer-name)
545 (let ((line (format-spec erc-log-match-format 546 (let ((line (format-spec erc-log-match-format
546 (format-spec-make 547 (format-spec-make
@@ -572,7 +573,7 @@ deactivate/activate match logging in the latter. See
572 573
573(defun erc-log-matches-come-back (proc parsed) 574(defun erc-log-matches-come-back (proc parsed)
574 "Display a notice that messages were logged while away." 575 "Display a notice that messages were logged while away."
575 (when (and erc-away 576 (when (and (erc-away-time)
576 (eq erc-log-matches-flag 'away)) 577 (eq erc-log-matches-flag 'away))
577 (mapc 578 (mapc
578 (lambda (match-type) 579 (lambda (match-type)
@@ -583,7 +584,7 @@ deactivate/activate match logging in the latter. See
583 (with-current-buffer buffer 584 (with-current-buffer buffer
584 (get-text-property (1- (point-max)) 585 (get-text-property (1- (point-max))
585 'timestamp)))) 586 'timestamp))))
586 (away-time (erc-emacs-time-to-erc-time erc-away))) 587 (away-time (erc-emacs-time-to-erc-time (erc-away-time))))
587 (when (and away-time last-msg-time 588 (when (and away-time last-msg-time
588 (erc-time-gt last-msg-time away-time)) 589 (erc-time-gt last-msg-time away-time))
589 (erc-display-message 590 (erc-display-message
diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el
index a5826625bde..888da702d62 100644
--- a/lisp/erc/erc-menu.el
+++ b/lisp/erc/erc-menu.el
@@ -1,6 +1,7 @@
1;; erc-menu.el -- Menu-bar definitions for ERC 1;; erc-menu.el -- Menu-bar definitions for ERC
2 2
3;; Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2001, 2002, 2004, 2005, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Mario Lang <mlang@delysid.org> 6;; Author: Mario Lang <mlang@delysid.org>
6;; Keywords: comm, processes, menu 7;; Keywords: comm, processes, menu
@@ -75,8 +76,8 @@
75 (erc-channel-user-op-p (erc-current-nick))] 76 (erc-channel-user-op-p (erc-current-nick))]
76 ["Set a key..." erc-set-channel-key 77 ["Set a key..." erc-set-channel-key
77 (erc-channel-user-op-p (erc-current-nick))]) 78 (erc-channel-user-op-p (erc-current-nick))])
78 ["Leave this channel..." erc-part-from-channel erc-channel-users] 79 ["Leave this channel..." erc-part-from-channel erc-channel-users])
79 "-") 80 "-"
80 (list "Pals, fools and other keywords" 81 (list "Pals, fools and other keywords"
81 ["Add pal..." erc-add-pal] 82 ["Add pal..." erc-add-pal]
82 ["Delete pal..." erc-delete-pal] 83 ["Delete pal..." erc-delete-pal]
diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el
index 567c91cc075..b4c26b1bb88 100644
--- a/lisp/erc/erc-netsplit.el
+++ b/lisp/erc/erc-netsplit.el
@@ -184,7 +184,7 @@ join from that split has been detected or not.")
184;;;###autoload 184;;;###autoload
185(defun erc-cmd-WHOLEFT () 185(defun erc-cmd-WHOLEFT ()
186 "Show who's gone." 186 "Show who's gone."
187 (with-current-buffer (erc-server-buffer) 187 (erc-with-server-buffer
188 (if (null erc-netsplit-list) 188 (if (null erc-netsplit-list)
189 (erc-display-message 189 (erc-display-message
190 nil 'notice 'active 190 nil 'notice 'active
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 9f8c5528d04..4631ceae3ae 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -317,6 +317,7 @@
317 ("Novernet: Random server" Novernet "irc.novernet.com" ((6665 6669) 7000 )) 317 ("Novernet: Random server" Novernet "irc.novernet.com" ((6665 6669) 7000 ))
318 ("Nullrouted: Random server" Nullrouted "irc.nullrouted.org" ((6666 6669) 7000 )) 318 ("Nullrouted: Random server" Nullrouted "irc.nullrouted.org" ((6666 6669) 7000 ))
319 ("NullusNet: Random server" NullusNet "irc.nullus.net" 6667) 319 ("NullusNet: Random server" NullusNet "irc.nullus.net" 6667)
320 ("OFTC: Random server" OFTC "irc.oftc.net" ((6667 6670) 7000))
320 ("OpChat: Random server" OpChat "irc.opchat.org" ((6667 6669))) 321 ("OpChat: Random server" OpChat "irc.opchat.org" ((6667 6669)))
321 ("Othernet: Random server" Othernet "irc.othernet.org" 6667) 322 ("Othernet: Random server" Othernet "irc.othernet.org" 6667)
322 ("Othernet: US, FL, Miami" Othernet "miami.fl.us.othernet.org" 6667) 323 ("Othernet: US, FL, Miami" Othernet "miami.fl.us.othernet.org" 6667)
@@ -611,6 +612,7 @@ PORTS is either a number, a list of numbers, or a list of port ranges."
611 (Novernet "novernet.com") 612 (Novernet "novernet.com")
612 (Nullrouted "nullrouted.org") 613 (Nullrouted "nullrouted.org")
613 (NullusNet "nullus.net") 614 (NullusNet "nullus.net")
615 (OFTC "oftc.net")
614 (OpChat "opchat.org") 616 (OpChat "opchat.org")
615 (Openprojects "openprojects.net") 617 (Openprojects "openprojects.net")
616 (Othernet "othernet.org") 618 (Othernet "othernet.org")
@@ -737,12 +739,12 @@ search for a match in `erc-networks-alist'."
737 739
738(defun erc-network () 740(defun erc-network ()
739 "Return the value of `erc-network' for the current server." 741 "Return the value of `erc-network' for the current server."
740 (with-current-buffer (erc-server-buffer) erc-network)) 742 (erc-with-server-buffer erc-network))
741 743
742(defun erc-current-network () 744(defun erc-current-network ()
743 "Deprecated. Use `erc-network' instead. Return the name of this server's 745 "Deprecated. Use `erc-network' instead. Return the name of this server's
744network as a symbol." 746network as a symbol."
745 (with-current-buffer (erc-server-buffer) 747 (erc-with-server-buffer
746 (intern (downcase (symbol-name erc-network))))) 748 (intern (downcase (symbol-name erc-network)))))
747 749
748(erc-make-obsolete 'erc-current-network 'erc-network 750(erc-make-obsolete 'erc-current-network 'erc-network
@@ -750,7 +752,7 @@ network as a symbol."
750 752
751(defun erc-network-name () 753(defun erc-network-name ()
752 "Returns the name of the current network as a string." 754 "Returns the name of the current network as a string."
753 (with-current-buffer (erc-server-buffer) (symbol-name erc-network))) 755 (erc-with-server-buffer (symbol-name erc-network)))
754 756
755(defun erc-set-network-name (proc parsed) 757(defun erc-set-network-name (proc parsed)
756 "Set `erc-network' to the value returned by `erc-determine-network'." 758 "Set `erc-network' to the value returned by `erc-determine-network'."
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index 82784c624c0..d34e38ade43 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -121,8 +121,7 @@ changes."
121 (ison-list (delete "" (split-string 121 (ison-list (delete "" (split-string
122 (erc-response.contents parsed)))) 122 (erc-response.contents parsed))))
123 (new-list ison-list) 123 (new-list ison-list)
124 (old-list (with-current-buffer (erc-server-buffer) 124 (old-list (erc-with-server-buffer erc-last-ison)))
125 erc-last-ison)))
126 (while new-list 125 (while new-list
127 (when (not (erc-member-ignore-case (car new-list) old-list)) 126 (when (not (erc-member-ignore-case (car new-list) old-list))
128 (run-hook-with-args 'erc-notify-signon-hook server (car new-list)) 127 (run-hook-with-args 'erc-notify-signon-hook server (car new-list))
@@ -204,7 +203,7 @@ with args, toggle notify status of people."
204 (cond 203 (cond
205 ((null args) 204 ((null args)
206 ;; Print current notificated people (online) 205 ;; Print current notificated people (online)
207 (let ((ison (with-current-buffer (erc-server-buffer) erc-last-ison))) 206 (let ((ison (erc-with-server-buffer erc-last-ison)))
208 (if (not ison) 207 (if (not ison)
209 (erc-display-message 208 (erc-display-message
210 nil 'notice 'active "No ison-list yet!") 209 nil 'notice 'active "No ison-list yet!")
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index 951ba25898c..f207bcc1b8b 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -180,7 +180,7 @@ the most recent speakers are listed first."
180 (while (pcomplete-here (pcomplete-erc-nicks)))) 180 (while (pcomplete-here (pcomplete-erc-nicks))))
181 181
182(defun pcomplete/erc-mode/UNIGNORE () 182(defun pcomplete/erc-mode/UNIGNORE ()
183 (pcomplete-here (with-current-buffer (erc-server-buffer) erc-ignore-list))) 183 (pcomplete-here (erc-with-server-buffer erc-ignore-list)))
184 184
185;;; Functions that provide possible completions. 185;;; Functions that provide possible completions.
186 186
@@ -233,7 +233,7 @@ If optional argument IGNORE-SELF is non-nil, don't return the current nick."
233(defun pcomplete-erc-all-nicks (&optional postfix) 233(defun pcomplete-erc-all-nicks (&optional postfix)
234 "Returns a list of all nicks on the current server." 234 "Returns a list of all nicks on the current server."
235 (let (nicks) 235 (let (nicks)
236 (with-current-buffer (process-buffer erc-server-process) 236 (erc-with-server-buffer
237 (maphash (lambda (nick user) 237 (maphash (lambda (nick user)
238 (setq nicks (cons (concat nick postfix) nicks))) 238 (setq nicks (cons (concat nick postfix) nicks)))
239 erc-server-users)) 239 erc-server-users))
diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el
index 911a154e915..95c313a23f6 100644
--- a/lisp/erc/erc-ring.el
+++ b/lisp/erc/erc-ring.el
@@ -1,6 +1,7 @@
1;; erc-ring.el -- Command history handling for erc using ring.el 1;; erc-ring.el -- Command history handling for erc using ring.el
2 2
3;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Alex Schroeder <alex@gnu.org> 6;; Author: Alex Schroeder <alex@gnu.org>
6;; Keywords: comm 7;; Keywords: comm
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 5d03a7b6365..a2cc1b19782 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -168,15 +168,18 @@ Example of use:
168 :type '(repeat 168 :type '(repeat
169 (list :tag "Network" 169 (list :tag "Network"
170 (choice :tag "Network name" 170 (choice :tag "Network name"
171 (const freenode) 171 (const Ars)
172 (const OFTC) 172 (const Austnet)
173 (const Azzurra)
174 (const BitlBee)
175 (const BRASnet)
173 (const DALnet) 176 (const DALnet)
177 (const freenode)
174 (const GalaxyNet) 178 (const GalaxyNet)
175 (const SlashNET)
176 (const BRASnet)
177 (const iip) 179 (const iip)
178 (const Austnet) 180 (const OFTC)
179 (const Azzurra) 181 (const QuakeNet)
182 (const SlashNET)
180 (symbol :tag "Network name")) 183 (symbol :tag "Network name"))
181 (repeat :tag "Nickname and password" 184 (repeat :tag "Nickname and password"
182 (cons :tag "Identity" 185 (cons :tag "Identity"
@@ -186,68 +189,63 @@ Example of use:
186;; Variables: 189;; Variables:
187 190
188(defcustom erc-nickserv-alist 191(defcustom erc-nickserv-alist
189 '((BitlBee 192 '((Ars
190 nil 193 nil nil
191 nil 194 "Census"
195 "IDENTIFY" nil nil)
196 (Austnet
197 "NickOP!service@austnet.org"
198 "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
199 "nickop@austnet.org"
200 "identify" nil nil)
201 (Azzurra
202 "NickServ!service@azzurra.org"
203 "/ns\\s-IDENTIFY\\s-password"
204 "NickServ"
205 "IDENTIFY" nil nil)
206 (BitlBee
207 nil nil
192 "&bitlbee" 208 "&bitlbee"
193 "identify" 209 "identify" nil nil)
194 nil) 210 (BRASnet
211 "NickServ!services@brasnet.org"
212 "/NickServ\\s-IDENTIFY\\s-senha"
213 "NickServ"
214 "IDENTIFY" nil "")
195 (DALnet 215 (DALnet
196 "NickServ!service@dal.net" 216 "NickServ!service@dal.net"
197 "/msg\\s-NickServ@services.dal.net\\s-IDENTIFY\\s-<password>" 217 "/msg\\s-NickServ@services.dal.net\\s-IDENTIFY\\s-<password>"
198 "NickServ@services.dal.net" 218 "NickServ@services.dal.net"
199 "IDENTIFY" 219 "IDENTIFY" nil nil)
200 nil)
201 (freenode 220 (freenode
202 "NickServ!NickServ@services." 221 "NickServ!NickServ@services."
203 "/msg\\s-NickServ\\s-IDENTIFY\\s-<password>" 222 "/msg\\s-NickServ\\s-IDENTIFY\\s-<password>"
204 "NickServ" 223 "NickServ"
205 "IDENTIFY" 224 "IDENTIFY" nil nil)
206 nil)
207 (GalaxyNet 225 (GalaxyNet
208 "NS!nickserv@galaxynet.org" 226 "NS!nickserv@galaxynet.org"
209 "Please\\s-change\\s-nicks\\s-or\\s-authenticate." 227 "Please\\s-change\\s-nicks\\s-or\\s-authenticate."
210 "NS@services.galaxynet.org" 228 "NS@services.galaxynet.org"
211 "AUTH" 229 "AUTH" t nil)
212 t)
213 (SlashNET
214 "NickServ!services@services.slashnet.org"
215 "/msg\\s-NickServ\\s-IDENTIFY\\s-password"
216 "NickServ@services.slashnet.org"
217 "IDENTIFY"
218 nil)
219 (iip 230 (iip
220 "Trent@anon.iip" 231 "Trent@anon.iip"
221 "type\\s-/squery\\s-Trent\\s-identify\\s-<password>" 232 "type\\s-/squery\\s-Trent\\s-identify\\s-<password>"
222 "Trent@anon.iip" 233 "Trent@anon.iip"
223 "IDENTIFY" 234 "IDENTIFY" nil "SQUERY")
224 nil
225 "SQUERY")
226 (BRASnet
227 "NickServ!services@brasnet.org"
228 "/NickServ\\s-IDENTIFY\\s-senha"
229 "NickServ"
230 "IDENTIFY"
231 nil
232 "")
233 (Austnet
234 "NickOP!service@austnet.org"
235 "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
236 "nickop@austnet.org"
237 "identify"
238 nil)
239 (Azzurra
240 "NickServ!service@azzurra.org"
241 "/ns\\s-IDENTIFY\\s-password"
242 "NickServ"
243 "IDENTIFY"
244 nil)
245 (OFTC 235 (OFTC
246 "NickServ!services@services.oftc.net" 236 "NickServ!services@services.oftc.net"
247 "/msg\\s-NickServ\\s-IDENTIFY\\s-\^_password" 237 "type\\s-/msg\\s-NickServ\\s-IDENTIFY\\s-password."
248 "NickServ" 238 "NickServ"
249 "IDENTIFY" 239 "IDENTIFY" nil nil)
250 nil)) 240 (QuakeNet
241 nil nil
242 "Q@CServe.quakenet.org"
243 "auth" t nil)
244 (SlashNET
245 "NickServ!services@services.slashnet.org"
246 "/msg\\s-NickServ\\s-IDENTIFY\\s-password"
247 "NickServ@services.slashnet.org"
248 "IDENTIFY" nil nil))
251 "Alist of NickServer details, sorted by network. 249 "Alist of NickServer details, sorted by network.
252Every element in the list has the form 250Every element in the list has the form
253 \(SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER) 251 \(SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER)
@@ -265,8 +263,10 @@ ANSWER is the command to use for the answer. The default is 'privmsg.
265 :type '(repeat 263 :type '(repeat
266 (list :tag "Nickserv data" 264 (list :tag "Nickserv data"
267 (symbol :tag "Network name") 265 (symbol :tag "Network name")
268 (string :tag "Nickserv's nick!user@host") 266 (choice (string :tag "Nickserv's nick!user@host")
269 (regexp :tag "Identify request sent by Nickserv") 267 (const :tag "No message sent by Nickserv" nil))
268 (choice (regexp :tag "Identify request sent by Nickserv")
269 (const :tag "No message sent by Nickserv" nil))
270 (string :tag "Identify to") 270 (string :tag "Identify to")
271 (string :tag "Identify keyword") 271 (string :tag "Identify keyword")
272 (boolean :tag "Use current nick in identify message?") 272 (boolean :tag "Use current nick in identify message?")
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 551b83fb5ac..0d88589838e 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -1,6 +1,7 @@
1;;; erc-speedbar.el --- Speedbar support for ERC 1;;; erc-speedbar.el --- Speedbar support for ERC
2 2
3;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Mario Lang <mlang@delysid.org> 6;; Author: Mario Lang <mlang@delysid.org>
6;; Contributor: Eric M. Ludlam <eric@siege-engine.com> 7;; Contributor: Eric M. Ludlam <eric@siege-engine.com>
@@ -113,7 +114,7 @@ This will add a speedbar major display mode."
113 (erase-buffer) 114 (erase-buffer)
114 (let (serverp chanp queryp) 115 (let (serverp chanp queryp)
115 (with-current-buffer buffer 116 (with-current-buffer buffer
116 (setq serverp (eq buffer (process-buffer erc-server-process))) 117 (setq serverp (erc-server-buffer-p))
117 (setq chanp (erc-channel-p (erc-default-target))) 118 (setq chanp (erc-channel-p (erc-default-target)))
118 (setq queryp (erc-query-buffer-p))) 119 (setq queryp (erc-query-buffer-p)))
119 (cond (serverp 120 (cond (serverp
diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el
index 484ddb36d52..a15ca17987f 100644
--- a/lisp/erc/erc-spelling.el
+++ b/lisp/erc/erc-spelling.el
@@ -41,12 +41,10 @@
41 ;; called AFTER the server buffer is initialized. 41 ;; called AFTER the server buffer is initialized.
42 ((add-hook 'erc-connect-pre-hook 'erc-spelling-init) 42 ((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
43 (dolist (buffer (erc-buffer-list)) 43 (dolist (buffer (erc-buffer-list))
44 (when (buffer-live-p buffer) 44 (erc-spelling-init buffer)))
45 (with-current-buffer buffer (erc-spelling-init)))))
46 ((remove-hook 'erc-connect-pre-hook 'erc-spelling-init) 45 ((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
47 (dolist (buffer (erc-buffer-list)) 46 (dolist (buffer (erc-buffer-list))
48 (when (buffer-live-p buffer) 47 (with-current-buffer buffer (flyspell-mode 0)))))
49 (with-current-buffer buffer (flyspell-mode 0))))))
50 48
51(defcustom erc-spelling-dictionaries nil 49(defcustom erc-spelling-dictionaries nil
52 "An alist mapping buffer names to dictionaries. 50 "An alist mapping buffer names to dictionaries.
@@ -60,24 +58,22 @@ name here."
60 (string :tag "Dictionary")))) 58 (string :tag "Dictionary"))))
61 :group 'erc-spelling) 59 :group 'erc-spelling)
62 60
63(defun erc-spelling-init () 61(defun erc-spelling-init (buffer)
64 "Enable flyspell mode in an ERC buffer." 62 "Enable flyspell mode in an ERC buffer.
65 (let ((name (downcase (buffer-name))) 63The current buffer is given by BUFFER."
66 (dicts erc-spelling-dictionaries)) 64 (with-current-buffer buffer
67 (when dicts 65 (let ((name (downcase (buffer-name)))
68 (while (and dicts 66 (dicts erc-spelling-dictionaries))
69 (not (string= name (downcase (caar dicts))))) 67 (when dicts
70 (setq dicts (cdr dicts))) 68 (while (and dicts
71 (setq ispell-local-dictionary 69 (not (string= name (downcase (caar dicts)))))
72 (if dicts 70 (setq dicts (cdr dicts)))
73 (cadr (car dicts)) 71 (setq ispell-local-dictionary
74 (let ((server (erc-server-buffer))) 72 (if dicts
75 (if server 73 (cadr (car dicts))
76 (with-current-buffer server 74 (erc-with-server-buffer ispell-local-dictionary)))))
77 ispell-local-dictionary) 75 (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
78 nil)))))) 76 (flyspell-mode 1)))
79 (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
80 (flyspell-mode 1))
81 77
82(defun erc-spelling-unhighlight-word (word) 78(defun erc-spelling-unhighlight-word (word)
83 "Unhighlight the given WORD. 79 "Unhighlight the given WORD.
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index 5a9977aaead..0b8017ffe0b 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -147,7 +147,7 @@ or `erc-send-modify-hook'."
147 (error "Timestamp function unbound")) 147 (error "Timestamp function unbound"))
148 (when (and (fboundp erc-insert-away-timestamp-function) 148 (when (and (fboundp erc-insert-away-timestamp-function)
149 erc-away-timestamp-format 149 erc-away-timestamp-format
150 (with-current-buffer (erc-server-buffer) erc-away) 150 (erc-away-time)
151 (not erc-timestamp-format)) 151 (not erc-timestamp-format))
152 (funcall erc-insert-away-timestamp-function 152 (funcall erc-insert-away-timestamp-function
153 (erc-format-timestamp ct erc-away-timestamp-format))) 153 (erc-format-timestamp ct erc-away-timestamp-format)))
@@ -203,6 +203,7 @@ space before a right timestamp in any saved logs."
203 (s (if ignore-p (make-string len ? ) string))) 203 (s (if ignore-p (make-string len ? ) string)))
204 (unless ignore-p (setq erc-timestamp-last-inserted string)) 204 (unless ignore-p (setq erc-timestamp-last-inserted string))
205 (erc-put-text-property 0 len 'field 'erc-timestamp s) 205 (erc-put-text-property 0 len 'field 'erc-timestamp s)
206 (erc-put-text-property 0 len 'invisible 'timestamp s)
206 (insert s))) 207 (insert s)))
207 208
208(defun erc-insert-aligned (string pos) 209(defun erc-insert-aligned (string pos)
@@ -319,6 +320,21 @@ set, and timestamping is already active."
319 (setq erc-hide-timestamps nil) 320 (setq erc-hide-timestamps nil)
320 (erc-munge-invisibility-spec)) 321 (erc-munge-invisibility-spec))
321 322
323(defun erc-toggle-timestamps ()
324 "Hide or show timestamps in ERC buffers.
325
326Note that timestamps can only be shown for a message using this
327function if `erc-timestamp-format' was set and timestamping was
328enabled when the message was inserted."
329 (interactive)
330 (if erc-hide-timestamps
331 (setq erc-hide-timestamps nil)
332 (setq erc-hide-timestamps t))
333 (mapc (lambda (buffer)
334 (with-current-buffer buffer
335 (erc-munge-invisibility-spec)))
336 (erc-buffer-list)))
337
322(defun erc-echo-timestamp (before now) 338(defun erc-echo-timestamp (before now)
323 "Print timestamp text-property of an IRC message. 339 "Print timestamp text-property of an IRC message.
324Argument BEFORE is where point was before it got moved and 340Argument BEFORE is where point was before it got moved and
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 0fa550a5838..4a8b673d46b 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -1,6 +1,7 @@
1;;; erc-track.el --- Track modified channel buffers 1;;; erc-track.el --- Track modified channel buffers
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
4;; 2007 Free Software Foundation, Inc.
4 5
5;; Author: Mario Lang <mlang@delysid.org> 6;; Author: Mario Lang <mlang@delysid.org>
6;; Keywords: comm, faces 7;; Keywords: comm, faces
@@ -46,12 +47,33 @@
46 "Track active buffers and show activity in the modeline." 47 "Track active buffers and show activity in the modeline."
47 :group 'erc) 48 :group 'erc)
48 49
50(defcustom erc-track-enable-keybindings 'ask
51 "Whether to enable the ERC track keybindings, namely:
52`C-c C-SPC' and `C-c C-@', which both do the same thing.
53
54The default is to check to see whether these keys are used
55already: if not, then enable the ERC track minor mode, which
56provides these keys. Otherwise, do not touch the keys.
57
58This can alternatively be set to either t or nil, which indicate
59respectively always to enable ERC track minor mode or never to
60enable ERC track minor mode.
61
62The reason for using this default value is to both (1) adhere to
63the Emacs development guidelines which say not to touch keys of
64the form C-c C-<something> and also (2) to meet the expectations
65of long-time ERC users, many of whom rely on these keybindings."
66 :group 'erc-track
67 :type '(choice (const :tag "Ask, if used already" ask)
68 (const :tag "Enable" t)
69 (const :tag "Disable" nil)))
70
49(defcustom erc-track-visibility t 71(defcustom erc-track-visibility t
50 "Where do we look for buffers to determine their visibility? 72 "Where do we look for buffers to determine their visibility?
51The value of this variable determines, when a buffer is considered 73The value of this variable determines, when a buffer is considered
52visible or invisible. New messages in invisible buffers are tracked, 74visible or invisible. New messages in invisible buffers are tracked,
53while switching to visible buffers when they are tracked removes them 75while switching to visible buffers when they are tracked removes them
54from the list. See also `erc-track-when-inactive-mode'. 76from the list. See also `erc-track-when-inactive'.
55 77
56Possible values are: 78Possible values are:
57 79
@@ -488,45 +510,124 @@ START is the minimum length of the name used."
488 (equal (erc-unique-substrings '("abc" "abcdefg")) 510 (equal (erc-unique-substrings '("abc" "abcdefg"))
489 '("abc" "abcd")))))) 511 '("abc" "abcd"))))))
490 512
513;;; Minor mode
514
515;; Play nice with other IRC clients (and Emacs development rules) by
516;; making this a minor mode
517
518(defvar erc-track-minor-mode-map (make-sparse-keymap)
519 "Keymap for rcirc track minor mode.")
520
521(define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer)
522(define-key erc-track-minor-mode-map (kbd "C-c C-SPC")
523 'erc-track-switch-buffer)
524
525;;;###autoload
526(define-minor-mode erc-track-minor-mode
527 "Global minor mode for tracking ERC buffers and showing activity in the
528mode line.
529
530This exists for the sole purpose of providing the C-c C-SPC and
531C-c C-@ keybindings. Make sure that you have enabled the track
532module, otherwise the keybindings will not do anything useful."
533 :init-value nil
534 :lighter ""
535 :keymap erc-track-minor-mode-map
536 :global t
537 :group 'erc-track)
538
539(defun erc-track-minor-mode-maybe ()
540 "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'."
541 (unless (or erc-track-minor-mode
542 ;; don't start the minor mode until we have an ERC
543 ;; process running, because we don't want to prompt the
544 ;; user while starting Emacs
545 (null (erc-buffer-list)))
546 (cond ((eq erc-track-enable-keybindings 'ask)
547 (let ((key (or (and (key-binding (kbd "C-c C-SPC")) "C-SPC")
548 (and (key-binding (kbd "C-c C-@")) "C-@"))))
549 (if key
550 (if (y-or-n-p
551 (concat "The C-c " key " binding is in use;"
552 " override it for tracking? "))
553 (progn
554 (message (concat "Will change it; set"
555 " `erc-track-enable-keybindings'"
556 " to disable this message"))
557 (sleep-for 3)
558 (erc-track-minor-mode 1))
559 (message (concat "Not changing it; set"
560 " `erc-track-enable-keybindings'"
561 " to disable this message"))
562 (sleep-for 3))
563 (erc-track-minor-mode 1))))
564 ((eq erc-track-enable-keybindings t)
565 (erc-track-minor-mode 1))
566 (t nil))))
567
491;;; Module 568;;; Module
492 569
493;;;###autoload (autoload 'erc-track-mode "erc-track" nil t) 570;;;###autoload (autoload 'erc-track-mode "erc-track" nil t)
494(define-erc-module track track-modified-channels 571(define-erc-module track nil
495 "This mode tracks ERC channel buffers with activity." 572 "This mode tracks ERC channel buffers with activity."
496 ((erc-track-add-to-mode-line erc-track-position-in-mode-line) 573 ;; Enable:
497 (setq erc-modified-channels-object (erc-modified-channels-object nil)) 574 ((when (boundp 'erc-track-when-inactive)
498 (erc-update-mode-line) 575 (if erc-track-when-inactive
499 (if (featurep 'xemacs) 576 (progn
500 (defadvice switch-to-buffer (after erc-update (&rest args) activate) 577 (if (featurep 'xemacs)
501 (erc-modified-channels-update)) 578 (defadvice switch-to-buffer (after erc-update-when-inactive
502 (add-hook 'window-configuration-change-hook 'erc-modified-channels-update)) 579 (&rest args) activate)
503 (add-hook 'erc-insert-post-hook 'erc-track-modified-channels) 580 (erc-user-is-active))
504 (add-hook 'erc-disconnected-hook 'erc-modified-channels-update)) 581 (add-hook 'window-configuration-change-hook 'erc-user-is-active))
505 ((erc-track-remove-from-mode-line) 582 (add-hook 'erc-send-completed-hook 'erc-user-is-active)
506 (if (featurep 'xemacs) 583 (add-hook 'erc-server-001-functions 'erc-user-is-active))
507 (ad-disable-advice 'switch-to-buffer 'after 'erc-update) 584 (erc-track-add-to-mode-line erc-track-position-in-mode-line)
508 (remove-hook 'window-configuration-change-hook 585 (setq erc-modified-channels-object (erc-modified-channels-object nil))
509 'erc-modified-channels-update)) 586 (erc-update-mode-line)
510 (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update) 587 (if (featurep 'xemacs)
511 (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))) 588 (defadvice switch-to-buffer (after erc-update (&rest args) activate)
512 589 (erc-modified-channels-update))
513;;;###autoload (autoload 'erc-track-when-inactive-mode "erc-track" nil t) 590 (add-hook 'window-configuration-change-hook
514(define-erc-module track-when-inactive nil 591 'erc-modified-channels-update))
515 "This mode enables channel tracking even for visible buffers, 592 (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
516if you are inactivity." 593 (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
517 ((if (featurep 'xemacs) 594 ;; enable the tracking keybindings
518 (defadvice switch-to-buffer (after erc-update-when-inactive (&rest args) activate) 595 (erc-track-minor-mode-maybe)))
519 (erc-user-is-active)) 596 ;; Disable:
520 (add-hook 'window-configuration-change-hook 'erc-user-is-active)) 597 ((when (boundp 'erc-track-when-inactive)
521 (add-hook 'erc-send-completed-hook 'erc-user-is-active) 598 (erc-track-remove-from-mode-line)
522 (add-hook 'erc-server-001-functions 'erc-user-is-active)) 599 (if erc-track-when-inactive
523 ((erc-track-remove-from-mode-line) 600 (progn
524 (if (featurep 'xemacs) 601 (if (featurep 'xemacs)
525 (ad-disable-advice 'switch-to-buffer 'after 'erc-update-when-inactive) 602 (ad-disable-advice 'switch-to-buffer 'after
526 (remove-hook 'window-configuration-change-hook 'erc-user-is-active)) 603 'erc-update-when-inactive)
527 (remove-hook 'erc-send-completed-hook 'erc-user-is-active) 604 (remove-hook 'window-configuration-change-hook
528 (remove-hook 'erc-server-001-functions 'erc-user-is-active) 605 'erc-user-is-active))
529 (remove-hook 'erc-timer-hook 'erc-user-is-active))) 606 (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
607 (remove-hook 'erc-server-001-functions 'erc-user-is-active)
608 (remove-hook 'erc-timer-hook 'erc-user-is-active))
609 (if (featurep 'xemacs)
610 (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
611 (remove-hook 'window-configuration-change-hook
612 'erc-modified-channels-update))
613 (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
614 (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))
615 ;; disable the tracking keybindings
616 (when erc-track-minor-mode
617 (erc-track-minor-mode -1)))))
618
619(defcustom erc-track-when-inactive nil
620 "Enable channel tracking even for visible buffers, if you are
621inactive."
622 :group 'erc-track
623 :type 'boolean
624 :set (lambda (sym val)
625 (if erc-track-mode
626 (progn
627 (erc-track-disable)
628 (set sym val)
629 (erc-track-enable))
630 (set sym val))))
530 631
531;;; Visibility 632;;; Visibility
532 633
@@ -545,7 +646,7 @@ only consider active buffers visible.")
545 646
546(defun erc-buffer-visible (buffer) 647(defun erc-buffer-visible (buffer)
547 "Return non-nil when the buffer is visible." 648 "Return non-nil when the buffer is visible."
548 (if erc-track-when-inactive-mode 649 (if erc-track-when-inactive
549 (when erc-buffer-activity; could be nil 650 (when erc-buffer-activity; could be nil
550 (and (get-buffer-window buffer erc-track-visibility) 651 (and (get-buffer-window buffer erc-track-visibility)
551 (<= (erc-time-diff erc-buffer-activity (erc-current-time)) 652 (<= (erc-time-diff erc-buffer-activity (erc-current-time))
@@ -815,7 +916,9 @@ relative to `erc-track-switch-direction'"
815switch back to the last non-ERC buffer visited. Next is defined by 916switch back to the last non-ERC buffer visited. Next is defined by
816`erc-track-switch-direction', a negative argument will reverse this." 917`erc-track-switch-direction', a negative argument will reverse this."
817 (interactive "p") 918 (interactive "p")
818 (when erc-track-mode 919 (if (not erc-track-mode)
920 (message (concat "Enable the ERC track module if you want to use the"
921 " tracking minor mode"))
819 (cond (erc-modified-channels-alist 922 (cond (erc-modified-channels-alist
820 ;; if we're not in erc-mode, set this buffer to return to 923 ;; if we're not in erc-mode, set this buffer to return to
821 (unless (eq major-mode 'erc-mode) 924 (unless (eq major-mode 'erc-mode)
@@ -828,12 +931,6 @@ switch back to the last non-ERC buffer visited. Next is defined by
828 (buffer-live-p erc-track-last-non-erc-buffer)) 931 (buffer-live-p erc-track-last-non-erc-buffer))
829 (switch-to-buffer erc-track-last-non-erc-buffer))))) 932 (switch-to-buffer erc-track-last-non-erc-buffer)))))
830 933
831;; These bindings are global, because they pop us from any other
832;; buffer to an active ERC buffer!
833
834(global-set-key (kbd "C-c C-@") 'erc-track-switch-buffer)
835(global-set-key (kbd "C-c C-SPC") 'erc-track-switch-buffer)
836
837(provide 'erc-track) 934(provide 'erc-track)
838 935
839;;; erc-track.el ends here 936;;; erc-track.el ends here
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 927dce02d64..37c2c2e0883 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -66,7 +66,7 @@
66 66
67;;; Code: 67;;; Code:
68 68
69(defconst erc-version-string "Version 5.2 stable pre-release" 69(defconst erc-version-string "Version 5.2"
70 "ERC version. This is used by function `erc-version'.") 70 "ERC version. This is used by function `erc-version'.")
71 71
72(eval-when-compile (require 'cl)) 72(eval-when-compile (require 'cl))
@@ -324,7 +324,7 @@ Each function should accept two arguments, NEW-NICK and OLD-NICK."
324 324
325(defcustom erc-connect-pre-hook '(erc-initialize-log-marker) 325(defcustom erc-connect-pre-hook '(erc-initialize-log-marker)
326 "Hook called just before `erc' calls `erc-connect'. 326 "Hook called just before `erc' calls `erc-connect'.
327Functions are run in the buffer-to-be." 327Functions are passed a buffer as the first argument."
328 :group 'erc-hooks 328 :group 'erc-hooks
329 :type 'hook) 329 :type 'hook)
330 330
@@ -392,14 +392,14 @@ in the current buffer's `erc-channel-users' hash table."
392(defsubst erc-get-server-user (nick) 392(defsubst erc-get-server-user (nick)
393 "Finds the USER corresponding to NICK in the current server's 393 "Finds the USER corresponding to NICK in the current server's
394`erc-server-users' hash table." 394`erc-server-users' hash table."
395 (with-current-buffer (process-buffer erc-server-process) 395 (erc-with-server-buffer
396 (gethash (erc-downcase nick) erc-server-users))) 396 (gethash (erc-downcase nick) erc-server-users)))
397 397
398(defsubst erc-add-server-user (nick user) 398(defsubst erc-add-server-user (nick user)
399 "This function is for internal use only. 399 "This function is for internal use only.
400 400
401Adds USER with nickname NICK to the `erc-server-users' hash table." 401Adds USER with nickname NICK to the `erc-server-users' hash table."
402 (with-current-buffer (process-buffer erc-server-process) 402 (erc-with-server-buffer
403 (puthash (erc-downcase nick) user erc-server-users))) 403 (puthash (erc-downcase nick) user erc-server-users)))
404 404
405(defsubst erc-remove-server-user (nick) 405(defsubst erc-remove-server-user (nick)
@@ -410,7 +410,7 @@ hash table. This user is not removed from the
410`erc-channel-users' lists of other buffers. 410`erc-channel-users' lists of other buffers.
411 411
412See also: `erc-remove-user'." 412See also: `erc-remove-user'."
413 (with-current-buffer (process-buffer erc-server-process) 413 (erc-with-server-buffer
414 (remhash (erc-downcase nick) erc-server-users))) 414 (remhash (erc-downcase nick) erc-server-users)))
415 415
416(defun erc-change-user-nickname (user new-nick) 416(defun erc-change-user-nickname (user new-nick)
@@ -421,7 +421,7 @@ Changes the nickname of USER to NEW-NICK in the
421other buffers are also changed." 421other buffers are also changed."
422 (let ((nick (erc-server-user-nickname user))) 422 (let ((nick (erc-server-user-nickname user)))
423 (setf (erc-server-user-nickname user) new-nick) 423 (setf (erc-server-user-nickname user) new-nick)
424 (with-current-buffer (process-buffer erc-server-process) 424 (erc-with-server-buffer
425 (remhash (erc-downcase nick) erc-server-users) 425 (remhash (erc-downcase nick) erc-server-users)
426 (puthash (erc-downcase new-nick) user erc-server-users)) 426 (puthash (erc-downcase new-nick) user erc-server-users))
427 (dolist (buf (erc-server-user-buffers user)) 427 (dolist (buf (erc-server-user-buffers user))
@@ -514,16 +514,15 @@ See also: `erc-sort-channel-users-by-activity'"
514 514
515(defun erc-get-server-nickname-list () 515(defun erc-get-server-nickname-list ()
516 "Returns a list of known nicknames on the current server." 516 "Returns a list of known nicknames on the current server."
517 (if (erc-server-process-alive) 517 (erc-with-server-buffer
518 (with-current-buffer (erc-server-buffer) 518 (let (nicks)
519 (let (nicks) 519 (when (hash-table-p erc-server-users)
520 (when (hash-table-p erc-server-users) 520 (maphash (lambda (n user)
521 (maphash (lambda (n user) 521 (setq nicks
522 (setq nicks 522 (cons (erc-server-user-nickname user)
523 (cons (erc-server-user-nickname user) 523 nicks)))
524 nicks))) 524 erc-server-users)
525 erc-server-users) 525 nicks))))
526 nicks)))))
527 526
528(defun erc-get-channel-nickname-list () 527(defun erc-get-channel-nickname-list ()
529 "Returns a list of known nicknames on the current channel." 528 "Returns a list of known nicknames on the current channel."
@@ -538,16 +537,15 @@ See also: `erc-sort-channel-users-by-activity'"
538 537
539(defun erc-get-server-nickname-alist () 538(defun erc-get-server-nickname-alist ()
540 "Returns an alist of known nicknames on the current server." 539 "Returns an alist of known nicknames on the current server."
541 (if (erc-server-process-alive) 540 (erc-with-server-buffer
542 (with-current-buffer (erc-server-buffer) 541 (let (nicks)
543 (let (nicks) 542 (when (hash-table-p erc-server-users)
544 (when (hash-table-p erc-server-users) 543 (maphash (lambda (n user)
545 (maphash (lambda (n user) 544 (setq nicks
546 (setq nicks 545 (cons (cons (erc-server-user-nickname user) nil)
547 (cons (cons (erc-server-user-nickname user) nil) 546 nicks)))
548 nicks))) 547 erc-server-users)
549 erc-server-users) 548 nicks))))
550 nicks)))))
551 549
552(defun erc-get-channel-nickname-alist () 550(defun erc-get-channel-nickname-alist ()
553 "Returns an alist of known nicknames on the current channel." 551 "Returns an alist of known nicknames on the current channel."
@@ -1293,7 +1291,7 @@ capabilities."
1293 (unless (erc-server-buffer-p) 1291 (unless (erc-server-buffer-p)
1294 (error 1292 (error
1295 "You should only run `erc-once-with-server-event' in a server buffer")) 1293 "You should only run `erc-once-with-server-event' in a server buffer"))
1296 (let ((fun (erc-gensym)) 1294 (let ((fun (make-symbol "fun"))
1297 (hook (erc-get-hook event))) 1295 (hook (erc-get-hook event)))
1298 (put fun 'erc-original-buffer (current-buffer)) 1296 (put fun 'erc-original-buffer (current-buffer))
1299 (fset fun `(lambda (proc parsed) 1297 (fset fun `(lambda (proc parsed)
@@ -1316,7 +1314,7 @@ not be run.
1316 1314
1317When FORMS execute, the current buffer is the server buffer associated with the 1315When FORMS execute, the current buffer is the server buffer associated with the
1318connection over which the data was received that triggered EVENT." 1316connection over which the data was received that triggered EVENT."
1319 (let ((fun (erc-gensym)) 1317 (let ((fun (make-symbol "fun"))
1320 (hook (erc-get-hook event))) 1318 (hook (erc-get-hook event)))
1321 (fset fun `(lambda (proc parsed) 1319 (fset fun `(lambda (proc parsed)
1322 (remove-hook ',hook ',fun) 1320 (remove-hook ',hook ',fun)
@@ -1370,7 +1368,7 @@ If BUFFER is nil, the current buffer is used."
1370(defun erc-ison-p (nick) 1368(defun erc-ison-p (nick)
1371 "Return non-nil if NICK is online." 1369 "Return non-nil if NICK is online."
1372 (interactive "sNick: ") 1370 (interactive "sNick: ")
1373 (with-current-buffer (erc-server-buffer) 1371 (erc-with-server-buffer
1374 (let ((erc-online-p 'unknown)) 1372 (let ((erc-online-p 'unknown))
1375 (erc-once-with-server-event 1373 (erc-once-with-server-event
1376 303 1374 303
@@ -1420,7 +1418,7 @@ server buffer.")
1420(defun erc-active-buffer () 1418(defun erc-active-buffer ()
1421 "Return the value of `erc-active-buffer' for the current server. 1419 "Return the value of `erc-active-buffer' for the current server.
1422Defaults to the server buffer." 1420Defaults to the server buffer."
1423 (with-current-buffer (erc-server-buffer) 1421 (erc-with-server-buffer
1424 (if (buffer-live-p erc-active-buffer) 1422 (if (buffer-live-p erc-active-buffer)
1425 erc-active-buffer 1423 erc-active-buffer
1426 (setq erc-active-buffer (current-buffer))))) 1424 (setq erc-active-buffer (current-buffer)))))
@@ -1603,10 +1601,10 @@ See `erc-get-buffer' for details.
1603See also `with-current-buffer'. 1601See also `with-current-buffer'.
1604 1602
1605\(fn (TARGET [PROCESS]) BODY...)" 1603\(fn (TARGET [PROCESS]) BODY...)"
1606 (let ((buf (erc-gensym)) 1604 (let ((buf (make-symbol "buf"))
1607 (proc (erc-gensym)) 1605 (proc (make-symbol "proc"))
1608 (target (erc-gensym)) 1606 (target (make-symbol "target"))
1609 (process (erc-gensym))) 1607 (process (make-symbol "process")))
1610 `(let* ((,target ,(car spec)) 1608 `(let* ((,target ,(car spec))
1611 (,process ,(cadr spec)) 1609 (,process ,(cadr spec))
1612 (,buf (if (bufferp ,target) 1610 (,buf (if (bufferp ,target)
@@ -1616,7 +1614,7 @@ See also `with-current-buffer'.
1616 erc-server-process)))) 1614 erc-server-process))))
1617 (if (and ,target ,proc) 1615 (if (and ,target ,proc)
1618 (erc-get-buffer ,target ,proc)))))) 1616 (erc-get-buffer ,target ,proc))))))
1619 (when ,buf 1617 (when (buffer-live-p ,buf)
1620 (with-current-buffer ,buf 1618 (with-current-buffer ,buf
1621 ,@body))))) 1619 ,@body)))))
1622(put 'erc-with-buffer 'lisp-indent-function 1) 1620(put 'erc-with-buffer 'lisp-indent-function 1)
@@ -1671,8 +1669,8 @@ FORMS will be evaluated in all buffers having the process PROCESS and
1671where PRED matches or in all buffers of the server process if PRED is 1669where PRED matches or in all buffers of the server process if PRED is
1672nil." 1670nil."
1673 ;; Make the evaluation have the correct order 1671 ;; Make the evaluation have the correct order
1674 (let ((pre (erc-gensym)) 1672 (let ((pre (make-symbol "pre"))
1675 (pro (erc-gensym))) 1673 (pro (make-symbol "pro")))
1676 `(let ((,pro ,process) 1674 `(let ((,pro ,process)
1677 (,pre ,pred)) 1675 (,pre ,pred))
1678 (mapcar (lambda (buffer) 1676 (mapcar (lambda (buffer)
@@ -1755,7 +1753,10 @@ all channel buffers on all servers."
1755(make-variable-buffer-local 'erc-invitation) 1753(make-variable-buffer-local 'erc-invitation)
1756 1754
1757(defvar erc-away nil 1755(defvar erc-away nil
1758 "Non-nil indicates that we are away.") 1756 "Non-nil indicates that we are away.
1757
1758Use `erc-away-time' to access this if you might be in a channel
1759buffer rather than a server buffer.")
1759(make-variable-buffer-local 'erc-away) 1760(make-variable-buffer-local 'erc-away)
1760 1761
1761(defvar erc-channel-list nil 1762(defvar erc-channel-list nil
@@ -1813,43 +1814,43 @@ removed from the list will be disabled."
1813 :type 1814 :type
1814 '(set 1815 '(set
1815 :greedy t 1816 :greedy t
1816 (const :tag "Set away status automatically" autoaway) 1817 (const :tag "autoaway: Set away status automatically" autoaway)
1817 (const :tag "Join channels automatically" autojoin) 1818 (const :tag "autojoin: Join channels automatically" autojoin)
1818 (const :tag "Buttonize URLs, nicknames, and other text" button) 1819 (const :tag "button: Buttonize URLs, nicknames, and other text" button)
1819 (const 1820 (const :tag "capab: Mark unidentified users on servers supporting CAPAB"
1820 :tag 1821 capab-identify)
1821 "Mark unidentified users on freenode and other servers supporting CAPAB" 1822 (const :tag "completion: Complete nicknames and commands (programmable)"
1822 capab-identify) 1823 completion)
1823 (const :tag "Wrap long lines" fill) 1824 (const :tag "hecomplete: Complete nicknames and commands (old)" hecomplete)
1824 (const :tag "Launch an identd server on port 8113" identd) 1825 (const :tag "fill: Wrap long lines" fill)
1825 (const :tag "Highlight or remove IRC control characters" 1826 (const :tag "identd: Launch an identd server on port 8113" identd)
1827 (const :tag "irccontrols: Highlight or remove IRC control characters"
1826 irccontrols) 1828 irccontrols)
1827 (const :tag "Save buffers in logs" log) 1829 (const :tag "log: Save buffers in logs" log)
1828 (const :tag "Highlight pals, fools, and other keywords" match) 1830 (const :tag "match: Highlight pals, fools, and other keywords" match)
1829 (const :tag "Display a menu in ERC buffers" menu) 1831 (const :tag "menu: Display a menu in ERC buffers" menu)
1830 (const :tag "Detect netsplits" netsplit) 1832 (const :tag "netsplit: Detect netsplits" netsplit)
1831 (const :tag "Don't display non-IRC commands after evaluation" 1833 (const :tag "noncommands: Don't display non-IRC commands after evaluation"
1832 noncommands) 1834 noncommands)
1833 (const :tag "Notify when the online status of certain users changes" 1835 (const :tag
1836 "notify: Notify when the online status of certain users changes"
1834 notify) 1837 notify)
1835 (const :tag "Complete nicknames and commands (programmable)" 1838 (const :tag "page: Process CTCP PAGE requests from IRC" page)
1836 completion) 1839 (const :tag "readonly: Make displayed lines read-only" readonly)
1837 (const :tag "Complete nicknames and commands (old)" hecomplete) 1840 (const :tag "replace: Replace text in messages" replace)
1838 (const :tag "Process CTCP PAGE requests from IRC" page) 1841 (const :tag "ring: Enable an input history" ring)
1839 (const :tag "Make displayed lines read-only" readonly) 1842 (const :tag "scrolltobottom: Scroll to the bottom of the buffer"
1840 (const :tag "Replace text in messages" replace) 1843 scrolltobottom)
1841 (const :tag "Enable an input history" ring) 1844 (const :tag "services: Identify to Nickserv (IRC Services) automatically"
1842 (const :tag "Scroll to the bottom of the buffer" scrolltobottom)
1843 (const :tag "Identify to Nickserv (IRC Services) automatically"
1844 services) 1845 services)
1845 (const :tag "Convert smileys to pretty icons" smiley) 1846 (const :tag "smiley: Convert smileys to pretty icons" smiley)
1846 (const :tag "Play sounds when you receive CTCP SOUND requests" 1847 (const :tag "sound: Play sounds when you receive CTCP SOUND requests"
1847 sound) 1848 sound)
1848 (const :tag "Add timestamps to messages" stamp) 1849 (const :tag "stamp: Add timestamps to messages" stamp)
1849 (const :tag "Check spelling" spelling) 1850 (const :tag "spelling: Check spelling" spelling)
1850 (const :tag "Track channel activity in the mode-line" track) 1851 (const :tag "track: Track channel activity in the mode-line" track)
1851 (const :tag "Truncate buffers to a certain size" truncate) 1852 (const :tag "truncate: Truncate buffers to a certain size" truncate)
1852 (const :tag "Translate morse code in messages" unmorse) 1853 (const :tag "unmorse: Translate morse code in messages" unmorse)
1853 (repeat :tag "Others" :inline t symbol)) 1854 (repeat :tag "Others" :inline t symbol))
1854 :group 'erc) 1855 :group 'erc)
1855 1856
@@ -1902,9 +1903,7 @@ removed from the list will be disabled."
1902 1903
1903(defun erc-open (&optional server port nick full-name 1904(defun erc-open (&optional server port nick full-name
1904 connect passwd tgt-list channel process) 1905 connect passwd tgt-list channel process)
1905 "ERC is a powerful, modular, and extensible IRC client. 1906 "Connect to SERVER on PORT as NICK with FULL-NAME.
1906
1907Connect to SERVER on PORT as NICK with FULL-NAME.
1908 1907
1909If CONNECT is non-nil, connect to the server. Otherwise assume 1908If CONNECT is non-nil, connect to the server. Otherwise assume
1910already connected and just create a separate buffer for the new 1909already connected and just create a separate buffer for the new
@@ -1969,10 +1968,6 @@ Returns the buffer for the given server or channel."
1969 (erc-set-active-buffer buffer) 1968 (erc-set-active-buffer buffer)
1970 ;; last invitation channel 1969 ;; last invitation channel
1971 (setq erc-invitation nil) 1970 (setq erc-invitation nil)
1972 ;; away flag
1973 ;; Should only be used in session-buffers
1974 (setq erc-away (let ((serverbuf (erc-server-buffer)))
1975 (and serverbuf (with-current-buffer serverbuf erc-away))))
1976 ;; Server channel list 1971 ;; Server channel list
1977 (setq erc-channel-list ()) 1972 (setq erc-channel-list ())
1978 ;; login-time 'nick in use' error 1973 ;; login-time 'nick in use' error
@@ -1987,25 +1982,25 @@ Returns the buffer for the given server or channel."
1987 (setq erc-dbuf 1982 (setq erc-dbuf
1988 (when erc-log-p 1983 (when erc-log-p
1989 (get-buffer-create (concat "*ERC-DEBUG: " server "*")))) 1984 (get-buffer-create (concat "*ERC-DEBUG: " server "*"))))
1990 (erc-determine-parameters server port nick full-name) 1985 ;; set up prompt
1991
1992 ;; Saving log file on exit
1993 (run-hooks 'erc-connect-pre-hook)
1994
1995 (when connect
1996 (erc-server-connect erc-session-server erc-session-port))
1997 (erc-update-mode-line)
1998 (set-marker erc-insert-marker (point))
1999 (unless continued-session 1986 (unless continued-session
2000 (goto-char (point-max)) 1987 (goto-char (point-max))
2001 (insert "\n")) 1988 (insert "\n"))
2002 (set-marker (process-mark erc-server-process) (point))
2003 (if continued-session 1989 (if continued-session
2004 (goto-char old-point) 1990 (goto-char old-point)
2005 (set-marker erc-insert-marker (point)) 1991 (set-marker erc-insert-marker (point))
2006 (erc-display-prompt) 1992 (erc-display-prompt)
2007 (goto-char (point-max))) 1993 (goto-char (point-max)))
2008 1994
1995 (erc-determine-parameters server port nick full-name)
1996
1997 ;; Saving log file on exit
1998 (run-hook-with-args 'erc-connect-pre-hook buffer)
1999
2000 (when connect
2001 (erc-server-connect erc-session-server erc-session-port buffer))
2002 (erc-update-mode-line)
2003
2009 ;; Now display the buffer in a window as per user wishes. 2004 ;; Now display the buffer in a window as per user wishes.
2010 (unless (eq buffer old-buffer) 2005 (unless (eq buffer old-buffer)
2011 (when erc-log-p 2006 (when erc-log-p
@@ -2016,11 +2011,13 @@ Returns the buffer for the given server or channel."
2016 2011
2017 buffer)) 2012 buffer))
2018 2013
2019(defun erc-initialize-log-marker () 2014(defun erc-initialize-log-marker (buffer)
2020 "Initialize the `erc-last-saved-position' marker to a sensible position." 2015 "Initialize the `erc-last-saved-position' marker to a sensible position.
2016BUFFER is the current buffer."
2017 (with-current-buffer buffer
2021 (setq erc-last-saved-position (make-marker)) 2018 (setq erc-last-saved-position (make-marker))
2022 (move-marker erc-last-saved-position 2019 (move-marker erc-last-saved-position
2023 (1- (marker-position erc-insert-marker)))) 2020 (1- (marker-position erc-insert-marker)))))
2024 2021
2025;; interactive startup 2022;; interactive startup
2026 2023
@@ -2120,8 +2117,12 @@ functions in here get called with the parameters SERVER and NICK."
2120 (nick (erc-compute-nick)) 2117 (nick (erc-compute-nick))
2121 password 2118 password
2122 (full-name (erc-compute-full-name))) 2119 (full-name (erc-compute-full-name)))
2123 "Select connection parameters and run ERC. 2120 "ERC is a powerful, modular, and extensible IRC client.
2124Non-interactively, it takes keyword arguments 2121This function is the main entry point for ERC.
2122
2123It permits you to select connection parameters, and then starts ERC.
2124
2125Non-interactively, it takes the keyword arguments
2125 (server (erc-compute-server)) 2126 (server (erc-compute-server))
2126 (port (erc-compute-port)) 2127 (port (erc-compute-port))
2127 (nick (erc-compute-nick)) 2128 (nick (erc-compute-nick))
@@ -2132,12 +2133,13 @@ That is, if called with
2132 2133
2133 (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\") 2134 (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
2134 2135
2135server and full-name will be set to those values, whereas 2136then the server and full-name will be set to those values, whereas
2136`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will 2137`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
2137be invoked for the values of the other parameters." 2138be invoked for the values of the other parameters."
2138 (interactive (erc-select-read-args)) 2139 (interactive (erc-select-read-args))
2139 (erc-open server port nick full-name t password)) 2140 (erc-open server port nick full-name t password))
2140 2141
2142;;;###autoload
2141(defalias 'erc-select 'erc) 2143(defalias 'erc-select 'erc)
2142 2144
2143(defun erc-ssl (&rest r) 2145(defun erc-ssl (&rest r)
@@ -2428,7 +2430,7 @@ See also `erc-format-message' and `erc-display-line'."
2428 2430
2429This function relies on the erc-parsed text-property being 2431This function relies on the erc-parsed text-property being
2430present." 2432present."
2431 (let ((prop-val (get-text-property position 'erc-parsed))) 2433 (let ((prop-val (erc-get-parsed-vector position)))
2432 (and prop-val (member (erc-response.command prop-val) list)))) 2434 (and prop-val (member (erc-response.command prop-val) list))))
2433 2435
2434(defvar erc-send-input-line-function 'erc-send-input-line) 2436(defvar erc-send-input-line-function 'erc-send-input-line)
@@ -2586,20 +2588,19 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
2586 (erc-display-line 2588 (erc-display-line
2587 (erc-make-notice (format "Now ignoring %s" user)) 2589 (erc-make-notice (format "Now ignoring %s" user))
2588 'active) 2590 'active)
2589 (with-current-buffer (erc-server-buffer) 2591 (erc-with-server-buffer (add-to-list 'erc-ignore-list user)))
2590 (add-to-list 'erc-ignore-list user))) 2592 (if (null (erc-with-server-buffer erc-ignore-list))
2591 (if (null (with-current-buffer (erc-server-buffer) erc-ignore-list))
2592 (erc-display-line (erc-make-notice "Ignore list is empty") 'active) 2593 (erc-display-line (erc-make-notice "Ignore list is empty") 'active)
2593 (erc-display-line (erc-make-notice "Ignore list:") 'active) 2594 (erc-display-line (erc-make-notice "Ignore list:") 'active)
2594 (mapc #'(lambda (item) 2595 (mapc #'(lambda (item)
2595 (erc-display-line (erc-make-notice item) 2596 (erc-display-line (erc-make-notice item)
2596 'active)) 2597 'active))
2597 (with-current-buffer (erc-server-buffer) erc-ignore-list)))) 2598 (erc-with-server-buffer erc-ignore-list))))
2598 t) 2599 t)
2599 2600
2600(defun erc-cmd-UNIGNORE (user) 2601(defun erc-cmd-UNIGNORE (user)
2601 "Remove the user specified in USER from the ignore list." 2602 "Remove the user specified in USER from the ignore list."
2602 (let ((ignored-nick (car (with-current-buffer (erc-server-buffer) 2603 (let ((ignored-nick (car (erc-with-server-buffer
2603 (erc-member-ignore-case (regexp-quote user) 2604 (erc-member-ignore-case (regexp-quote user)
2604 erc-ignore-list))))) 2605 erc-ignore-list)))))
2605 (unless ignored-nick 2606 (unless ignored-nick
@@ -2614,7 +2615,7 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
2614 (erc-display-line 2615 (erc-display-line
2615 (erc-make-notice (format "No longer ignoring %s" user)) 2616 (erc-make-notice (format "No longer ignoring %s" user))
2616 'active) 2617 'active)
2617 (with-current-buffer (erc-server-buffer) 2618 (erc-with-server-buffer
2618 (setq erc-ignore-list (delete ignored-nick erc-ignore-list))))) 2619 (setq erc-ignore-list (delete ignored-nick erc-ignore-list)))))
2619 t) 2620 t)
2620 2621
@@ -2673,8 +2674,8 @@ If no reason is given, unset away status."
2673 "Mark the user as being away everywhere, the reason being indicated by LINE." 2674 "Mark the user as being away everywhere, the reason being indicated by LINE."
2674 ;; on all server buffers. 2675 ;; on all server buffers.
2675 (erc-with-all-buffers-of-server nil 2676 (erc-with-all-buffers-of-server nil
2676 #'erc-server-buffer-p 2677 #'erc-open-server-buffer-p
2677 (erc-cmd-AWAY line))) 2678 (erc-cmd-AWAY line)))
2678(put 'erc-cmd-GAWAY 'do-not-parse-args t) 2679(put 'erc-cmd-GAWAY 'do-not-parse-args t)
2679 2680
2680(defun erc-cmd-CTCP (nick cmd &rest args) 2681(defun erc-cmd-CTCP (nick cmd &rest args)
@@ -2866,10 +2867,9 @@ If SERVER is non-nil, use that, rather than the current server."
2866 2867
2867(defun erc-cmd-IDLE (nick) 2868(defun erc-cmd-IDLE (nick)
2868 "Show the length of time NICK has been idle." 2869 "Show the length of time NICK has been idle."
2869 (let ((serverbuf (erc-server-buffer)) 2870 (let ((origbuf (current-buffer))
2870 (origbuf (current-buffer))
2871 symlist) 2871 symlist)
2872 (with-current-buffer serverbuf 2872 (erc-with-server-buffer
2873 (add-to-list 'symlist 2873 (add-to-list 'symlist
2874 (cons (erc-once-with-server-event 2874 (cons (erc-once-with-server-event
2875 311 `(string= ,nick 2875 311 `(string= ,nick
@@ -3027,8 +3027,8 @@ The rest of LINE is the message to send."
3027(defun erc-cmd-NICK (nick) 3027(defun erc-cmd-NICK (nick)
3028 "Change current nickname to NICK." 3028 "Change current nickname to NICK."
3029 (erc-log (format "cmd: NICK: %s (erc-bad-nick: %S)" nick erc-bad-nick)) 3029 (erc-log (format "cmd: NICK: %s (erc-bad-nick: %S)" nick erc-bad-nick))
3030 (let ((nicklen (cdr (assoc "NICKLEN" (with-current-buffer (erc-server-buffer) 3030 (let ((nicklen (cdr (assoc "NICKLEN" (erc-with-server-buffer
3031 erc-server-parameters))))) 3031 erc-server-parameters)))))
3032 (and nicklen (> (length nick) (string-to-number nicklen)) 3032 (and nicklen (> (length nick) (string-to-number nicklen))
3033 (erc-display-message 3033 (erc-display-message
3034 nil 'notice 'active 'nick-too-long 3034 nil 'notice 'active 'nick-too-long
@@ -3167,7 +3167,8 @@ the message given by REASON."
3167 ((string-match "^\\s-*\\(.*\\)$" reason) 3167 ((string-match "^\\s-*\\(.*\\)$" reason)
3168 (let* ((s (match-string 1 reason)) 3168 (let* ((s (match-string 1 reason))
3169 (buffer (erc-server-buffer)) 3169 (buffer (erc-server-buffer))
3170 (reason (funcall erc-quit-reason (if (equal s "") nil s)))) 3170 (reason (funcall erc-quit-reason (if (equal s "") nil s)))
3171 server-proc)
3171 (with-current-buffer (if (and buffer 3172 (with-current-buffer (if (and buffer
3172 (bufferp buffer)) 3173 (bufferp buffer))
3173 buffer 3174 buffer
@@ -3175,10 +3176,18 @@ the message given by REASON."
3175 (erc-log (format "cmd: QUIT: %s" reason)) 3176 (erc-log (format "cmd: QUIT: %s" reason))
3176 (setq erc-server-quitting t) 3177 (setq erc-server-quitting t)
3177 (erc-set-active-buffer (erc-server-buffer)) 3178 (erc-set-active-buffer (erc-server-buffer))
3179 (setq server-proc erc-server-process)
3178 (erc-server-send (format "QUIT :%s" reason))) 3180 (erc-server-send (format "QUIT :%s" reason)))
3179 (run-hook-with-args 'erc-quit-hook erc-server-process) 3181 (run-hook-with-args 'erc-quit-hook server-proc)
3180 (when erc-kill-queries-on-quit 3182 (when erc-kill-queries-on-quit
3181 (erc-kill-query-buffers erc-server-process))) 3183 (erc-kill-query-buffers server-proc))
3184 ;; if the process has not been killed within 4 seconds, kill it
3185 (run-at-time 4 nil
3186 (lambda (proc)
3187 (when (and (processp proc)
3188 (memq (process-status proc) '(run open)))
3189 (delete-process proc)))
3190 server-proc))
3182 t) 3191 t)
3183 (t nil))) 3192 (t nil)))
3184 3193
@@ -3189,9 +3198,7 @@ the message given by REASON."
3189 3198
3190(defun erc-cmd-GQUIT (reason) 3199(defun erc-cmd-GQUIT (reason)
3191 "Disconnect from all servers at once with the same quit REASON." 3200 "Disconnect from all servers at once with the same quit REASON."
3192 (erc-with-all-buffers-of-server nil #'(lambda () 3201 (erc-with-all-buffers-of-server nil #'erc-open-server-buffer-p
3193 (and (erc-server-buffer-p)
3194 (erc-server-process-alive)))
3195 (erc-cmd-QUIT reason))) 3202 (erc-cmd-QUIT reason)))
3196 3203
3197(defalias 'erc-cmd-GQ 'erc-cmd-GQUIT) 3204(defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
@@ -3199,8 +3206,17 @@ the message given by REASON."
3199 3206
3200(defun erc-cmd-RECONNECT () 3207(defun erc-cmd-RECONNECT ()
3201 "Try to reconnect to the current IRC server." 3208 "Try to reconnect to the current IRC server."
3202 (setq erc-server-reconnect-count 0) 3209 (let ((buffer (or (erc-server-buffer) (current-buffer)))
3203 (erc-server-reconnect) 3210 (process nil))
3211 (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
3212 (setq erc-server-quitting nil)
3213 (setq erc-server-reconnecting t)
3214 (setq erc-server-reconnect-count 0)
3215 (setq process (get-buffer-process (erc-server-buffer)))
3216 (if process
3217 (delete-process process)
3218 (erc-server-reconnect))
3219 (setq erc-server-reconnecting nil)))
3204 t) 3220 t)
3205 3221
3206(defun erc-cmd-SERVER (server) 3222(defun erc-cmd-SERVER (server)
@@ -3373,7 +3389,7 @@ The ban list is fetched from the server if necessary."
3373 (setq erc-server-367-functions 'erc-banlist-store 3389 (setq erc-server-367-functions 'erc-banlist-store
3374 erc-channel-banlist nil) 3390 erc-channel-banlist nil)
3375 ;; fetch the ban list then callback 3391 ;; fetch the ban list then callback
3376 (with-current-buffer (erc-server-buffer) 3392 (erc-with-server-buffer
3377 (erc-once-with-server-event 3393 (erc-once-with-server-event
3378 368 3394 368
3379 `(with-current-buffer ,chnl-name 3395 `(with-current-buffer ,chnl-name
@@ -3443,7 +3459,7 @@ Unban all currently banned users in the current channel."
3443 (let ((old-367-hook erc-server-367-functions)) 3459 (let ((old-367-hook erc-server-367-functions))
3444 (setq erc-server-367-functions 'erc-banlist-store) 3460 (setq erc-server-367-functions 'erc-banlist-store)
3445 ;; fetch the ban list then callback 3461 ;; fetch the ban list then callback
3446 (with-current-buffer (erc-server-buffer) 3462 (erc-with-server-buffer
3447 (erc-once-with-server-event 3463 (erc-once-with-server-event
3448 368 3464 368
3449 `(with-current-buffer ,chnl 3465 `(with-current-buffer ,chnl
@@ -3737,7 +3753,7 @@ To change how this query window is displayed, use `let' to bind
3737 (erc-update-mode-line) 3753 (erc-update-mode-line)
3738 buf)) 3754 buf))
3739 3755
3740(defcustom erc-auto-query nil 3756(defcustom erc-auto-query 'bury
3741 "If non-nil, create a query buffer each time you receive a private message. 3757 "If non-nil, create a query buffer each time you receive a private message.
3742 3758
3743If the buffer doesn't already exist it is created. This can be 3759If the buffer doesn't already exist it is created. This can be
@@ -3811,7 +3827,7 @@ See also `erc-display-error-notice'."
3811 (setq erc-nick-change-attempt-count (+ erc-nick-change-attempt-count 1)) 3827 (setq erc-nick-change-attempt-count (+ erc-nick-change-attempt-count 1))
3812 (let ((newnick (nth 1 erc-default-nicks)) 3828 (let ((newnick (nth 1 erc-default-nicks))
3813 (nicklen (cdr (assoc "NICKLEN" 3829 (nicklen (cdr (assoc "NICKLEN"
3814 (with-current-buffer (erc-server-buffer) 3830 (erc-with-server-buffer
3815 erc-server-parameters))))) 3831 erc-server-parameters)))))
3816 (setq erc-bad-nick t) 3832 (setq erc-bad-nick t)
3817 ;; try to use a different nick 3833 ;; try to use a different nick
@@ -4101,24 +4117,29 @@ See also: `erc-echo-notice-in-user-buffers',
4101 "Run just after connection. 4117 "Run just after connection.
4102 4118
4103Set user modes and run `erc-after-connect' hook." 4119Set user modes and run `erc-after-connect' hook."
4104 (unless erc-server-connected ; only once per session 4120 (with-current-buffer (process-buffer proc)
4105 (let ((server (or erc-server-announced-name (erc-response.sender parsed))) 4121 (unless erc-server-connected ; only once per session
4106 (nick (car (erc-response.command-args parsed )))) 4122 (let ((server (or erc-server-announced-name
4107 (setq erc-server-connected t) 4123 (erc-response.sender parsed)))
4108 (erc-update-mode-line) 4124 (nick (car (erc-response.command-args parsed)))
4109 (erc-set-initial-user-mode nick) 4125 (buffer (process-buffer proc)))
4110 (erc-server-setup-periodical-server-ping) 4126 (setq erc-server-connected t)
4111 (run-hook-with-args 'erc-after-connect server nick)))) 4127 (erc-update-mode-line)
4112 4128 (erc-set-initial-user-mode nick buffer)
4113(defun erc-set-initial-user-mode (nick) 4129 (erc-server-setup-periodical-ping buffer)
4114 "If `erc-user-mode' is non-nil for NICK, set the user modes." 4130 (run-hook-with-args 'erc-after-connect server nick)))))
4115 (when erc-user-mode 4131
4116 (let ((mode (if (functionp erc-user-mode) 4132(defun erc-set-initial-user-mode (nick buffer)
4117 (funcall erc-user-mode) 4133 "If `erc-user-mode' is non-nil for NICK, set the user modes.
4118 erc-user-mode))) 4134The server buffer is given by BUFFER."
4119 (when (stringp mode) 4135 (with-current-buffer buffer
4120 (erc-log (format "changing mode for %s to %s" nick mode)) 4136 (when erc-user-mode
4121 (erc-server-send (format "MODE %s %s" nick mode)))))) 4137 (let ((mode (if (functionp erc-user-mode)
4138 (funcall erc-user-mode)
4139 erc-user-mode)))
4140 (when (stringp mode)
4141 (erc-log (format "changing mode for %s to %s" nick mode))
4142 (erc-server-send (format "MODE %s %s" nick mode)))))))
4122 4143
4123(defun erc-display-error-notice (parsed string) 4144(defun erc-display-error-notice (parsed string)
4124 "Display STRING as an error notice. 4145 "Display STRING as an error notice.
@@ -4345,14 +4366,12 @@ If non-nil, return from being away."
4345 erc-nick))) 4366 erc-nick)))
4346 (cond 4367 (cond
4347 (away-p 4368 (away-p
4348 (erc-with-all-buffers-of-server proc nil 4369 (setq erc-away (current-time)))
4349 (setq erc-away (current-time))))
4350 (t 4370 (t
4351 (let ((away-time erc-away)) 4371 (let ((away-time erc-away))
4352 ;; away must be set to NIL BEFORE sending anything to prevent 4372 ;; away must be set to NIL BEFORE sending anything to prevent
4353 ;; an infinite recursion 4373 ;; an infinite recursion
4354 (erc-with-all-buffers-of-server proc nil 4374 (setq erc-away nil)
4355 (setq erc-away nil))
4356 (save-excursion 4375 (save-excursion
4357 (set-buffer (erc-active-buffer)) 4376 (set-buffer (erc-active-buffer))
4358 (when erc-public-away-p 4377 (when erc-public-away-p
@@ -5037,8 +5056,9 @@ strings over to the next call."
5037 5056
5038(defun erc-set-current-nick (nick) 5057(defun erc-set-current-nick (nick)
5039 "Set the current nickname to NICK." 5058 "Set the current nickname to NICK."
5040 (with-current-buffer (or (erc-server-buffer) 5059 (with-current-buffer (if (buffer-live-p (erc-server-buffer))
5041 (current-buffer)) 5060 (erc-server-buffer)
5061 (current-buffer))
5042 (setq erc-server-current-nick nick))) 5062 (setq erc-server-current-nick nick)))
5043 5063
5044(defun erc-current-nick () 5064(defun erc-current-nick ()
@@ -5119,7 +5139,7 @@ Takes a full SPEC of a user in the form \"nick!login@host\", and
5119matches against all the regexp's in `erc-ignore-list'. If any 5139matches against all the regexp's in `erc-ignore-list'. If any
5120match, returns that regexp." 5140match, returns that regexp."
5121 (catch 'found 5141 (catch 'found
5122 (dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list)) 5142 (dolist (ignored (erc-with-server-buffer erc-ignore-list))
5123 (if (string-match ignored spec) 5143 (if (string-match ignored spec)
5124 (throw 'found ignored))))) 5144 (throw 'found ignored)))))
5125 5145
@@ -5673,12 +5693,12 @@ entry of `channel-members'."
5673 "")) 5693 ""))
5674 user)))) 5694 user))))
5675 5695
5676(defun erc-away-p () 5696(defun erc-away-time ()
5677 "Return t if the current ERC process is set away." 5697 "Return non-nil if the current ERC process is set away.
5678 (save-excursion 5698
5679 (and (erc-server-buffer-live-p) 5699In particular, the time that we were set away is returned.
5680 (set-buffer (process-buffer erc-server-process)) 5700See `current-time' for details on the time format."
5681 erc-away))) 5701 (erc-with-server-buffer erc-away))
5682 5702
5683;; Mode line handling 5703;; Mode line handling
5684 5704
@@ -5706,9 +5726,17 @@ The following characters are replaced:
5706 "A string to be formatted and shown in the header-line in `erc-mode'. 5726 "A string to be formatted and shown in the header-line in `erc-mode'.
5707Only used starting in Emacs 21. 5727Only used starting in Emacs 21.
5708 5728
5729Set this to nil if you do not want the header line to be
5730displayed.
5731
5709See `erc-mode-line-format' for which characters are can be used." 5732See `erc-mode-line-format' for which characters are can be used."
5710 :group 'erc-mode-line-and-header 5733 :group 'erc-mode-line-and-header
5711 :type 'string) 5734 :set (lambda (sym val)
5735 (set sym val)
5736 (when (fboundp 'erc-update-mode-line)
5737 (erc-update-mode-line nil)))
5738 :type '(choice (const :tag "Disabled" nil)
5739 string))
5712 5740
5713(defcustom erc-header-line-uses-help-echo-p t 5741(defcustom erc-header-line-uses-help-echo-p t
5714 "Show the contents of the header line in the echo area or as a tooltip 5742 "Show the contents of the header line in the echo area or as a tooltip
@@ -5734,7 +5762,8 @@ Otherwise, use the `erc-header-line' face."
5734 5762
5735(defcustom erc-common-server-suffixes 5763(defcustom erc-common-server-suffixes
5736 '(("openprojects.net$" . "OPN") 5764 '(("openprojects.net$" . "OPN")
5737 ("freenode.net$" . "OPN")) 5765 ("freenode.net$" . "freenode")
5766 ("oftc.net$" . "OFTC"))
5738 "Alist of common server name suffixes. 5767 "Alist of common server name suffixes.
5739This variable is used in mode-line display to save screen 5768This variable is used in mode-line display to save screen
5740real estate. Set it to nil if you want to avoid changing 5769real estate. Set it to nil if you want to avoid changing
@@ -5786,9 +5815,7 @@ This should be a string with substitution variables recognized by
5786(defun erc-format-away-status () 5815(defun erc-format-away-status ()
5787 "Return a formatted `erc-mode-line-away-status-format' 5816 "Return a formatted `erc-mode-line-away-status-format'
5788if `erc-away' is non-nil." 5817if `erc-away' is non-nil."
5789 (let ((a (when (erc-server-buffer-live-p) 5818 (let ((a (erc-away-time)))
5790 (with-current-buffer (process-buffer erc-server-process)
5791 erc-away))))
5792 (if a 5819 (if a
5793 (format-time-string erc-mode-line-away-status-format a) 5820 (format-time-string erc-mode-line-away-status-format a)
5794 ""))) 5821 "")))
@@ -5813,9 +5840,7 @@ if `erc-away' is non-nil."
5813 5840
5814(defun erc-format-lag-time () 5841(defun erc-format-lag-time ()
5815 "Return the estimated lag time to server, `erc-server-lag'." 5842 "Return the estimated lag time to server, `erc-server-lag'."
5816 (let ((lag (when (erc-server-buffer-live-p) 5843 (let ((lag (erc-with-server-buffer erc-server-lag)))
5817 (with-current-buffer (process-buffer erc-server-process)
5818 erc-server-lag))))
5819 (cond (lag (format "lag:%.0f" lag)) 5844 (cond (lag (format "lag:%.0f" lag))
5820 (t "")))) 5845 (t ""))))
5821 5846
@@ -6137,7 +6162,8 @@ functions."
6137 (format "%s (%s@%s) has left channel %s%s" 6162 (format "%s (%s@%s) has left channel %s%s"
6138 nick user host channel 6163 nick user host channel
6139 (if (not (string= reason "")) 6164 (if (not (string= reason ""))
6140 (format ": %s" reason) 6165 (format ": %s"
6166 (erc-replace-regexp-in-string "%" "%%" reason))
6141 ""))))) 6167 "")))))
6142 6168
6143 6169
@@ -6232,6 +6258,13 @@ This function should be on `erc-kill-channel-hook'."
6232 "Find the next occurrence of the `erc-parsed' text property." 6258 "Find the next occurrence of the `erc-parsed' text property."
6233 (text-property-not-all (point-min) (point-max) 'erc-parsed nil)) 6259 (text-property-not-all (point-min) (point-max) 'erc-parsed nil))
6234 6260
6261(defun erc-restore-text-properties ()
6262 "Restore the property 'erc-parsed for the region."
6263 (let ((parsed-posn (erc-find-parsed-property)))
6264 (put-text-property
6265 (point-min) (point-max)
6266 'erc-parsed (when parsed-posn (erc-get-parsed-vector parsed-posn)))))
6267
6235(defun erc-get-parsed-vector (point) 6268(defun erc-get-parsed-vector (point)
6236 "Return the whole parsed vector on POINT." 6269 "Return the whole parsed vector on POINT."
6237 (get-text-property point 'erc-parsed)) 6270 (get-text-property point 'erc-parsed))
@@ -6263,8 +6296,7 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL."
6263 (lambda () 6296 (lambda ()
6264 (and (string-equal erc-session-server host) 6297 (and (string-equal erc-session-server host)
6265 (= erc-session-port port) 6298 (= erc-session-port port)
6266 erc-server-connected 6299 (erc-open-server-buffer-p)))))))
6267 (eq (erc-server-buffer) (current-buffer))))))))
6268 (with-current-buffer (or server-buffer (current-buffer)) 6300 (with-current-buffer (or server-buffer (current-buffer))
6269 (if (and server-buffer channel) 6301 (if (and server-buffer channel)
6270 (erc-cmd-JOIN channel) 6302 (erc-cmd-JOIN channel)
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index d3dabbf04b5..96d8255a3ab 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -181,7 +181,7 @@ The signals which will cause this to happen are matched by
181 (setq signum (abs (string-to-number id)))) 181 (setq signum (abs (string-to-number id))))
182 ((stringp id) 182 ((stringp id)
183 (let (case-fold-search) 183 (let (case-fold-search)
184 (if (string-match "^-\\([A-Z]+\\)$" id) 184 (if (string-match "^-\\([A-Z]+[12]?\\)$" id)
185 (setq signum 185 (setq signum
186 (intern (concat "SIG" (match-string 1 id)))) 186 (intern (concat "SIG" (match-string 1 id))))
187 (error "kill: bad signal spec `%s'" id)))) 187 (error "kill: bad signal spec `%s'" id))))
diff --git a/lisp/expand.el b/lisp/expand.el
index ebcf90ccfc2..c34c18b4483 100644
--- a/lisp/expand.el
+++ b/lisp/expand.el
@@ -51,17 +51,17 @@
51;; 51;;
52;; and enter Abbrev mode with the following hook : 52;; and enter Abbrev mode with the following hook :
53;; 53;;
54;; (add-hook 'c-mode-hook (function (lambda () 54;; (add-hook 'c-mode-hook
55;; (expand-add-abbrevs c-mode-abbrev-table c-expand-list) 55;; (lambda ()
56;; (abbrev-mode)))) 56;; (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
57;; (abbrev-mode 1)))
57;; 58;;
58;; you can also init some post-process hooks : 59;; you can also init some post-process hooks :
59;; 60;;
60;; (add-hook 'expand-load-hook 61;; (add-hook 'expand-load-hook
61;; (function 62;; (lambda ()
62;; (lambda () 63;; (add-hook 'expand-expand-hook 'indent-according-to-mode)
63;; (add-hook 'expand-expand-hook 'indent-according-to-mode) 64;; (add-hook 'expand-jump-hook 'indent-according-to-mode)))
64;; (add-hook 'expand-jump-hook 'indent-according-to-mode))))
65;; 65;;
66;; Remarks: 66;; Remarks:
67;; 67;;
@@ -336,6 +336,7 @@ This variable is local to a buffer.")
336 'expand-abbrev-hook))) 336 'expand-abbrev-hook)))
337 337
338(put 'expand-abbrev-hook 'no-self-insert t) 338(put 'expand-abbrev-hook 'no-self-insert t)
339;;;###autoload
339(defun expand-abbrev-hook () 340(defun expand-abbrev-hook ()
340 "Abbrev hook used to do the expansion job of expand abbrevs. 341 "Abbrev hook used to do the expansion job of expand abbrevs.
341See `expand-add-abbrevs'. Value is non-nil if expansion was done." 342See `expand-add-abbrevs'. Value is non-nil if expansion was done."
diff --git a/lisp/faces.el b/lisp/faces.el
index 904db10efa5..47fb2fa0295 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1803,13 +1803,9 @@ Initialize colors of certain faces from frame parameters."
1803 (condition-case () 1803 (condition-case ()
1804 (progn 1804 (progn
1805 (face-spec-set face (face-user-default-spec face) frame) 1805 (face-spec-set face (face-user-default-spec face) frame)
1806 (internal-merge-in-global-face face frame)
1807 (if (memq (window-system frame) '(x w32 mac)) 1806 (if (memq (window-system frame) '(x w32 mac))
1808 (make-face-x-resource-internal face frame)) 1807 (make-face-x-resource-internal face frame))
1809 ;; If the user has customized the face, don't let X 1808 (internal-merge-in-global-face face frame))
1810 ;; resources override the customizations.
1811 (if (get face 'theme-face)
1812 (custom-theme-recalc-face face)))
1813 (error nil))) 1809 (error nil)))
1814 ;; Apply the attributes specified by frame parameters. This 1810 ;; Apply the attributes specified by frame parameters. This
1815 ;; rewrites parameters changed by make-face-x-resource-internal 1811 ;; rewrites parameters changed by make-face-x-resource-internal
diff --git a/lisp/ffap.el b/lisp/ffap.el
index e49c77f4d47..5bba729fce3 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1147,7 +1147,8 @@ which may actually result in an url rather than a filename."
1147 (error nil)) 1147 (error nil))
1148 string)) 1148 string))
1149 (abs (file-name-absolute-p name)) 1149 (abs (file-name-absolute-p name))
1150 (default-directory default-directory)) 1150 (default-directory default-directory)
1151 (oname name))
1151 (unwind-protect 1152 (unwind-protect
1152 (cond 1153 (cond
1153 ;; Immediate rejects (/ and // and /* are too common in C/C++): 1154 ;; Immediate rejects (/ and // and /* are too common in C/C++):
@@ -1164,13 +1165,7 @@ which may actually result in an url rather than a filename."
1164 (not abs) (string-match ffap-shell-prompt-regexp name) 1165 (not abs) (string-match ffap-shell-prompt-regexp name)
1165 (ffap-file-exists-string (substring name (match-end 0))))) 1166 (ffap-file-exists-string (substring name (match-end 0)))))
1166 ;; Accept remote names without actual checking (too slow): 1167 ;; Accept remote names without actual checking (too slow):
1167 ((if abs 1168 ((and abs (ffap-file-remote-p name)))
1168 (ffap-file-remote-p name)
1169 ;; Try adding a leading "/" (common omission in ftp file names):
1170 (and
1171 ffap-ftp-sans-slash-regexp
1172 (string-match ffap-ftp-sans-slash-regexp name)
1173 (ffap-file-remote-p (concat "/" name)))))
1174 ;; Ok, not remote, try the existence test even if it is absolute: 1169 ;; Ok, not remote, try the existence test even if it is absolute:
1175 ((and abs (ffap-file-exists-string name))) 1170 ((and abs (ffap-file-exists-string name)))
1176 ;; If it contains a colon, get rid of it (and return if exists) 1171 ;; If it contains a colon, get rid of it (and return if exists)
@@ -1193,6 +1188,14 @@ which may actually result in an url rather than a filename."
1193 (ffap-file-remote-p try) 1188 (ffap-file-remote-p try)
1194 (ffap-file-exists-string try)))))) 1189 (ffap-file-exists-string try))))))
1195 try)) 1190 try))
1191 ;; Try adding a leading "/" (common omission in ftp file names).
1192 ;; Note that this uses oname, which still has any colon part.
1193 ;; This should have a lower priority than the alist stuff,
1194 ;; else it matches things like "ffap.el:1234:56:Warning".
1195 ((and (not abs)
1196 ffap-ftp-sans-slash-regexp
1197 (string-match ffap-ftp-sans-slash-regexp oname)
1198 (ffap-file-remote-p (concat "/" oname))))
1196 ;; Alist failed? Try to guess an active remote connection 1199 ;; Alist failed? Try to guess an active remote connection
1197 ;; from buffer variables, and try once more, both as an 1200 ;; from buffer variables, and try once more, both as an
1198 ;; absolute and relative file name on that remote host. 1201 ;; absolute and relative file name on that remote host.
diff --git a/lisp/files.el b/lisp/files.el
index f11c6d37834..39d9d6a78b2 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2435,14 +2435,14 @@ asking you for confirmation."
2435 2435
2436(mapc (lambda (pair) 2436(mapc (lambda (pair)
2437 (put (car pair) 'safe-local-variable (cdr pair))) 2437 (put (car pair) 'safe-local-variable (cdr pair)))
2438 '((buffer-read-only . booleanp) ;; C source code 2438 '((buffer-read-only . booleanp) ;; C source code
2439 (default-directory . stringp) ;; C source code 2439 (default-directory . stringp) ;; C source code
2440 (fill-column . integerp) ;; C source code 2440 (fill-column . integerp) ;; C source code
2441 (indent-tabs-mode . booleanp) ;; C source code 2441 (indent-tabs-mode . booleanp) ;; C source code
2442 (left-margin . integerp) ;; C source code 2442 (left-margin . integerp) ;; C source code
2443 (no-update-autoloads . booleanp) 2443 (no-update-autoloads . booleanp)
2444 (tab-width . integerp) ;; C source code 2444 (tab-width . integerp) ;; C source code
2445 (truncate-lines . booleanp))) ;; C source code 2445 (truncate-lines . booleanp))) ;; C source code
2446 2446
2447(put 'c-set-style 'safe-local-eval-function t) 2447(put 'c-set-style 'safe-local-eval-function t)
2448 2448
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index eb2a7964cec..162db36311f 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2226,7 +2226,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
2226 "condition-case" "track-mouse" 2226 "condition-case" "track-mouse"
2227 "eval-after-load" "eval-and-compile" "eval-when-compile" 2227 "eval-after-load" "eval-and-compile" "eval-when-compile"
2228 "eval-when" "eval-at-startup" "eval-next-after-load" 2228 "eval-when" "eval-at-startup" "eval-next-after-load"
2229 "with-category-table" 2229 "with-case-table" "with-category-table"
2230 "with-current-buffer" "with-electric-help" 2230 "with-current-buffer" "with-electric-help"
2231 "with-local-quit" "with-no-warnings" 2231 "with-local-quit" "with-no-warnings"
2232 "with-output-to-string" "with-output-to-temp-buffer" 2232 "with-output-to-string" "with-output-to-temp-buffer"
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index add0bb47c25..8f094dd6537 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,73 @@
12007-04-10 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus-msg.el (gnus-inews-yank-articles): Use
4 message-exchange-point-and-mark instead of exchange-point-and-mark.
5
62007-04-09 Katsumi Yamaoka <yamaoka@jpl.org>
7
8 * message.el (message-yank-original): Make sure cited text ends with
9 newline; don't exchange point and mark.
10
112007-04-07 Chong Yidong <cyd@stupidchicken.com>
12
13 * tls.el (open-tls-stream): Properly handle case where there
14 is no associated buffer.
15
162007-04-03 Thien-Thi Nguyen <ttn@gnu.org>
17
18 * gnus-msg.el (gnus-inews-yank-articles): Fix bug: After
19 message-yank-original, make sure (< mark TEXT point).
20
212007-03-31 Reiner Steib <Reiner.Steib@gmx.de>
22
23 * nnmail.el (nnmail-spool-file): Mark as obsolete.
24 (nnmail-get-new-mail): Reformat.
25
26 * gnus-registry.el (gnus-registry-cache-save): Add FIXME comment.
27
28 * gmm-utils.el: Fix Commentary.
29 (gmm-tool-bar-from-list): Fix typo in doc string.
30
312007-03-27 Thien-Thi Nguyen <ttn@gnu.org>
32
33 * message.el (message-yank-original): Fix bug:
34 Don't switch point and mark unnecessarily.
35
362007-03-25 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
37
38 * gnus-msg.el (gnus-setup-message, gnus-inews-add-send-actions): Move
39 evaluation of gnus-extended-version to ensure correct generation of the
40 User-Agent header when message-generate-headers-first is used.
41
422007-03-24 Reiner Steib <Reiner.Steib@gmx.de>
43
44 * gnus-art.el (gnus-button-alist): Also catch `<f1> k ...'.
45 (gnus-treat-display-x-face): Fix doc string.
46
472007-03-20 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
48
49 * message.el (message-required-news-headers):
50 * gnus-util.el (gnus-intern-safe): Fix typo in docstring.
51
522007-03-15 Katsumi Yamaoka <yamaoka@jpl.org>
53
54 * message.el (message-generate-new-buffers): Change the meaning of the
55 nil value; add `standard' to the choices; treat t as `unique'; improve
56 doc string.
57 (gnus-select-frame-set-input-focus): Autoload.
58 (message-buffer-name): Search for the existing message buffer if
59 message-generate-new-buffers is nil or `standard'; treat the value t of
60 message-generate-new-buffers as `unique'.
61 (message-pop-to-buffer): Raise the frame already displaying the message
62 buffer; clear the echo area after querying.
63 (message-setup): Pass the `continue' argument to compose-mail.
64 (message-mail): Prefer `switch-function' if it is given; search for the
65 existing message buffer if the `continue' argument is non-nil; pass
66 continue and switch-function arguments to compose-mail by way of
67 message-setup.
68 (message-mail-other-window): Adjust argument of message-setup.
69 (message-mail-other-frame): Ditto.
70
12007-02-28 Katsumi Yamaoka <yamaoka@jpl.org> 712007-02-28 Katsumi Yamaoka <yamaoka@jpl.org>
2 72
3 * message.el (message-make-in-reply-to): Quote name containing 73 * message.el (message-make-in-reply-to): Quote name containing
@@ -1514,15 +1584,6 @@
1514 * gnus-start.el (gnus-no-server-1): Mention 1584 * gnus-start.el (gnus-no-server-1): Mention
1515 `gnus-level-default-subscribed' in doc string. 1585 `gnus-level-default-subscribed' in doc string.
1516 1586
15172005-11-26 Dave Love <fx@gnu.org>
1518
1519 * tls.el (open-tls-stream): Rename arg SERVICE to PORT.
1520 (tls-program, tls-success): Provide openssl alternative.
1521
1522 * starttls.el: Doc fixes.
1523 (starttls-open-stream-gnutls, starttls-open-stream): Rename arg
1524 SERVICE to PORT.
1525
15262005-12-09 Reiner Steib <Reiner.Steib@gmx.de> 15872005-12-09 Reiner Steib <Reiner.Steib@gmx.de>
1527 1588
1528 * gnus-start.el (gnus-start-draft-setup): Enforce 1589 * gnus-start.el (gnus-start-draft-setup): Enforce
@@ -2577,14 +2638,6 @@
2577 2638
2578 * gnus-art.el (gnus-emphasis-alist): Disable the strikethru thingy. 2639 * gnus-art.el (gnus-emphasis-alist): Disable the strikethru thingy.
2579 2640
25802005-06-02 Katsumi Yamaoka <yamaoka@jpl.org>
2581
2582 * pop3.el (pop3-md5): Run md5 in the binary mode.
2583 (pop3-md5-program-args): New variable.
2584
2585 * starttls.el (starttls-set-process-query-on-exit-flag):
2586 Use eval-and-compile.
2587
25882005-05-31 Katsumi Yamaoka <yamaoka@jpl.org> 26412005-05-31 Katsumi Yamaoka <yamaoka@jpl.org>
2589 2642
2590 * gnus-art.el (article-display-x-face): Replace 2643 * gnus-art.el (article-display-x-face): Replace
@@ -2620,16 +2673,6 @@
2620 (nntp-open-ssl-stream): Ditto. 2673 (nntp-open-ssl-stream): Ditto.
2621 (nntp-open-tls-stream): Ditto. 2674 (nntp-open-tls-stream): Ditto.
2622 2675
2623 * pgg.el: Don't bind itimer vars; don't autoload itimer functions.
2624 (pgg-run-at-time-1): New macro.
2625 (pgg-run-at-time): Use it.
2626
2627 * starttls.el (starttls-set-process-query-on-exit-flag): Alias to
2628 set-process-query-on-exit-flag or process-kill-without-query.
2629 (starttls-open-stream-gnutls): Use it instead of
2630 process-kill-without-query.
2631 (starttls-open-stream): Ditto.
2632
26332005-05-31 Simon Josefsson <jas@extundo.com> 26762005-05-31 Simon Josefsson <jas@extundo.com>
2634 2677
2635 * imap.el (imap-ssl-open): Use imap-process-connection-type, 2678 * imap.el (imap-ssl-open): Use imap-process-connection-type,
@@ -3547,13 +3590,6 @@
3547 3590
3548 * gnus-msg.el (gnus-summary-resend-default-address): Add :version. 3591 * gnus-msg.el (gnus-summary-resend-default-address): Add :version.
3549 3592
3550 * tls.el (tls-process-connection-type, tls-success)
3551 (tls-certtool-program): Add :version.
3552
3553 * starttls.el (starttls-gnutls-program, starttls-use-gnutls)
3554 (starttls-extra-arguments, starttls-process-connection-type)
3555 (starttls-connect, starttls-failure, starttls-success):
3556
3557 * spam-stat.el (spam-stat): Add :version. 3593 * spam-stat.el (spam-stat): Add :version.
3558 3594
3559 * sieve.el (sieve): Add :version. 3595 * sieve.el (sieve): Add :version.
@@ -4041,12 +4077,6 @@
4041 * message.el (message-tokenize-header): Fix 2004-09-06 change 4077 * message.el (message-tokenize-header): Fix 2004-09-06 change
4042 which used point-min in the wrong place. 4078 which used point-min in the wrong place.
4043 4079
40442004-10-12 Simon Josefsson <jas@extundo.com>
4045
4046 * net/tls.el (tls-certtool-program): New variable.
4047 (tls-certificate-information): New function, based on
4048 ssl-certificate-information.
4049
40502004-10-11 Reiner Steib <Reiner.Steib@gmx.de> 40802004-10-11 Reiner Steib <Reiner.Steib@gmx.de>
4051 4081
4052 * message.el (message-bury): Use `window-dedicated-p'. 4082 * message.el (message-bury): Use `window-dedicated-p'.
@@ -4486,19 +4516,6 @@
4486 4516
4487 * sieve.el (sieve-deactivate-all): Fix format string mismatch. 4517 * sieve.el (sieve-deactivate-all): Fix format string mismatch.
4488 4518
44892004-05-26 Simon Josefsson <jas@extundo.com>
4490
4491 * starttls.el: Merge with my GNUTLS based starttls.el.
4492 (starttls-gnutls-program, starttls-use-gnutls)
4493 (starttls-extra-arguments, starttls-process-connection-type)
4494 (starttls-connect, starttls-failure, starttls-success): New variables.
4495 (starttls-program, starttls-extra-args): Doc fix.
4496 (starttls-negotiate-gnutls, starttls-open-stream-gnutls):
4497 New functions.
4498 (starttls-negotiate, starttls-open-stream):
4499 Check `starttls-use-gnutls' and pass on to corresponding *-gnutls
4500 function if it is set.
4501
45022004-08-30 Andreas Schwab <schwab@suse.de> 45192004-08-30 Andreas Schwab <schwab@suse.de>
4503 4520
4504 * rfc2231.el (rfc2231-parse-string): Restore whitespace syntax for 4521 * rfc2231.el (rfc2231-parse-string): Restore whitespace syntax for
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 84b69edb575..9241e96d042 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -26,7 +26,7 @@
26 26
27;; This library provides self-contained utility functions. The functions are 27;; This library provides self-contained utility functions. The functions are
28;; used in Gnus, Message and MML, but within this library there are no 28;; used in Gnus, Message and MML, but within this library there are no
29;; dependencies on Gnus, Message, or MML or Gnus. 29;; dependencies on Gnus, Message, or MML.
30 30
31;;; Code: 31;;; Code:
32 32
@@ -217,7 +217,7 @@ Within each entry of ICON-LIST, the first element is a menu
217command, the second element is an icon file name and the third 217command, the second element is an icon file name and the third
218element is a test function. You can use \\[describe-key] 218element is a test function. You can use \\[describe-key]
219<menu-entry> to find out the name of a menu command. The fourth 219<menu-entry> to find out the name of a menu command. The fourth
220and all following elements are passed a the PROPS argument to the 220and all following elements are passed as the PROPS argument to the
221function `tool-bar-local-item'. 221function `tool-bar-local-item'.
222 222
223If ZAP-LIST is a list, remove those item from the default 223If ZAP-LIST is a list, remove those item from the default
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index c6ac13af6c9..552f3a68f49 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1332,7 +1332,7 @@ See Info node `(gnus)Customizing Articles' for details."
1332 (executable-find "icontopbm"))) 1332 (executable-find "icontopbm")))
1333 'head) 1333 'head)
1334 "Display X-Face headers. 1334 "Display X-Face headers.
1335Valid values are nil, t, `head', `last', an integer or a predicate. 1335Valid values are nil and `head'.
1336See Info node `(gnus)Customizing Articles' and Info node 1336See Info node `(gnus)Customizing Articles' and Info node
1337`(gnus)X-Face' for details." 1337`(gnus)X-Face' for details."
1338 :group 'gnus-article-treat 1338 :group 'gnus-article-treat
@@ -6620,7 +6620,7 @@ positives are possible."
6620 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2) 6620 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2)
6621 ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET" 6621 ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
6622 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2) 6622 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2)
6623 ("`\\(\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'" 6623 ("`\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
6624 ;; Unlike the other regexps we really have to require quoting 6624 ;; Unlike the other regexps we really have to require quoting
6625 ;; here to determine where it ends. 6625 ;; here to determine where it ends.
6626 1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3) 6626 1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index cace5028f96..055fc75626a 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -393,6 +393,13 @@ Thank you for your help in stamping out bugs.
393 (setq mml-buffer-list nil) 393 (setq mml-buffer-list nil)
394 (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc) 394 (add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc)
395 (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc) 395 (add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc)
396 ;; message-newsreader and message-mailer were formerly set in
397 ;; gnus-inews-add-send-actions, but this is too late when
398 ;; message-generate-headers-first is used. --ansel
399 (add-hook 'message-mode-hook
400 (lambda nil
401 (setq message-newsreader
402 (setq message-mailer (gnus-extended-version)))))
396 ;; #### FIXME: for a reason that I did not manage to identify yet, 403 ;; #### FIXME: for a reason that I did not manage to identify yet,
397 ;; the variable `gnus-newsgroup-name' does not honor a dynamically 404 ;; the variable `gnus-newsgroup-name' does not honor a dynamically
398 ;; scoped or setq'ed value from a caller like `C-u gnus-summary-mail'. 405 ;; scoped or setq'ed value from a caller like `C-u gnus-summary-mail'.
@@ -514,7 +521,6 @@ Gcc: header for archiving purposes."
514 (setq message-post-method 521 (setq message-post-method
515 `(lambda (arg) 522 `(lambda (arg)
516 (gnus-post-method arg ,gnus-newsgroup-name))) 523 (gnus-post-method arg ,gnus-newsgroup-name)))
517 (setq message-newsreader (setq message-mailer (gnus-extended-version)))
518 (message-add-action 524 (message-add-action
519 `(when (gnus-buffer-exists-p ,buffer) 525 `(when (gnus-buffer-exists-p ,buffer)
520 (set-window-configuration ,winconf)) 526 (set-window-configuration ,winconf))
@@ -765,6 +771,7 @@ active, the entire article will be yanked."
765 (nnheader-narrow-to-headers) 771 (nnheader-narrow-to-headers)
766 (nnheader-parse-naked-head))))) 772 (nnheader-parse-naked-head)))))
767 (message-yank-original) 773 (message-yank-original)
774 (message-exchange-point-and-mark)
768 (setq beg (or beg (mark t)))) 775 (setq beg (or beg (mark t))))
769 (when articles 776 (when articles
770 (insert "\n"))) 777 (insert "\n")))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index f32ed6f1414..3e4d3d0127c 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -154,6 +154,8 @@ way."
154 (gnus-load file) 154 (gnus-load file)
155 (gnus-message 5 "Reading %s...done" file)))) 155 (gnus-message 5 "Reading %s...done" file))))
156 156
157;; FIXME: Get rid of duplicated code, cf. `gnus-save-newsrc-file' in
158;; `gnus-start.el'. --rsteib
157(defun gnus-registry-cache-save () 159(defun gnus-registry-cache-save ()
158 "Save the registry cache file." 160 "Save the registry cache file."
159 (interactive) 161 (interactive)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 4f8e8539e88..25d6dfd47b6 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -122,7 +122,7 @@ This is a compatibility function for different Emacsen."
122(put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body)) 122(put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body))
123 123
124(defmacro gnus-intern-safe (string hashtable) 124(defmacro gnus-intern-safe (string hashtable)
125 "Set hash value. Arguments are STRING, VALUE, and HASHTABLE." 125 "Get hash value. Arguments are STRING and HASHTABLE."
126 `(let ((symbol (intern ,string ,hashtable))) 126 `(let ((symbol (intern ,string ,hashtable)))
127 (or (boundp symbol) 127 (or (boundp symbol)
128 (set symbol nil)) 128 (set symbol nil))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 55a7653dba1..baf98611308 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -226,7 +226,7 @@ Also see `message-required-news-headers' and
226 "*Headers to be generated or prompted for when posting an article. 226 "*Headers to be generated or prompted for when posting an article.
227RFC977 and RFC1036 require From, Date, Newsgroups, Subject, 227RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
228Message-ID. Organization, Lines, In-Reply-To, Expires, and 228Message-ID. Organization, Lines, In-Reply-To, Expires, and
229User-Agent are optional. If don't you want message to insert some 229User-Agent are optional. If you don't want message to insert some
230header, remove it from this list." 230header, remove it from this list."
231 :group 'message-news 231 :group 'message-news
232 :group 'message-headers 232 :group 'message-headers
@@ -433,16 +433,36 @@ nil means let mailer mail back a message to report errors."
433 :type 'boolean) 433 :type 'boolean)
434 434
435(defcustom message-generate-new-buffers 'unique 435(defcustom message-generate-new-buffers 'unique
436 "*Non-nil means create a new message buffer whenever `message-setup' is called. 436 "*Say whether to create a new message buffer to compose a message.
437If this is a function, call that function with three parameters: The type, 437Valid values include:
438the to address and the group name. (Any of these may be nil.) The function 438
439should return the new buffer name." 439nil
440 Generate the buffer name in the Message way (e.g., *mail*, *news*,
441 *mail to whom*, *news on group*, etc.) and continue editing in the
442 existing buffer of that name. If there is no such buffer, it will
443 be newly created.
444
445`unique' or t
446 Create the new buffer with the name generated in the Message way.
447
448`unsent'
449 Similar to `unique' but the buffer name begins with \"*unsent \".
450
451`standard'
452 Similar to nil but the buffer name is simpler like *mail message*.
453
454function
455 If this is a function, call that function with three parameters:
456 The type, the To address and the group name (any of these may be nil).
457 The function should return the new buffer name."
440 :group 'message-buffers 458 :group 'message-buffers
441 :link '(custom-manual "(message)Message Buffers") 459 :link '(custom-manual "(message)Message Buffers")
442 :type '(choice (const :tag "off" nil) 460 :type '(choice (const nil)
443 (const :tag "unique" unique) 461 (sexp :tag "unique" :format "unique\n" :value unique
444 (const :tag "unsent" unsent) 462 :match (lambda (widget value) (memq value '(unique t))))
445 (function fun))) 463 (const unsent)
464 (const standard)
465 (function :format "\n %{%t%}: %v")))
446 466
447(defcustom message-kill-buffer-on-exit nil 467(defcustom message-kill-buffer-on-exit nil
448 "*Non-nil means that the message buffer will be killed after sending a message." 468 "*Non-nil means that the message buffer will be killed after sending a message."
@@ -1622,7 +1642,8 @@ functionality to work."
1622 (autoload 'rmail-output "rmailout") 1642 (autoload 'rmail-output "rmailout")
1623 (autoload 'gnus-delay-article "gnus-delay") 1643 (autoload 'gnus-delay-article "gnus-delay")
1624 (autoload 'gnus-make-local-hook "gnus-util") 1644 (autoload 'gnus-make-local-hook "gnus-util")
1625 (autoload 'gnus-extract-address-components "gnus-util")) 1645 (autoload 'gnus-extract-address-components "gnus-util")
1646 (autoload 'gnus-select-frame-set-input-focus "gnus-util"))
1626 1647
1627 1648
1628 1649
@@ -3325,12 +3346,16 @@ prefix, and don't delete any headers."
3325 (delete-windows-on message-reply-buffer t) 3346 (delete-windows-on message-reply-buffer t)
3326 (push-mark (save-excursion 3347 (push-mark (save-excursion
3327 (insert-buffer-substring message-reply-buffer) 3348 (insert-buffer-substring message-reply-buffer)
3349 (unless (bolp)
3350 (insert ?\n))
3328 (point))) 3351 (point)))
3329 (unless arg 3352 (unless arg
3330 (funcall message-cite-function)) 3353 (funcall message-cite-function)
3331 (message-exchange-point-and-mark) 3354 (unless (eq (char-before (mark t)) ?\n)
3332 (unless (bolp) 3355 (let ((pt (point)))
3333 (insert ?\n)) 3356 (goto-char (mark t))
3357 (insert-before-markers ?\n)
3358 (goto-char pt))))
3334 (unless modified 3359 (unless modified
3335 (setq message-checksum (message-checksum)))))) 3360 (setq message-checksum (message-checksum))))))
3336 3361
@@ -5501,7 +5526,7 @@ between beginning of field and beginning of line."
5501 "Return a new (unique) buffer name based on TYPE and TO." 5526 "Return a new (unique) buffer name based on TYPE and TO."
5502 (cond 5527 (cond
5503 ;; Generate a new buffer name The Message Way. 5528 ;; Generate a new buffer name The Message Way.
5504 ((eq message-generate-new-buffers 'unique) 5529 ((memq message-generate-new-buffers '(unique t))
5505 (generate-new-buffer-name 5530 (generate-new-buffer-name
5506 (concat "*" type 5531 (concat "*" type
5507 (if to 5532 (if to
@@ -5525,20 +5550,51 @@ between beginning of field and beginning of line."
5525 "") 5550 "")
5526 (if (and group (not (string= group ""))) (concat " on " group) "") 5551 (if (and group (not (string= group ""))) (concat " on " group) "")
5527 "*"))) 5552 "*")))
5528 ;; Use standard name. 5553 ;; Search for the existing message buffer with the specified name.
5529 (t 5554 (t
5530 (format "*%s message*" type)))) 5555 (let* ((new (if (eq message-generate-new-buffers 'standard)
5556 (generate-new-buffer-name (concat "*" type " message*"))
5557 (let ((message-generate-new-buffers 'unique))
5558 (message-buffer-name type to group))))
5559 (regexp (concat "\\`"
5560 (regexp-quote
5561 (if (string-match "<[0-9]+>\\'" new)
5562 (substring new 0 (match-beginning 0))
5563 new))
5564 "\\(?:<\\([0-9]+\\)>\\)?\\'"))
5565 (case-fold-search nil))
5566 (or (cdar
5567 (last
5568 (sort
5569 (delq nil
5570 (mapcar
5571 (lambda (b)
5572 (when (and (string-match regexp (setq b (buffer-name b)))
5573 (eq (with-current-buffer b major-mode)
5574 'message-mode))
5575 (cons (string-to-number (or (match-string 1 b) "1"))
5576 b)))
5577 (buffer-list)))
5578 'car-less-than-car)))
5579 new)))))
5531 5580
5532(defun message-pop-to-buffer (name) 5581(defun message-pop-to-buffer (name)
5533 "Pop to buffer NAME, and warn if it already exists and is modified." 5582 "Pop to buffer NAME, and warn if it already exists and is modified."
5534 (let ((buffer (get-buffer name))) 5583 (let ((buffer (get-buffer name)))
5535 (if (and buffer 5584 (if (and buffer
5536 (buffer-name buffer)) 5585 (buffer-name buffer))
5537 (progn 5586 (let ((window (get-buffer-window buffer 0)))
5538 (set-buffer (pop-to-buffer buffer)) 5587 (if window
5588 ;; Raise the frame already displaying the message buffer.
5589 (progn
5590 (gnus-select-frame-set-input-focus (window-frame window))
5591 (select-window window))
5592 (set-buffer (pop-to-buffer buffer)))
5539 (when (and (buffer-modified-p) 5593 (when (and (buffer-modified-p)
5540 (not (y-or-n-p 5594 (not (prog1
5541 "Message already being composed; erase? "))) 5595 (y-or-n-p
5596 "Message already being composed; erase? ")
5597 (message nil))))
5542 (error "Message being composed"))) 5598 (error "Message being composed")))
5543 (set-buffer (pop-to-buffer name))) 5599 (set-buffer (pop-to-buffer name)))
5544 (erase-buffer) 5600 (erase-buffer)
@@ -5598,7 +5654,8 @@ between beginning of field and beginning of line."
5598 nil 5654 nil
5599 mua))) 5655 mua)))
5600 5656
5601(defun message-setup (headers &optional replybuffer actions switch-function) 5657(defun message-setup (headers &optional replybuffer actions
5658 continue switch-function)
5602 (let ((mua (message-mail-user-agent)) 5659 (let ((mua (message-mail-user-agent))
5603 subject to field yank-action) 5660 subject to field yank-action)
5604 (if (not (and message-this-is-mail mua)) 5661 (if (not (and message-this-is-mail mua))
@@ -5621,7 +5678,7 @@ between beginning of field and beginning of line."
5621 (format "%s" (car item)) 5678 (format "%s" (car item))
5622 (cdr item))) 5679 (cdr item)))
5623 headers) 5680 headers)
5624 nil switch-function yank-action actions))))) 5681 continue switch-function yank-action actions)))))
5625 5682
5626(defun message-headers-to-generate (headers included-headers excluded-headers) 5683(defun message-headers-to-generate (headers included-headers excluded-headers)
5627 "Return a list that includes all headers from HEADERS. 5684 "Return a list that includes all headers from HEADERS.
@@ -5770,11 +5827,21 @@ are not included."
5770 other-headers continue switch-function 5827 other-headers continue switch-function
5771 yank-action send-actions) 5828 yank-action send-actions)
5772 "Start editing a mail message to be sent. 5829 "Start editing a mail message to be sent.
5773OTHER-HEADERS is an alist of header/value pairs." 5830OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
5831to continue editing a message already being composed. SWITCH-FUNCTION
5832is a function used to switch to and display the mail buffer."
5774 (interactive) 5833 (interactive)
5775 (let ((message-this-is-mail t) replybuffer) 5834 (let ((message-this-is-mail t) replybuffer)
5776 (unless (message-mail-user-agent) 5835 (unless (message-mail-user-agent)
5777 (message-pop-to-buffer (message-buffer-name "mail" to))) 5836 (funcall
5837 (or switch-function 'message-pop-to-buffer)
5838 ;; Search for the existing message buffer if `continue' is non-nil.
5839 (let ((message-generate-new-buffers
5840 (when (or (not continue)
5841 (eq message-generate-new-buffers 'standard)
5842 (functionp message-generate-new-buffers))
5843 message-generate-new-buffers)))
5844 (message-buffer-name "mail" to))))
5778 ;; FIXME: message-mail should do something if YANK-ACTION is not 5845 ;; FIXME: message-mail should do something if YANK-ACTION is not
5779 ;; insert-buffer. 5846 ;; insert-buffer.
5780 (and (consp yank-action) (eq (car yank-action) 'insert-buffer) 5847 (and (consp yank-action) (eq (car yank-action) 'insert-buffer)
@@ -5783,7 +5850,7 @@ OTHER-HEADERS is an alist of header/value pairs."
5783 (nconc 5850 (nconc
5784 `((To . ,(or to "")) (Subject . ,(or subject ""))) 5851 `((To . ,(or to "")) (Subject . ,(or subject "")))
5785 (when other-headers other-headers)) 5852 (when other-headers other-headers))
5786 replybuffer send-actions) 5853 replybuffer send-actions continue switch-function)
5787 ;; FIXME: Should return nil if failure. 5854 ;; FIXME: Should return nil if failure.
5788 t)) 5855 t))
5789 5856
@@ -6655,7 +6722,7 @@ you."
6655 (message-pop-to-buffer (message-buffer-name "mail" to)))) 6722 (message-pop-to-buffer (message-buffer-name "mail" to))))
6656 (let ((message-this-is-mail t)) 6723 (let ((message-this-is-mail t))
6657 (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))) 6724 (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
6658 nil nil 'switch-to-buffer-other-window))) 6725 nil nil nil 'switch-to-buffer-other-window)))
6659 6726
6660;;;###autoload 6727;;;###autoload
6661(defun message-mail-other-frame (&optional to subject) 6728(defun message-mail-other-frame (&optional to subject)
@@ -6670,7 +6737,7 @@ you."
6670 (message-pop-to-buffer (message-buffer-name "mail" to)))) 6737 (message-pop-to-buffer (message-buffer-name "mail" to))))
6671 (let ((message-this-is-mail t)) 6738 (let ((message-this-is-mail t))
6672 (message-setup `((To . ,(or to "")) (Subject . ,(or subject ""))) 6739 (message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
6673 nil nil 'switch-to-buffer-other-frame))) 6740 nil nil nil 'switch-to-buffer-other-frame)))
6674 6741
6675;;;###autoload 6742;;;###autoload
6676(defun message-news-other-window (&optional newsgroups subject) 6743(defun message-news-other-window (&optional newsgroups subject)
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 736e58cd5a2..b080088b2ef 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -247,6 +247,10 @@ This variable is a list of mail source specifiers.
247This variable is obsolete; `mail-sources' should be used instead." 247This variable is obsolete; `mail-sources' should be used instead."
248 :group 'nnmail-files 248 :group 'nnmail-files
249 :type 'sexp) 249 :type 'sexp)
250(make-obsolete-variable 'nnmail-spool-file
251 "This option is obsolete in Gnus 5.9. \
252Use `mail-sources' instead.")
253;; revision 5.29 / p0-85 / Gnus 5.9
250 254
251(defcustom nnmail-resplit-incoming nil 255(defcustom nnmail-resplit-incoming nil
252 "*If non-nil, re-split incoming procmail sorted mail." 256 "*If non-nil, re-split incoming procmail sorted mail."
@@ -1749,7 +1753,8 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
1749 &optional group spool-func) 1753 &optional group spool-func)
1750 "Read new incoming mail." 1754 "Read new incoming mail."
1751 (let* ((sources (or mail-sources 1755 (let* ((sources (or mail-sources
1752 (if (listp nnmail-spool-file) nnmail-spool-file 1756 (if (listp nnmail-spool-file)
1757 nnmail-spool-file
1753 (list nnmail-spool-file)))) 1758 (list nnmail-spool-file))))
1754 fetching-sources 1759 fetching-sources
1755 (group-in group) 1760 (group-in group)
diff --git a/lisp/help.el b/lisp/help.el
index d0783dd0351..926c43c300d 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -642,7 +642,7 @@ temporarily enables it to allow getting help on disabled items and buttons."
642 (list 642 (list
643 key 643 key
644 (prefix-numeric-value current-prefix-arg) 644 (prefix-numeric-value current-prefix-arg)
645 ;; If KEY is a down-event, read and discard the 645 ;; If KEY is a down-event, read and include the
646 ;; corresponding up-event. Note that there are also 646 ;; corresponding up-event. Note that there are also
647 ;; down-events on scroll bars and mode lines: the actual 647 ;; down-events on scroll bars and mode lines: the actual
648 ;; event then is in the second element of the vector. 648 ;; event then is in the second element of the vector.
diff --git a/lisp/ido.el b/lisp/ido.el
index 3eef048390e..80ed82c2583 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1940,8 +1940,14 @@ If INITIAL is non-nil, it specifies the initial input string."
1940 (if (and ido-matches (eq ido-try-merged-list 'auto)) 1940 (if (and ido-matches (eq ido-try-merged-list 'auto))
1941 (setq ido-try-merged-list t)) 1941 (setq ido-try-merged-list t))
1942 (let 1942 (let
1943 ((minibuffer-local-completion-map ido-completion-map) 1943 ((minibuffer-local-completion-map
1944 (minibuffer-local-filename-completion-map ido-completion-map) 1944 (if (memq ido-cur-item '(file dir))
1945 minibuffer-local-completion-map
1946 ido-completion-map))
1947 (minibuffer-local-filename-completion-map
1948 (if (memq ido-cur-item '(file dir))
1949 ido-completion-map
1950 minibuffer-local-filename-completion-map))
1945 (max-mini-window-height (or ido-max-window-height 1951 (max-mini-window-height (or ido-max-window-height
1946 (and (boundp 'max-mini-window-height) max-mini-window-height))) 1952 (and (boundp 'max-mini-window-height) max-mini-window-height)))
1947 (ido-completing-read t) 1953 (ido-completing-read t)
diff --git a/lisp/info.el b/lisp/info.el
index ec2ff23b57e..6f9b1863ee4 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -145,7 +145,7 @@ The Lisp code is executed when the node is selected.")
145 :type 'boolean 145 :type 'boolean
146 :group 'info) 146 :group 'info)
147 147
148(defcustom Info-fontify-maximum-menu-size 1000000 148(defcustom Info-fontify-maximum-menu-size 100000
149 "*Maximum size of menu to fontify if `font-lock-mode' is non-nil. 149 "*Maximum size of menu to fontify if `font-lock-mode' is non-nil.
150Set to nil to disable node fontification." 150Set to nil to disable node fontification."
151 :type 'integer 151 :type 'integer
@@ -1315,16 +1315,25 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
1315 nil t) 1315 nil t)
1316 (let* ((start (match-beginning 1)) 1316 (let* ((start (match-beginning 1))
1317 (parameter-alist (Info-split-parameter-string (match-string 2))) 1317 (parameter-alist (Info-split-parameter-string (match-string 2)))
1318 (src (cdr (assoc-string "src" parameter-alist))) 1318 (src (cdr (assoc-string "src" parameter-alist))))
1319 (image-file (if src (if (file-name-absolute-p src) src 1319 (if (display-images-p)
1320 (concat default-directory src)) 1320 (let* ((image-file (if src (if (file-name-absolute-p src) src
1321 "")) 1321 (concat default-directory src))
1322 (image (if (file-exists-p image-file) 1322 ""))
1323 (create-image image-file) 1323 (image (if (file-exists-p image-file)
1324 "[broken image]"))) 1324 (create-image image-file)
1325 (if (not (get-text-property start 'display)) 1325 "[broken image]")))
1326 (add-text-properties 1326 (if (not (get-text-property start 'display))
1327 start (point) `(display ,image rear-nonsticky (display))))))) 1327 (add-text-properties
1328 start (point) `(display ,image rear-nonsticky (display)))))
1329 ;; text-only display, show alternative text if provided, or
1330 ;; otherwise a clue that there's meant to be a picture
1331 (delete-region start (point))
1332 (insert (or (cdr (assoc-string "text" parameter-alist))
1333 (cdr (assoc-string "alt" parameter-alist))
1334 (and src
1335 (concat "[image:" src "]"))
1336 "[image]"))))))
1328 (set-buffer-modified-p nil))) 1337 (set-buffer-modified-p nil)))
1329 1338
1330;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H]. 1339;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H].
@@ -3235,7 +3244,6 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
3235(defvar info-tool-bar-map 3244(defvar info-tool-bar-map
3236 (if (display-graphic-p) 3245 (if (display-graphic-p)
3237 (let ((map (make-sparse-keymap))) 3246 (let ((map (make-sparse-keymap)))
3238 (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map)
3239 (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map) 3247 (tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map)
3240 (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map) 3248 (tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map)
3241 (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map) 3249 (tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
@@ -3245,6 +3253,7 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
3245 (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map) 3253 (tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
3246 (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map) 3254 (tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
3247 (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map) 3255 (tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
3256 (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
3248 map))) 3257 map)))
3249 3258
3250(defvar Info-menu-last-node nil) 3259(defvar Info-menu-last-node nil)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index fc7b0276a0f..e873aadb8b4 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -392,6 +392,20 @@ code-point in CCS. Currently not supported and just ignored."
392 char)))))))) 392 char))))))))
393 393
394 394
395;; Save the ASCII case table in case we need it later. Some locales
396;; (such as Turkish) modify the case behavior of ASCII characters,
397;; which can interfere with networking code that uses ASCII strings.
398
399(defvar ascii-case-table
400 ;; Code copied from copy-case-table to avoid requiring case-table.el
401 (let ((tbl (copy-sequence (standard-case-table)))
402 (up (char-table-extra-slot (standard-case-table) 0)))
403 (if up (set-char-table-extra-slot tbl 0 (copy-sequence up)))
404 (set-char-table-extra-slot tbl 1 nil)
405 (set-char-table-extra-slot tbl 2 nil)
406 tbl)
407 "Case table for the ASCII character set.")
408
395;; Coding system stuff 409;; Coding system stuff
396 410
397;; Coding system is a symbol that has the property `coding-system'. 411;; Coding system is a symbol that has the property `coding-system'.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 8c248dbc255..f246de141f4 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -531,8 +531,7 @@ Type \\[isearch-yank-char] to yank char from buffer onto end of search\
531 string and search for it. 531 string and search for it.
532Type \\[isearch-yank-line] to yank rest of line onto end of search string\ 532Type \\[isearch-yank-line] to yank rest of line onto end of search string\
533 and search for it. 533 and search for it.
534Type \\[isearch-yank-kill] to yank last killed text onto end of search string\ 534Type \\[isearch-yank-kill] to yank the last string of killed text.
535 and search for it.
536Type \\[isearch-quote-char] to quote control character to search for it. 535Type \\[isearch-quote-char] to quote control character to search for it.
537\\[isearch-abort] while searching or when search has failed cancels input\ 536\\[isearch-abort] while searching or when search has failed cancels input\
538 back to what has 537 back to what has
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index f9dac3493f1..3932fd83f52 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -4,7 +4,7 @@
4 4
5;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best 5;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
6;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" 6;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
7;;;;;; "play/5x5.el" (17888 36936)) 7;;;;;; "play/5x5.el" (17963 21010))
8;;; Generated autoloads from play/5x5.el 8;;; Generated autoloads from play/5x5.el
9 9
10(autoload (quote 5x5) "5x5" "\ 10(autoload (quote 5x5) "5x5" "\
@@ -852,7 +852,7 @@ Not documented
852;;;*** 852;;;***
853 853
854;;;### (autoloads (animate-birthday-present animate-sequence animate-string) 854;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
855;;;;;; "animate" "play/animate.el" (17888 32280)) 855;;;;;; "animate" "play/animate.el" (17963 21010))
856;;; Generated autoloads from play/animate.el 856;;; Generated autoloads from play/animate.el
857 857
858(autoload (quote animate-string) "animate" "\ 858(autoload (quote animate-string) "animate" "\
@@ -1611,7 +1611,7 @@ Calls `update-directory-autoloads' on the command line arguments.
1611 1611
1612;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode 1612;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
1613;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) 1613;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
1614;;;;;; "autorevert" "autorevert.el" (17963 19298)) 1614;;;;;; "autorevert" "autorevert.el" (17963 20867))
1615;;; Generated autoloads from autorevert.el 1615;;; Generated autoloads from autorevert.el
1616 1616
1617(autoload (quote auto-revert-mode) "autorevert" "\ 1617(autoload (quote auto-revert-mode) "autorevert" "\
@@ -2598,8 +2598,8 @@ name of buffer configuration.
2598;;;*** 2598;;;***
2599 2599
2600;;;### (autoloads (insert-text-button make-text-button insert-button 2600;;;### (autoloads (insert-text-button make-text-button insert-button
2601;;;;;; make-button define-button-type) "button" "button.el" (17888 2601;;;;;; make-button define-button-type) "button" "button.el" (17963
2602;;;;;; 32278)) 2602;;;;;; 21008))
2603;;; Generated autoloads from button.el 2603;;; Generated autoloads from button.el
2604 2604
2605(defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\ 2605(defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
@@ -2687,7 +2687,7 @@ Also see `make-text-button'.
2687;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile 2687;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
2688;;;;;; compile-defun byte-compile-file byte-recompile-directory 2688;;;;;; compile-defun byte-compile-file byte-recompile-directory
2689;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp" 2689;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
2690;;;;;; "emacs-lisp/bytecomp.el" (17963 19282)) 2690;;;;;; "emacs-lisp/bytecomp.el" (17963 20998))
2691;;; Generated autoloads from emacs-lisp/bytecomp.el 2691;;; Generated autoloads from emacs-lisp/bytecomp.el
2692(put 'byte-compile-dynamic 'safe-local-variable 'booleanp) 2692(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
2693(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) 2693(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2925,7 +2925,7 @@ See the documentation for `calculator-mode' for more information.
2925;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially 2925;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially
2926;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar 2926;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
2927;;;;;; view-diary-entries-initially calendar-offset) "calendar" 2927;;;;;; view-diary-entries-initially calendar-offset) "calendar"
2928;;;;;; "calendar/calendar.el" (17963 20580)) 2928;;;;;; "calendar/calendar.el" (17963 20998))
2929;;; Generated autoloads from calendar/calendar.el 2929;;; Generated autoloads from calendar/calendar.el
2930 2930
2931(defvar calendar-offset 0 "\ 2931(defvar calendar-offset 0 "\
@@ -3523,7 +3523,7 @@ it fails.
3523;;;*** 3523;;;***
3524 3524
3525;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" 3525;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
3526;;;;;; (17963 19063)) 3526;;;;;; (17963 20867))
3527;;; Generated autoloads from progmodes/cc-engine.el 3527;;; Generated autoloads from progmodes/cc-engine.el
3528 3528
3529(autoload (quote c-guess-basic-syntax) "cc-engine" "\ 3529(autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3535,7 +3535,7 @@ Return the syntactic context of the current line.
3535 3535
3536;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode 3536;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
3537;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" 3537;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
3538;;;;;; (17963 19063)) 3538;;;;;; (17963 20867))
3539;;; Generated autoloads from progmodes/cc-mode.el 3539;;; Generated autoloads from progmodes/cc-mode.el
3540 3540
3541(autoload (quote c-initialize-cc-mode) "cc-mode" "\ 3541(autoload (quote c-initialize-cc-mode) "cc-mode" "\
@@ -3751,7 +3751,7 @@ and exists only for compatibility reasons.
3751 3751
3752;;;*** 3752;;;***
3753 3753
3754;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17888 36581)) 3754;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17963 21010))
3755;;; Generated autoloads from progmodes/cc-vars.el 3755;;; Generated autoloads from progmodes/cc-vars.el
3756(put 'c-basic-offset 'safe-local-variable 'integerp) 3756(put 'c-basic-offset 'safe-local-variable 'integerp)
3757(put 'c-backslash-column 'safe-local-variable 'integerp) 3757(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -4483,7 +4483,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal.
4483;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list 4483;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
4484;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command 4484;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
4485;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" 4485;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
4486;;;;;; (17963 19298)) 4486;;;;;; (17963 21008))
4487;;; Generated autoloads from comint.el 4487;;; Generated autoloads from comint.el
4488 4488
4489(defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\ 4489(defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\
@@ -4573,8 +4573,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
4573 4573
4574;;;*** 4574;;;***
4575 4575
4576;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17888 4576;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17963
4577;;;;;; 32279)) 4577;;;;;; 20867))
4578;;; Generated autoloads from compare-w.el 4578;;; Generated autoloads from compare-w.el
4579 4579
4580(autoload (quote compare-windows) "compare-w" "\ 4580(autoload (quote compare-windows) "compare-w" "\
@@ -4611,7 +4611,7 @@ on third call it again advances points to the next difference and so on.
4611;;;;;; compilation-shell-minor-mode compilation-mode compilation-start 4611;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
4612;;;;;; compile compilation-disable-input compile-command compilation-search-path 4612;;;;;; compile compilation-disable-input compile-command compilation-search-path
4613;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook) 4613;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
4614;;;;;; "compile" "progmodes/compile.el" (17963 19298)) 4614;;;;;; "compile" "progmodes/compile.el" (17963 20998))
4615;;; Generated autoloads from progmodes/compile.el 4615;;; Generated autoloads from progmodes/compile.el
4616 4616
4617(defvar compilation-mode-hook nil "\ 4617(defvar compilation-mode-hook nil "\
@@ -4647,6 +4647,7 @@ describing how the process finished.")
4647Functions to call when a compilation process finishes. 4647Functions to call when a compilation process finishes.
4648Each function is called with two arguments: the compilation buffer, 4648Each function is called with two arguments: the compilation buffer,
4649and a string describing how the process finished.") 4649and a string describing how the process finished.")
4650(put 'compilation-directory 'safe-local-variable 'stringp)
4650 4651
4651(defvar compilation-ask-about-save t "\ 4652(defvar compilation-ask-about-save t "\
4652*Non-nil means \\[compile] asks which buffers to save before compiling. 4653*Non-nil means \\[compile] asks which buffers to save before compiling.
@@ -4773,7 +4774,7 @@ This is the value of `next-error-function' in Compilation buffers.
4773;;;*** 4774;;;***
4774 4775
4775;;;### (autoloads (partial-completion-mode) "complete" "complete.el" 4776;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
4776;;;;;; (17963 19063)) 4777;;;;;; (17963 21000))
4777;;; Generated autoloads from complete.el 4778;;; Generated autoloads from complete.el
4778 4779
4779(defvar partial-completion-mode nil "\ 4780(defvar partial-completion-mode nil "\
@@ -6751,7 +6752,7 @@ Not documented
6751;;;*** 6752;;;***
6752 6753
6753;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" 6754;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
6754;;;;;; "calendar/diary-lib.el" (17963 20580)) 6755;;;;;; "calendar/diary-lib.el" (17963 20998))
6755;;; Generated autoloads from calendar/diary-lib.el 6756;;; Generated autoloads from calendar/diary-lib.el
6756 6757
6757(autoload (quote diary) "diary-lib" "\ 6758(autoload (quote diary) "diary-lib" "\
@@ -6848,9 +6849,6 @@ You can also switch between context diff and unified diff with \\[diff-context->
6848or vice versa with \\[diff-unified->context] and you can also reverse the direction of 6849or vice versa with \\[diff-unified->context] and you can also reverse the direction of
6849a diff with \\[diff-reverse-direction]. 6850a diff with \\[diff-reverse-direction].
6850 6851
6851When the buffer is read-only, the Meta- modifier is not necessary
6852to run the Diff mode commands:
6853
6854 \\{diff-mode-map} 6852 \\{diff-mode-map}
6855 6853
6856\(fn)" t nil) 6854\(fn)" t nil)
@@ -7671,7 +7669,7 @@ for users who call this function in `.emacs'.
7671;;;*** 7669;;;***
7672 7670
7673;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" 7671;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
7674;;;;;; (17888 32280)) 7672;;;;;; (17963 21010))
7675;;; Generated autoloads from play/dissociate.el 7673;;; Generated autoloads from play/dissociate.el
7676 7674
7677(autoload (quote dissociated-press) "dissociate" "\ 7675(autoload (quote dissociated-press) "dissociate" "\
@@ -7732,7 +7730,7 @@ Locate SOA record and increment the serial field.
7732 7730
7733;;;*** 7731;;;***
7734 7732
7735;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17888 32280)) 7733;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17963 21010))
7736;;; Generated autoloads from play/doctor.el 7734;;; Generated autoloads from play/doctor.el
7737 7735
7738(autoload (quote doctor) "doctor" "\ 7736(autoload (quote doctor) "doctor" "\
@@ -8488,7 +8486,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
8488 8486
8489;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form 8487;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
8490;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" 8488;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
8491;;;;;; "emacs-lisp/edebug.el" (17963 19041)) 8489;;;;;; "emacs-lisp/edebug.el" (17963 20999))
8492;;; Generated autoloads from emacs-lisp/edebug.el 8490;;; Generated autoloads from emacs-lisp/edebug.el
8493 8491
8494(defvar edebug-all-defs nil "\ 8492(defvar edebug-all-defs nil "\
@@ -9196,7 +9194,7 @@ Not documented
9196;;;*** 9194;;;***
9197 9195
9198;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc" 9196;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
9199;;;;;; "erc/erc.el" (17888 32279)) 9197;;;;;; "erc/erc.el" (17963 21006))
9200;;; Generated autoloads from erc/erc.el 9198;;; Generated autoloads from erc/erc.el
9201 9199
9202(autoload (quote erc-select-read-args) "erc" "\ 9200(autoload (quote erc-select-read-args) "erc" "\
@@ -9205,8 +9203,12 @@ Prompt the user for values of nick, server, port, and password.
9205\(fn)" nil nil) 9203\(fn)" nil nil)
9206 9204
9207(autoload (quote erc) "erc" "\ 9205(autoload (quote erc) "erc" "\
9208Select connection parameters and run ERC. 9206ERC is a powerful, modular, and extensible IRC client.
9209Non-interactively, it takes keyword arguments 9207This function is the main entry point for ERC.
9208
9209It permits you to select connection parameters, and then starts ERC.
9210
9211Non-interactively, it takes the keyword arguments
9210 (server (erc-compute-server)) 9212 (server (erc-compute-server))
9211 (port (erc-compute-port)) 9213 (port (erc-compute-port))
9212 (nick (erc-compute-nick)) 9214 (nick (erc-compute-nick))
@@ -9217,12 +9219,14 @@ That is, if called with
9217 9219
9218 (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\") 9220 (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
9219 9221
9220server and full-name will be set to those values, whereas 9222then the server and full-name will be set to those values, whereas
9221`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will 9223`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
9222be invoked for the values of the other parameters. 9224be invoked for the values of the other parameters.
9223 9225
9224\(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil) 9226\(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil)
9225 9227
9228(defalias (quote erc-select) (quote erc))
9229
9226(autoload (quote erc-handle-irc-url) "erc" "\ 9230(autoload (quote erc-handle-irc-url) "erc" "\
9227Use ERC to IRC on HOST:PORT in CHANNEL as USER with PASSWORD. 9231Use ERC to IRC on HOST:PORT in CHANNEL as USER with PASSWORD.
9228If ERC is already connected to HOST:PORT, simply /join CHANNEL. 9232If ERC is already connected to HOST:PORT, simply /join CHANNEL.
@@ -9232,26 +9236,26 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
9232 9236
9233;;;*** 9237;;;***
9234 9238
9235;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17888 9239;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17963
9236;;;;;; 32279)) 9240;;;;;; 21006))
9237;;; Generated autoloads from erc/erc-autoaway.el 9241;;; Generated autoloads from erc/erc-autoaway.el
9238 (autoload 'erc-autoaway-mode "erc-autoaway") 9242 (autoload 'erc-autoaway-mode "erc-autoaway")
9239 9243
9240;;;*** 9244;;;***
9241 9245
9242;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17888 32279)) 9246;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17963 21006))
9243;;; Generated autoloads from erc/erc-button.el 9247;;; Generated autoloads from erc/erc-button.el
9244 (autoload 'erc-button-mode "erc-button" nil t) 9248 (autoload 'erc-button-mode "erc-button" nil t)
9245 9249
9246;;;*** 9250;;;***
9247 9251
9248;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17888 32277)) 9252;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17963 21006))
9249;;; Generated autoloads from erc/erc-capab.el 9253;;; Generated autoloads from erc/erc-capab.el
9250 (autoload 'erc-capab-identify-mode "erc-capab" nil t) 9254 (autoload 'erc-capab-identify-mode "erc-capab" nil t)
9251 9255
9252;;;*** 9256;;;***
9253 9257
9254;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17888 32279)) 9258;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17963 21006))
9255;;; Generated autoloads from erc/erc-compat.el 9259;;; Generated autoloads from erc/erc-compat.el
9256 (autoload 'erc-define-minor-mode "erc-compat") 9260 (autoload 'erc-define-minor-mode "erc-compat")
9257 9261
@@ -9352,8 +9356,8 @@ Add EZBouncer convenience functions to ERC.
9352 9356
9353;;;*** 9357;;;***
9354 9358
9355;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17888 9359;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17963
9356;;;;;; 32279)) 9360;;;;;; 21006))
9357;;; Generated autoloads from erc/erc-fill.el 9361;;; Generated autoloads from erc/erc-fill.el
9358 (autoload 'erc-fill-mode "erc-fill" nil t) 9362 (autoload 'erc-fill-mode "erc-fill" nil t)
9359 9363
@@ -9373,7 +9377,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
9373;;;*** 9377;;;***
9374 9378
9375;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" 9379;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
9376;;;;;; "erc/erc-identd.el" (17888 32279)) 9380;;;;;; "erc/erc-identd.el" (17963 21006))
9377;;; Generated autoloads from erc/erc-identd.el 9381;;; Generated autoloads from erc/erc-identd.el
9378 (autoload 'erc-identd-mode "erc-identd") 9382 (autoload 'erc-identd-mode "erc-identd")
9379 9383
@@ -9412,7 +9416,7 @@ Not documented
9412;;;*** 9416;;;***
9413 9417
9414;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" 9418;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
9415;;;;;; "erc/erc-log.el" (17888 32279)) 9419;;;;;; "erc/erc-log.el" (17963 21006))
9416;;; Generated autoloads from erc/erc-log.el 9420;;; Generated autoloads from erc/erc-log.el
9417 (autoload 'erc-log-mode "erc-log" nil t) 9421 (autoload 'erc-log-mode "erc-log" nil t)
9418 9422
@@ -9444,7 +9448,7 @@ You can save every individual message by putting this function on
9444;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host 9448;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
9445;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool 9449;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
9446;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" 9450;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
9447;;;;;; (17888 32279)) 9451;;;;;; (17963 21006))
9448;;; Generated autoloads from erc/erc-match.el 9452;;; Generated autoloads from erc/erc-match.el
9449 (autoload 'erc-match-mode "erc-match") 9453 (autoload 'erc-match-mode "erc-match")
9450 9454
@@ -9490,14 +9494,14 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
9490 9494
9491;;;*** 9495;;;***
9492 9496
9493;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17888 32279)) 9497;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17963 21006))
9494;;; Generated autoloads from erc/erc-menu.el 9498;;; Generated autoloads from erc/erc-menu.el
9495 (autoload 'erc-menu-mode "erc-menu" nil t) 9499 (autoload 'erc-menu-mode "erc-menu" nil t)
9496 9500
9497;;;*** 9501;;;***
9498 9502
9499;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" 9503;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
9500;;;;;; (17888 32279)) 9504;;;;;; (17963 21006))
9501;;; Generated autoloads from erc/erc-netsplit.el 9505;;; Generated autoloads from erc/erc-netsplit.el
9502 (autoload 'erc-netsplit-mode "erc-netsplit") 9506 (autoload 'erc-netsplit-mode "erc-netsplit")
9503 9507
@@ -9509,7 +9513,7 @@ Show who's gone.
9509;;;*** 9513;;;***
9510 9514
9511;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" 9515;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
9512;;;;;; "erc/erc-networks.el" (17888 32279)) 9516;;;;;; "erc/erc-networks.el" (17963 21006))
9513;;; Generated autoloads from erc/erc-networks.el 9517;;; Generated autoloads from erc/erc-networks.el
9514 9518
9515(autoload (quote erc-determine-network) "erc-networks" "\ 9519(autoload (quote erc-determine-network) "erc-networks" "\
@@ -9527,7 +9531,7 @@ Interactively select a server to connect to using `erc-server-alist'.
9527;;;*** 9531;;;***
9528 9532
9529;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" 9533;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
9530;;;;;; "erc/erc-notify.el" (17888 32279)) 9534;;;;;; "erc/erc-notify.el" (17963 21006))
9531;;; Generated autoloads from erc/erc-notify.el 9535;;; Generated autoloads from erc/erc-notify.el
9532 (autoload 'erc-notify-mode "erc-notify" nil t) 9536 (autoload 'erc-notify-mode "erc-notify" nil t)
9533 9537
@@ -9551,8 +9555,8 @@ Not documented
9551 9555
9552;;;*** 9556;;;***
9553 9557
9554;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17888 9558;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17963
9555;;;;;; 32279)) 9559;;;;;; 21006))
9556;;; Generated autoloads from erc/erc-pcomplete.el 9560;;; Generated autoloads from erc/erc-pcomplete.el
9557 (autoload 'erc-completion-mode "erc-pcomplete" nil t) 9561 (autoload 'erc-completion-mode "erc-pcomplete" nil t)
9558 9562
@@ -9564,14 +9568,14 @@ Not documented
9564 9568
9565;;;*** 9569;;;***
9566 9570
9567;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17888 32279)) 9571;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17963 21006))
9568;;; Generated autoloads from erc/erc-ring.el 9572;;; Generated autoloads from erc/erc-ring.el
9569 (autoload 'erc-ring-mode "erc-ring" nil t) 9573 (autoload 'erc-ring-mode "erc-ring" nil t)
9570 9574
9571;;;*** 9575;;;***
9572 9576
9573;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) 9577;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
9574;;;;;; "erc-services" "erc/erc-services.el" (17888 32279)) 9578;;;;;; "erc-services" "erc/erc-services.el" (17963 21006))
9575;;; Generated autoloads from erc/erc-services.el 9579;;; Generated autoloads from erc/erc-services.el
9576 (autoload 'erc-services-mode "erc-services" nil t) 9580 (autoload 'erc-services-mode "erc-services" nil t)
9577 9581
@@ -9595,7 +9599,7 @@ When called interactively, read the password using `read-passwd'.
9595;;;*** 9599;;;***
9596 9600
9597;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" 9601;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
9598;;;;;; (17888 32279)) 9602;;;;;; (17963 21006))
9599;;; Generated autoloads from erc/erc-speedbar.el 9603;;; Generated autoloads from erc/erc-speedbar.el
9600 9604
9601(autoload (quote erc-speedbar-browser) "erc-speedbar" "\ 9605(autoload (quote erc-speedbar-browser) "erc-speedbar" "\
@@ -9606,23 +9610,39 @@ This will add a speedbar major display mode.
9606 9610
9607;;;*** 9611;;;***
9608 9612
9609;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17888 9613;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17963
9610;;;;;; 32279)) 9614;;;;;; 21006))
9611;;; Generated autoloads from erc/erc-spelling.el 9615;;; Generated autoloads from erc/erc-spelling.el
9612 (autoload 'erc-spelling-mode "erc-spelling" nil t) 9616 (autoload 'erc-spelling-mode "erc-spelling" nil t)
9613 9617
9614;;;*** 9618;;;***
9615 9619
9616;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17888 32279)) 9620;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17963 21006))
9617;;; Generated autoloads from erc/erc-stamp.el 9621;;; Generated autoloads from erc/erc-stamp.el
9618 (autoload 'erc-timestamp-mode "erc-stamp" nil t) 9622 (autoload 'erc-timestamp-mode "erc-stamp" nil t)
9619 9623
9620;;;*** 9624;;;***
9621 9625
9622;;;### (autoloads nil "erc-track" "erc/erc-track.el" (17888 32279)) 9626;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
9627;;;;;; (17963 21006))
9623;;; Generated autoloads from erc/erc-track.el 9628;;; Generated autoloads from erc/erc-track.el
9629
9630(defvar erc-track-minor-mode nil "\
9631Non-nil if Erc-Track minor mode is enabled.
9632See the command `erc-track-minor-mode' for a description of this minor-mode.")
9633
9634(custom-autoload (quote erc-track-minor-mode) "erc-track" nil)
9635
9636(autoload (quote erc-track-minor-mode) "erc-track" "\
9637Global minor mode for tracking ERC buffers and showing activity in the
9638mode line.
9639
9640This exists for the sole purpose of providing the C-c C-SPC and
9641C-c C-@ keybindings. Make sure that you have enabled the track
9642module, otherwise the keybindings will not do anything useful.
9643
9644\(fn &optional ARG)" t nil)
9624 (autoload 'erc-track-mode "erc-track" nil t) 9645 (autoload 'erc-track-mode "erc-track" nil t)
9625 (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
9626 9646
9627;;;*** 9647;;;***
9628 9648
@@ -10344,8 +10364,8 @@ Edit the hotlist of directory servers in a specialized buffer.
10344 10364
10345;;;*** 10365;;;***
10346 10366
10347;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17888 10367;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17963
10348;;;;;; 32279)) 10368;;;;;; 21003))
10349;;; Generated autoloads from emacs-lisp/ewoc.el 10369;;; Generated autoloads from emacs-lisp/ewoc.el
10350 10370
10351(autoload (quote ewoc-create) "ewoc" "\ 10371(autoload (quote ewoc-create) "ewoc" "\
@@ -10416,7 +10436,8 @@ file modes.
10416;;;*** 10436;;;***
10417 10437
10418;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot 10438;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
10419;;;;;; expand-add-abbrevs) "expand" "expand.el" (17888 32279)) 10439;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
10440;;;;;; (17963 20867))
10420;;; Generated autoloads from expand.el 10441;;; Generated autoloads from expand.el
10421 10442
10422(autoload (quote expand-add-abbrevs) "expand" "\ 10443(autoload (quote expand-add-abbrevs) "expand" "\
@@ -10443,6 +10464,12 @@ If ARG is omitted, point is placed at the end of the expanded text.
10443 10464
10444\(fn TABLE ABBREVS)" nil nil) 10465\(fn TABLE ABBREVS)" nil nil)
10445 10466
10467(autoload (quote expand-abbrev-hook) "expand" "\
10468Abbrev hook used to do the expansion job of expand abbrevs.
10469See `expand-add-abbrevs'. Value is non-nil if expansion was done.
10470
10471\(fn)" nil nil)
10472
10446(autoload (quote expand-jump-to-previous-slot) "expand" "\ 10473(autoload (quote expand-jump-to-previous-slot) "expand" "\
10447Move the cursor to the previous slot in the last abbrev expansion. 10474Move the cursor to the previous slot in the last abbrev expansion.
10448This is used only in conjunction with `expand-add-abbrevs'. 10475This is used only in conjunction with `expand-add-abbrevs'.
@@ -11317,7 +11344,7 @@ Not documented
11317;;;*** 11344;;;***
11318 11345
11319;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode) 11346;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
11320;;;;;; "flymake" "progmodes/flymake.el" (17888 36581)) 11347;;;;;; "flymake" "progmodes/flymake.el" (17963 21005))
11321;;; Generated autoloads from progmodes/flymake.el 11348;;; Generated autoloads from progmodes/flymake.el
11322 11349
11323(autoload (quote flymake-mode) "flymake" "\ 11350(autoload (quote flymake-mode) "flymake" "\
@@ -11341,7 +11368,7 @@ Turn flymake mode off.
11341 11368
11342;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off 11369;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
11343;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) 11370;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
11344;;;;;; "flyspell" "textmodes/flyspell.el" (17888 32281)) 11371;;;;;; "flyspell" "textmodes/flyspell.el" (17963 20998))
11345;;; Generated autoloads from textmodes/flyspell.el 11372;;; Generated autoloads from textmodes/flyspell.el
11346 11373
11347(autoload (quote flyspell-prog-mode) "flyspell" "\ 11374(autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11679,7 +11706,7 @@ and choose the directory as the fortune-file.
11679;;;*** 11706;;;***
11680 11707
11681;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el" 11708;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
11682;;;;;; (17963 18447)) 11709;;;;;; (17963 21011))
11683;;; Generated autoloads from progmodes/gdb-ui.el 11710;;; Generated autoloads from progmodes/gdb-ui.el
11684 11711
11685(autoload (quote gdba) "gdb-ui" "\ 11712(autoload (quote gdba) "gdb-ui" "\
@@ -11831,7 +11858,7 @@ at places they belong to.
11831;;;*** 11858;;;***
11832 11859
11833;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error 11860;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
11834;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17888 32279)) 11861;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17963 21006))
11835;;; Generated autoloads from gnus/gmm-utils.el 11862;;; Generated autoloads from gnus/gmm-utils.el
11836 11863
11837(autoload (quote gmm-message) "gmm-utils" "\ 11864(autoload (quote gmm-message) "gmm-utils" "\
@@ -11862,7 +11889,7 @@ Within each entry of ICON-LIST, the first element is a menu
11862command, the second element is an icon file name and the third 11889command, the second element is an icon file name and the third
11863element is a test function. You can use \\[describe-key] 11890element is a test function. You can use \\[describe-key]
11864<menu-entry> to find out the name of a menu command. The fourth 11891<menu-entry> to find out the name of a menu command. The fourth
11865and all following elements are passed a the PROPS argument to the 11892and all following elements are passed as the PROPS argument to the
11866function `tool-bar-local-item'. 11893function `tool-bar-local-item'.
11867 11894
11868If ZAP-LIST is a list, remove those item from the default 11895If ZAP-LIST is a list, remove those item from the default
@@ -12022,7 +12049,7 @@ If CLEAN, obsolete (ignore).
12022;;;*** 12049;;;***
12023 12050
12024;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" 12051;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
12025;;;;;; (17888 36581)) 12052;;;;;; (17963 21004))
12026;;; Generated autoloads from gnus/gnus-art.el 12053;;; Generated autoloads from gnus/gnus-art.el
12027 12054
12028(autoload (quote gnus-article-prepare-display) "gnus-art" "\ 12055(autoload (quote gnus-article-prepare-display) "gnus-art" "\
@@ -12373,7 +12400,7 @@ Update the .newsrc.eld file to reflect the change of nntp server.
12373;;;*** 12400;;;***
12374 12401
12375;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) 12402;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
12376;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17888 32279)) 12403;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17963 21010))
12377;;; Generated autoloads from gnus/gnus-msg.el 12404;;; Generated autoloads from gnus/gnus-msg.el
12378 12405
12379(autoload (quote gnus-msg-mail) "gnus-msg" "\ 12406(autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12510,7 +12537,7 @@ Add NUM into sorted LIST by side effect.
12510;;;*** 12537;;;***
12511 12538
12512;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) 12539;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
12513;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17888 32279)) 12540;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17963 21006))
12514;;; Generated autoloads from gnus/gnus-registry.el 12541;;; Generated autoloads from gnus/gnus-registry.el
12515 12542
12516(autoload (quote gnus-registry-initialize) "gnus-registry" "\ 12543(autoload (quote gnus-registry-initialize) "gnus-registry" "\
@@ -12613,7 +12640,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
12613 12640
12614;;;*** 12641;;;***
12615 12642
12616;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17888 32280)) 12643;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17963 21010))
12617;;; Generated autoloads from play/gomoku.el 12644;;; Generated autoloads from play/gomoku.el
12618 12645
12619(autoload (quote gomoku) "gomoku" "\ 12646(autoload (quote gomoku) "gomoku" "\
@@ -12713,10 +12740,10 @@ The default find program for `grep-find-command'.
12713This variable's value takes effect when `grep-compute-defaults' is called.") 12740This variable's value takes effect when `grep-compute-defaults' is called.")
12714 12741
12715(defvar grep-find-use-xargs nil "\ 12742(defvar grep-find-use-xargs nil "\
12716Whether \\[grep-find] uses the `xargs' utility by default. 12743Non-nil means that `grep-find' uses the `xargs' utility by default.
12717 12744If `exec', use `find -exec'.
12718If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0'; 12745If `gnu', use `find -print0' and `xargs -0'.
12719if not nil and not `gnu', it uses `find -print' and `xargs'. 12746Any other non-nil value means to use `find -print' and `xargs'.
12720 12747
12721This variable's value takes effect when `grep-compute-defaults' is called.") 12748This variable's value takes effect when `grep-compute-defaults' is called.")
12722 12749
@@ -12824,7 +12851,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
12824;;;*** 12851;;;***
12825 12852
12826;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb) 12853;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
12827;;;;;; "gud" "progmodes/gud.el" (17963 19063)) 12854;;;;;; "gud" "progmodes/gud.el" (17963 21011))
12828;;; Generated autoloads from progmodes/gud.el 12855;;; Generated autoloads from progmodes/gud.el
12829 12856
12830(autoload (quote gdb) "gud" "\ 12857(autoload (quote gdb) "gud" "\
@@ -13535,8 +13562,8 @@ how the hiding is done:
13535 13562
13536;;;*** 13563;;;***
13537 13564
13538;;;### (autoloads (hs-minor-mode) "hideshow" "progmodes/hideshow.el" 13565;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
13539;;;;;; (17963 19041)) 13566;;;;;; (17963 21006))
13540;;; Generated autoloads from progmodes/hideshow.el 13567;;; Generated autoloads from progmodes/hideshow.el
13541 13568
13542(defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\ 13569(defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\
@@ -13588,6 +13615,11 @@ Key bindings:
13588 13615
13589\(fn &optional ARG)" t nil) 13616\(fn &optional ARG)" t nil)
13590 13617
13618(autoload (quote turn-off-hideshow) "hideshow" "\
13619Unconditionally turn off `hs-minor-mode'.
13620
13621\(fn)" nil nil)
13622
13591;;;*** 13623;;;***
13592 13624
13593;;;### (autoloads (global-highlight-changes highlight-compare-with-file 13625;;;### (autoloads (global-highlight-changes highlight-compare-with-file
@@ -14545,7 +14577,7 @@ with no args, if that value is non-nil.
14545;;;*** 14577;;;***
14546 14578
14547;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" 14579;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
14548;;;;;; (17888 37036)) 14580;;;;;; (17963 21008))
14549;;; Generated autoloads from progmodes/idlw-shell.el 14581;;; Generated autoloads from progmodes/idlw-shell.el
14550 14582
14551(autoload (quote idlwave-shell) "idlw-shell" "\ 14583(autoload (quote idlwave-shell) "idlw-shell" "\
@@ -14571,7 +14603,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
14571;;;*** 14603;;;***
14572 14604
14573;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" 14605;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
14574;;;;;; (17888 36588)) 14606;;;;;; (17963 21008))
14575;;; Generated autoloads from progmodes/idlwave.el 14607;;; Generated autoloads from progmodes/idlwave.el
14576 14608
14577(autoload (quote idlwave-mode) "idlwave" "\ 14609(autoload (quote idlwave-mode) "idlwave" "\
@@ -14707,7 +14739,7 @@ The main features of this mode are
14707;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer 14739;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
14708;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window 14740;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
14709;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963 14741;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963
14710;;;;;; 19298)) 14742;;;;;; 21001))
14711;;; Generated autoloads from ido.el 14743;;; Generated autoloads from ido.el
14712 14744
14713(defvar ido-mode nil "\ 14745(defvar ido-mode nil "\
@@ -15501,7 +15533,7 @@ of `inferior-lisp-program'). Runs the hooks from
15501;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node 15533;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
15502;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index 15534;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index
15503;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual 15535;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual
15504;;;;;; info info-other-window) "info" "info.el" (17888 36929)) 15536;;;;;; info info-other-window) "info" "info.el" (17963 21008))
15505;;; Generated autoloads from info.el 15537;;; Generated autoloads from info.el
15506 15538
15507(autoload (quote info-other-window) "info" "\ 15539(autoload (quote info-other-window) "info" "\
@@ -16612,7 +16644,7 @@ Not documented
16612;;;*** 16644;;;***
16613 16645
16614;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el" 16646;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
16615;;;;;; (17888 32280)) 16647;;;;;; (17963 21010))
16616;;; Generated autoloads from play/landmark.el 16648;;; Generated autoloads from play/landmark.el
16617 16649
16618(defalias (quote landmark-repeat) (quote lm-test-run)) 16650(defalias (quote landmark-repeat) (quote lm-test-run))
@@ -17148,8 +17180,8 @@ This function is suitable for execution in a .emacs file.
17148 17180
17149;;;*** 17181;;;***
17150 17182
17151;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17888 17183;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17963
17152;;;;;; 32281)) 17184;;;;;; 20866))
17153;;; Generated autoloads from progmodes/m4-mode.el 17185;;; Generated autoloads from progmodes/m4-mode.el
17154 17186
17155(autoload (quote m4-mode) "m4-mode" "\ 17187(autoload (quote m4-mode) "m4-mode" "\
@@ -17593,7 +17625,7 @@ Previous contents of that buffer are killed first.
17593 17625
17594;;;*** 17626;;;***
17595 17627
17596;;;### (autoloads (man-follow man) "man" "man.el" (17888 32280)) 17628;;;### (autoloads (man-follow man) "man" "man.el" (17963 20867))
17597;;; Generated autoloads from man.el 17629;;; Generated autoloads from man.el
17598 17630
17599(defalias (quote manual-entry) (quote man)) 17631(defalias (quote manual-entry) (quote man))
@@ -17678,7 +17710,7 @@ turn on menu bars; otherwise, turn off menu bars.
17678;;;;;; message-cite-function message-yank-prefix message-citation-line-function 17710;;;;;; message-cite-function message-yank-prefix message-citation-line-function
17679;;;;;; message-send-mail-function message-user-organization-file 17711;;;;;; message-send-mail-function message-user-organization-file
17680;;;;;; message-signature-separator message-from-style) "message" 17712;;;;;; message-signature-separator message-from-style) "message"
17681;;;;;; "gnus/message.el" (17963 18449)) 17713;;;;;; "gnus/message.el" (17963 20999))
17682;;; Generated autoloads from gnus/message.el 17714;;; Generated autoloads from gnus/message.el
17683 17715
17684(defvar message-from-style (quote default) "\ 17716(defvar message-from-style (quote default) "\
@@ -17816,7 +17848,9 @@ M-RET `message-newline-and-reformat' (break the line and reformat).
17816 17848
17817(autoload (quote message-mail) "message" "\ 17849(autoload (quote message-mail) "message" "\
17818Start editing a mail message to be sent. 17850Start editing a mail message to be sent.
17819OTHER-HEADERS is an alist of header/value pairs. 17851OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
17852to continue editing a message already being composed. SWITCH-FUNCTION
17853is a function used to switch to and display the mail buffer.
17820 17854
17821\(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS)" t nil) 17855\(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS)" t nil)
17822 17856
@@ -18976,7 +19010,7 @@ Open a network connection to HOST on PORT.
18976;;;;;; uncomment-region comment-kill comment-set-column comment-indent 19010;;;;;; uncomment-region comment-kill comment-set-column comment-indent
18977;;;;;; comment-indent-default comment-normalize-vars comment-multi-line 19011;;;;;; comment-indent-default comment-normalize-vars comment-multi-line
18978;;;;;; comment-padding comment-style comment-column) "newcomment" 19012;;;;;; comment-padding comment-style comment-column) "newcomment"
18979;;;;;; "newcomment.el" (17888 32280)) 19013;;;;;; "newcomment.el" (17963 21008))
18980;;; Generated autoloads from newcomment.el 19014;;; Generated autoloads from newcomment.el
18981 19015
18982(defalias (quote indent-for-comment) (quote comment-indent)) 19016(defalias (quote indent-for-comment) (quote comment-indent))
@@ -19507,7 +19541,7 @@ The Custom feature is intended to make this obsolete.
19507;;;;;; org-remember-handler org-remember org-remember-apply-template 19541;;;;;; org-remember-handler org-remember org-remember-apply-template
19508;;;;;; org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl 19542;;;;;; org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl
19509;;;;;; org-global-cycle org-cycle org-mode) "org" "textmodes/org.el" 19543;;;;;; org-global-cycle org-cycle org-mode) "org" "textmodes/org.el"
19510;;;;;; (17963 19299)) 19544;;;;;; (17963 20865))
19511;;; Generated autoloads from textmodes/org.el 19545;;; Generated autoloads from textmodes/org.el
19512 19546
19513(autoload (quote org-mode) "org" "\ 19547(autoload (quote org-mode) "org" "\
@@ -21663,7 +21697,7 @@ If EXTENSION is any other symbol, it is ignored.
21663;;;*** 21697;;;***
21664 21698
21665;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el" 21699;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
21666;;;;;; (17963 19313)) 21700;;;;;; (17963 20999))
21667;;; Generated autoloads from progmodes/python.el 21701;;; Generated autoloads from progmodes/python.el
21668 21702
21669(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode))) 21703(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -22122,7 +22156,7 @@ Construct a regexp interactively.
22122 22156
22123;;;*** 22157;;;***
22124 22158
22125;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17888 32281)) 22159;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17963 20999))
22126;;; Generated autoloads from recentf.el 22160;;; Generated autoloads from recentf.el
22127 22161
22128(defvar recentf-mode nil "\ 22162(defvar recentf-mode nil "\
@@ -22295,7 +22329,7 @@ refilling if they would cause auto-filling.
22295;;;*** 22329;;;***
22296 22330
22297;;;### (autoloads (reftex-reset-scanning-information reftex-mode 22331;;;### (autoloads (reftex-reset-scanning-information reftex-mode
22298;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17888 32281)) 22332;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17963 20865))
22299;;; Generated autoloads from textmodes/reftex.el 22333;;; Generated autoloads from textmodes/reftex.el
22300 22334
22301(autoload (quote turn-on-reftex) "reftex" "\ 22335(autoload (quote turn-on-reftex) "reftex" "\
@@ -22345,7 +22379,7 @@ This enforces rescanning the buffer on next use.
22345;;;*** 22379;;;***
22346 22380
22347;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" 22381;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
22348;;;;;; (17888 32281)) 22382;;;;;; (17963 20865))
22349;;; Generated autoloads from textmodes/reftex-cite.el 22383;;; Generated autoloads from textmodes/reftex-cite.el
22350 22384
22351(autoload (quote reftex-citation) "reftex-cite" "\ 22385(autoload (quote reftex-citation) "reftex-cite" "\
@@ -22375,7 +22409,7 @@ While entering the regexp, completion on knows citation keys is possible.
22375;;;*** 22409;;;***
22376 22410
22377;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" 22411;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
22378;;;;;; (17888 32281)) 22412;;;;;; (17963 20865))
22379;;; Generated autoloads from textmodes/reftex-global.el 22413;;; Generated autoloads from textmodes/reftex-global.el
22380 22414
22381(autoload (quote reftex-isearch-minor-mode) "reftex-global" "\ 22415(autoload (quote reftex-isearch-minor-mode) "reftex-global" "\
@@ -22392,7 +22426,7 @@ With no argument, this command toggles
22392;;;*** 22426;;;***
22393 22427
22394;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" 22428;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
22395;;;;;; (17888 32281)) 22429;;;;;; (17963 20865))
22396;;; Generated autoloads from textmodes/reftex-index.el 22430;;; Generated autoloads from textmodes/reftex-index.el
22397 22431
22398(autoload (quote reftex-index-phrases-mode) "reftex-index" "\ 22432(autoload (quote reftex-index-phrases-mode) "reftex-index" "\
@@ -22425,7 +22459,7 @@ Here are all local bindings.
22425;;;*** 22459;;;***
22426 22460
22427;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" 22461;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
22428;;;;;; (17888 32281)) 22462;;;;;; (17963 20865))
22429;;; Generated autoloads from textmodes/reftex-parse.el 22463;;; Generated autoloads from textmodes/reftex-parse.el
22430 22464
22431(autoload (quote reftex-all-document-files) "reftex-parse" "\ 22465(autoload (quote reftex-all-document-files) "reftex-parse" "\
@@ -22437,8 +22471,8 @@ of master file.
22437 22471
22438;;;*** 22472;;;***
22439 22473
22440;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17888 22474;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17963
22441;;;;;; 32281)) 22475;;;;;; 20865))
22442;;; Generated autoloads from textmodes/reftex-vars.el 22476;;; Generated autoloads from textmodes/reftex-vars.el
22443(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22477(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
22444(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22478(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22666,7 +22700,7 @@ variable.
22666;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers 22700;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
22667;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names 22701;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
22668;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17963 22702;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17963
22669;;;;;; 18438)) 22703;;;;;; 21010))
22670;;; Generated autoloads from mail/rmail.el 22704;;; Generated autoloads from mail/rmail.el
22671 22705
22672(autoload (quote rmail-movemail-variant-p) "rmail" "\ 22706(autoload (quote rmail-movemail-variant-p) "rmail" "\
@@ -23961,16 +23995,16 @@ Like Text Mode but with these additional commands:
23961\\[mail-send-and-exit] mail-send-and-exit (send the message and exit) 23995\\[mail-send-and-exit] mail-send-and-exit (send the message and exit)
23962 23996
23963Here are commands that move to a header field (and create it if there isn't): 23997Here are commands that move to a header field (and create it if there isn't):
23964 \\[mail-to] move to To: \\[mail-subject] move to Subject: 23998 \\[mail-to] move to To: \\[mail-subject] move to Subj:
23965 \\[mail-cc] move to CC: \\[mail-bcc] move to BCC: 23999 \\[mail-bcc] move to BCC: \\[mail-cc] move to CC:
23966 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To: 24000 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To:
23967 \\[mail-mail-reply-to] move to Mail-Reply-To: 24001 \\[mail-mail-reply-to] move to Mail-Reply-To:
23968 \\[mail-mail-followup-to] move to Mail-Followup-To: 24002 \\[mail-mail-followup-to] move to Mail-Followup-To:
23969\\[mail-text] mail-text (move to beginning of message text). 24003\\[mail-text] move to message text.
23970\\[mail-signature] mail-signature (insert `mail-signature-file' file). 24004\\[mail-signature] mail-signature (insert `mail-signature-file' file).
23971\\[mail-yank-original] mail-yank-original (insert current message, in Rmail). 24005\\[mail-yank-original] mail-yank-original (insert current message, in Rmail).
23972\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked). 24006\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked).
23973\\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC). 24007\\[mail-sent-via] mail-sent-via (add a sent-via field for each To or CC).
23974Turning on Mail mode runs the normal hooks `text-mode-hook' and 24008Turning on Mail mode runs the normal hooks `text-mode-hook' and
23975`mail-mode-hook' (in that order). 24009`mail-mode-hook' (in that order).
23976 24010
@@ -24445,7 +24479,7 @@ Turning on Sieve mode runs `sieve-mode-hook'.
24445 24479
24446;;;*** 24480;;;***
24447 24481
24448;;;### (autoloads nil "simple" "simple.el" (17963 19313)) 24482;;;### (autoloads nil "simple" "simple.el" (17963 21011))
24449;;; Generated autoloads from simple.el 24483;;; Generated autoloads from simple.el
24450(put 'fill-prefix 'safe-local-variable 'string-or-null-p) 24484(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
24451 24485
@@ -24648,7 +24682,7 @@ interactively. If there's no argument, do it at the current buffer
24648;;;*** 24682;;;***
24649 24683
24650;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" 24684;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
24651;;;;;; "mail/smtpmail.el" (17888 36928)) 24685;;;;;; "mail/smtpmail.el" (17963 21010))
24652;;; Generated autoloads from mail/smtpmail.el 24686;;; Generated autoloads from mail/smtpmail.el
24653 24687
24654(autoload (quote smtpmail-send-it) "smtpmail" "\ 24688(autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -25708,7 +25742,7 @@ Studlify-case the current buffer.
25708 25742
25709;;;*** 25743;;;***
25710 25744
25711;;;### (autoloads (locate-library) "subr" "subr.el" (17963 19313)) 25745;;;### (autoloads (locate-library) "subr" "subr.el" (17963 21011))
25712;;; Generated autoloads from subr.el 25746;;; Generated autoloads from subr.el
25713 25747
25714(autoload (quote locate-library) "subr" "\ 25748(autoload (quote locate-library) "subr" "\
@@ -25762,7 +25796,7 @@ before, and `sc-post-hook' is run after the guts of this function.
25762 25796
25763;;;*** 25797;;;***
25764 25798
25765;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 19313)) 25799;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 21011))
25766;;; Generated autoloads from t-mouse.el 25800;;; Generated autoloads from t-mouse.el
25767 25801
25768(defvar t-mouse-mode nil "\ 25802(defvar t-mouse-mode nil "\
@@ -26591,7 +26625,7 @@ subprocess started.
26591;;;*** 26625;;;***
26592 26626
26593;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" 26627;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
26594;;;;;; (17888 32279)) 26628;;;;;; (17963 20867))
26595;;; Generated autoloads from emacs-lisp/testcover.el 26629;;; Generated autoloads from emacs-lisp/testcover.el
26596 26630
26597(autoload (quote testcover-this-defun) "testcover" "\ 26631(autoload (quote testcover-this-defun) "testcover" "\
@@ -26601,7 +26635,7 @@ Start coverage on function under point.
26601 26635
26602;;;*** 26636;;;***
26603 26637
26604;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 18455)) 26638;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 21010))
26605;;; Generated autoloads from play/tetris.el 26639;;; Generated autoloads from play/tetris.el
26606 26640
26607(autoload (quote tetris) "tetris" "\ 26641(autoload (quote tetris) "tetris" "\
@@ -27577,7 +27611,7 @@ relative only to the time worked today, and not to past time.
27577 27611
27578;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer 27612;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer
27579;;;;;; run-at-time cancel-function-timers cancel-timer) "timer" 27613;;;;;; run-at-time cancel-function-timers cancel-timer) "timer"
27580;;;;;; "emacs-lisp/timer.el" (17888 32279)) 27614;;;;;; "emacs-lisp/timer.el" (17963 21006))
27581;;; Generated autoloads from emacs-lisp/timer.el 27615;;; Generated autoloads from emacs-lisp/timer.el
27582 27616
27583(defalias (quote disable-timeout) (quote cancel-timer)) 27617(defalias (quote disable-timeout) (quote cancel-timer))
@@ -27597,11 +27631,16 @@ and idle timers such as are scheduled by `run-with-idle-timer'.
27597(autoload (quote run-at-time) "timer" "\ 27631(autoload (quote run-at-time) "timer" "\
27598Perform an action at time TIME. 27632Perform an action at time TIME.
27599Repeat the action every REPEAT seconds, if REPEAT is non-nil. 27633Repeat the action every REPEAT seconds, if REPEAT is non-nil.
27600TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds 27634TIME should be one of: a string giving an absolute time like
27601from now, a value from `current-time', or t (with non-nil REPEAT) 27635\"11:23pm\" (the acceptable formats are those recognized by
27602meaning the next integral multiple of REPEAT. 27636`diary-entry-time'; note that such times are interpreted as times
27603REPEAT may be an integer or floating point number. 27637today, even if in the past); a string giving a relative time like
27604The action is to call FUNCTION with arguments ARGS. 27638\"2 hours 35 minutes\" (the acceptable formats are those
27639recognized by `timer-duration'); nil meaning now; a number of
27640seconds from now; a value from `encode-time'; or t (with non-nil
27641REPEAT) meaning the next integral multiple of REPEAT. REPEAT may
27642be an integer or floating point number. The action is to call
27643FUNCTION with arguments ARGS.
27605 27644
27606This function returns a timer object which you can use in `cancel-timer'. 27645This function returns a timer object which you can use in `cancel-timer'.
27607 27646
@@ -27700,7 +27739,7 @@ PATTERN regexp.
27700;;;*** 27739;;;***
27701 27740
27702;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" 27741;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
27703;;;;;; "tmm.el" (17888 32281)) 27742;;;;;; "tmm.el" (17963 21011))
27704;;; Generated autoloads from tmm.el 27743;;; Generated autoloads from tmm.el
27705 (define-key global-map "\M-`" 'tmm-menubar) 27744 (define-key global-map "\M-`" 'tmm-menubar)
27706 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) 27745 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27972,7 +28011,7 @@ BUFFER defaults to `trace-buffer'.
27972;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion 28011;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
27973;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers 28012;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
27974;;;;;; tramp-file-name-handler tramp-completion-file-name-regexp 28013;;;;;; tramp-file-name-handler tramp-completion-file-name-regexp
27975;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 19047)) 28014;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 21006))
27976;;; Generated autoloads from net/tramp.el 28015;;; Generated autoloads from net/tramp.el
27977 28016
27978(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\ 28017(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\
@@ -28056,11 +28095,15 @@ Falls back to normal file name handler if no tramp file name handler exists.
28056Invoke tramp file name completion handler. 28095Invoke tramp file name completion handler.
28057Falls back to normal file name handler if no tramp file name handler exists." (let ((fn (assoc operation tramp-completion-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args)))) 28096Falls back to normal file name handler if no tramp file name handler exists." (let ((fn (assoc operation tramp-completion-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
28058 28097
28059(defsubst tramp-register-file-name-handlers nil "\ 28098(defsubst tramp-register-file-name-handler nil "\
28060Add tramp file name handlers to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist)))))) 28099Add tramp file name handler to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
28100
28101(defsubst tramp-register-completion-file-name-handler nil "\
28102Add tramp completion file name handler to `file-name-handler-alist'." (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
28103(tramp-register-file-name-handler)
28061(add-hook 28104(add-hook
28062 'after-init-hook 28105 'after-init-hook
28063 '(lambda () (tramp-register-file-name-handlers))) 28106 '(lambda () (tramp-register-completion-file-name-handler)))
28064 28107
28065(autoload (quote tramp-unload-file-name-handlers) "tramp" "\ 28108(autoload (quote tramp-unload-file-name-handlers) "tramp" "\
28066Not documented 28109Not documented
@@ -28774,7 +28817,7 @@ Not documented
28774;;;*** 28817;;;***
28775 28818
28776;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p 28819;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
28777;;;;;; url-http) "url-http" "url/url-http.el" (17888 36646)) 28820;;;;;; url-http) "url-http" "url/url-http.el" (17963 21008))
28778;;; Generated autoloads from url/url-http.el 28821;;; Generated autoloads from url/url-http.el
28779 28822
28780(autoload (quote url-http) "url-http" "\ 28823(autoload (quote url-http) "url-http" "\
@@ -29487,7 +29530,7 @@ colors. `vc-annotate-background' specifies the background color.
29487 29530
29488;;;*** 29531;;;***
29489 29532
29490;;;### (autoloads nil "vc-arch" "vc-arch.el" (17888 32281)) 29533;;;### (autoloads nil "vc-arch" "vc-arch.el" (17963 20999))
29491;;; Generated autoloads from vc-arch.el 29534;;; Generated autoloads from vc-arch.el
29492 (defun vc-arch-registered (file) 29535 (defun vc-arch-registered (file)
29493 (if (vc-find-root file "{arch}/=tagging-method") 29536 (if (vc-find-root file "{arch}/=tagging-method")
@@ -29518,7 +29561,7 @@ colors. `vc-annotate-background' specifies the background color.
29518;;;*** 29561;;;***
29519 29562
29520;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el" 29563;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
29521;;;;;; (17888 32281)) 29564;;;;;; (17963 20867))
29522;;; Generated autoloads from vc-rcs.el 29565;;; Generated autoloads from vc-rcs.el
29523 29566
29524(defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ 29567(defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -30208,8 +30251,8 @@ Not documented
30208 30251
30209;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame 30252;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
30210;;;;;; view-buffer-other-window view-buffer view-file-other-frame 30253;;;;;; view-buffer-other-window view-buffer view-file-other-frame
30211;;;;;; view-file-other-window view-file) "view" "view.el" (17888 30254;;;;;; view-file-other-window view-file) "view" "view.el" (17963
30212;;;;;; 32281)) 30255;;;;;; 20999))
30213;;; Generated autoloads from view.el 30256;;; Generated autoloads from view.el
30214 30257
30215(defvar view-mode nil "\ 30258(defvar view-mode nil "\
@@ -30372,7 +30415,7 @@ p searches backward for last regular expression.
30372\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer. 30415\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer.
30373\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer. 30416\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer.
30374 30417
30375The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was 30418The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
30376entered by view-file, view-file-other-window, view-file-other-frame, or 30419entered by view-file, view-file-other-window, view-file-other-frame, or
30377\\[dired-view-file] (\\[view-file], \\[view-file-other-window], 30420\\[dired-view-file] (\\[view-file], \\[view-file-other-window],
30378\\[view-file-other-frame], or the Dired mode v command), 30421\\[view-file-other-frame], or the Dired mode v command),
@@ -30380,7 +30423,7 @@ then \\[View-quit] will try to kill the current buffer.
30380If view-mode was entered from another buffer, by \\[view-buffer], 30423If view-mode was entered from another buffer, by \\[view-buffer],
30381\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file], 30424\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
30382\\[view-file-other-window], or \\[view-file-other-frame], 30425\\[view-file-other-window], or \\[view-file-other-frame],
30383then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer. 30426then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
30384 30427
30385Entry to view-mode runs the normal hook `view-mode-hook'. 30428Entry to view-mode runs the normal hook `view-mode-hook'.
30386 30429
@@ -30435,7 +30478,7 @@ Turn on VIP emulation of VI.
30435;;;*** 30478;;;***
30436 30479
30437;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" 30480;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
30438;;;;;; (17888 32279)) 30481;;;;;; (17963 20865))
30439;;; Generated autoloads from emulation/viper.el 30482;;; Generated autoloads from emulation/viper.el
30440 30483
30441(autoload (quote toggle-viper-mode) "viper" "\ 30484(autoload (quote toggle-viper-mode) "viper" "\
@@ -30452,7 +30495,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
30452;;;*** 30495;;;***
30453 30496
30454;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" 30497;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
30455;;;;;; (17888 32279)) 30498;;;;;; (17963 21006))
30456;;; Generated autoloads from emacs-lisp/warnings.el 30499;;; Generated autoloads from emacs-lisp/warnings.el
30457 30500
30458(defvar warning-prefix-function nil "\ 30501(defvar warning-prefix-function nil "\
@@ -30499,8 +30542,9 @@ Default is :warning.
30499 but raise suspicion of a possible problem. 30542 but raise suspicion of a possible problem.
30500:debug -- info for debugging only. 30543:debug -- info for debugging only.
30501 30544
30502BUFFER-NAME, if specified, is the name of the buffer for logging the 30545BUFFER-NAME, if specified, is the name of the buffer for logging
30503warning. By default, it is `*Warnings*'. 30546the warning. By default, it is `*Warnings*'. If this function
30547has to create the buffer, it disables undo in the buffer.
30504 30548
30505See the `warnings' custom group for user customization features. 30549See the `warnings' custom group for user customization features.
30506 30550
@@ -30607,7 +30651,7 @@ and off otherwise.
30607;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check 30651;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check
30608;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check 30652;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check
30609;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el" 30653;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el"
30610;;;;;; (17888 32281)) 30654;;;;;; (17963 20867))
30611;;; Generated autoloads from whitespace.el 30655;;; Generated autoloads from whitespace.el
30612 30656
30613(autoload (quote whitespace-toggle-leading-check) "whitespace" "\ 30657(autoload (quote whitespace-toggle-leading-check) "whitespace" "\
@@ -30843,7 +30887,7 @@ With arg, turn Winner mode on if and only if arg is positive.
30843;;;*** 30887;;;***
30844 30888
30845;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman" 30889;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
30846;;;;;; "woman.el" (17963 19299)) 30890;;;;;; "woman.el" (17963 21006))
30847;;; Generated autoloads from woman.el 30891;;; Generated autoloads from woman.el
30848 30892
30849(autoload (quote woman) "woman" "\ 30893(autoload (quote woman) "woman" "\
@@ -31017,8 +31061,8 @@ If PARSE-NS is non-nil, then QNAMES are expanded.
31017 31061
31018;;;*** 31062;;;***
31019 31063
31020;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17888 31064;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17963
31021;;;;;; 32281)) 31065;;;;;; 21011))
31022;;; Generated autoloads from xt-mouse.el 31066;;; Generated autoloads from xt-mouse.el
31023 31067
31024(defvar xterm-mouse-mode nil "\ 31068(defvar xterm-mouse-mode nil "\
@@ -31088,7 +31132,7 @@ Zippy goes to the analyst.
31088 31132
31089;;;*** 31133;;;***
31090 31134
31091;;;### (autoloads (zone) "zone" "play/zone.el" (17888 32281)) 31135;;;### (autoloads (zone) "zone" "play/zone.el" (17963 21010))
31092;;; Generated autoloads from play/zone.el 31136;;; Generated autoloads from play/zone.el
31093 31137
31094(autoload (quote zone) "zone" "\ 31138(autoload (quote zone) "zone" "\
@@ -31228,7 +31272,7 @@ Zone out, completely.
31228;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el" 31272;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
31229;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el" 31273;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
31230;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el" 31274;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
31231;;;;;; "x-dnd.el") (17963 20717 345010)) 31275;;;;;; "x-dnd.el") (17963 21179 886390))
31232 31276
31233;;;*** 31277;;;***
31234 31278
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index 39d51a280f5..84a865573af 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -111,17 +111,18 @@ A library name is equivalent to the file name that `load-library' would load."
111 (setq dependents (cons (car x) dependents)))) 111 (setq dependents (cons (car x) dependents))))
112 dependents)) 112 dependents))
113 113
114(defun read-feature (prompt) 114(defun read-feature (prompt &optional loaded-p)
115 "Read a feature name \(string\) from the minibuffer. 115 "Read feature name from the minibuffer, prompting with string PROMPT.
116Prompt with PROMPT and completing from `features', and 116If optional second arg LOADED-P is non-nil, the feature must be loaded
117return the feature \(symbol\)." 117from a file."
118 (intern (completing-read prompt 118 (intern
119 (mapcar (lambda (feature) 119 (completing-read prompt
120 (list (symbol-name feature))) 120 (cons nil features)
121 features) 121 (and loaded-p
122 ;; Complete only features loaded from a file 122 #'(lambda (f)
123 #'(lambda (f) (feature-file (intern (car f)))) 123 (and f ; ignore nil
124 t))) 124 (feature-file f))))
125 loaded-p)))
125 126
126(defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks) 127(defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
127(defvar unload-feature-special-hooks 128(defvar unload-feature-special-hooks
@@ -162,7 +163,10 @@ the package's feature list (before anything is unbound) in the
162variable `unload-hook-features-list' and could remove features from it 163variable `unload-hook-features-list' and could remove features from it
163in the event that the package has done something normally-ill-advised, 164in the event that the package has done something normally-ill-advised,
164such as redefining an Emacs function." 165such as redefining an Emacs function."
165 (interactive (list (read-feature "Feature: ") current-prefix-arg)) 166 (interactive
167 (list
168 (read-feature "Unload feature: " t)
169 current-prefix-arg))
166 (unless (featurep feature) 170 (unless (featurep feature)
167 (error "%s is not a currently loaded feature" (symbol-name feature))) 171 (error "%s is not a currently loaded feature" (symbol-name feature)))
168 (unless force 172 (unless force
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 2dd2e7af175..7992438df25 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -267,14 +267,17 @@ Wrapping around the alphabet implies successive repetitions of letters."
267 267
268;; Latin-1 268;; Latin-1
269 269
270(defconst footnote-latin-regexp "¹²³ºª§¶" 270(defconst footnote-latin-string "¹²³ºª§¶"
271 "String of Latin-1 footnoting characters.")
272
273(defconst footnote-latin-regexp (concat "[" footnote-latin-string "]")
271 "Regexp for Latin-1 footnoting characters.") 274 "Regexp for Latin-1 footnoting characters.")
272 275
273(defun Footnote-latin (n) 276(defun Footnote-latin (n)
274 "Latin-1 footnote style. 277 "Latin-1 footnote style.
275Use a range of Latin-1 non-ASCII characters for footnoting." 278Use a range of Latin-1 non-ASCII characters for footnoting."
276 (string (aref footnote-latin-regexp 279 (string (aref footnote-latin-string
277 (mod (1- n) (length footnote-latin-regexp))))) 280 (mod (1- n) (length footnote-latin-string)))))
278 281
279;;; list of all footnote styles 282;;; list of all footnote styles
280(defvar footnote-style-alist 283(defvar footnote-style-alist
@@ -291,14 +294,18 @@ See footnote-han.el, footnote-greek.el and footnote-hebrew.el for more
291exciting styles.") 294exciting styles.")
292 295
293(defcustom footnote-style 'numeric 296(defcustom footnote-style 'numeric
294 "*Style used for footnoting. 297 "*Default style used for footnoting.
295numeric == 1, 2, 3, ... 298numeric == 1, 2, 3, ...
296english-lower == a, b, c, ... 299english-lower == a, b, c, ...
297english-upper == A, B, C, ... 300english-upper == A, B, C, ...
298roman-lower == i, ii, iii, iv, v, ... 301roman-lower == i, ii, iii, iv, v, ...
299roman-upper == I, II, III, IV, V, ... 302roman-upper == I, II, III, IV, V, ...
300latin == ¹ ² ³ º ª § ¶ 303latin == ¹ ² ³ º ª § ¶
301See also variables `footnote-start-tag' and `footnote-end-tag'." 304See also variables `footnote-start-tag' and `footnote-end-tag'.
305
306Customizing this variable has no effect on buffers already
307displaying footnotes. You can change the style of existing
308buffers using the command `Footnote-set-style'."
302 :type (cons 'choice (mapcar (lambda (x) (list 'const (car x))) 309 :type (cons 'choice (mapcar (lambda (x) (list 'const (car x)))
303 footnote-style-alist)) 310 footnote-style-alist))
304 :group 'footnote) 311 :group 'footnote)
@@ -654,7 +661,7 @@ delete the footnote with that number."
654 (while (< i notes) 661 (while (< i notes)
655 (setq alist-ptr (nth i footnote-pointer-marker-alist)) 662 (setq alist-ptr (nth i footnote-pointer-marker-alist))
656 (setq alist-txt (nth i footnote-text-marker-alist)) 663 (setq alist-txt (nth i footnote-text-marker-alist))
657 (unless (eq (1+ i) (car alist-ptr)) 664 (unless (= (1+ i) (car alist-ptr))
658 (Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt)) 665 (Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt))
659 (setq i (1+ i)))))) 666 (setq i (1+ i))))))
660 667
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 5e534b2d47d..bfdd5048877 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1959,9 +1959,13 @@ is non-nil if the user has supplied the password interactively.
1959 (base64-header-field-end 1959 (base64-header-field-end
1960 (save-excursion 1960 (save-excursion
1961 (goto-char start) 1961 (goto-char start)
1962 (re-search-forward 1962 (and (re-search-forward
1963 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" 1963 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
1964 header-end t)))) 1964 header-end t)
1965 ;; Don't try to decode non-text data.
1966 (re-search-forward
1967 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
1968 header-end t)))))
1965 (if quoted-printable-header-field-end 1969 (if quoted-printable-header-field-end
1966 (save-excursion 1970 (save-excursion
1967 (unless 1971 (unless
@@ -2061,10 +2065,16 @@ is non-nil if the user has supplied the password interactively.
2061 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*" 2065 "^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*"
2062 header-end t))) 2066 header-end t)))
2063 (base64-header-field-end 2067 (base64-header-field-end
2064 (save-excursion 2068 (and
2065 (re-search-forward 2069 (save-excursion
2066 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*" 2070 (re-search-forward
2067 header-end t))) 2071 "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
2072 header-end t))
2073 ;; Don't decode non-text data.
2074 (save-excursion
2075 (re-search-forward
2076 "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
2077 header-end t))))
2068 (size 2078 (size
2069 ;; Get the numeric value from the Content-Length field. 2079 ;; Get the numeric value from the Content-Length field.
2070 (save-excursion 2080 (save-excursion
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 2bb1a6ed0fa..c0fcdf8ff43 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -620,16 +620,16 @@ Like Text Mode but with these additional commands:
620\\[mail-send-and-exit] mail-send-and-exit (send the message and exit) 620\\[mail-send-and-exit] mail-send-and-exit (send the message and exit)
621 621
622Here are commands that move to a header field (and create it if there isn't): 622Here are commands that move to a header field (and create it if there isn't):
623 \\[mail-to] move to To: \\[mail-subject] move to Subject: 623 \\[mail-to] move to To: \\[mail-subject] move to Subj:
624 \\[mail-cc] move to CC: \\[mail-bcc] move to BCC: 624 \\[mail-bcc] move to BCC: \\[mail-cc] move to CC:
625 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To: 625 \\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To:
626 \\[mail-mail-reply-to] move to Mail-Reply-To: 626 \\[mail-mail-reply-to] move to Mail-Reply-To:
627 \\[mail-mail-followup-to] move to Mail-Followup-To: 627 \\[mail-mail-followup-to] move to Mail-Followup-To:
628\\[mail-text] mail-text (move to beginning of message text). 628\\[mail-text] move to message text.
629\\[mail-signature] mail-signature (insert `mail-signature-file' file). 629\\[mail-signature] mail-signature (insert `mail-signature-file' file).
630\\[mail-yank-original] mail-yank-original (insert current message, in Rmail). 630\\[mail-yank-original] mail-yank-original (insert current message, in Rmail).
631\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked). 631\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked).
632\\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC). 632\\[mail-sent-via] mail-sent-via (add a sent-via field for each To or CC).
633Turning on Mail mode runs the normal hooks `text-mode-hook' and 633Turning on Mail mode runs the normal hooks `text-mode-hook' and
634`mail-mode-hook' (in that order)." 634`mail-mode-hook' (in that order)."
635 (make-local-variable 'mail-reply-action) 635 (make-local-variable 'mail-reply-action)
@@ -1392,7 +1392,7 @@ Create a Mail-Followup-To field if none."
1392 nil))) 1392 nil)))
1393 1393
1394(defun mail-text () 1394(defun mail-text ()
1395 "Move point to beginning of message text." 1395 "Move point to beginning of text field."
1396 (interactive) 1396 (interactive)
1397 (expand-abbrev) 1397 (expand-abbrev)
1398 (goto-char (mail-text-start))) 1398 (goto-char (mail-text-start)))
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index e1e742a1d72..66c4bdd8df7 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -691,20 +691,22 @@ This is relative to `smtpmail-queue-dir'.")
691 (>= (car response-code) 400)) 691 (>= (car response-code) 400))
692 (throw 'done nil))) 692 (throw 'done nil)))
693 (dolist (line (cdr (cdr response-code))) 693 (dolist (line (cdr (cdr response-code)))
694 (let ((name (mapcar (lambda (s) (intern (downcase s))) 694 (let ((name
695 (split-string (substring line 4) "[ ]")))) 695 (with-case-table ascii-case-table
696 (mapcar (lambda (s) (intern (downcase s)))
697 (split-string (substring line 4) "[ ]")))))
696 (and (eq (length name) 1) 698 (and (eq (length name) 1)
697 (setq name (car name))) 699 (setq name (car name)))
698 (and name 700 (and name
699 (cond ((memq (if (consp name) (car name) name) 701 (cond ((memq (if (consp name) (car name) name)
700 '(verb xvrb 8bitmime onex xone 702 '(verb xvrb 8bitmime onex xone
701 expn size dsn etrn 703 expn size dsn etrn
702 enhancedstatuscodes 704 enhancedstatuscodes
703 help xusr 705 help xusr
704 auth=login auth starttls)) 706 auth=login auth starttls))
705 (setq supported-extensions 707 (setq supported-extensions
706 (cons name supported-extensions))) 708 (cons name supported-extensions)))
707 (smtpmail-warn-about-unknown-extensions 709 (smtpmail-warn-about-unknown-extensions
708 (message "Unknown extension %s" name))))))) 710 (message "Unknown extension %s" name)))))))
709 711
710 (if (and do-starttls 712 (if (and do-starttls
diff --git a/lisp/man.el b/lisp/man.el
index a6aced25e3d..0484c032e34 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -628,7 +628,14 @@ a new value."
628 (setq Man-support-local-filenames 628 (setq Man-support-local-filenames
629 (with-temp-buffer 629 (with-temp-buffer
630 (and (equal (condition-case nil 630 (and (equal (condition-case nil
631 (call-process manual-program nil t nil "--help") 631 (let ((default-directory
632 ;; Assure that `default-directory' exists
633 ;; and is readable.
634 (if (and (file-directory-p default-directory)
635 (file-readable-p default-directory))
636 default-directory
637 (expand-file-name "~/"))))
638 (call-process manual-program nil t nil "--help"))
632 (error nil)) 639 (error nil))
633 0) 640 0)
634 (progn 641 (progn
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 9595fb941f1..023e5286815 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1201,8 +1201,8 @@ mail status in mode line"))
1201 '(menu-item "Compile..." compile 1201 '(menu-item "Compile..." compile
1202 :help "Invoke compiler or Make, view compilation errors")) 1202 :help "Invoke compiler or Make, view compilation errors"))
1203(define-key menu-bar-tools-menu [grep] 1203(define-key menu-bar-tools-menu [grep]
1204 '(menu-item "Search Files (with grep)..." grep 1204 '(menu-item "Search Files (Grep)..." grep
1205 :help "Search files for strings or regexps (with grep)")) 1205 :help "Search files for strings or regexps (with Grep)"))
1206 1206
1207 1207
1208;; The "Help" menu items 1208;; The "Help" menu items
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 8e9d931c15c..94d19d99a21 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1521,7 +1521,11 @@ This must be bound to a mouse drag event."
1521 (with-current-buffer (window-buffer (posn-window posn)) 1521 (with-current-buffer (window-buffer (posn-window posn))
1522 (if (numberp (posn-point posn)) 1522 (if (numberp (posn-point posn))
1523 (setq beg (posn-point posn))) 1523 (setq beg (posn-point posn)))
1524 (move-overlay mouse-secondary-overlay beg (posn-point end))))) 1524 (move-overlay mouse-secondary-overlay beg (posn-point end))
1525 (x-set-selection
1526 'SECONDARY
1527 (buffer-substring (overlay-start mouse-secondary-overlay)
1528 (overlay-end mouse-secondary-overlay))))))
1525 1529
1526(defun mouse-drag-secondary (start-event) 1530(defun mouse-drag-secondary (start-event)
1527 "Set the secondary selection to the text that the mouse is dragged over. 1531 "Set the secondary selection to the text that the mouse is dragged over.
diff --git a/lisp/net/tls.el b/lisp/net/tls.el
index 9de74ca19d4..cdbb7bef5a7 100644
--- a/lisp/net/tls.el
+++ b/lisp/net/tls.el
@@ -125,12 +125,17 @@ BUFFER is the buffer (or buffer-name) to associate with the process.
125 with any buffer 125 with any buffer
126Third arg is name of the host to connect to, or its IP address. 126Third arg is name of the host to connect to, or its IP address.
127Fourth arg PORT is an integer specifying a port to connect to." 127Fourth arg PORT is an integer specifying a port to connect to."
128 (let ((cmds tls-program) cmd done) 128 (let ((cmds tls-program)
129 (use-temp-buffer (null buffer))
130 process cmd done)
131 (if use-temp-buffer
132 (setq buffer (generate-new-buffer " TLS")))
129 (message "Opening TLS connection to `%s'..." host) 133 (message "Opening TLS connection to `%s'..." host)
130 (while (and (not done) (setq cmd (pop cmds))) 134 (while (and (not done) (setq cmd (pop cmds)))
131 (message "Opening TLS connection with `%s'..." cmd) 135 (message "Opening TLS connection with `%s'..." cmd)
132 (let* ((process-connection-type tls-process-connection-type) 136 (let ((process-connection-type tls-process-connection-type)
133 (process (start-process 137 response)
138 (setq process (start-process
134 name buffer shell-file-name shell-command-switch 139 name buffer shell-file-name shell-command-switch
135 (format-spec 140 (format-spec
136 cmd 141 cmd
@@ -139,7 +144,6 @@ Fourth arg PORT is an integer specifying a port to connect to."
139 ?p (if (integerp port) 144 ?p (if (integerp port)
140 (int-to-string port) 145 (int-to-string port)
141 port))))) 146 port)))))
142 response)
143 (while (and process 147 (while (and process
144 (memq (process-status process) '(open run)) 148 (memq (process-status process) '(open run))
145 (save-excursion 149 (save-excursion
@@ -155,6 +159,9 @@ Fourth arg PORT is an integer specifying a port to connect to."
155 (delete-process process)))) 159 (delete-process process))))
156 (message "Opening TLS connection to `%s'...%s" 160 (message "Opening TLS connection to `%s'...%s"
157 host (if done "done" "failed")) 161 host (if done "done" "failed"))
162 (when use-temp-buffer
163 (if done (set-process-buffer process nil))
164 (kill-buffer buffer))
158 done)) 165 done))
159 166
160(provide 'tls) 167(provide 'tls)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7ff9b2d956b..20ac73d0f75 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -4422,10 +4422,20 @@ Falls back to normal file name handler if no tramp file name handler exists."
4422 (tramp-completion-run-real-handler operation args))))) 4422 (tramp-completion-run-real-handler operation args)))))
4423 4423
4424;;;###autoload 4424;;;###autoload
4425(defsubst tramp-register-file-name-handlers () 4425(defsubst tramp-register-file-name-handler ()
4426 "Add tramp file name handlers to `file-name-handler-alist'." 4426 "Add tramp file name handler to `file-name-handler-alist'."
4427 (add-to-list 'file-name-handler-alist 4427 (add-to-list 'file-name-handler-alist
4428 (cons tramp-file-name-regexp 'tramp-file-name-handler)) 4428 (cons tramp-file-name-regexp 'tramp-file-name-handler))
4429 ;; If jka-compr is already loaded, move it to the front of
4430 ;; `file-name-handler-alist'.
4431 (let ((jka (rassoc 'jka-compr-handler file-name-handler-alist)))
4432 (when jka
4433 (setq file-name-handler-alist
4434 (cons jka (delete jka file-name-handler-alist))))))
4435
4436;;;###autoload
4437(defsubst tramp-register-completion-file-name-handler ()
4438 "Add tramp completion file name handler to `file-name-handler-alist'."
4429 ;; `partial-completion-mode' is unknown in XEmacs. So we should 4439 ;; `partial-completion-mode' is unknown in XEmacs. So we should
4430 ;; load it unconditionally there. In the GNU Emacs case, method/ 4440 ;; load it unconditionally there. In the GNU Emacs case, method/
4431 ;; user/host name completion shall be bound to `partial-completion-mode'. 4441 ;; user/host name completion shall be bound to `partial-completion-mode'.
@@ -4443,13 +4453,18 @@ Falls back to normal file name handler if no tramp file name handler exists."
4443 (setq file-name-handler-alist 4453 (setq file-name-handler-alist
4444 (cons jka (delete jka file-name-handler-alist)))))) 4454 (cons jka (delete jka file-name-handler-alist))))))
4445 4455
4456;; `tramp-file-name-handler' must be registered before evaluation of
4457;; site-start and init files, because there might exist remote files
4458;; already, f.e. files kept via recentf-mode.
4459;;;###autoload(tramp-register-file-name-handler)
4446;; During autoload, it shall be checked whether 4460;; During autoload, it shall be checked whether
4447;; `partial-completion-mode' is active. Therefore registering will be 4461;; `partial-completion-mode' is active. Therefore registering of
4448;; delayed. 4462;; `tramp-completion-file-name-handler' will be delayed.
4449;;;###autoload(add-hook 4463;;;###autoload(add-hook
4450;;;###autoload 'after-init-hook 4464;;;###autoload 'after-init-hook
4451;;;###autoload '(lambda () (tramp-register-file-name-handlers))) 4465;;;###autoload '(lambda () (tramp-register-completion-file-name-handler)))
4452(tramp-register-file-name-handlers) 4466(tramp-register-file-name-handler)
4467(tramp-register-completion-file-name-handler)
4453 4468
4454;;;###autoload 4469;;;###autoload
4455(defun tramp-unload-file-name-handlers () 4470(defun tramp-unload-file-name-handlers ()
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 7fce0f7bde8..b0a166465fa 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -391,7 +391,9 @@ and raises an error or returns nil if NOERROR is non-nil."
391 pt (or limit (point-max)) nil nil 391 pt (or limit (point-max)) nil nil
392 (list nil nil nil (nth 3 s) nil nil nil nil) 392 (list nil nil nil (nth 3 s) nil nil nil nil)
393 t))) 393 t)))
394 (if (not (and (nth 8 s) (not (nth 3 s)))) 394 (if (or (not (and (nth 8 s) (not (nth 3 s))))
395 ;; Make sure the comment starts after PT.
396 (< (nth 8 s) pt))
395 (unless noerror (error "No comment")) 397 (unless noerror (error "No comment"))
396 ;; We found the comment. 398 ;; We found the comment.
397 (let ((pos (point)) 399 (let ((pos (point))
diff --git a/lisp/outline.el b/lisp/outline.el
index 579997754f2..d0c121a12c4 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1000,7 +1000,8 @@ Stop at the first and last subheadings of a superior heading."
1000 (error "No following same-level heading")))))) 1000 (error "No following same-level heading"))))))
1001 1001
1002(defun outline-get-next-sibling () 1002(defun outline-get-next-sibling ()
1003 "Move to next heading of the same level, and return point or nil if none." 1003 "Move to next heading of the same level, and return point.
1004If there is no such heading, return nil."
1004 (let ((level (funcall outline-level))) 1005 (let ((level (funcall outline-level)))
1005 (outline-next-visible-heading 1) 1006 (outline-next-visible-heading 1)
1006 (while (and (not (eobp)) (> (funcall outline-level) level)) 1007 (while (and (not (eobp)) (> (funcall outline-level) level))
@@ -1026,15 +1027,18 @@ Stop at the first and last subheadings of a superior heading."
1026 (error "No previous same-level heading")))))) 1027 (error "No previous same-level heading"))))))
1027 1028
1028(defun outline-get-last-sibling () 1029(defun outline-get-last-sibling ()
1029 "Move to previous heading of the same level, and return point or nil if none." 1030 "Move to previous heading of the same level, and return point.
1030 (let ((level (funcall outline-level))) 1031If there is no such heading, return nil."
1032 (let ((opoint (point))
1033 (level (funcall outline-level)))
1031 (outline-previous-visible-heading 1) 1034 (outline-previous-visible-heading 1)
1032 (while (and (> (funcall outline-level) level) 1035 (when (and (/= (point) opoint) (outline-on-heading-p))
1033 (not (bobp))) 1036 (while (and (> (funcall outline-level) level)
1034 (outline-previous-visible-heading 1)) 1037 (not (bobp)))
1035 (if (< (funcall outline-level) level) 1038 (outline-previous-visible-heading 1))
1036 nil 1039 (if (< (funcall outline-level) level)
1037 (point)))) 1040 nil
1041 (point)))))
1038 1042
1039(defun outline-headers-as-kill (beg end) 1043(defun outline-headers-as-kill (beg end)
1040 "Save the visible outline headers in region at the start of the kill ring. 1044 "Save the visible outline headers in region at the start of the kill ring.
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index c4840059f64..c1da9fb9132 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -33,7 +33,6 @@
33;; To use pcomplete with shell-mode, for example, you will need the 33;; To use pcomplete with shell-mode, for example, you will need the
34;; following in your .emacs file: 34;; following in your .emacs file:
35;; 35;;
36;; (load "pcmpl-auto")
37;; (add-hook 'shell-mode-hook 'pcomplete-shell-setup) 36;; (add-hook 'shell-mode-hook 'pcomplete-shell-setup)
38;; 37;;
39;; Most of the code below simply provides support mechanisms for 38;; Most of the code below simply provides support mechanisms for
@@ -947,10 +946,9 @@ generate the completions list. This means that the hook
947(unless (fboundp 'event-matches-key-specifier-p) 946(unless (fboundp 'event-matches-key-specifier-p)
948 (defalias 'event-matches-key-specifier-p 'eq)) 947 (defalias 'event-matches-key-specifier-p 'eq))
949 948
950(if (fboundp 'read-event) 949(defun pcomplete-read-event (&optional prompt)
951 (defsubst pcomplete-read-event (&optional prompt) 950 (if (fboundp 'read-event)
952 (read-event prompt)) 951 (read-event prompt)
953 (defsubst pcomplete-read-event (&optional prompt)
954 (aref (read-key-sequence prompt) 0))) 952 (aref (read-key-sequence prompt) 0)))
955 953
956(unless (fboundp 'event-basic-type) 954(unless (fboundp 'event-basic-type)
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index 5dad84fadc5..5cf0c37fb62 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -519,6 +519,8 @@ in progress because it is an animated attempt."
519 (y-or-n-p prompt) 519 (y-or-n-p prompt)
520 t)) 520 t))
521 521
522(random t)
523
522(provide '5x5) 524(provide '5x5)
523 525
524;;; arch-tag: ec4dabd5-572d-41ea-b48c-ec5ce0d68fa9 526;;; arch-tag: ec4dabd5-572d-41ea-b48c-ec5ce0d68fa9
diff --git a/lisp/play/animate.el b/lisp/play/animate.el
index 9bad228315a..9d180a5f338 100644
--- a/lisp/play/animate.el
+++ b/lisp/play/animate.el
@@ -189,5 +189,9 @@ You can specify the one's name by NAME; the default value is \"Sarah\"."
189 (animate-string "my sunshine" 18 34) 189 (animate-string "my sunshine" 18 34)
190 (animate-string "to stay!" 19 34)) 190 (animate-string "to stay!" 19 34))
191 191
192(random t)
193
194(provide 'animate)
195
192;;; arch-tag: 275289a3-6ac4-41da-b527-a1147045392f 196;;; arch-tag: 275289a3-6ac4-41da-b527-a1147045392f
193;;; animate.el ends here 197;;; animate.el ends here
diff --git a/lisp/play/dissociate.el b/lisp/play/dissociate.el
index 8f88bdb9788..1c0e89e7c7d 100644
--- a/lisp/play/dissociate.el
+++ b/lisp/play/dissociate.el
@@ -99,6 +99,8 @@ Default is 2."
99 (funcall search-function overlap opoint t)))))) 99 (funcall search-function overlap opoint t))))))
100 (sit-for 0)))) 100 (sit-for 0))))
101 101
102(random t)
103
102(provide 'dissociate) 104(provide 'dissociate)
103 105
104;;; arch-tag: 90d197d1-409b-45c5-a0b5-fbfb2e06334f 106;;; arch-tag: 90d197d1-409b-45c5-a0b5-fbfb2e06334f
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index cd88b9cb315..4c3cc5b4ce8 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1657,6 +1657,8 @@ Hack on previous word, setting global variable OWNER to correct result."
1657 1657
1658(defun doctor-chat () (doctor-type (doc$ chatlst))) 1658(defun doctor-chat () (doctor-type (doc$ chatlst)))
1659 1659
1660(random t)
1661
1660(provide 'doctor) 1662(provide 'doctor)
1661 1663
1662;; arch-tag: 579380f6-4902-4ea5-bccb-6339e30e1257 1664;; arch-tag: 579380f6-4902-4ea5-bccb-6339e30e1257
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index c05a46b90f6..8c04f254a0b 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -1209,6 +1209,8 @@ If the game is finished, this command requests for another game."
1209 (move-to-column (+ gomoku-x-offset 1209 (move-to-column (+ gomoku-x-offset
1210 (* gomoku-square-width (1- gomoku-board-width))))) 1210 (* gomoku-square-width (1- gomoku-board-width)))))
1211 1211
1212(random t)
1213
1212(provide 'gomoku) 1214(provide 'gomoku)
1213 1215
1214;;; arch-tag: b1b8205e-77fc-4597-b373-3ea2c04311eb 1216;;; arch-tag: b1b8205e-77fc-4597-b373-3ea2c04311eb
diff --git a/lisp/play/landmark.el b/lisp/play/landmark.el
index 4fe126fec0a..e8d0b21f47d 100644
--- a/lisp/play/landmark.el
+++ b/lisp/play/landmark.el
@@ -1705,6 +1705,8 @@ Use \\[describe-mode] for more info."
1705;;;allout-layout: (0 : -1 -1 0) 1705;;;allout-layout: (0 : -1 -1 0)
1706;;;End: 1706;;;End:
1707 1707
1708(random t)
1709
1708(provide 'landmark) 1710(provide 'landmark)
1709 1711
1710;;; arch-tag: ae5031be-96e6-459e-a3df-1df53117d3f2 1712;;; arch-tag: ae5031be-96e6-459e-a3df-1df53117d3f2
diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el
index f1901a129dd..11f6364e609 100644
--- a/lisp/play/tetris.el
+++ b/lisp/play/tetris.el
@@ -652,6 +652,8 @@ tetris-mode keybindings:
652 (tetris-mode) 652 (tetris-mode)
653 (tetris-start-game)) 653 (tetris-start-game))
654 654
655(random t)
656
655(provide 'tetris) 657(provide 'tetris)
656 658
657;;; arch-tag: fb780d53-3ff0-49f0-8e19-f7f13cf2d49e 659;;; arch-tag: fb780d53-3ff0-49f0-8e19-f7f13cf2d49e
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index 05f73b8030a..256a316c3cf 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -692,6 +692,7 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
692 (life (or zone-pgm-random-life-wait (random 4))) 692 (life (or zone-pgm-random-life-wait (random 4)))
693 (kill-buffer nil)))) 693 (kill-buffer nil))))
694 694
695(random t)
695 696
696;;;;;;;;;;;;;;; 697;;;;;;;;;;;;;;;
697(provide 'zone) 698(provide 'zone)
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index b0c15bff903..b3e0e381135 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -988,6 +988,7 @@ nor helpful.
988Note that this function might do hidden buffer changes. See the 988Note that this function might do hidden buffer changes. See the
989comment at the start of cc-engine.el for more info." 989comment at the start of cc-engine.el for more info."
990 (interactive "p") 990 (interactive "p")
991 (or arg (setq arg 1))
991 (save-match-data 992 (save-match-data
992 (c-save-buffer-state ; ensures the buffer is writable. 993 (c-save-buffer-state ; ensures the buffer is writable.
993 nil 994 nil
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 4f9e1947738..79043c87b63 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1262,11 +1262,11 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'."
1262 (backward-char) 1262 (backward-char)
1263 (skip-chars-backward " \t") 1263 (skip-chars-backward " \t")
1264 (setq beg (point)) 1264 (setq beg (point))
1265 (c-save-buffer-state () (c-on-identifier)) 1265 (and (c-save-buffer-state () (c-on-identifier))
1266 ;; Don't add a space into #define FOO().... 1266 ;; Don't add a space into #define FOO()....
1267 (not (and (c-beginning-of-macro) 1267 (not (and (c-beginning-of-macro)
1268 (c-forward-over-cpp-define-id) 1268 (c-forward-over-cpp-define-id)
1269 (eq (point) beg))))) 1269 (eq (point) beg))))))
1270 (save-excursion 1270 (save-excursion
1271 (delete-region beg end) 1271 (delete-region beg end)
1272 (goto-char beg) 1272 (goto-char beg)
@@ -1477,9 +1477,7 @@ No indentation or other \"electric\" behavior is performed."
1477 (c-syntactic-re-search-forward "{") 1477 (c-syntactic-re-search-forward "{")
1478 (backward-char) 1478 (backward-char)
1479 (setq n (1- n))) 1479 (setq n (1- n)))
1480 (;; (or (eq where 'at-header) (eq where 'outwith-function) 1480 ((memq where '(at-header outwith-function at-function-end in-trailer))
1481;; (eq where 'at-function-end) (eq where 'in-trailer))
1482 (memq where '(at-header outwith-function at-function-end in-trailer))
1483 (c-syntactic-skip-backward "^}") 1481 (c-syntactic-skip-backward "^}")
1484 (when (eq (char-before) ?\}) 1482 (when (eq (char-before) ?\})
1485 (backward-sexp) 1483 (backward-sexp)
@@ -1513,7 +1511,8 @@ defun."
1513 (or arg (setq arg 1)) 1511 (or arg (setq arg 1))
1514 1512
1515 (c-save-buffer-state 1513 (c-save-buffer-state
1516 ((start (point)) 1514 (beginning-of-defun-function end-of-defun-function
1515 (start (point))
1517 where paren-state pos) 1516 where paren-state pos)
1518 1517
1519 ;; Move back out of any macro/comment/string we happen to be in. 1518 ;; Move back out of any macro/comment/string we happen to be in.
@@ -1526,8 +1525,7 @@ defun."
1526 (if (< arg 0) 1525 (if (< arg 0)
1527 ;; Move forward to the closing brace of a function. 1526 ;; Move forward to the closing brace of a function.
1528 (progn 1527 (progn
1529 (if ;; (or (eq where 'at-function-end) (eq where 'outwith-function)) 1528 (if (memq where '(at-function-end outwith-function))
1530 (memq where '(at-function-end outwith-function))
1531 (setq arg (1+ arg))) 1529 (setq arg (1+ arg)))
1532 (if (< arg 0) 1530 (if (< arg 0)
1533 (setq arg (c-forward-to-nth-EOF-} (- arg) where))) 1531 (setq arg (c-forward-to-nth-EOF-} (- arg) where)))
@@ -1587,13 +1585,11 @@ defun."
1587 ((eq where 'in-trailer) 1585 ((eq where 'in-trailer)
1588 (c-syntactic-skip-backward "^}") 1586 (c-syntactic-skip-backward "^}")
1589 (setq n (1- n))) 1587 (setq n (1- n)))
1590 (;; (or (eq where 'at-function-end) (eq where 'outwith-function) 1588 ((memq where '(at-function-end outwith-function at-header in-header))
1591;; (eq where 'at-header) (eq where 'in-header)) 1589 (when (c-syntactic-re-search-forward "{" nil 'eob)
1592 (memq where '(at-function-end outwith-function at-header in-header)) 1590 (backward-char)
1593 (c-syntactic-re-search-forward "{") 1591 (forward-sexp)
1594 (backward-char) 1592 (setq n (1- n))))
1595 (forward-sexp)
1596 (setq n (1- n)))
1597 (t (error "c-forward-to-nth-EOF-}: `where' is %s" where))) 1593 (t (error "c-forward-to-nth-EOF-}: `where' is %s" where)))
1598 1594
1599 ;; Each time round the loop, go forward to a "}" at the outermost level. 1595 ;; Each time round the loop, go forward to a "}" at the outermost level.
@@ -1618,7 +1614,8 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
1618 (or arg (setq arg 1)) 1614 (or arg (setq arg 1))
1619 1615
1620 (c-save-buffer-state 1616 (c-save-buffer-state
1621 ((start (point)) 1617 (beginning-of-defun-function end-of-defun-function
1618 (start (point))
1622 where paren-state pos) 1619 where paren-state pos)
1623 1620
1624 ;; Move back out of any macro/comment/string we happen to be in. 1621 ;; Move back out of any macro/comment/string we happen to be in.
@@ -1631,15 +1628,12 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
1631 (if (< arg 0) 1628 (if (< arg 0)
1632 ;; Move backwards to the } of a function 1629 ;; Move backwards to the } of a function
1633 (progn 1630 (progn
1634 (if ;; (or (eq where 'at-header) (eq where 'outwith-function)) 1631 (if (memq where '(at-header outwith-function))
1635 (memq where '(at-header outwith-function))
1636 (setq arg (1+ arg))) 1632 (setq arg (1+ arg)))
1637 (if (< arg 0) 1633 (if (< arg 0)
1638 (setq arg (c-backward-to-nth-BOF-{ (- arg) where))) 1634 (setq arg (c-backward-to-nth-BOF-{ (- arg) where)))
1639 (when (and (= arg 0) 1635 (if (= arg 0)
1640 (c-syntactic-skip-backward "^}") 1636 (c-syntactic-skip-backward "^}")))
1641 (eq (char-before) ?\}))
1642 t))
1643 1637
1644 ;; Move forward to the } of a function 1638 ;; Move forward to the } of a function
1645 (if (> arg 0) 1639 (if (> arg 0)
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 43fa0ab5937..8c10df649de 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -74,12 +74,12 @@
74; (eval-after-load "font-lock" ; 2006-07-09. font-lock is now preloaded 74; (eval-after-load "font-lock" ; 2006-07-09. font-lock is now preloaded
75; ' 75; '
76(if (and (not (featurep 'cc-fix)) ; only load the file once. 76(if (and (not (featurep 'cc-fix)) ; only load the file once.
77 (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS 77 (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
78 ; to make the call to f-l-c-k throw an error. 78 ; to make the call to f-l-c-k throw an error.
79 (let (font-lock-keywords) 79 (let (font-lock-keywords)
80 (font-lock-compile-keywords '("\\<\\>")) 80 (font-lock-compile-keywords '("\\<\\>"))
81 font-lock-keywords)) ; did the previous call foul this up? 81 font-lock-keywords)) ; did the previous call foul this up?
82 (load "cc-fix")) ;) 82 (load "cc-fix")) ;)
83 83
84;; The above takes care of the delayed loading, but this is necessary 84;; The above takes care of the delayed loading, but this is necessary
85;; to ensure correct byte compilation. 85;; to ensure correct byte compilation.
@@ -708,7 +708,8 @@ be after it."
708 ;; c-parse-state to between 3 and 60 times faster when 708 ;; c-parse-state to between 3 and 60 times faster when
709 ;; braces are hung. It can also degrade performance by 709 ;; braces are hung. It can also degrade performance by
710 ;; about as much when braces are not hung. 710 ;; about as much when braces are not hung.
711 '(let (pos) 711 '(let (beginning-of-defun-function end-of-defun-function
712 pos)
712 (while (not pos) 713 (while (not pos)
713 (save-restriction 714 (save-restriction
714 (widen) 715 (widen)
@@ -731,7 +732,8 @@ be after it."
731 )) 732 ))
732 (goto-char pos))) 733 (goto-char pos)))
733 ;; Emacs, which doesn't have buffer-syntactic-context-depth 734 ;; Emacs, which doesn't have buffer-syntactic-context-depth
734 (beginning-of-defun)) 735 (let (beginning-of-defun-function end-of-defun-function)
736 (beginning-of-defun)))
735 ;; if defun-prompt-regexp is non-nil, b-o-d won't leave us at the 737 ;; if defun-prompt-regexp is non-nil, b-o-d won't leave us at the
736 ;; open brace. 738 ;; open brace.
737 (and defun-prompt-regexp 739 (and defun-prompt-regexp
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index a901ee07454..717016af7ea 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -1917,9 +1917,8 @@ comment at the start of cc-engine.el for more info."
1917 ;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the 1917 ;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the
1918 ;; region? This is a "heuristic" function. ..... 1918 ;; region? This is a "heuristic" function. .....
1919 ;; 1919 ;;
1920 ;; The motivation for the second bit is to check whether the removal of this 1920 ;; The motivation for the second bit is to check whether removing this
1921 ;; space is to check whether removing this region would coalesce two 1921 ;; region would coalesce two symbols.
1922 ;; symbols.
1923 ;; 1922 ;;
1924 ;; FIXME!!! This function doesn't check virtual semicolons in any way. Be 1923 ;; FIXME!!! This function doesn't check virtual semicolons in any way. Be
1925 ;; careful about using this function for, e.g. AWK. (2007/3/7) 1924 ;; careful about using this function for, e.g. AWK. (2007/3/7)
@@ -5372,7 +5371,7 @@ comment at the start of cc-engine.el for more info."
5372 ;; True if there's a prefix match outside the outermost 5371 ;; True if there's a prefix match outside the outermost
5373 ;; paren pair that surrounds the declarator. 5372 ;; paren pair that surrounds the declarator.
5374 got-prefix-before-parens 5373 got-prefix-before-parens
5375y ;; True if there's a suffix match outside the outermost 5374 ;; True if there's a suffix match outside the outermost
5376 ;; paren pair that surrounds the declarator. The value is 5375 ;; paren pair that surrounds the declarator. The value is
5377 ;; the position of the first suffix match. 5376 ;; the position of the first suffix match.
5378 got-suffix-after-parens 5377 got-suffix-after-parens
@@ -5878,19 +5877,23 @@ y ;; True if there's a suffix match outside the outermost
5878 5877
5879(defun c-forward-label (&optional assume-markup preceding-token-end limit) 5878(defun c-forward-label (&optional assume-markup preceding-token-end limit)
5880 ;; Assuming that point is at the beginning of a token, check if it starts a 5879 ;; Assuming that point is at the beginning of a token, check if it starts a
5881 ;; label and if so move over it and return t, otherwise don't move and 5880 ;; label and if so move over it and return non-nil (t in default situations,
5882 ;; return nil. "Label" here means "most things with a colon". 5881 ;; specific symbols (see below) for interesting situations), otherwise don't
5882 ;; move and return nil. "Label" here means "most things with a colon".
5883 ;; 5883 ;;
5884 ;; More precisely, a "label" is regarded as one of: 5884 ;; More precisely, a "label" is regarded as one of:
5885 ;; (i) a goto target like "foo:"; 5885 ;; (i) a goto target like "foo:" - returns the symbol `goto-target';
5886 ;; (ii) A case label - either the entire construct "case FOO:" or just the 5886 ;; (ii) A case label - either the entire construct "case FOO:", or just the
5887 ;; bare "case", should the colon be missing; 5887 ;; bare "case", should the colon be missing. We return t;
5888 ;; (iii) a keyword which needs a colon, like "default:" or "private:"; 5888 ;; (iii) a keyword which needs a colon, like "default:" or "private:"; We
5889 ;; return t;
5889 ;; (iv) One of QT's "extended" C++ variants of 5890 ;; (iv) One of QT's "extended" C++ variants of
5890 ;; "private:"/"protected:"/"public:"/"more:" looking like "public slots:". 5891 ;; "private:"/"protected:"/"public:"/"more:" looking like "public slots:".
5892 ;; Returns the symbol `qt-2kwds-colon'.
5893 ;; (v) QT's construct "signals:". Returns the symbol `qt-1kwd-colon'.
5891 ;; (v) One of the keywords matched by `c-opt-extra-label-key' (without any 5894 ;; (v) One of the keywords matched by `c-opt-extra-label-key' (without any
5892 ;; colon). Currently (2006-03), this applies only to Objective C's 5895 ;; colon). Currently (2006-03), this applies only to Objective C's
5893 ;; keywords "@private", "@protected", and "@public". 5896 ;; keywords "@private", "@protected", and "@public". Returns t.
5894 ;; 5897 ;;
5895 ;; One of the things which will NOT be recognised as a label is a bit-field 5898 ;; One of the things which will NOT be recognised as a label is a bit-field
5896 ;; element of a struct, something like "int foo:5". 5899 ;; element of a struct, something like "int foo:5".
@@ -5919,8 +5922,10 @@ y ;; True if there's a suffix match outside the outermost
5919 ;; This function might do hidden buffer changes. 5922 ;; This function might do hidden buffer changes.
5920 5923
5921 (let ((start (point)) 5924 (let ((start (point))
5925 label-end
5922 qt-symbol-idx 5926 qt-symbol-idx
5923 macro-start) ; if we're in one. 5927 macro-start ; if we're in one.
5928 label-type)
5924 (cond 5929 (cond
5925 ;; "case" or "default" (Doesn't apply to AWK). 5930 ;; "case" or "default" (Doesn't apply to AWK).
5926 ((looking-at c-label-kwds-regexp) 5931 ((looking-at c-label-kwds-regexp)
@@ -5933,25 +5938,26 @@ y ;; True if there's a suffix match outside the outermost
5933 5938
5934 ;; Find the label end. 5939 ;; Find the label end.
5935 (goto-char kwd-end) 5940 (goto-char kwd-end)
5936 (if (and (c-syntactic-re-search-forward 5941 (setq label-type
5937 ;; Stop on chars that aren't allowed in expressions, 5942 (if (and (c-syntactic-re-search-forward
5938 ;; and on operator chars that would be meaningless 5943 ;; Stop on chars that aren't allowed in expressions,
5939 ;; there. FIXME: This doesn't cope with ?: operators. 5944 ;; and on operator chars that would be meaningless
5940 "[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)" 5945 ;; there. FIXME: This doesn't cope with ?: operators.
5941 limit t t nil 1) 5946 "[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)"
5942 (match-beginning 2)) 5947 limit t t nil 1)
5943 5948 (match-beginning 2))
5944 (progn 5949
5945 (goto-char (match-beginning 2)) ; just after the : 5950 (progn ; there's a proper :
5946 (c-put-c-type-property (1- (point)) 'c-decl-end) 5951 (goto-char (match-beginning 2)) ; just after the :
5947 t) 5952 (c-put-c-type-property (1- (point)) 'c-decl-end)
5948 5953 t)
5949 ;; It's an unfinished label. We consider the keyword enough 5954
5950 ;; to recognize it as a label, so that it gets fontified. 5955 ;; It's an unfinished label. We consider the keyword enough
5951 ;; Leave the point at the end of it, but don't put any 5956 ;; to recognize it as a label, so that it gets fontified.
5952 ;; `c-decl-end' marker. 5957 ;; Leave the point at the end of it, but don't put any
5953 (goto-char kwd-end) 5958 ;; `c-decl-end' marker.
5954 t))) 5959 (goto-char kwd-end)
5960 t))))
5955 5961
5956 ;; @private, @protected, @public, in Objective C, or similar. 5962 ;; @private, @protected, @public, in Objective C, or similar.
5957 ((and c-opt-extra-label-key 5963 ((and c-opt-extra-label-key
@@ -5963,7 +5969,7 @@ y ;; True if there's a suffix match outside the outermost
5963 (when c-record-type-identifiers 5969 (when c-record-type-identifiers
5964 (c-record-ref-id (cons (match-beginning 1) (point)))) 5970 (c-record-ref-id (cons (match-beginning 1) (point))))
5965 (c-put-c-type-property (1- (point)) 'c-decl-end) 5971 (c-put-c-type-property (1- (point)) 'c-decl-end)
5966 t) 5972 (setq label-type t))
5967 5973
5968 ;; All other cases of labels. 5974 ;; All other cases of labels.
5969 ((and c-recognize-colon-labels ; nil for AWK and IDL, otherwise t. 5975 ((and c-recognize-colon-labels ; nil for AWK and IDL, otherwise t.
@@ -6039,26 +6045,49 @@ y ;; True if there's a suffix match outside the outermost
6039 (c-forward-syntactic-ws) 6045 (c-forward-syntactic-ws)
6040 (c-forward-label nil pte start)))))))))) 6046 (c-forward-label nil pte start))))))))))
6041 6047
6048 ;; Point is still at the beginning of the possible label construct.
6049 ;;
6042 ;; Check that the next nonsymbol token is ":", or that we're in one 6050 ;; Check that the next nonsymbol token is ":", or that we're in one
6043 ;; of QT's "slots" declarations. Allow '(' for the sake of macro 6051 ;; of QT's "slots" declarations. Allow '(' for the sake of macro
6044 ;; arguments. FIXME: Should build this regexp from the language 6052 ;; arguments. FIXME: Should build this regexp from the language
6045 ;; constants. 6053 ;; constants.
6046 (when (c-syntactic-re-search-forward 6054 (cond
6047 "[ \t[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB 6055 ;; public: protected: private:
6048 (backward-char) 6056 ((and
6049 (setq qt-symbol-idx 6057 (c-major-mode-is 'c++-mode)
6050 (and (c-major-mode-is 'c++-mode) 6058 (search-forward-regexp
6051 (string-match 6059 "\\=p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\>[^_]" nil t)
6052 "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>" 6060 (progn (backward-char)
6053 (buffer-substring start (point))))) 6061 (c-forward-syntactic-ws limit)
6054 (c-forward-syntactic-ws limit) 6062 (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon.
6055 (when (or (looking-at ":\\([^:]\\|\\'\\)") ; A single colon. 6063 (forward-char)
6056 (and qt-symbol-idx 6064 (setq label-type t))
6057 (search-forward-regexp "\\=slots\\>" limit t) 6065 ;; QT double keyword like "protected slots:" or goto target.
6058 (progn (c-forward-syntactic-ws limit) 6066 ((progn (goto-char start) nil))
6059 (looking-at ":\\([^:]\\|\\'\\)")))) ; A single colon 6067 ((when (c-syntactic-re-search-forward
6060 (forward-char) ; to after the colon. 6068 "[ \t\n[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB
6061 t))) 6069 (backward-char)
6070 (setq label-end (point))
6071 (setq qt-symbol-idx
6072 (and (c-major-mode-is 'c++-mode)
6073 (string-match
6074 "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
6075 (buffer-substring start (point)))))
6076 (c-forward-syntactic-ws limit)
6077 (cond
6078 ((looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
6079 (forward-char)
6080 (setq label-type
6081 (if (string= "signals" ; Special QT macro
6082 (buffer-substring-no-properties start label-end))
6083 'qt-1kwd-colon
6084 'goto-target)))
6085 ((and qt-symbol-idx
6086 (search-forward-regexp "\\=slots\\>" limit t)
6087 (progn (c-forward-syntactic-ws limit)
6088 (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon
6089 (forward-char)
6090 (setq label-type 'qt-2kwds-colon)))))))
6062 6091
6063 (save-restriction 6092 (save-restriction
6064 (narrow-to-region start (point)) 6093 (narrow-to-region start (point))
@@ -6069,6 +6098,7 @@ y ;; True if there's a suffix match outside the outermost
6069 (while (progn 6098 (while (progn
6070 (when (looking-at c-nonlabel-token-key) 6099 (when (looking-at c-nonlabel-token-key)
6071 (goto-char start) 6100 (goto-char start)
6101 (setq label-type nil)
6072 (throw 'check-label nil)) 6102 (throw 'check-label nil))
6073 (and (c-safe (c-forward-sexp) 6103 (and (c-safe (c-forward-sexp)
6074 (c-forward-syntactic-ws) 6104 (c-forward-syntactic-ws)
@@ -6088,12 +6118,12 @@ y ;; True if there's a suffix match outside the outermost
6088 6118
6089 (c-put-c-type-property (1- (point-max)) 'c-decl-end) 6119 (c-put-c-type-property (1- (point-max)) 'c-decl-end)
6090 (goto-char (point-max)) 6120 (goto-char (point-max))
6091 t))) 6121 )))
6092 6122
6093 (t 6123 (t
6094 ;; Not a label. 6124 ;; Not a label.
6095 (goto-char start) 6125 (goto-char start)))
6096 nil)))) 6126 label-type))
6097 6127
6098(defun c-forward-objc-directive () 6128(defun c-forward-objc-directive ()
6099 ;; Assuming the point is at the beginning of a token, try to move 6129 ;; Assuming the point is at the beginning of a token, try to move
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index a880ae9a1fe..0df09eda481 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -704,8 +704,13 @@ casts and declarations are fontified. Used on level 2 and higher."
704 )) 704 ))
705 705
706(defun c-font-lock-complex-decl-prepare (limit) 706(defun c-font-lock-complex-decl-prepare (limit)
707 ;; This function will be called from font-lock for a region bounded by POINT
708 ;; and LIMIT, as though it were to identify a keyword for
709 ;; font-lock-keyword-face. It always returns NIL to inhibit this and
710 ;; prevent a repeat invocation. See elisp/lispref page "Search-based
711 ;; Fontification".
712 ;;
707 ;; Called before any of the matchers in `c-complex-decl-matchers'. 713 ;; Called before any of the matchers in `c-complex-decl-matchers'.
708 ;; Nil is always returned.
709 ;; 714 ;;
710 ;; This function does hidden buffer changes. 715 ;; This function does hidden buffer changes.
711 716
@@ -742,10 +747,15 @@ casts and declarations are fontified. Used on level 2 and higher."
742 nil) 747 nil)
743 748
744(defun c-font-lock-<>-arglists (limit) 749(defun c-font-lock-<>-arglists (limit)
750 ;; This function will be called from font-lock for a region bounded by POINT
751 ;; and LIMIT, as though it were to identify a keyword for
752 ;; font-lock-keyword-face. It always returns NIL to inhibit this and
753 ;; prevent a repeat invocation. See elisp/lispref page "Search-based
754 ;; Fontification".
755 ;;
745 ;; Fontify types and references in names containing angle bracket 756 ;; Fontify types and references in names containing angle bracket
746 ;; arglists from the point to LIMIT. Note that 757 ;; arglists from the point to LIMIT. Note that
747 ;; `c-font-lock-declarations' already has handled many of them. Nil 758 ;; `c-font-lock-declarations' already has handled many of them.
748 ;; is always returned.
749 ;; 759 ;;
750 ;; This function might do hidden buffer changes. 760 ;; This function might do hidden buffer changes.
751 761
@@ -971,9 +981,14 @@ casts and declarations are fontified. Used on level 2 and higher."
971 font-lock-keyword-face)) 981 font-lock-keyword-face))
972 982
973(defun c-font-lock-declarations (limit) 983(defun c-font-lock-declarations (limit)
984 ;; This function will be called from font-lock for a region bounded by POINT
985 ;; and LIMIT, as though it were to identify a keyword for
986 ;; font-lock-keyword-face. It always returns NIL to inhibit this and
987 ;; prevent a repeat invocation. See elisp/lispref page "Search-based
988 ;; Fontification".
989 ;;
974 ;; Fontify all the declarations, casts and labels from the point to LIMIT. 990 ;; Fontify all the declarations, casts and labels from the point to LIMIT.
975 ;; Assumes that strings and comments have been fontified already. Nil is 991 ;; Assumes that strings and comments have been fontified already.
976 ;; always returned.
977 ;; 992 ;;
978 ;; This function might do hidden buffer changes. 993 ;; This function might do hidden buffer changes.
979 994
@@ -1009,6 +1024,7 @@ casts and declarations are fontified. Used on level 2 and higher."
1009 ;; `c-forward-decl-or-cast-1' and `c-forward-label' for 1024 ;; `c-forward-decl-or-cast-1' and `c-forward-label' for
1010 ;; later fontification. 1025 ;; later fontification.
1011 (c-record-type-identifiers t) 1026 (c-record-type-identifiers t)
1027 label-type
1012 c-record-ref-identifiers 1028 c-record-ref-identifiers
1013 ;; Make `c-forward-type' calls mark up template arglists if 1029 ;; Make `c-forward-type' calls mark up template arglists if
1014 ;; it finds any. That's necessary so that we later will 1030 ;; it finds any. That's necessary so that we later will
@@ -1174,39 +1190,31 @@ casts and declarations are fontified. Used on level 2 and higher."
1174 (c-fontify-recorded-types-and-refs) 1190 (c-fontify-recorded-types-and-refs)
1175 nil)) 1191 nil))
1176 1192
1177 ;; It was a false alarm. 1193 ;; It was a false alarm. Check if we're in a label (or other
1194 ;; construct with `:' except bitfield) instead.
1178 (goto-char start-pos) 1195 (goto-char start-pos)
1179 ;; The below code attempts to fontify the case constants in 1196 (when (setq label-type (c-forward-label t match-pos nil))
1180 ;; c-label-face-name, but it cannot catch every case [sic]. 1197 ;; Can't use `c-fontify-types-and-refs' here since we
1181 ;; And do we want to fontify case constants anyway? 1198 ;; use the label face at times.
1182 (c-forward-label t match-pos nil) 1199 (cond ((eq label-type 'goto-target)
1183;;; (when (c-forward-label t match-pos nil) 1200 (c-put-font-lock-face (caar c-record-ref-identifiers)
1184;;; ;; Can't use `c-fontify-types-and-refs' here since we 1201 (cdar c-record-ref-identifiers)
1185;;; ;; should use the label face. 1202 c-label-face-name))
1186;;; (save-excursion 1203 ((eq label-type 'qt-1kwd-colon)
1187;;; (while c-record-ref-identifiers 1204 (c-put-font-lock-face (caar c-record-ref-identifiers)
1188;;; (let ((elem (car c-record-ref-identifiers)) 1205 (cdar c-record-ref-identifiers)
1189;;; c-record-type-identifiers) 1206 'font-lock-keyword-face))
1190;;; (goto-char (cdr elem)) 1207 ((eq label-type 'qt-2kwds-colon)
1191;;; ;; Find the end of any label. 1208 (mapc
1192;;; (while (and (re-search-forward "\\sw\\|:" nil t) 1209 (lambda (kwd)
1193;;; (progn (backward-char 1) t) 1210 (c-put-font-lock-face (car kwd) (cdr kwd)
1194;;; (or (re-search-forward 1211 'font-lock-keyword-face))
1195;;; "\\=0[Xx][0-9A-Fa-f]+\\|\\([0-9]+\\)" nil t) 1212 c-record-ref-identifiers)))
1196;;; (c-forward-name))) 1213 (setq c-record-ref-identifiers nil)
1197;;; (c-backward-syntactic-ws) 1214 ;; `c-forward-label' has probably added a `c-decl-end'
1198;;; (let ((end (point))) 1215 ;; marker, so return t to `c-find-decl-spots' to signal
1199;;; ;; Now find the start of the bit we regard as the label. 1216 ;; that.
1200;;; (when (and (c-simple-skip-symbol-backward) 1217 t))))
1201;;; (not (c-get-char-property (point) 'face)))
1202;;; (c-put-font-lock-face (point) end c-label-face-name))
1203;;; (goto-char end))))
1204;;; (setq c-record-ref-identifiers (cdr c-record-ref-identifiers))))
1205;;; ;; `c-forward-label' probably has added a `c-decl-end'
1206;;; ;; marker, so return t to `c-find-decl-spots' to signal
1207;;; ;; that.
1208;;; t)
1209 )))
1210 1218
1211 nil))) 1219 nil)))
1212 1220
@@ -1285,6 +1293,14 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
1285 "Complex font lock matchers for types and declarations. Used on level 1293 "Complex font lock matchers for types and declarations. Used on level
12863 and higher." 12943 and higher."
1287 1295
1296 ;; Note: This code in this form dumps a number of funtions into the
1297 ;; resulting constant, `c-matchers-3'. At run time, font lock will call
1298 ;; each of them as a "FUNCTION" (see Elisp page "Search-based
1299 ;; Fontification"). The font lock region is delimited by POINT and the
1300 ;; single parameter, LIMIT. Each of these functions returns NIL (thus
1301 ;; inhibiting spurious font-lock-keyword-face highlighting and another
1302 ;; call).
1303
1288 t `(;; Initialize some things before the search functions below. 1304 t `(;; Initialize some things before the search functions below.
1289 c-font-lock-complex-decl-prepare 1305 c-font-lock-complex-decl-prepare
1290 1306
@@ -1397,6 +1413,8 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
1397 1413
1398 ;; Fontify the type in C++ "new" expressions. 1414 ;; Fontify the type in C++ "new" expressions.
1399 ,@(when (c-major-mode-is 'c++-mode) 1415 ,@(when (c-major-mode-is 'c++-mode)
1416 ;; This pattern is a probably a "(MATCHER . ANCHORED-HIGHLIGHTER)"
1417 ;; (see Elisp page "Search-based Fontification").
1400 `(("\\<new\\>" 1418 `(("\\<new\\>"
1401 (c-font-lock-c++-new)))) 1419 (c-font-lock-c++-new))))
1402 )) 1420 ))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index fe01ab02ae3..906cbfb19a7 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -221,11 +221,6 @@ the evaluated constant value at compile time."
221 ;; with the group symbol for each group and should return non-nil 221 ;; with the group symbol for each group and should return non-nil
222 ;; if that group is to be included. 222 ;; if that group is to be included.
223 ;; 223 ;;
224 ;; OP-FILTER filters the individual operators in each group. It
225 ;; can be t to choose all operators, a regexp to test against each
226 ;; operator, or a function which will be called for each operator
227 ;; and should return non-nil for those to include.
228 ;;
229 ;; If XLATE is given, it's a function which is called for each 224 ;; If XLATE is given, it's a function which is called for each
230 ;; matching operator and its return value is collected instead. 225 ;; matching operator and its return value is collected instead.
231 ;; If it returns a list, the elements are spliced directly into 226 ;; If it returns a list, the elements are spliced directly into
@@ -1376,6 +1371,26 @@ EOL terminated statements."
1376 (c-lang-const c-vsemi-status-unknown-p-fn)) 1371 (c-lang-const c-vsemi-status-unknown-p-fn))
1377 1372
1378 1373
1374;;; Defun functions
1375
1376;; The Emacs variables beginning-of-defun-function and
1377;; end-of-defun-function will be set so that commands like
1378;; `mark-defun' and `narrow-to-defun' work right. The key sequences
1379;; C-M-a and C-M-e are, however, bound directly to the CC Mode
1380;; functions, allowing optimisation for large n.
1381(c-lang-defconst beginning-of-defun-function
1382 "Function to which beginning-of-defun-function will be set."
1383 t 'c-beginning-of-defun
1384 awk 'c-awk-beginning-of-defun)
1385(c-lang-setvar beginning-of-defun-function
1386 (c-lang-const beginning-of-defun-function))
1387
1388(c-lang-defconst end-of-defun-function
1389 "Function to which end-of-defun-function will be set."
1390 t 'c-end-of-defun
1391 awk 'c-awk-end-of-defun)
1392(c-lang-setvar end-of-defun-function (c-lang-const end-of-defun-function))
1393
1379;;; In-comment text handling. 1394;;; In-comment text handling.
1380 1395
1381(c-lang-defconst c-paragraph-start 1396(c-lang-defconst c-paragraph-start
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 1407b497305..f5da0eecc2e 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -158,8 +158,8 @@
158;; These are typically standard emacs variables such as `comment-start'. 158;; These are typically standard emacs variables such as `comment-start'.
159(defmacro c-make-emacs-variables-local () 159(defmacro c-make-emacs-variables-local ()
160 `(progn 160 `(progn
161 ,@(mapcan (lambda (init) 161 ,@(mapcar (lambda (init)
162 `((make-local-variable ',(car init)))) 162 `(make-local-variable ',(car init)))
163 (cdr c-emacs-variable-inits)))) 163 (cdr c-emacs-variable-inits))))
164 164
165(defun c-init-language-vars-for (mode) 165(defun c-init-language-vars-for (mode)
@@ -509,9 +509,9 @@ preferably use the `c-mode-menu' language constant directly."
509 type type-pos 509 type type-pos
510 marked-id term-pos 510 marked-id term-pos
511 (end1 511 (end1
512 (if (eq (get-text-property end 'face) 'font-lock-comment-face) 512 (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
513 (previous-single-property-change end 'face) 513 (previous-single-property-change end 'face))
514 end))) 514 end)))
515 (when (>= end1 beg) ; Don't hassle about changes entirely in comments. 515 (when (>= end1 beg) ; Don't hassle about changes entirely in comments.
516 ;; Find a limit for the search for a `c-type' property 516 ;; Find a limit for the search for a `c-type' property
517 (while 517 (while
diff --git a/lisp/progmodes/cc-subword.el b/lisp/progmodes/cc-subword.el
index 29494fdc6a7..a6a365d316b 100644
--- a/lisp/progmodes/cc-subword.el
+++ b/lisp/progmodes/cc-subword.el
@@ -218,38 +218,52 @@ Optional argument ARG is the same as for `transpose-words'."
218 (interactive "*p") 218 (interactive "*p")
219 (transpose-subr 'c-forward-subword arg)) 219 (transpose-subr 'c-forward-subword arg))
220 220
221(defun c-capitalize-subword (arg) 221
222 "Do the same as `capitalize-word' but on subwords.
223See the command `c-subword-mode' for a description of subwords.
224Optional argument ARG is the same as for `capitalize-word'."
225 (interactive "p")
226 (let ((count (abs arg))
227 (direction (if (< 0 arg) 1 -1)))
228 (dotimes (i count)
229 (when (re-search-forward
230 (concat "[" c-alpha "]")
231 nil t)
232 (goto-char (match-beginning 0)))
233 (let* ((p (point))
234 (pp (1+ p))
235 (np (c-forward-subword direction)))
236 (upcase-region p pp)
237 (downcase-region pp np)
238 (goto-char np)))))
239 222
240(defun c-downcase-subword (arg) 223(defun c-downcase-subword (arg)
241 "Do the same as `downcase-word' but on subwords. 224 "Do the same as `downcase-word' but on subwords.
242See the command `c-subword-mode' for a description of subwords. 225See the command `c-subword-mode' for a description of subwords.
243Optional argument ARG is the same as for `downcase-word'." 226Optional argument ARG is the same as for `downcase-word'."
244 (interactive "p") 227 (interactive "p")
245 (downcase-region (point) (c-forward-subword arg))) 228 (let ((start (point)))
229 (downcase-region (point) (c-forward-subword arg))
230 (when (< arg 0)
231 (goto-char start))))
246 232
247(defun c-upcase-subword (arg) 233(defun c-upcase-subword (arg)
248 "Do the same as `upcase-word' but on subwords. 234 "Do the same as `upcase-word' but on subwords.
249See the command `c-subword-mode' for a description of subwords. 235See the command `c-subword-mode' for a description of subwords.
250Optional argument ARG is the same as for `upcase-word'." 236Optional argument ARG is the same as for `upcase-word'."
251 (interactive "p") 237 (interactive "p")
252 (upcase-region (point) (c-forward-subword arg))) 238 (let ((start (point)))
239 (upcase-region (point) (c-forward-subword arg))
240 (when (< arg 0)
241 (goto-char start))))
242
243(defun c-capitalize-subword (arg)
244 "Do the same as `capitalize-word' but on subwords.
245See the command `c-subword-mode' for a description of subwords.
246Optional argument ARG is the same as for `capitalize-word'."
247 (interactive "p")
248 (let ((count (abs arg))
249 (start (point))
250 (advance (if (< arg 0) nil t)))
251 (dotimes (i count)
252 (if advance
253 (progn (re-search-forward
254 (concat "[" c-alpha "]")
255 nil t)
256 (goto-char (match-beginning 0)))
257 (c-backward-subword))
258 (let* ((p (point))
259 (pp (1+ p))
260 (np (c-forward-subword)))
261 (upcase-region p pp)
262 (downcase-region pp np)
263 (goto-char (if advance np p))))
264 (unless advance
265 (goto-char start))))
266
253 267
254 268
255;; 269;;
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index cbf2b44de23..8d28cba79ad 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -890,7 +890,8 @@ Only currently supported behavior is `alignleft'."
890 890
891(defcustom c-special-indent-hook nil 891(defcustom c-special-indent-hook nil
892 "*Hook for user defined special indentation adjustments. 892 "*Hook for user defined special indentation adjustments.
893This hook gets called after a line is indented by the mode." 893This hook gets called after each line is indented by the mode. It is only
894called if `c-syntactic-indentation' is non-nil."
894 :type 'hook 895 :type 'hook
895 :group 'c) 896 :group 'c)
896 897
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index aa77caf0670..ce933cb13d5 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -391,6 +391,7 @@ be added."
391 ,(expand-file-name "compilation.txt" data-directory)) 391 ,(expand-file-name "compilation.txt" data-directory))
392 :group 'compilation) 392 :group 'compilation)
393 393
394;;;###autoload(put 'compilation-directory 'safe-local-variable 'stringp)
394(defvar compilation-directory nil 395(defvar compilation-directory nil
395 "Directory to restore to when doing `recompile'.") 396 "Directory to restore to when doing `recompile'.")
396 397
@@ -625,7 +626,7 @@ Faces `compilation-error-face', `compilation-warning-face',
625 (cons (match-string-no-properties idx) dir)) 626 (cons (match-string-no-properties idx) dir))
626 mouse-face highlight 627 mouse-face highlight
627 keymap compilation-button-map 628 keymap compilation-button-map
628 help-echo "mouse-2: visit this directory"))) 629 help-echo "mouse-2: visit destination directory")))
629 630
630;; Data type `reverse-ordered-alist' retriever. This function retrieves the 631;; Data type `reverse-ordered-alist' retriever. This function retrieves the
631;; KEY element from the ALIST, creating it in the right position if not already 632;; KEY element from the ALIST, creating it in the right position if not already
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 0b8287503f8..a07fb5ee44f 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -233,6 +233,7 @@ for constructs with multiline if/unless/while/until/for/foreach condition."
233 "*Indentation of CPerl statements with respect to containing block." 233 "*Indentation of CPerl statements with respect to containing block."
234 :type 'integer 234 :type 'integer
235 :group 'cperl-indentation-details) 235 :group 'cperl-indentation-details)
236(put 'cperl-indent-level 'safe-local-variable 'integerp)
236 237
237(defcustom cperl-lineup-step nil 238(defcustom cperl-lineup-step nil
238 "*`cperl-lineup' will always lineup at multiple of this number. 239 "*`cperl-lineup' will always lineup at multiple of this number.
@@ -1871,9 +1872,7 @@ or as help on variables `cperl-tips', `cperl-problems',
1871 (easy-menu-add cperl-menu)) ; A NOP in Emacs. 1872 (easy-menu-add cperl-menu)) ; A NOP in Emacs.
1872 (run-mode-hooks 'cperl-mode-hook) 1873 (run-mode-hooks 'cperl-mode-hook)
1873 (if cperl-hook-after-change 1874 (if cperl-hook-after-change
1874 (progn 1875 (add-hook 'after-change-functions 'cperl-after-change-function nil t))
1875 (make-local-hook 'after-change-functions)
1876 (add-hook 'after-change-functions 'cperl-after-change-function nil t)))
1877 ;; After hooks since fontification will break this 1876 ;; After hooks since fontification will break this
1878 (if cperl-pod-here-scan 1877 (if cperl-pod-here-scan
1879 (or cperl-syntaxify-by-font-lock 1878 (or cperl-syntaxify-by-font-lock
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index 618de7a3345..bdec1bf9ef4 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -71,6 +71,9 @@
71 71
72;;; Code: 72;;; Code:
73 73
74(require 'tempo)
75
76
74;;; *** Customization ***************************************************** 77;;; *** Customization *****************************************************
75 78
76 79
@@ -1935,8 +1938,6 @@ section at the end of the current buffer."
1935;; standard Emacs. I would have liked something closer to the functionality 1938;; standard Emacs. I would have liked something closer to the functionality
1936;; of LSE templates... 1939;; of LSE templates...
1937 1940
1938
1939(require 'tempo)
1940(defvar dcl-tempo-tags nil 1941(defvar dcl-tempo-tags nil
1941 "Tempo tags for DCL mode.") 1942 "Tempo tags for DCL mode.")
1942 1943
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 23ba4b55f33..55f61222796 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -2609,7 +2609,7 @@ See `ebnf-style-database' documentation."
2609 (and (assoc name ebnf-style-database) 2609 (and (assoc name ebnf-style-database)
2610 (error "Style name already exists: %s" name)) 2610 (error "Style name already exists: %s" name))
2611 (or (assoc inherits ebnf-style-database) 2611 (or (assoc inherits ebnf-style-database)
2612 (error "Style inheritance name does'nt exist: %s" inherits)) 2612 (error "Style inheritance name doesn't exist: %s" inherits))
2613 (setq ebnf-style-database 2613 (setq ebnf-style-database
2614 (cons (cons name (cons inherits (ebnf-check-style-values values))) 2614 (cons (cons name (cons inherits (ebnf-check-style-values values)))
2615 ebnf-style-database))) 2615 ebnf-style-database)))
@@ -2639,7 +2639,7 @@ See `ebnf-style-database' documentation."
2639See `ebnf-style-database' documentation." 2639See `ebnf-style-database' documentation."
2640 (interactive "SStyle name: \nXStyle values: ") 2640 (interactive "SStyle name: \nXStyle values: ")
2641 (let ((style (or (assoc name ebnf-style-database) 2641 (let ((style (or (assoc name ebnf-style-database)
2642 (error "Style name does'nt exist: %s" name))) 2642 (error "Style name doesn't exist: %s" name)))
2643 (merge (ebnf-check-style-values values)) 2643 (merge (ebnf-check-style-values values))
2644 val elt new check) 2644 val elt new check)
2645 ;; modify value of existing variables 2645 ;; modify value of existing variables
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 8d126c8a413..4903d7d26ec 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -931,8 +931,8 @@ Convert it to flymake internal format."
931 2 4 nil 5)) 931 2 4 nil 5))
932 ;; compilation-error-regexp-alist) 932 ;; compilation-error-regexp-alist)
933 (flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist)) 933 (flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist))
934 "Patterns for matching error/warning lines. 934 "Patterns for matching error/warning lines. Each pattern has the form
935\(REGEXP FILE-IDX LINE-IDX ERR-TEXT-IDX). 935\(REGEXP FILE-IDX LINE-IDX COL-IDX ERR-TEXT-IDX).
936Use `flymake-reformat-err-line-patterns-from-compile-el' to add patterns 936Use `flymake-reformat-err-line-patterns-from-compile-el' to add patterns
937from compile.el") 937from compile.el")
938 938
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index b598f2de1f7..4dbc9893f61 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -1771,10 +1771,15 @@ static char *magick[] = {
1771 :group 'gud) 1771 :group 'gud)
1772 1772
1773(defface breakpoint-disabled 1773(defface breakpoint-disabled
1774 ;; We use different values of grey for different background types, 1774 '((((class color) (min-colors 88)) :foreground "grey70")
1775 ;; so that on low-color displays it will end up as something visible 1775 ;; Ensure that on low-color displays that we end up something visible.
1776 ;; if it has to be approximated. 1776 (((class color) (min-colors 8) (background light))
1777 '((t :foreground "grey70")) 1777 :foreground "black")
1778 (((class color) (min-colors 8) (background dark))
1779 :foreground "white")
1780 (((type tty) (class mono))
1781 :inverse-video t)
1782 (t :background "gray"))
1778 "Face for disabled breakpoint icon in fringe." 1783 "Face for disabled breakpoint icon in fringe."
1779 :group 'gud) 1784 :group 'gud)
1780 1785
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index fe2bbdec14e..2c43abfd50c 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -315,17 +315,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
315This gets tacked on the end of the generated expressions.") 315This gets tacked on the end of the generated expressions.")
316 316
317;;;###autoload 317;;;###autoload
318(defvar grep-program 318(defvar grep-program "grep"
319 ;; Currently zgrep has trouble. It runs egrep instead of grep,
320 ;; and it doesn't pass along long options right.
321 "grep"
322 ;; (if (equal (condition-case nil ; in case "zgrep" isn't in exec-path
323 ;; (call-process "zgrep" nil nil nil
324 ;; "foo" null-device)
325 ;; (error nil))
326 ;; 1)
327 ;; "zgrep"
328 ;; "grep")
329 "The default grep program for `grep-command' and `grep-find-command'. 319 "The default grep program for `grep-command' and `grep-find-command'.
330This variable's value takes effect when `grep-compute-defaults' is called.") 320This variable's value takes effect when `grep-compute-defaults' is called.")
331 321
@@ -336,10 +326,10 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
336 326
337;;;###autoload 327;;;###autoload
338(defvar grep-find-use-xargs nil 328(defvar grep-find-use-xargs nil
339 "Whether \\[grep-find] uses the `xargs' utility by default. 329 "Non-nil means that `grep-find' uses the `xargs' utility by default.
340 330If `exec', use `find -exec'.
341If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0'; 331If `gnu', use `find -print0' and `xargs -0'.
342if not nil and not `gnu', it uses `find -print' and `xargs'. 332Any other non-nil value means to use `find -print' and `xargs'.
343 333
344This variable's value takes effect when `grep-compute-defaults' is called.") 334This variable's value takes effect when `grep-compute-defaults' is called.")
345 335
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 8db7c28219e..3d252190eff 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -147,8 +147,7 @@ Used to grey out relevant toolbar icons.")
147 ([refresh] "Refresh" . gud-refresh) 147 ([refresh] "Refresh" . gud-refresh)
148 ([run] menu-item "Run" gud-run 148 ([run] menu-item "Run" gud-run
149 :enable (not gud-running) 149 :enable (not gud-running)
150 :visible (and (memq gud-minor-mode '(gdbmi gdb dbx jdb)) 150 :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
151 (not (eq gud-minor-mode 'gdba))))
152 ([go] menu-item (if gdb-active-process "Continue" "Run") gud-go 151 ([go] menu-item (if gdb-active-process "Continue" "Run") gud-go
153 :visible (and (not gud-running) 152 :visible (and (not gud-running)
154 (eq gud-minor-mode 'gdba))) 153 (eq gud-minor-mode 'gdba)))
@@ -214,7 +213,45 @@ Used to grey out relevant toolbar icons.")
214 :name "Gud") 213 :name "Gud")
215 214
216(easy-mmode-defmap gud-minor-mode-map 215(easy-mmode-defmap gud-minor-mode-map
217 `(([menu-bar debug] . ("Gud" . ,gud-menu-map))) 216 (append
217 `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
218 ;; Get tool bar like functionality from the menu bar on a text only
219 ;; terminal.
220 (unless window-system
221 `(([menu-bar down]
222 . (,(propertize "down" 'face 'font-lock-doc-face) . gud-down))
223 ([menu-bar up]
224 . (,(propertize "up" 'face 'font-lock-doc-face) . gud-up))
225 ([menu-bar finish]
226 . (,(propertize "finish" 'face 'font-lock-doc-face) . gud-finish))
227 ([menu-bar step]
228 . (,(propertize "step" 'face 'font-lock-doc-face) . gud-step))
229 ([menu-bar next]
230 . (,(propertize "next" 'face 'font-lock-doc-face) . gud-next))
231 ([menu-bar until] menu-item
232 ,(propertize "until" 'face 'font-lock-doc-face) gud-until
233 :visible (memq gud-minor-mode '(gdbmi gdba gdb perldb)))
234 ([menu-bar cont] menu-item
235 ,(propertize "cont" 'face 'font-lock-doc-face) gud-cont
236 :visible (not (eq gud-minor-mode 'gdba)))
237 ([menu-bar run] menu-item
238 ,(propertize "run" 'face 'font-lock-doc-face) gud-run
239 :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
240 ([menu-bar go] menu-item
241 ,(propertize " go " 'face 'font-lock-doc-face) gud-go
242 :visible (and (not gud-running)
243 (eq gud-minor-mode 'gdba)))
244 ([menu-bar stop] menu-item
245 ,(propertize "stop" 'face 'font-lock-doc-face) gud-stop-subjob
246 :visible (or gud-running
247 (not (eq gud-minor-mode 'gdba))))
248 ([menu-bar print]
249 . (,(propertize "print" 'face 'font-lock-doc-face) . gud-print))
250 ([menu-bar tools] . undefined)
251 ([menu-bar buffer] . undefined)
252 ([menu-bar options] . undefined)
253 ([menu-bar edit] . undefined)
254 ([menu-bar file] . undefined))))
218 "Map used in visited files.") 255 "Map used in visited files.")
219 256
220(let ((m (assq 'gud-minor-mode minor-mode-map-alist))) 257(let ((m (assq 'gud-minor-mode minor-mode-map-alist)))
@@ -686,14 +723,13 @@ text command mode to debug multiple programs within one Emacs
686session." 723session."
687 (interactive (list (gud-query-cmdline 'gdb))) 724 (interactive (list (gud-query-cmdline 'gdb)))
688 725
689 (if (and gud-comint-buffer 726 (when (and gud-comint-buffer
690 (buffer-name gud-comint-buffer) 727 (buffer-name gud-comint-buffer)
691 (get-buffer-process gud-comint-buffer) 728 (get-buffer-process gud-comint-buffer)
692 (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba))) 729 (with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)))
693 (let ((same-window-regexps)) 730 (gdb-restore-windows)
694 (display-buffer gud-comint-buffer)
695 (error 731 (error
696 "Multiple debugging requires restarting in text command mode"))) 732 "Multiple debugging requires restarting in text command mode"))
697 733
698 (gud-common-init command-line nil 'gud-gdb-marker-filter) 734 (gud-common-init command-line nil 'gud-gdb-marker-filter)
699 (set (make-local-variable 'gud-minor-mode) 'gdb) 735 (set (make-local-variable 'gud-minor-mode) 'gdb)
@@ -2268,6 +2304,8 @@ gud, see `gud-mode'."
2268 (gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.") 2304 (gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.")
2269 (gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.") 2305 (gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.")
2270 (gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb 2306 (gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb
2307 (gud-def gud-print "print %e" "\C-p" "Evaluate Java expression at point.")
2308
2271 2309
2272 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ") 2310 (setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
2273 (setq paragraph-start comint-prompt-regexp) 2311 (setq paragraph-start comint-prompt-regexp)
@@ -2817,7 +2855,9 @@ Obeying it means displaying in another window the specified file and line."
2817 (when (looking-at comint-prompt-regexp) 2855 (when (looking-at comint-prompt-regexp)
2818 (set-marker gud-delete-prompt-marker (point)) 2856 (set-marker gud-delete-prompt-marker (point))
2819 (set-marker-insertion-type gud-delete-prompt-marker t)) 2857 (set-marker-insertion-type gud-delete-prompt-marker t))
2820 (insert (concat expr " = "))))) 2858 (unless (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
2859 'jdb)
2860 (insert (concat expr " = "))))))
2821 expr)) 2861 expr))
2822 2862
2823;; The next eight functions are hacked from gdbsrc.el by 2863;; The next eight functions are hacked from gdbsrc.el by
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index 3bc1c55cc7d..9f01787b336 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -184,7 +184,6 @@
184;; (5) Hideshow interacts badly with Ediff and `vc-diff'. At the moment, the 184;; (5) Hideshow interacts badly with Ediff and `vc-diff'. At the moment, the
185;; suggested workaround is to turn off hideshow entirely, for example: 185;; suggested workaround is to turn off hideshow entirely, for example:
186;; 186;;
187;; (defun turn-off-hideshow () (hs-minor-mode -1))
188;; (add-hook 'ediff-prepare-buffer-hook 'turn-off-hideshow) 187;; (add-hook 'ediff-prepare-buffer-hook 'turn-off-hideshow)
189;; (add-hook 'vc-before-checkin-hook 'turn-off-hideshow) 188;; (add-hook 'vc-before-checkin-hook 'turn-off-hideshow)
190;; 189;;
@@ -908,7 +907,7 @@ Key bindings:
908 (hs-grok-mode-type) 907 (hs-grok-mode-type)
909 ;; Turn off this mode if we change major modes. 908 ;; Turn off this mode if we change major modes.
910 (add-hook 'change-major-mode-hook 909 (add-hook 'change-major-mode-hook
911 (lambda () (hs-minor-mode -1)) 910 'turn-off-hideshow
912 nil t) 911 nil t)
913 (easy-menu-add hs-minor-mode-menu) 912 (easy-menu-add hs-minor-mode-menu)
914 (set (make-local-variable 'line-move-ignore-invisible) t) 913 (set (make-local-variable 'line-move-ignore-invisible) t)
@@ -920,6 +919,11 @@ Key bindings:
920 (hs-show-all))) 919 (hs-show-all)))
921 (run-hooks 'hs-minor-mode-hook)) 920 (run-hooks 'hs-minor-mode-hook))
922 921
922;;;###autoload
923(defun turn-off-hideshow ()
924 "Unconditionally turn off `hs-minor-mode'."
925 (hs-minor-mode -1))
926
923;;--------------------------------------------------------------------------- 927;;---------------------------------------------------------------------------
924;; load-time actions 928;; load-time actions
925 929
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index aa2d1b32d10..bcecdeafa0f 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -2698,7 +2698,7 @@ in the current routine."
2698 (class (nth 2 module))) 2698 (class (nth 2 module)))
2699 (if module 2699 (if module
2700 (progn 2700 (progn
2701 (setq module (idlwave-make-full-name (nth 2 module) (car module))) 2701 (setq module (idlwave-make-full-name class name))
2702 (idlwave-shell-module-source-query module type) 2702 (idlwave-shell-module-source-query module type)
2703 (idlwave-shell-set-bp-in-module name type class)) 2703 (idlwave-shell-set-bp-in-module name type class))
2704 (error "No identifier at point")))) 2704 (error "No identifier at point"))))
@@ -2707,14 +2707,15 @@ in the current routine."
2707(defun idlwave-shell-set-bp-in-module (name type class) 2707(defun idlwave-shell-set-bp-in-module (name type class)
2708 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist' 2708 "Set breakpoint in module. Assumes that `idlwave-shell-sources-alist'
2709contains an entry for that module." 2709contains an entry for that module."
2710 (let ((source-file 2710 (let* ((module (idlwave-make-full-name class name))
2711 (car-safe (cdr-safe 2711 (source-file
2712 (or 2712 (car-safe (cdr-safe
2713 (assoc (upcase (idlwave-make-full-name class name)) 2713 (or
2714 idlwave-shell-sources-alist) 2714 (assoc (upcase module)
2715 (nth 3 (idlwave-best-rinfo-assoc name type class 2715 idlwave-shell-sources-alist)
2716 (idlwave-routines))))))) 2716 (nth 3 (idlwave-best-rinfo-assoc name type class
2717 buf) 2717 (idlwave-routines)))))))
2718 buf)
2718 (if (or (not source-file) 2719 (if (or (not source-file)
2719 (not (file-regular-p source-file)) 2720 (not (file-regular-p source-file))
2720 (not (setq buf 2721 (not (setq buf
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index c4349e9c092..d29e56ce75d 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -3487,6 +3487,7 @@ if `idlwave-auto-fill-split-string' is non-nil."
3487 (idlwave-indent-line) 3487 (idlwave-indent-line)
3488 ;; Prevent actions do-auto-fill which calls indent-line-function. 3488 ;; Prevent actions do-auto-fill which calls indent-line-function.
3489 (let (idlwave-do-actions 3489 (let (idlwave-do-actions
3490 (paragraph-separate ".")
3490 (fill-nobreak-predicate 3491 (fill-nobreak-predicate
3491 (if (and (idlwave-in-quote) 3492 (if (and (idlwave-in-quote)
3492 idlwave-auto-fill-split-string) 3493 idlwave-auto-fill-split-string)
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index 734a86b0b99..bd31f731693 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -118,14 +118,19 @@
118(defun m4-m4-buffer () 118(defun m4-m4-buffer ()
119 "Send contents of the current buffer to m4." 119 "Send contents of the current buffer to m4."
120 (interactive) 120 (interactive)
121 (shell-command-on-region (point-min) (point-max) m4-program "*m4-output*" 121 (shell-command-on-region
122 nil) 122 (point-min) (point-max)
123 (mapconcat 'identity (cons m4-program m4-program-options) "\s")
124 "*m4-output*" nil)
123 (switch-to-buffer-other-window "*m4-output*")) 125 (switch-to-buffer-other-window "*m4-output*"))
124 126
125(defun m4-m4-region () 127(defun m4-m4-region ()
126 "Send contents of the current region to m4." 128 "Send contents of the current region to m4."
127 (interactive) 129 (interactive)
128 (shell-command-on-region (point) (mark) m4-program "*m4-output*" nil) 130 (shell-command-on-region
131 (point) (mark)
132 (mapconcat 'identity (cons m4-program m4-program-options) "\s")
133 "*m4-output*" nil)
129 (switch-to-buffer-other-window "*m4-output*")) 134 (switch-to-buffer-other-window "*m4-output*"))
130 135
131;;;###autoload 136;;;###autoload
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 078e94ffbf4..255f63aed41 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -391,6 +391,7 @@ The expansion is entirely correct because it uses the C preprocessor."
391 "*Indentation of Perl statements with respect to containing block." 391 "*Indentation of Perl statements with respect to containing block."
392 :type 'integer 392 :type 'integer
393 :group 'perl) 393 :group 'perl)
394(put 'perl-indent-level 'safe-local-variable 'integerp)
394(defcustom perl-continued-statement-offset 4 395(defcustom perl-continued-statement-offset 4
395 "*Extra indent for lines not starting new statements." 396 "*Extra indent for lines not starting new statements."
396 :type 'integer 397 :type 'integer
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 226d4bdc62d..e57c7e639c9 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -981,11 +981,15 @@ don't move and return nil. Otherwise return t."
981 (_ (if (python-comment-line-p) 981 (_ (if (python-comment-line-p)
982 (python-skip-comments/blanks t))) 982 (python-skip-comments/blanks t)))
983 (ci (current-indentation)) 983 (ci (current-indentation))
984 (open (python-open-block-statement-p))) 984 (open (python-open-block-statement-p))
985 opoint)
985 (if (and (zerop ci) (not open)) 986 (if (and (zerop ci) (not open))
986 (not (goto-char point)) 987 (not (goto-char point))
987 (catch 'done 988 (catch 'done
988 (while (zerop (python-next-statement)) 989 (setq opoint (point))
990 (while (and (zerop (python-next-statement))
991 (not (= opoint (point))))
992 (setq opoint (point))
989 (when (or (and open (<= (current-indentation) ci)) 993 (when (or (and open (<= (current-indentation) ci))
990 (< (current-indentation) ci)) 994 (< (current-indentation) ci))
991 (python-skip-comments/blanks t) 995 (python-skip-comments/blanks t)
@@ -2225,6 +2229,7 @@ with skeleton expansions for compound statement templates.
2225 ;; . python-font-lock-syntactic-face-function) 2229 ;; . python-font-lock-syntactic-face-function)
2226 )) 2230 ))
2227 (set (make-local-variable 'parse-sexp-lookup-properties) t) 2231 (set (make-local-variable 'parse-sexp-lookup-properties) t)
2232 (set (make-local-variable 'parse-sexp-ignore-comments) t)
2228 (set (make-local-variable 'comment-start) "# ") 2233 (set (make-local-variable 'comment-start) "# ")
2229 (set (make-local-variable 'indent-line-function) #'python-indent-line) 2234 (set (make-local-variable 'indent-line-function) #'python-indent-line)
2230 (set (make-local-variable 'indent-region-function) #'python-indent-region) 2235 (set (make-local-variable 'indent-region-function) #'python-indent-region)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 12e4dd7ec57..c55f15c69e9 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -72,7 +72,14 @@ See the command `recentf-save-list'."
72(defcustom recentf-save-file "~/.recentf" 72(defcustom recentf-save-file "~/.recentf"
73 "*File to save the recent list into." 73 "*File to save the recent list into."
74 :group 'recentf 74 :group 'recentf
75 :type 'file) 75 :type 'file
76 :initialize 'custom-initialize-default
77 :set (lambda (symbol value)
78 (let ((oldvalue (eval symbol)))
79 (custom-set-default symbol value)
80 (and (not (equal value oldvalue))
81 recentf-mode
82 (recentf-load-list)))))
76 83
77(defcustom recentf-save-file-modes 384 ;; 0600 84(defcustom recentf-save-file-modes 384 ;; 0600
78 "Mode bits of recentf save file, as an integer, or nil. 85 "Mode bits of recentf save file, as an integer, or nil.
diff --git a/lisp/replace.el b/lisp/replace.el
index a42f4ff4b57..a8dfd043c72 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -844,7 +844,8 @@ Compatibility function for \\[next-error] invocations."
844 #'next-single-property-change) 844 #'next-single-property-change)
845 "No more matches") 845 "No more matches")
846 ;; In case the *Occur* buffer is visible in a nonselected window. 846 ;; In case the *Occur* buffer is visible in a nonselected window.
847 (set-window-point (get-buffer-window (current-buffer)) (point)) 847 (let ((win (get-buffer-window (current-buffer) t)))
848 (if win (set-window-point win (point))))
848 (occur-mode-goto-occurrence))) 849 (occur-mode-goto-occurrence)))
849 850
850(defface match 851(defface match
diff --git a/lisp/simple.el b/lisp/simple.el
index 5901a1e3067..fc3a0b3d218 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -118,8 +118,10 @@ If no other buffer exists, the buffer `*scratch*' is returned."
118 118
119(defcustom next-error-highlight 0.5 119(defcustom next-error-highlight 0.5
120 "*Highlighting of locations in selected source buffers. 120 "*Highlighting of locations in selected source buffers.
121If number, highlight the locus in `next-error' face for given time in seconds. 121If a number, highlight the locus in `next-error' face for the given time
122If t, highlight the locus indefinitely until some other locus replaces it. 122in seconds, or until the next command is executed.
123If t, highlight the locus until the next command is executed, or until
124some other locus replaces it.
123If nil, don't highlight the locus in the source buffer. 125If nil, don't highlight the locus in the source buffer.
124If `fringe-arrow', indicate the locus by the fringe arrow." 126If `fringe-arrow', indicate the locus by the fringe arrow."
125 :type '(choice (number :tag "Highlight for specified time") 127 :type '(choice (number :tag "Highlight for specified time")
@@ -3083,7 +3085,7 @@ START and END specify the portion of the current buffer to be copied."
3083(defvar activate-mark-hook nil 3085(defvar activate-mark-hook nil
3084 "Hook run when the mark becomes active. 3086 "Hook run when the mark becomes active.
3085It is also run at the end of a command, if the mark is active and 3087It is also run at the end of a command, if the mark is active and
3086it is possible that the region may have changed") 3088it is possible that the region may have changed.")
3087 3089
3088(defvar deactivate-mark-hook nil 3090(defvar deactivate-mark-hook nil
3089 "Hook run when the mark becomes inactive.") 3091 "Hook run when the mark becomes inactive.")
@@ -3193,28 +3195,28 @@ will pop twice."
3193 :group 'editing) 3195 :group 'editing)
3194 3196
3195(defun set-mark-command (arg) 3197(defun set-mark-command (arg)
3196 "Set mark at where point is, or jump to mark. 3198 "Set mark where point is, or jump to mark.
3197With no prefix argument, set mark, and push old mark position on local 3199Setting the mark also sets the \"region\", which is the closest
3198mark ring; also push mark on global mark ring if last mark was set in 3200equivalent in Emacs to what some editors call the \"selection\".
3201
3202With no prefix argument, set mark and push old mark position on local
3203mark ring. Also, push mark on global mark ring, if last mark was set in
3199another buffer. Immediately repeating the command activates 3204another buffer. Immediately repeating the command activates
3200`transient-mark-mode' temporarily. 3205`transient-mark-mode' temporarily.
3201 3206
3202With argument, e.g. \\[universal-argument] \\[set-mark-command], \ 3207With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \
3203jump to mark, and pop a new position 3208jump to mark, and set mark from
3204for mark off the local mark ring \(this does not affect the global 3209position popped off the local mark ring \(this does not affect the global
3205mark ring\). Use \\[pop-global-mark] to jump to a mark off the global 3210mark ring\). Use \\[pop-global-mark] to jump to a mark popped off the global
3206mark ring \(see `pop-global-mark'\). 3211mark ring \(see `pop-global-mark'\).
3207 3212
3208If `set-mark-command-repeat-pop' is non-nil, repeating 3213If `set-mark-command-repeat-pop' is non-nil, repeating
3209the \\[set-mark-command] command with no prefix pops the next position 3214the \\[set-mark-command] command with no prefix argument pops the next position
3210off the local (or global) mark ring and jumps there. 3215off the local (or global) mark ring and jumps there.
3211 3216
3212With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \ 3217With a double \\[universal-argument] prefix argument \(e.g., \\[universal-argument] \
3213\\[universal-argument] \\[set-mark-command], unconditionally 3218\\[universal-argument] \\[set-mark-command]\), unconditionally
3214set mark where point is. 3219set mark where point is, even if `set-mark-command-repeat-pop' is non-nil.
3215
3216Setting the mark also sets the \"region\", which is the closest
3217equivalent in Emacs to what some editors call the \"selection\".
3218 3220
3219Novice Emacs Lisp programmers often try to use the mark for the wrong 3221Novice Emacs Lisp programmers often try to use the mark for the wrong
3220purposes. See the documentation of `set-mark' for more information." 3222purposes. See the documentation of `set-mark' for more information."
@@ -4468,7 +4470,7 @@ it skips the contents of comments that end before point."
4468 (save-excursion 4470 (save-excursion
4469 (save-restriction 4471 (save-restriction
4470 (if blink-matching-paren-distance 4472 (if blink-matching-paren-distance
4471 (narrow-to-region (max (point-min) 4473 (narrow-to-region (max (minibuffer-prompt-end)
4472 (- (point) blink-matching-paren-distance)) 4474 (- (point) blink-matching-paren-distance))
4473 oldpos)) 4475 oldpos))
4474 (condition-case () 4476 (condition-case ()
@@ -4718,16 +4720,9 @@ SEND-ACTIONS is a list of actions to call when the message is sent.
4718Each action has the form (FUNCTION . ARGS)." 4720Each action has the form (FUNCTION . ARGS)."
4719 (interactive 4721 (interactive
4720 (list nil nil nil current-prefix-arg)) 4722 (list nil nil nil current-prefix-arg))
4721 (let ((function (get mail-user-agent 'composefunc)) 4723 (let ((function (get mail-user-agent 'composefunc)))
4722 result-buffer) 4724 (funcall function to subject other-headers continue
4723 (if switch-function 4725 switch-function yank-action send-actions)))
4724 (save-window-excursion
4725 (prog1
4726 (funcall function to subject other-headers continue
4727 nil yank-action send-actions)
4728 (funcall switch-function (current-buffer))))
4729 (funcall function to subject other-headers continue
4730 nil yank-action send-actions))))
4731 4726
4732(defun compose-mail-other-window (&optional to subject other-headers continue 4727(defun compose-mail-other-window (&optional to subject other-headers continue
4733 yank-action send-actions) 4728 yank-action send-actions)
diff --git a/lisp/startup.el b/lisp/startup.el
index f1cc3e253ae..5b51a14c08f 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -51,8 +51,8 @@ The value is nil if the selected frame is on a text-only-terminal.")
51 "Non-nil inhibits the startup screen. 51 "Non-nil inhibits the startup screen.
52It also inhibits display of the initial message in the `*scratch*' buffer. 52It also inhibits display of the initial message in the `*scratch*' buffer.
53 53
54This is for use in your personal init file, once you are familiar 54This is for use in your personal init file (but NOT site-start.el), once
55with the contents of the startup screen." 55you are familiar with the contents of the startup screen."
56 :type 'boolean 56 :type 'boolean
57 :group 'initialization) 57 :group 'initialization)
58 58
@@ -514,7 +514,7 @@ opening the first frame (e.g. open a connection to an X server).")
514;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc. 514;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc.
515(defun tty-handle-args (args) 515(defun tty-handle-args (args)
516 (let (rest) 516 (let (rest)
517 (message "%s" args) 517 (message "%S" args)
518 (while (and args 518 (while (and args
519 (not (equal (car args) "--"))) 519 (not (equal (car args) "--")))
520 (let* ((argi (pop args)) 520 (let* ((argi (pop args))
@@ -961,11 +961,11 @@ opening the first frame (e.g. open a connection to an X server).")
961 (with-current-buffer (window-buffer) 961 (with-current-buffer (window-buffer)
962 (deactivate-mark))) 962 (deactivate-mark)))
963 963
964 ;; If the user has a file of abbrevs, read it. 964 ;; If the user has a file of abbrevs, read it.
965 ;; FIXME: after the 22.0 release this should be changed so 965 ;; FIXME: after the 22.0 release this should be changed so
966 ;; that it does not read the abbrev file when -batch is used 966 ;; that it does not read the abbrev file when -batch is used
967 ;; on the command line. 967 ;; on the command line.
968 (when (and (file-exists-p abbrev-file-name) 968 (when (and (file-exists-p abbrev-file-name)
969 (file-readable-p abbrev-file-name)) 969 (file-readable-p abbrev-file-name))
970 (quietly-read-abbrev-file abbrev-file-name)) 970 (quietly-read-abbrev-file abbrev-file-name))
971 971
diff --git a/lisp/subr.el b/lisp/subr.el
index 4b5c5e3f076..bdde66fc885 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -579,7 +579,7 @@ KEY is a string or vector representing a sequence of keystrokes."
579;;;; substitute-key-definition and its subroutines. 579;;;; substitute-key-definition and its subroutines.
580 580
581(defvar key-substitution-in-progress nil 581(defvar key-substitution-in-progress nil
582 "Used internally by `substitute-key-definition'.") 582 "Used internally by `substitute-key-definition'.")
583 583
584(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix) 584(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix)
585 "Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF. 585 "Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF.
@@ -821,11 +821,11 @@ and `event-end' functions."
821(defun posn-set-point (position) 821(defun posn-set-point (position)
822 "Move point to POSITION. 822 "Move point to POSITION.
823Select the corresponding window as well." 823Select the corresponding window as well."
824 (if (not (windowp (posn-window position))) 824 (if (not (windowp (posn-window position)))
825 (error "Position not in text area of window")) 825 (error "Position not in text area of window"))
826 (select-window (posn-window position)) 826 (select-window (posn-window position))
827 (if (numberp (posn-point position)) 827 (if (numberp (posn-point position))
828 (goto-char (posn-point position)))) 828 (goto-char (posn-point position))))
829 829
830(defsubst posn-x-y (position) 830(defsubst posn-x-y (position)
831 "Return the x and y coordinates in POSITION. 831 "Return the x and y coordinates in POSITION.
@@ -949,20 +949,26 @@ is converted into a string by expressing it in decimal."
949;;;; Obsolescence declarations for variables, and aliases. 949;;;; Obsolescence declarations for variables, and aliases.
950 950
951(make-obsolete-variable 'directory-sep-char "do not use it." "21.1") 951(make-obsolete-variable 'directory-sep-char "do not use it." "21.1")
952(make-obsolete-variable 'mode-line-inverse-video "use the appropriate faces instead." "21.1") 952(make-obsolete-variable
953(make-obsolete-variable 'unread-command-char 953 'mode-line-inverse-video
954 "use `unread-command-events' instead. That variable is a list of events 954 "use the appropriate faces instead."
955 "21.1")
956(make-obsolete-variable
957 'unread-command-char
958 "use `unread-command-events' instead. That variable is a list of events
955to reread, so it now uses nil to mean `no event', instead of -1." 959to reread, so it now uses nil to mean `no event', instead of -1."
956 "before 19.15") 960 "before 19.15")
957 961
958;; Lisp manual only updated in 22.1. 962;; Lisp manual only updated in 22.1.
959(define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro 963(define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro
960 "before 19.34") 964 "before 19.34")
961 965
962(defvaralias 'x-lost-selection-hooks 'x-lost-selection-functions) 966(defvaralias 'x-lost-selection-hooks 'x-lost-selection-functions)
963(make-obsolete-variable 'x-lost-selection-hooks 'x-lost-selection-functions "22.1") 967(make-obsolete-variable 'x-lost-selection-hooks
968 'x-lost-selection-functions "22.1")
964(defvaralias 'x-sent-selection-hooks 'x-sent-selection-functions) 969(defvaralias 'x-sent-selection-hooks 'x-sent-selection-functions)
965(make-obsolete-variable 'x-sent-selection-hooks 'x-sent-selection-functions "22.1") 970(make-obsolete-variable 'x-sent-selection-hooks
971 'x-sent-selection-functions "22.1")
966 972
967(defvaralias 'messages-buffer-max-lines 'message-log-max) 973(defvaralias 'messages-buffer-max-lines 'message-log-max)
968 974
@@ -1534,7 +1540,7 @@ FILE should be the name of a library, with no directory name."
1534 1540
1535(when (featurep 'make-network-process) 1541(when (featurep 'make-network-process)
1536 (defun open-network-stream (name buffer host service) 1542 (defun open-network-stream (name buffer host service)
1537 "Open a TCP connection for a service to a host. 1543 "Open a TCP connection for a service to a host.
1538Returns a subprocess-object to represent the connection. 1544Returns a subprocess-object to represent the connection.
1539Input and output work as for subprocesses; `delete-process' closes it. 1545Input and output work as for subprocesses; `delete-process' closes it.
1540 1546
@@ -1548,14 +1554,15 @@ BUFFER is the buffer (or buffer name) to associate with the process.
1548HOST is name of the host to connect to, or its IP address. 1554HOST is name of the host to connect to, or its IP address.
1549SERVICE is name of the service desired, or an integer specifying 1555SERVICE is name of the service desired, or an integer specifying
1550 a port number to connect to." 1556 a port number to connect to."
1551 (make-network-process :name name :buffer buffer 1557 (make-network-process :name name :buffer buffer
1552 :host host :service service))) 1558 :host host :service service)))
1553 1559
1554;; compatibility 1560;; compatibility
1555 1561
1556(make-obsolete 'process-kill-without-query 1562(make-obsolete
1557 "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'." 1563 'process-kill-without-query
1558 "22.1") 1564 "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
1565 "22.1")
1559(defun process-kill-without-query (process &optional flag) 1566(defun process-kill-without-query (process &optional flag)
1560 "Say no query needed if PROCESS is running when Emacs is exited. 1567 "Say no query needed if PROCESS is running when Emacs is exited.
1561Optional second argument if non-nil says to require a query. 1568Optional second argument if non-nil says to require a query.
@@ -1588,8 +1595,8 @@ Legitimate radix values are 8, 10 and 16.")
1588 'read-quoted-char-radix 8 1595 'read-quoted-char-radix 8
1589 "*Radix for \\[quoted-insert] and other uses of `read-quoted-char'. 1596 "*Radix for \\[quoted-insert] and other uses of `read-quoted-char'.
1590Legitimate radix values are 8, 10 and 16." 1597Legitimate radix values are 8, 10 and 16."
1591 :type '(choice (const 8) (const 10) (const 16)) 1598 :type '(choice (const 8) (const 10) (const 16))
1592 :group 'editing-basics) 1599 :group 'editing-basics)
1593 1600
1594(defun read-quoted-char (&optional prompt) 1601(defun read-quoted-char (&optional prompt)
1595 "Like `read-char', but do not allow quitting. 1602 "Like `read-char', but do not allow quitting.
@@ -2232,9 +2239,9 @@ If UNDO is present and non-nil, it is a function that will be called
2232 (text-properties-at (1- end))) 2239 (text-properties-at (1- end)))
2233 (put-text-property (1- end) end 'rear-nonsticky t)) 2240 (put-text-property (1- end) end 'rear-nonsticky t))
2234 2241
2235 (if (eq yank-undo-function t) ;; not set by FUNCTION 2242 (if (eq yank-undo-function t) ;; not set by FUNCTION
2236 (setq yank-undo-function (nth 3 handler))) ;; UNDO 2243 (setq yank-undo-function (nth 3 handler))) ;; UNDO
2237 (if (nth 4 handler) ;; COMMAND 2244 (if (nth 4 handler) ;; COMMAND
2238 (setq this-command (nth 4 handler))))) 2245 (setq this-command (nth 4 handler)))))
2239 2246
2240(defun insert-buffer-substring-no-properties (buffer &optional start end) 2247(defun insert-buffer-substring-no-properties (buffer &optional start end)
@@ -2497,6 +2504,20 @@ in BODY."
2497 (let ((combine-after-change-calls t)) 2504 (let ((combine-after-change-calls t))
2498 . ,body) 2505 . ,body)
2499 (combine-after-change-execute))) 2506 (combine-after-change-execute)))
2507
2508(defmacro with-case-table (table &rest body)
2509 "Execute the forms in BODY with TABLE as the current case table.
2510The value returned is the value of the last form in BODY."
2511 (declare (indent 1) (debug t))
2512 (let ((old-case-table (make-symbol "table"))
2513 (old-buffer (make-symbol "buffer")))
2514 `(let ((,old-case-table (current-case-table))
2515 (,old-buffer (current-buffer)))
2516 (unwind-protect
2517 (progn (set-case-table ,table)
2518 ,@body)
2519 (with-current-buffer ,old-buffer
2520 (set-case-table ,old-case-table))))))
2500 2521
2501;;;; Constructing completion tables. 2522;;;; Constructing completion tables.
2502 2523
@@ -2765,7 +2786,7 @@ Unless optional argument INPLACE is non-nil, return a new string."
2765 newstr)) 2786 newstr))
2766 2787
2767(defun replace-regexp-in-string (regexp rep string &optional 2788(defun replace-regexp-in-string (regexp rep string &optional
2768 fixedcase literal subexp start) 2789 fixedcase literal subexp start)
2769 "Replace all matches for REGEXP with REP in STRING. 2790 "Replace all matches for REGEXP with REP in STRING.
2770 2791
2771Return a new string containing the replacements. 2792Return a new string containing the replacements.
@@ -2815,7 +2836,7 @@ and replace a sub-expression, e.g.
2815 rep 2836 rep
2816 (funcall rep (match-string 0 str))) 2837 (funcall rep (match-string 0 str)))
2817 fixedcase literal str subexp) 2838 fixedcase literal str subexp)
2818 (cons (substring string start mb) ; unmatched prefix 2839 (cons (substring string start mb) ; unmatched prefix
2819 matches))) 2840 matches)))
2820 (setq start me)) 2841 (setq start me))
2821 ;; Reconstruct a string from the pieces. 2842 ;; Reconstruct a string from the pieces.
@@ -2836,7 +2857,8 @@ that can be added."
2836(defun remove-from-invisibility-spec (element) 2857(defun remove-from-invisibility-spec (element)
2837 "Remove ELEMENT from `buffer-invisibility-spec'." 2858 "Remove ELEMENT from `buffer-invisibility-spec'."
2838 (if (consp buffer-invisibility-spec) 2859 (if (consp buffer-invisibility-spec)
2839 (setq buffer-invisibility-spec (delete element buffer-invisibility-spec)))) 2860 (setq buffer-invisibility-spec
2861 (delete element buffer-invisibility-spec))))
2840 2862
2841;;;; Syntax tables. 2863;;;; Syntax tables.
2842 2864
@@ -3182,7 +3204,7 @@ Usually the separator is \".\", but it can be any other string.")
3182 3204
3183(defvar version-regexp-alist 3205(defvar version-regexp-alist
3184 '(("^[-_+ ]?a\\(lpha\\)?$" . -3) 3206 '(("^[-_+ ]?a\\(lpha\\)?$" . -3)
3185 ("^[-_+]$" . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases 3207 ("^[-_+]$" . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases
3186 ("^[-_+ ]cvs$" . -3) ; treat "1.2.3-CVS" as alpha release 3208 ("^[-_+ ]cvs$" . -3) ; treat "1.2.3-CVS" as alpha release
3187 ("^[-_+ ]?b\\(eta\\)?$" . -2) 3209 ("^[-_+ ]?b\\(eta\\)?$" . -2)
3188 ("^[-_+ ]?\\(pre\\|rc\\)$" . -1)) 3210 ("^[-_+ ]?\\(pre\\|rc\\)$" . -1))
@@ -3256,7 +3278,7 @@ See documentation for `version-separator' and `version-regexp-alist'."
3256 ;; Change .x.y to 0.x.y 3278 ;; Change .x.y to 0.x.y
3257 (if (and (>= (length ver) (length version-separator)) 3279 (if (and (>= (length ver) (length version-separator))
3258 (string-equal (substring ver 0 (length version-separator)) 3280 (string-equal (substring ver 0 (length version-separator))
3259 version-separator)) 3281 version-separator))
3260 (setq ver (concat "0" ver))) 3282 (setq ver (concat "0" ver)))
3261 (save-match-data 3283 (save-match-data
3262 (let ((i 0) 3284 (let ((i 0)
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index c8a7e9b6536..eca2ce2b9fe 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -144,7 +144,7 @@ For example, \"2\" for /dev/tty2."
144 (event (if w 144 (event (if w
145 (posn-at-x-y (- x left) (- y top) w t) 145 (posn-at-x-y (- x left) (- y top) w t)
146 (append (list nil 'menu-bar) 146 (append (list nil 'menu-bar)
147 (nthcdr 2 (posn-at-x-y x y w t)))))) 147 (nthcdr 2 (posn-at-x-y x y))))))
148 (setcar (nthcdr 3 event) time) 148 (setcar (nthcdr 3 event) time)
149 event)) 149 event))
150 150
diff --git a/lisp/term.el b/lisp/term.el
index a853c12ec39..4ec195662ca 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -627,7 +627,7 @@ executed once when the buffer is created."
627 "Keyboard map for sending characters directly to the inferior process.") 627 "Keyboard map for sending characters directly to the inferior process.")
628(defvar term-escape-char nil 628(defvar term-escape-char nil
629 "Escape character for char sub-mode of term mode. 629 "Escape character for char sub-mode of term mode.
630Do not change it directly; use `term-set-escape-char' instead.") 630Do not change it directly; use `term-set-escape-char' instead.")
631(defvar term-raw-escape-map nil) 631(defvar term-raw-escape-map nil)
632 632
633(defvar term-pager-break-map nil) 633(defvar term-pager-break-map nil)
@@ -714,7 +714,7 @@ Buffer local variable.")
714(defvar term-buffer-maximum-size 2048 714(defvar term-buffer-maximum-size 2048
715 "*The maximum size in lines for term buffers. 715 "*The maximum size in lines for term buffers.
716Term buffers are truncated from the top to be no greater than this number. 716Term buffers are truncated from the top to be no greater than this number.
717Notice that a setting of 0 means 'don't truncate anything'. This variable 717Notice that a setting of 0 means \"don't truncate anything\". This variable
718is buffer-local.") 718is buffer-local.")
719;;; 719;;;
720 720
@@ -856,7 +856,7 @@ is buffer-local.")
856;; Set up term-raw-map, etc. 856;; Set up term-raw-map, etc.
857 857
858(defun term-set-escape-char (c) 858(defun term-set-escape-char (c)
859 "Change term-escape-char and keymaps that depend on it." 859 "Change `term-escape-char' and keymaps that depend on it."
860 (when term-escape-char 860 (when term-escape-char
861 (define-key term-raw-map term-escape-char 'term-send-raw)) 861 (define-key term-raw-map term-escape-char 'term-send-raw))
862 (setq c (make-string 1 c)) 862 (setq c (make-string 1 c))
@@ -1100,7 +1100,7 @@ Entry to this mode runs the hooks on `term-mode-hook'."
1100 (make-local-variable 'term-current-face) 1100 (make-local-variable 'term-current-face)
1101 (make-local-variable 'term-pending-frame) 1101 (make-local-variable 'term-pending-frame)
1102 (setq term-pending-frame nil) 1102 (setq term-pending-frame nil)
1103 ;; Cua-mode's keybindings interfere with the term keybindings, disable it. 1103 ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
1104 (set (make-local-variable 'cua-mode) nil) 1104 (set (make-local-variable 'cua-mode) nil)
1105 (run-mode-hooks 'term-mode-hook) 1105 (run-mode-hooks 'term-mode-hook)
1106 (when (featurep 'xemacs) 1106 (when (featurep 'xemacs)
@@ -1196,7 +1196,7 @@ without any interpretation."
1196 "Insert the last stretch of killed text at the position clicked on." 1196 "Insert the last stretch of killed text at the position clicked on."
1197 (interactive "e\nP") 1197 (interactive "e\nP")
1198 (if (featurep 'xemacs) 1198 (if (featurep 'xemacs)
1199 (term-send-raw-string 1199 (term-send-raw-string
1200 (or (condition-case () (x-get-selection) (error ())) 1200 (or (condition-case () (x-get-selection) (error ()))
1201 (x-get-cutbuffer) 1201 (x-get-cutbuffer)
1202 (error "No selection or cut buffer available"))) 1202 (error "No selection or cut buffer available")))
@@ -1314,7 +1314,7 @@ commands to use in that buffer.
1314 "Start up a process in buffer for term modes. 1314 "Start up a process in buffer for term modes.
1315Blasts any old process running in the buffer. Doesn't set the buffer mode. 1315Blasts any old process running in the buffer. Doesn't set the buffer mode.
1316You can use this to cheaply run a series of processes in the same term 1316You can use this to cheaply run a series of processes in the same term
1317buffer. The hook term-exec-hook is run after each exec." 1317buffer. The hook `term-exec-hook' is run after each exec."
1318 (save-excursion 1318 (save-excursion
1319 (set-buffer buffer) 1319 (set-buffer buffer)
1320 (let ((proc (get-buffer-process buffer))) ; Blast any old process. 1320 (let ((proc (get-buffer-process buffer))) ; Blast any old process.
@@ -1344,7 +1344,7 @@ buffer. The hook term-exec-hook is run after each exec."
1344 (run-hooks 'term-exec-hook) 1344 (run-hooks 'term-exec-hook)
1345 buffer))) 1345 buffer)))
1346 1346
1347(defun term-sentinel (proc msg) 1347(defun term-sentinel (proc msg)
1348 "Sentinel for term buffers. 1348 "Sentinel for term buffers.
1349The main purpose is to get rid of the local keymap." 1349The main purpose is to get rid of the local keymap."
1350 (let ((buffer (process-buffer proc))) 1350 (let ((buffer (process-buffer proc)))
@@ -1404,7 +1404,7 @@ The main purpose is to get rid of the local keymap."
1404:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:" 1404:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:"
1405;;; : -undefine ic 1405;;; : -undefine ic
1406;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\ 1406;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
1407 "termcap capabilities supported") 1407 "Termcap capabilities supported.")
1408 1408
1409;;; This auxiliary function cranks up the process for term-exec in 1409;;; This auxiliary function cranks up the process for term-exec in
1410;;; the appropriate environment. 1410;;; the appropriate environment.
@@ -2046,9 +2046,9 @@ Similarly for Soar, Scheme, etc."
2046 (funcall term-input-sender proc input))))) 2046 (funcall term-input-sender proc input)))))
2047 2047
2048(defun term-get-old-input-default () 2048(defun term-get-old-input-default ()
2049 "Default for term-get-old-input. 2049 "Default for `term-get-old-input'.
2050Take the current line, and discard any initial text matching 2050Take the current line, and discard any initial text matching
2051term-prompt-regexp." 2051`term-prompt-regexp'."
2052 (save-excursion 2052 (save-excursion
2053 (beginning-of-line) 2053 (beginning-of-line)
2054 (term-skip-prompt) 2054 (term-skip-prompt)
@@ -2068,7 +2068,7 @@ Calls `term-get-old-input' to get old input."
2068 (insert input)))) 2068 (insert input))))
2069 2069
2070(defun term-skip-prompt () 2070(defun term-skip-prompt ()
2071 "Skip past the text matching regexp term-prompt-regexp. 2071 "Skip past the text matching regexp `term-prompt-regexp'.
2072If this takes us past the end of the current line, don't skip at all." 2072If this takes us past the end of the current line, don't skip at all."
2073 (let ((eol (save-excursion (end-of-line) (point)))) 2073 (let ((eol (save-excursion (end-of-line) (point))))
2074 (when (and (looking-at term-prompt-regexp) 2074 (when (and (looking-at term-prompt-regexp)
@@ -2099,7 +2099,7 @@ If a prefix argument is given (\\[universal-argument]), then no prompt skip
2099-- go straight to column 0. 2099-- go straight to column 0.
2100 2100
2101The prompt skip is done by skipping text matching the regular expression 2101The prompt skip is done by skipping text matching the regular expression
2102term-prompt-regexp, a buffer local variable." 2102`term-prompt-regexp', a buffer local variable."
2103 (interactive "P") 2103 (interactive "P")
2104 (beginning-of-line) 2104 (beginning-of-line)
2105 (when (null arg) (term-skip-prompt))) 2105 (when (null arg) (term-skip-prompt)))
@@ -2182,8 +2182,8 @@ If your process is choking on big inputs, try lowering the value.")
2182 2182
2183(defun term-send-string (proc str) 2183(defun term-send-string (proc str)
2184 "Send to PROC the contents of STR as input. 2184 "Send to PROC the contents of STR as input.
2185This is equivalent to process-send-string, except that long input strings 2185This is equivalent to `process-send-string', except that long input strings
2186are broken up into chunks of size term-input-chunk-size. Processes 2186are broken up into chunks of size `term-input-chunk-size'. Processes
2187are given a chance to output between chunks. This can help prevent processes 2187are given a chance to output between chunks. This can help prevent processes
2188from hanging when you send them long inputs on some OS's." 2188from hanging when you send them long inputs on some OS's."
2189 (let* ((len (length str)) 2189 (let* ((len (length str))
@@ -2197,7 +2197,7 @@ from hanging when you send them long inputs on some OS's."
2197 2197
2198(defun term-send-region (proc start end) 2198(defun term-send-region (proc start end)
2199 "Send to PROC the region delimited by START and END. 2199 "Send to PROC the region delimited by START and END.
2200This is a replacement for process-send-region that tries to keep 2200This is a replacement for `process-send-region' that tries to keep
2201your process from hanging on long inputs. See `term-send-string'." 2201your process from hanging on long inputs. See `term-send-string'."
2202 (term-send-string proc (buffer-substring start end))) 2202 (term-send-string proc (buffer-substring start end)))
2203 2203
@@ -2876,7 +2876,7 @@ See `term-prompt-regexp'."
2876 ;; (setq term-terminal-state 0)) 2876 ;; (setq term-terminal-state 0))
2877 ((eq char ?M) ;; scroll reversed (terminfo: ri) 2877 ((eq char ?M) ;; scroll reversed (terminfo: ri)
2878 (if (or (< (term-current-row) term-scroll-start) 2878 (if (or (< (term-current-row) term-scroll-start)
2879 (>= (1- (term-current-row)) 2879 (>= (1- (term-current-row))
2880 term-scroll-start)) 2880 term-scroll-start))
2881 ;; Scrolling up will not move outside 2881 ;; Scrolling up will not move outside
2882 ;; the scroll region. 2882 ;; the scroll region.
@@ -2902,7 +2902,7 @@ See `term-prompt-regexp'."
2902 (when term-saved-cursor 2902 (when term-saved-cursor
2903 (term-goto (nth 0 term-saved-cursor) 2903 (term-goto (nth 0 term-saved-cursor)
2904 (nth 1 term-saved-cursor)) 2904 (nth 1 term-saved-cursor))
2905 (setq term-ansi-current-bg-color 2905 (setq term-ansi-current-bg-color
2906 (nth 2 term-saved-cursor) 2906 (nth 2 term-saved-cursor)
2907 term-ansi-current-bold 2907 term-ansi-current-bold
2908 (nth 3 term-saved-cursor) 2908 (nth 3 term-saved-cursor)
@@ -3190,7 +3190,7 @@ See `term-prompt-regexp'."
3190 (when term-ansi-current-underline 3190 (when term-ansi-current-underline
3191 (setq term-current-face 3191 (setq term-current-face
3192 (append '(:underline t) term-current-face)))))) 3192 (append '(:underline t) term-current-face))))))
3193 3193
3194;;; (message "Debug %S" term-current-face) 3194;;; (message "Debug %S" term-current-face)
3195 (setq term-ansi-face-already-done nil)) 3195 (setq term-ansi-face-already-done nil))
3196 3196
@@ -3219,7 +3219,7 @@ See `term-prompt-regexp'."
3219 ((eq char ?A) 3219 ((eq char ?A)
3220 (term-handle-deferred-scroll) 3220 (term-handle-deferred-scroll)
3221 (let ((tcr (term-current-row))) 3221 (let ((tcr (term-current-row)))
3222 (term-down 3222 (term-down
3223 (if (< (- tcr term-terminal-parameter) term-scroll-start) 3223 (if (< (- tcr term-terminal-parameter) term-scroll-start)
3224 ;; If the amount to move is before scroll start, move 3224 ;; If the amount to move is before scroll start, move
3225 ;; to scroll start. 3225 ;; to scroll start.
@@ -3231,7 +3231,7 @@ See `term-prompt-regexp'."
3231 ((eq char ?B) 3231 ((eq char ?B)
3232 (let ((tcr (term-current-row))) 3232 (let ((tcr (term-current-row)))
3233 (unless (= tcr (1- term-scroll-end)) 3233 (unless (= tcr (1- term-scroll-end))
3234 (term-down 3234 (term-down
3235 (if (> (+ tcr term-terminal-parameter) term-scroll-end) 3235 (if (> (+ tcr term-terminal-parameter) term-scroll-end)
3236 (- term-scroll-end 1 tcr) 3236 (- term-scroll-end 1 tcr)
3237 (max 1 term-terminal-parameter)) t)))) 3237 (max 1 term-terminal-parameter)) t))))
@@ -3495,7 +3495,7 @@ The top-most line is line 0."
3495 ((term-pager-continue deficit))))) 3495 ((term-pager-continue deficit)))))
3496 3496
3497(defun term-pager-page (arg) 3497(defun term-pager-page (arg)
3498 "Proceed past the **MORE** break, allowing the next page of output to appear" 3498 "Proceed past the **MORE** break, allowing the next page of output to appear."
3499 (interactive "p") 3499 (interactive "p")
3500 (term-pager-line (* arg term-height))) 3500 (term-pager-line (* arg term-height)))
3501 3501
@@ -3564,7 +3564,7 @@ The top-most line is line 0."
3564 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count)) 3564 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
3565 3565
3566(defun term-pager-help () 3566(defun term-pager-help ()
3567 "Provide help on commands available in a terminal-emulator **MORE** break" 3567 "Provide help on commands available in a terminal-emulator **MORE** break."
3568 (interactive) 3568 (interactive)
3569 (message "Terminal-emulator pager break help...") 3569 (message "Terminal-emulator pager break help...")
3570 (sit-for 0) 3570 (sit-for 0)
@@ -3606,9 +3606,9 @@ all pending output has been dealt with."))
3606 3606
3607(defun term-handle-scroll (down) 3607(defun term-handle-scroll (down)
3608 (let ((scroll-needed 3608 (let ((scroll-needed
3609 (- (+ (term-current-row) down) 3609 (- (+ (term-current-row) down)
3610 (if (< down 0) term-scroll-start term-scroll-end)))) 3610 (if (< down 0) term-scroll-start term-scroll-end))))
3611 (when (or (and (< down 0) (< scroll-needed 0)) 3611 (when (or (and (< down 0) (< scroll-needed 0))
3612 (and (> down 0) (> scroll-needed 0))) 3612 (and (> down 0) (> scroll-needed 0)))
3613 (let ((save-point (copy-marker (point))) (save-top)) 3613 (let ((save-point (copy-marker (point))) (save-top))
3614 (goto-char term-home-marker) 3614 (goto-char term-home-marker)
@@ -3706,7 +3706,7 @@ all pending output has been dealt with."))
3706 ;; contain a space, to force the previous line to continue to wrap. 3706 ;; contain a space, to force the previous line to continue to wrap.
3707 ;; We could do this always, but it seems preferable to not add the 3707 ;; We could do this always, but it seems preferable to not add the
3708 ;; extra space when wrapped is false. 3708 ;; extra space when wrapped is false.
3709 (when wrapped 3709 (when wrapped
3710 (insert ? )) 3710 (insert ? ))
3711 (insert ?\n) 3711 (insert ?\n)
3712 (put-text-property saved-point (point) 'face 'default) 3712 (put-text-property saved-point (point) 'face 'default)
@@ -3797,8 +3797,8 @@ Should only be called when point is at the start of a screen line."
3797 ;; we need to go one line past it in order to ensure correct 3797 ;; we need to go one line past it in order to ensure correct
3798 ;; scrolling. 3798 ;; scrolling.
3799 (if (< save-current-row term-scroll-start) 3799 (if (< save-current-row term-scroll-start)
3800 ;; If point is before scroll start, 3800 ;; If point is before scroll start,
3801 (progn 3801 (progn
3802 (setq lines (- lines (- term-scroll-start save-current-row))) 3802 (setq lines (- lines (- term-scroll-start save-current-row)))
3803 (term-down (- term-scroll-start save-current-row)) 3803 (term-down (- term-scroll-start save-current-row))
3804 (setq start (point))) 3804 (setq start (point)))
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 9ac820dda72..f601976cd63 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -163,6 +163,22 @@
163(define-key xterm-function-map "\e[4~" [select]) 163(define-key xterm-function-map "\e[4~" [select])
164(define-key xterm-function-map "\e[29~" [print]) 164(define-key xterm-function-map "\e[29~" [print])
165 165
166(define-key xterm-function-map "\eOj" [kp-multiply])
167(define-key xterm-function-map "\eOk" [kp-add])
168(define-key xterm-function-map "\eOl" [kp-separator])
169(define-key xterm-function-map "\eOm" [kp-subtract])
170(define-key xterm-function-map "\eOo" [kp-divide])
171(define-key xterm-function-map "\eOp" [kp-0])
172(define-key xterm-function-map "\eOq" [kp-1])
173(define-key xterm-function-map "\eOr" [kp-2])
174(define-key xterm-function-map "\eOs" [kp-3])
175(define-key xterm-function-map "\eOt" [kp-4])
176(define-key xterm-function-map "\eOu" [kp-5])
177(define-key xterm-function-map "\eOv" [kp-6])
178(define-key xterm-function-map "\eOw" [kp-7])
179(define-key xterm-function-map "\eOx" [kp-8])
180(define-key xterm-function-map "\eOy" [kp-9])
181
166;; These keys are available in xterm starting from version 216 182;; These keys are available in xterm starting from version 216
167;; if the modifyOtherKeys resource is set to 1. 183;; if the modifyOtherKeys resource is set to 1.
168 184
@@ -177,7 +193,7 @@
177(define-key xterm-function-map "\e[27;5;49~" [?\C-1]) 193(define-key xterm-function-map "\e[27;5;49~" [?\C-1])
178;; Not all C-DIGIT keys have a distinct binding. 194;; Not all C-DIGIT keys have a distinct binding.
179(define-key xterm-function-map "\e[27;5;57~" [?\C-9]) 195(define-key xterm-function-map "\e[27;5;57~" [?\C-9])
180(define-key xterm-function-map "\e[27;5;59~" [(C-\;)]) 196(define-key xterm-function-map "\e[27;5;59~" [?\C-\;])
181(define-key xterm-function-map "\e[27;5;61~" [?\C-=]) 197(define-key xterm-function-map "\e[27;5;61~" [?\C-=])
182(define-key xterm-function-map "\e[27;5;92~" [?\C-\\]) 198(define-key xterm-function-map "\e[27;5;92~" [?\C-\\])
183 199
@@ -186,7 +202,7 @@
186(define-key xterm-function-map "\e[27;6;35~" [?\C-#]) 202(define-key xterm-function-map "\e[27;6;35~" [?\C-#])
187(define-key xterm-function-map "\e[27;6;36~" [?\C-$]) 203(define-key xterm-function-map "\e[27;6;36~" [?\C-$])
188(define-key xterm-function-map "\e[27;6;37~" [?\C-%]) 204(define-key xterm-function-map "\e[27;6;37~" [?\C-%])
189(define-key xterm-function-map "\e[27;6;38~" [(C-&)]) 205(define-key xterm-function-map "\e[27;6;38~" [?\C-&])
190(define-key xterm-function-map "\e[27;6;40~" [?\C-(]) 206(define-key xterm-function-map "\e[27;6;40~" [?\C-(])
191(define-key xterm-function-map "\e[27;6;41~" [?\C-)]) 207(define-key xterm-function-map "\e[27;6;41~" [?\C-)])
192(define-key xterm-function-map "\e[27;6;42~" [?\C-*]) 208(define-key xterm-function-map "\e[27;6;42~" [?\C-*])
@@ -194,13 +210,13 @@
194(define-key xterm-function-map "\e[27;6;58~" [?\C-:]) 210(define-key xterm-function-map "\e[27;6;58~" [?\C-:])
195(define-key xterm-function-map "\e[27;6;60~" [?\C-<]) 211(define-key xterm-function-map "\e[27;6;60~" [?\C-<])
196(define-key xterm-function-map "\e[27;6;62~" [?\C->]) 212(define-key xterm-function-map "\e[27;6;62~" [?\C->])
197(define-key xterm-function-map "\e[27;6;63~" [(C-\?)]) 213(define-key xterm-function-map "\e[27;6;63~" [(control ??)])
198 214
199;; These are the strings emitted for various C-M- combinations 215;; These are the strings emitted for various C-M- combinations
200;; for keyboards that the Meta and Alt modifiers are on the same 216;; for keyboards that the Meta and Alt modifiers are on the same
201;; key (usually labeled "Alt"). 217;; key (usually labeled "Alt").
202(define-key xterm-function-map "\e[27;13;9~" [(C-M-tab)]) 218(define-key xterm-function-map "\e[27;13;9~" [C-M-tab])
203(define-key xterm-function-map "\e[27;13;13~" [(C-M-return)]) 219(define-key xterm-function-map "\e[27;13;13~" [C-M-return])
204 220
205(define-key xterm-function-map "\e[27;13;39~" [?\C-\M-\']) 221(define-key xterm-function-map "\e[27;13;39~" [?\C-\M-\'])
206(define-key xterm-function-map "\e[27;13;44~" [?\C-\M-,]) 222(define-key xterm-function-map "\e[27;13;44~" [?\C-\M-,])
@@ -226,7 +242,7 @@
226(define-key xterm-function-map "\e[27;14;35~" [?\C-\M-#]) 242(define-key xterm-function-map "\e[27;14;35~" [?\C-\M-#])
227(define-key xterm-function-map "\e[27;14;36~" [?\C-\M-$]) 243(define-key xterm-function-map "\e[27;14;36~" [?\C-\M-$])
228(define-key xterm-function-map "\e[27;14;37~" [?\C-\M-%]) 244(define-key xterm-function-map "\e[27;14;37~" [?\C-\M-%])
229(define-key xterm-function-map "\e[27;14;38~" [(C-M-&)]) 245(define-key xterm-function-map "\e[27;14;38~" [?\C-\M-&])
230(define-key xterm-function-map "\e[27;14;40~" [?\C-\M-(]) 246(define-key xterm-function-map "\e[27;14;40~" [?\C-\M-(])
231(define-key xterm-function-map "\e[27;14;41~" [?\C-\M-)]) 247(define-key xterm-function-map "\e[27;14;41~" [?\C-\M-)])
232(define-key xterm-function-map "\e[27;14;42~" [?\C-\M-*]) 248(define-key xterm-function-map "\e[27;14;42~" [?\C-\M-*])
@@ -234,11 +250,12 @@
234(define-key xterm-function-map "\e[27;14;58~" [?\C-\M-:]) 250(define-key xterm-function-map "\e[27;14;58~" [?\C-\M-:])
235(define-key xterm-function-map "\e[27;14;60~" [?\C-\M-<]) 251(define-key xterm-function-map "\e[27;14;60~" [?\C-\M-<])
236(define-key xterm-function-map "\e[27;14;62~" [?\C-\M->]) 252(define-key xterm-function-map "\e[27;14;62~" [?\C-\M->])
237(define-key xterm-function-map "\e[27;14;63~" [(C-M-\?)]) 253(define-key xterm-function-map "\e[27;14;63~" [(control meta ??)])
238 254
239(define-key xterm-function-map "\e[27;7;9~" [(C-M-tab)]) 255(define-key xterm-function-map "\e[27;7;9~" [C-M-tab])
240(define-key xterm-function-map "\e[27;7;13~" [(C-M-return)]) 256(define-key xterm-function-map "\e[27;7;13~" [C-M-return])
241 257
258(define-key xterm-function-map "\e[27;7;32~" [?\C-\M-\s])
242(define-key xterm-function-map "\e[27;7;39~" [?\C-\M-\']) 259(define-key xterm-function-map "\e[27;7;39~" [?\C-\M-\'])
243(define-key xterm-function-map "\e[27;7;44~" [?\C-\M-,]) 260(define-key xterm-function-map "\e[27;7;44~" [?\C-\M-,])
244(define-key xterm-function-map "\e[27;7;45~" [?\C-\M--]) 261(define-key xterm-function-map "\e[27;7;45~" [?\C-\M--])
@@ -263,7 +280,7 @@
263(define-key xterm-function-map "\e[27;8;35~" [?\C-\M-#]) 280(define-key xterm-function-map "\e[27;8;35~" [?\C-\M-#])
264(define-key xterm-function-map "\e[27;8;36~" [?\C-\M-$]) 281(define-key xterm-function-map "\e[27;8;36~" [?\C-\M-$])
265(define-key xterm-function-map "\e[27;8;37~" [?\C-\M-%]) 282(define-key xterm-function-map "\e[27;8;37~" [?\C-\M-%])
266(define-key xterm-function-map "\e[27;8;38~" [(C-M-&)]) 283(define-key xterm-function-map "\e[27;8;38~" [?\C-\M-&])
267(define-key xterm-function-map "\e[27;8;40~" [?\C-\M-(]) 284(define-key xterm-function-map "\e[27;8;40~" [?\C-\M-(])
268(define-key xterm-function-map "\e[27;8;41~" [?\C-\M-)]) 285(define-key xterm-function-map "\e[27;8;41~" [?\C-\M-)])
269(define-key xterm-function-map "\e[27;8;42~" [?\C-\M-*]) 286(define-key xterm-function-map "\e[27;8;42~" [?\C-\M-*])
@@ -271,13 +288,13 @@
271(define-key xterm-function-map "\e[27;8;58~" [?\C-\M-:]) 288(define-key xterm-function-map "\e[27;8;58~" [?\C-\M-:])
272(define-key xterm-function-map "\e[27;8;60~" [?\C-\M-<]) 289(define-key xterm-function-map "\e[27;8;60~" [?\C-\M-<])
273(define-key xterm-function-map "\e[27;8;62~" [?\C-\M->]) 290(define-key xterm-function-map "\e[27;8;62~" [?\C-\M->])
274(define-key xterm-function-map "\e[27;8;63~" [(C-M-\?)]) 291(define-key xterm-function-map "\e[27;8;63~" [(control meta ??)])
275 292
276(define-key xterm-function-map "\e[27;2;9~" [S-tab]) 293(define-key xterm-function-map "\e[27;2;9~" [S-tab])
277(define-key xterm-function-map "\e[27;2;13~" [S-return]) 294(define-key xterm-function-map "\e[27;2;13~" [S-return])
278 295
279(define-key xterm-function-map "\e[27;6;9~" [(C-S-tab)]) 296(define-key xterm-function-map "\e[27;6;9~" [C-S-tab])
280(define-key xterm-function-map "\e[27;6;13~" [(C-S-return)]) 297(define-key xterm-function-map "\e[27;6;13~" [C-S-return])
281 298
282;; Other versions of xterm might emit these. 299;; Other versions of xterm might emit these.
283(define-key xterm-function-map "\e[A" [up]) 300(define-key xterm-function-map "\e[A" [up])
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 06fa3a01186..0545ca85812 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -224,7 +224,7 @@ If parsing fails, try to set this variable to nil."
224 :group 'bibtex 224 :group 'bibtex
225 :type 'boolean) 225 :type 'boolean)
226 226
227(defvar bibtex-entry-field-alist 227(defcustom bibtex-entry-field-alist
228 '(("Article" 228 '(("Article"
229 ((("author" "Author1 [and Author2 ...] [and others]") 229 ((("author" "Author1 [and Author2 ...] [and others]")
230 ("title" "Title of the article (BibTeX converts it to lowercase)") 230 ("title" "Title of the article (BibTeX converts it to lowercase)")
@@ -452,7 +452,47 @@ appears in the echo area, INIT is either the initial content of the
452field or a function, which is called to determine the initial content 452field or a function, which is called to determine the initial content
453of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the 453of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the
454field is an alternative. ALTERNATIVE-FLAG may be t only in the 454field is an alternative. ALTERNATIVE-FLAG may be t only in the
455REQUIRED or CROSSREF-REQUIRED lists.") 455REQUIRED or CROSSREF-REQUIRED lists."
456 :group 'bibtex
457 :type '(repeat (list (string :tag "Entry name")
458 (list (repeat :tag "required"
459 (group (string :tag "Field")
460 (string :tag "Comment")
461 (option (choice :tag "Init" :value nil
462 (const nil)
463 (string :tag "string")
464 (function :tag "function")))
465 (option (choice (const nil)
466 (const :tag "Alternative" t)))))
467 (repeat :tag "optional"
468 (group (string :tag "Field")
469 (string :tag "Comment")
470 (option (choice :tag "Init" :value nil
471 (const nil)
472 (string :tag "string")
473 (function :tag "function")))
474 (option (choice (const nil)
475 (const :tag "Alternative" t))))))
476 (option
477 (list :tag "Crossref"
478 (repeat :tag "required"
479 (group (string :tag "Field")
480 (string :tag "Comment")
481 (option (choice :tag "Init" :value nil
482 (const nil)
483 (string :tag "string")
484 (function :tag "function")))
485 (option (choice (const nil)
486 (const :tag "Alternative" t)))))
487 (repeat :tag "optional"
488 (group (string :tag "Field")
489 (string :tag "Comment")
490 (option (choice :tag "Init" :value nil
491 (const nil)
492 (string :tag "string")
493 (function :tag "function")))
494 (option (choice (const nil)
495 (const :tag "Alternative" t))))))))))
456(put 'bibtex-entry-field-alist 'risky-local-variable t) 496(put 'bibtex-entry-field-alist 'risky-local-variable t)
457 497
458(defcustom bibtex-comment-start "@Comment" 498(defcustom bibtex-comment-start "@Comment"
@@ -1785,7 +1825,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
1785 (set-mark (point)) 1825 (set-mark (point))
1786 (message "Mark set") 1826 (message "Mark set")
1787 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer 1827 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer
1788 bibtex-field-kill-ring) t)) 1828 bibtex-field-kill-ring) t nil t))
1789 ;; insert past the current entry 1829 ;; insert past the current entry
1790 (bibtex-skip-to-valid-entry) 1830 (bibtex-skip-to-valid-entry)
1791 (set-mark (point)) 1831 (set-mark (point))
@@ -2831,7 +2871,7 @@ and `bibtex-user-optional-fields'."
2831 (push (list "key" 2871 (push (list "key"
2832 "Used for reference key creation if author and editor fields are missing" 2872 "Used for reference key creation if author and editor fields are missing"
2833 (if (or (stringp bibtex-include-OPTkey) 2873 (if (or (stringp bibtex-include-OPTkey)
2834 (fboundp bibtex-include-OPTkey)) 2874 (functionp bibtex-include-OPTkey))
2835 bibtex-include-OPTkey)) 2875 bibtex-include-OPTkey))
2836 optional)) 2876 optional))
2837 (if (member-ignore-case entry-type bibtex-include-OPTcrossref) 2877 (if (member-ignore-case entry-type bibtex-include-OPTcrossref)
@@ -3020,7 +3060,7 @@ interactive calls."
3020 (if comment (message "%s" (nth 1 comment)) 3060 (if comment (message "%s" (nth 1 comment))
3021 (message "No comment available"))))) 3061 (message "No comment available")))))
3022 3062
3023(defun bibtex-make-field (field &optional move interactive) 3063(defun bibtex-make-field (field &optional move interactive nodelim)
3024 "Make a field named FIELD in current BibTeX entry. 3064 "Make a field named FIELD in current BibTeX entry.
3025FIELD is either a string or a list of the form 3065FIELD is either a string or a list of the form
3026\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in 3066\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
@@ -3028,7 +3068,8 @@ FIELD is either a string or a list of the form
3028If MOVE is non-nil, move point past the present field before making 3068If MOVE is non-nil, move point past the present field before making
3029the new field. If INTERACTIVE is non-nil, move point to the end of 3069the new field. If INTERACTIVE is non-nil, move point to the end of
3030the new field. Otherwise move point past the new field. 3070the new field. Otherwise move point past the new field.
3031MOVE and INTERACTIVE are t when called interactively." 3071MOVE and INTERACTIVE are t when called interactively.
3072INIT is surrounded by field delimiters, unless NODELIM is non-nil."
3032 (interactive 3073 (interactive
3033 (list (let ((completion-ignore-case t) 3074 (list (let ((completion-ignore-case t)
3034 (field-list (bibtex-field-list 3075 (field-list (bibtex-field-list
@@ -3058,10 +3099,13 @@ MOVE and INTERACTIVE are t when called interactively."
3058 (indent-to-column (+ bibtex-entry-offset 3099 (indent-to-column (+ bibtex-entry-offset
3059 bibtex-text-indentation))) 3100 bibtex-text-indentation)))
3060 (let ((init (nth 2 field))) 3101 (let ((init (nth 2 field)))
3061 (insert (cond ((stringp init) init) 3102 (if (not init) (setq init "")
3062 ((fboundp init) (funcall init)) 3103 (if (functionp init) (setq init (funcall init)))
3063 (t (concat (bibtex-field-left-delimiter) 3104 (unless (stringp init) (error "`%s' is not a string" init)))
3064 (bibtex-field-right-delimiter)))))) 3105 ;; NODELIM is required by `bibtex-insert-kill'
3106 (if nodelim (insert init)
3107 (insert (bibtex-field-left-delimiter) init
3108 (bibtex-field-right-delimiter))))
3065 (when interactive 3109 (when interactive
3066 ;; (bibtex-find-text nil nil bibtex-help-message) 3110 ;; (bibtex-find-text nil nil bibtex-help-message)
3067 (if (memq (preceding-char) '(?} ?\")) (forward-char -1)) 3111 (if (memq (preceding-char) '(?} ?\")) (forward-char -1))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index a6bd082af38..339160db9bd 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -431,7 +431,7 @@ property of the major mode name.")
431(defface flyspell-incorrect 431(defface flyspell-incorrect
432 '((((class color)) (:foreground "OrangeRed" :bold t :underline t)) 432 '((((class color)) (:foreground "OrangeRed" :bold t :underline t))
433 (t (:bold t))) 433 (t (:bold t)))
434 "Face used to display a misspelled word in Flyspell." 434 "Face used for marking a misspelled word in Flyspell."
435 :group 'flyspell) 435 :group 'flyspell)
436;; backward-compatibility alias 436;; backward-compatibility alias
437(put 'flyspell-incorrect-face 'face-alias 'flyspell-incorrect) 437(put 'flyspell-incorrect-face 'face-alias 'flyspell-incorrect)
@@ -439,7 +439,7 @@ property of the major mode name.")
439(defface flyspell-duplicate 439(defface flyspell-duplicate
440 '((((class color)) (:foreground "Gold3" :bold t :underline t)) 440 '((((class color)) (:foreground "Gold3" :bold t :underline t))
441 (t (:bold t))) 441 (t (:bold t)))
442 "Face used to display subsequent occurrences of a misspelled word. 442 "Face used for marking a misspelled word that appears twice in the buffer.
443See also `flyspell-duplicate-distance'." 443See also `flyspell-duplicate-distance'."
444 :group 'flyspell) 444 :group 'flyspell)
445;; backward-compatibility alias 445;; backward-compatibility alias
@@ -1509,7 +1509,7 @@ The buffer to mark them in is `flyspell-large-region-buffer'."
1509 (if flyspell-issue-message-flag (message "Checking region...")) 1509 (if flyspell-issue-message-flag (message "Checking region..."))
1510 (set-buffer curbuf) 1510 (set-buffer curbuf)
1511 (ispell-check-version) 1511 (ispell-check-version)
1512 (let ((c (apply 'call-process-region beg 1512 (let ((c (apply 'ispell-call-process-region beg
1513 end 1513 end
1514 ispell-program-name 1514 ispell-program-name
1515 nil 1515 nil
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index a727fa2df5a..8ee12638dee 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 4.67c 8;; Version: 4.67d
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -7952,7 +7952,10 @@ Parameters get priority."
7952 entry s) 7952 entry s)
7953 (switch-to-buffer-other-window "*Edit Formulas*") 7953 (switch-to-buffer-other-window "*Edit Formulas*")
7954 (erase-buffer) 7954 (erase-buffer)
7955 (fundamental-mode) 7955 ;; Keep global-font-lock-mode from turning on font-lock-mode
7956 (let ((font-lock-global-modes '(not fundamental-mode)))
7957 (fundamental-mode))
7958 (org-set-local 'font-lock-global-modes (list 'not major-mode))
7956 (org-set-local 'org-pos pos) 7959 (org-set-local 'org-pos pos)
7957 (org-set-local 'org-window-configuration wc) 7960 (org-set-local 'org-window-configuration wc)
7958 (use-local-map org-edit-formulas-map) 7961 (use-local-map org-edit-formulas-map)
@@ -12945,6 +12948,8 @@ The following commands are available:
12945 (setq org-agenda-undo-list nil 12948 (setq org-agenda-undo-list nil
12946 org-agenda-pending-undo-list nil) 12949 org-agenda-pending-undo-list nil)
12947 (setq major-mode 'org-agenda-mode) 12950 (setq major-mode 'org-agenda-mode)
12951 ;; Keep global-font-lock-mode from turning on font-lock-mode
12952 (org-set-local 'font-lock-global-modes (list 'not major-mode))
12948 (setq mode-name "Org-Agenda") 12953 (setq mode-name "Org-Agenda")
12949 (use-local-map org-agenda-mode-map) 12954 (use-local-map org-agenda-mode-map)
12950 (easy-menu-add org-agenda-menu) 12955 (easy-menu-add org-agenda-menu)
diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el
index 7930574f0e7..02840a692e7 100644
--- a/lisp/textmodes/reftex-auc.el
+++ b/lisp/textmodes/reftex-auc.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index ded1caa12bd..3dcd785dd4d 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el
index bd0d75760b6..60ed932c534 100644
--- a/lisp/textmodes/reftex-dcr.el
+++ b/lisp/textmodes/reftex-dcr.el
@@ -4,8 +4,8 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8;;
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index 403e4e84ea8..9ddfb5a4aca 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 25525fef6dd..ee2c2aefcf5 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index 8ee552b3226..d18b3e85651 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -4,8 +4,8 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8;;
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index a0471f18b82..e95dc16f133 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el
index 9b9d60d1f62..8f1bb3d13a8 100644
--- a/lisp/textmodes/reftex-sel.el
+++ b/lisp/textmodes/reftex-sel.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 84269dfc091..8d2287b51cb 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -3,6 +3,7 @@
3;; 2006, 2007 Free Software Foundation, Inc. 3;; 2006, 2007 Free Software Foundation, Inc.
4 4
5;; Author: Carsten Dominik <dominik@science.uva.nl> 5;; Author: Carsten Dominik <dominik@science.uva.nl>
6;; Maintainer: auctex-devel@gnu.org
6;; Version: 4.31 7;; Version: 4.31
7 8
8;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 40e73b49f3d..bfc5581ccac 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -4,6 +4,7 @@
4;; 2006, 2007 Free Software Foundation, Inc. 4;; 2006, 2007 Free Software Foundation, Inc.
5 5
6;; Author: Carsten Dominik <dominik@science.uva.nl> 6;; Author: Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: auctex-devel@gnu.org
7;; Version: 4.31 8;; Version: 4.31
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 39141541d82..343a7c5a947 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -3,6 +3,7 @@
3;; 2006, 2007 Free Software Foundation, Inc. 3;; 2006, 2007 Free Software Foundation, Inc.
4 4
5;; Author: Carsten Dominik <dominik@science.uva.nl> 5;; Author: Carsten Dominik <dominik@science.uva.nl>
6;; Maintainer: auctex-devel@gnu.org
6;; Version: 4.31 7;; Version: 4.31
7;; Keywords: tex 8;; Keywords: tex
8 9
diff --git a/lisp/tmm.el b/lisp/tmm.el
index f9583e76cee..db2cc0c4c0a 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -41,7 +41,7 @@
41(defvar tmm-short-cuts) 41(defvar tmm-short-cuts)
42(defvar tmm-old-mb-map nil) 42(defvar tmm-old-mb-map nil)
43(defvar tmm-old-comp-map) 43(defvar tmm-old-comp-map)
44(defvar tmm-c-prompt) 44(defvar tmm-c-prompt nil)
45(defvar tmm-km-list) 45(defvar tmm-km-list)
46(defvar tmm-next-shortcut-digit) 46(defvar tmm-next-shortcut-digit)
47(defvar tmm-table-undef) 47(defvar tmm-table-undef)
@@ -70,17 +70,22 @@ we make that menu bar item (the one at that position) the default choice."
70 (list this-one))))) 70 (list this-one)))))
71 (setq list (cdr list)))) 71 (setq list (cdr list))))
72 (if x-position 72 (if x-position
73 (let ((tail menu-bar) 73 (let ((tail menu-bar) (column 0)
74 this-one 74 this-one name visible)
75 (column 0)) 75 (while (and tail (<= column x-position))
76 (while (and tail (< column x-position))
77 (setq this-one (car tail)) 76 (setq this-one (car tail))
78 (if (and (consp (car tail)) 77 (if (and (consp this-one)
79 (consp (cdr (car tail))) 78 (consp (cdr this-one))
80 (stringp (nth 1 (car tail)))) 79 (setq name ;simple menu
81 (setq column (+ column 80 (cond ((stringp (nth 1 this-one))
82 (length (nth 1 (car tail))) 81 (nth 1 this-one))
83 1))) 82 ;extended menu
83 ((stringp (nth 2 this-one))
84 (setq visible (plist-get
85 (nthcdr 4 this-one) :visible))
86 (unless (and visible (not (eval visible)))
87 (nth 2 this-one))))))
88 (setq column (+ column (length name) 1)))
84 (setq tail (cdr tail))) 89 (setq tail (cdr tail)))
85 (setq menu-bar-item (car this-one)))) 90 (setq menu-bar-item (car this-one))))
86 (tmm-prompt menu-bar nil menu-bar-item))) 91 (tmm-prompt menu-bar nil menu-bar-item)))
@@ -187,14 +192,20 @@ Its value should be an event that has a binding in MENU."
187 ;; We use this to decide the initial minibuffer contents 192 ;; We use this to decide the initial minibuffer contents
188 ;; and initial history position. 193 ;; and initial history position.
189 (if default-item 194 (if default-item
190 (let ((tail menu)) 195 (let ((tail menu) visible)
191 (while (and tail 196 (while (and tail
192 (not (eq (car-safe (car tail)) default-item))) 197 (not (eq (car-safe (car tail)) default-item)))
193 ;; Be careful to count only the elements of MENU 198 ;; Be careful to count only the elements of MENU
194 ;; that actually constitute menu bar items. 199 ;; that actually constitute menu bar items.
195 (if (and (consp (car tail)) 200 (if (and (consp (car tail))
196 (or (stringp (car-safe (cdr (car tail)))) 201 (or (stringp (car-safe (cdr (car tail))))
197 (eq (car-safe (cdr (car tail))) 'menu-item))) 202 (and
203 (eq (car-safe (cdr (car tail))) 'menu-item)
204 (progn
205 (setq visible
206 (plist-get
207 (nthcdr 4 (car tail)) :visible))
208 (or (not visible) (eval visible))))))
198 (setq index-of-default (1+ index-of-default))) 209 (setq index-of-default (1+ index-of-default)))
199 (setq tail (cdr tail))))) 210 (setq tail (cdr tail)))))
200 (let ((prompt (concat "^." (regexp-quote tmm-mid-prompt)))) 211 (let ((prompt (concat "^." (regexp-quote tmm-mid-prompt))))
@@ -209,21 +220,24 @@ Its value should be an event that has a binding in MENU."
209 (setq history (append history history history history)) 220 (setq history (append history history history history))
210 (setq tmm-c-prompt (nth (- history-len 1 index-of-default) history)) 221 (setq tmm-c-prompt (nth (- history-len 1 index-of-default) history))
211 (add-hook 'minibuffer-setup-hook 'tmm-add-prompt) 222 (add-hook 'minibuffer-setup-hook 'tmm-add-prompt)
212 (save-excursion 223 (if default-item
213 (unwind-protect 224 (setq out (car (nth index-of-default tmm-km-list)))
214 (setq out 225 (save-excursion
215 (completing-read 226 (unwind-protect
216 (concat gl-str " (up/down to change, PgUp to menu): ") 227 (setq out
217 tmm-km-list nil t nil 228 (completing-read
218 (cons 'history (- (* 2 history-len) index-of-default)))) 229 (concat gl-str
219 (save-excursion 230 " (up/down to change, PgUp to menu): ")
220 (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt) 231 tmm-km-list nil t nil
221 (if (get-buffer "*Completions*") 232 (cons 'history
222 (progn 233 (- (* 2 history-len) index-of-default))))
223 (set-buffer "*Completions*") 234 (save-excursion
224 (use-local-map tmm-old-comp-map) 235 (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
225 (bury-buffer (current-buffer))))) 236 (if (get-buffer "*Completions*")
226 )))) 237 (progn
238 (set-buffer "*Completions*")
239 (use-local-map tmm-old-comp-map)
240 (bury-buffer (current-buffer))))))))))
227 (setq choice (cdr (assoc out tmm-km-list))) 241 (setq choice (cdr (assoc out tmm-km-list)))
228 (and (null choice) 242 (and (null choice)
229 (> (length out) (length tmm-c-prompt)) 243 (> (length out) (length tmm-c-prompt))
@@ -513,7 +527,7 @@ If KEYSEQ is a prefix key that has local and global bindings,
513we merge them into a single keymap which shows the proper order of the menu. 527we merge them into a single keymap which shows the proper order of the menu.
514However, for the menu bar itself, the value does not take account 528However, for the menu bar itself, the value does not take account
515of `menu-bar-final-items'." 529of `menu-bar-final-items'."
516 (let (allbind bind) 530 (let (allbind bind minorbind localbind globalbind)
517 (setq bind (key-binding keyseq)) 531 (setq bind (key-binding keyseq))
518 ;; If KEYSEQ is a prefix key, then BIND is either nil 532 ;; If KEYSEQ is a prefix key, then BIND is either nil
519 ;; or a symbol defined as a keymap (which satisfies keymapp). 533 ;; or a symbol defined as a keymap (which satisfies keymapp).
@@ -524,9 +538,21 @@ of `menu-bar-final-items'."
524 (progn 538 (progn
525 ;; Otherwise, it is a prefix, so make a list of the subcommands. 539 ;; Otherwise, it is a prefix, so make a list of the subcommands.
526 ;; Make a list of all the bindings in all the keymaps. 540 ;; Make a list of all the bindings in all the keymaps.
527 (setq allbind (mapcar 'cdr (minor-mode-key-binding keyseq))) 541 (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
528 (setq allbind (cons (local-key-binding keyseq) allbind)) 542 (setq localbind (local-key-binding keyseq))
529 (setq allbind (cons (global-key-binding keyseq) allbind)) 543 (setq globalbind (copy-sequence (cdr (global-key-binding keyseq))))
544
545 ;; If items have been redefined/undefined locally, remove them from
546 ;; the global list.
547 (dolist (minor minorbind)
548 (dolist (item (cdr minor))
549 (setq globalbind (assq-delete-all (car-safe item) globalbind))))
550 (dolist (item (cdr localbind))
551 (setq globalbind (assq-delete-all (car-safe item) globalbind)))
552
553 (setq globalbind (cons 'keymap globalbind))
554 (setq allbind (cons globalbind (cons localbind minorbind)))
555
530 ;; Merge all the elements of ALLBIND into one keymap. 556 ;; Merge all the elements of ALLBIND into one keymap.
531 (mapc (lambda (in) 557 (mapc (lambda (in)
532 (if (and (symbolp in) (keymapp in)) 558 (if (and (symbolp in) (keymapp in))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index eb058534f63..8c53d49fdd1 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,28 @@
12007-04-15 Chong Yidong <cyd@stupidchicken.com>
2
3 * url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
4
52007-04-13 Chong Yidong <cyd@stupidchicken.com>
6
7 * url-http.el (url-http-parse-headers): Stop after a set number of
8 redirections. Suggested by Diane Murray.
9
10 * url-vars.el (url-max-redirections): New var.
11
122007-04-01 Diane Murray <disumu@x3y2z1.net> (tiny change)
13
14 * url-http.el (url-http-handle-cookies): Reverse list returned by
15 `mail-fetch-field', so that cookies are set in the correct order.
16
17 * url-cookie.el (url-cookie-retrieve, url-cookie-host-can-set-p):
18 Deal with wildcard dots in domain values.
19
202007-03-31 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
21
22 * url-http.el (url-http-mark-connection-as-busy)
23 (url-http-mark-connection-as-free): Clear query-on-exit flag on
24 idle connections.
25
12007-02-04 Chong Yidong <cyd@stupidchicken.com> 262007-02-04 Chong Yidong <cyd@stupidchicken.com>
2 27
3 * url-http.el (url-http-connection-opened): New variable. 28 * url-http.el (url-http-connection-opened): New variable.
@@ -51,7 +76,7 @@
51 (url-http-parse-response): Set it. 76 (url-http-parse-response): Set it.
52 (url-http-parse-headers): Use it to determine keep-alive behavior. 77 (url-http-parse-headers): Use it to determine keep-alive behavior.
53 78
542006-11-23 Diane Murray <disumu@x3y2z1.net> 792006-11-23 Diane Murray <disumu@x3y2z1.net> (tiny change)
55 80
56 * url-http.el (url-http-content-length-after-change-function): Use 81 * url-http.el (url-http-content-length-after-change-function): Use
57 `url-lazy-message'. 82 `url-lazy-message'.
@@ -160,7 +185,7 @@
160 getenv returns an empty string for http_proxy. This prevents an 185 getenv returns an empty string for http_proxy. This prevents an
161 error when calling `format' later on. 186 error when calling `format' later on.
162 187
1632006-08-31 Diane Murray <disumu@x3y2z1.net> 1882006-08-31 Diane Murray <disumu@x3y2z1.net> (tiny change)
164 189
165 * url-parse.el (url-recreate-url-attributes): New function, code 190 * url-parse.el (url-recreate-url-attributes): New function, code
166 simply moved from `url-recreate-url'. 191 simply moved from `url-recreate-url'.
@@ -170,7 +195,7 @@
170 * url-http.el (url-http-create-request): 195 * url-http.el (url-http-create-request):
171 Use `url-recreate-url-attributes' when setting real-fname. 196 Use `url-recreate-url-attributes' when setting real-fname.
172 197
1732006-08-29 Diane Murray <disumu@x3y2z1.net> 1982006-08-29 Diane Murray <disumu@x3y2z1.net> (tiny change)
174 199
175 * url-cookie.el (url-cookie-write-file): Really don't use versioned 200 * url-cookie.el (url-cookie-write-file): Really don't use versioned
176 backups. 201 backups.
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index cfe4f8ecf71..8d729c92369 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -272,7 +272,15 @@ telling Microsoft that."
272 storage (cdr storage) 272 storage (cdr storage)
273 cookies (cdr cur)) 273 cookies (cdr cur))
274 (if (and (car cur) 274 (if (and (car cur)
275 (string-match (concat "^.*" (regexp-quote (car cur)) "$") host)) 275 (string-match
276 (concat "^.*"
277 (regexp-quote
278 ;; Remove the dot from wildcard domains
279 ;; before matching.
280 (if (eq ?. (aref (car cur) 0))
281 (substring (car cur) 1)
282 (car cur)))
283 "$") host))
276 ;; The domains match - a possible hit! 284 ;; The domains match - a possible hit!
277 (while cookies 285 (while cookies
278 (setq cur (car cookies) 286 (setq cur (car cookies)
@@ -344,7 +352,13 @@ telling Microsoft that."
344 ((>= numdots mindots) ; We have enough dots in domain name 352 ((>= numdots mindots) ; We have enough dots in domain name
345 ;; Need to check and make sure the host is actually _in_ the 353 ;; Need to check and make sure the host is actually _in_ the
346 ;; domain it wants to set a cookie for though. 354 ;; domain it wants to set a cookie for though.
347 (string-match (concat (regexp-quote domain) "$") host)) 355 (string-match (concat (regexp-quote
356 ;; Remove the dot from wildcard domains
357 ;; before matching.
358 (if (eq ?. (aref domain 0))
359 (substring domain 1)
360 domain))
361 "$") host))
348 (t 362 (t
349 nil)))) 363 nil))))
350 364
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 1d4d64f0e4d..d9ac81838d4 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -87,6 +87,7 @@ request.")
87 87
88(defun url-http-mark-connection-as-busy (host port proc) 88(defun url-http-mark-connection-as-busy (host port proc)
89 (url-http-debug "Marking connection as busy: %s:%d %S" host port proc) 89 (url-http-debug "Marking connection as busy: %s:%d %S" host port proc)
90 (set-process-query-on-exit-flag proc t)
90 (puthash (cons host port) 91 (puthash (cons host port)
91 (delq proc (gethash (cons host port) url-http-open-connections)) 92 (delq proc (gethash (cons host port) url-http-open-connections))
92 url-http-open-connections) 93 url-http-open-connections)
@@ -97,6 +98,7 @@ request.")
97 (when (memq (process-status proc) '(open run connect)) 98 (when (memq (process-status proc) '(open run connect))
98 (set-process-buffer proc nil) 99 (set-process-buffer proc nil)
99 (set-process-sentinel proc 'url-http-idle-sentinel) 100 (set-process-sentinel proc 'url-http-idle-sentinel)
101 (set-process-query-on-exit-flag proc nil)
100 (puthash (cons host port) 102 (puthash (cons host port)
101 (cons proc (gethash (cons host port) url-http-open-connections)) 103 (cons proc (gethash (cons host port) url-http-open-connections))
102 url-http-open-connections)) 104 url-http-open-connections))
@@ -379,8 +381,8 @@ This allows us to use `mail-fetch-field', etc."
379 "Handle all set-cookie / set-cookie2 headers in an HTTP response. 381 "Handle all set-cookie / set-cookie2 headers in an HTTP response.
380The buffer must already be narrowed to the headers, so `mail-fetch-field' will 382The buffer must already be narrowed to the headers, so `mail-fetch-field' will
381work correctly." 383work correctly."
382 (let ((cookies (mail-fetch-field "Set-Cookie" nil nil t)) 384 (let ((cookies (nreverse (mail-fetch-field "Set-Cookie" nil nil t)))
383 (cookies2 (mail-fetch-field "Set-Cookie2" nil nil t))) 385 (cookies2 (nreverse (mail-fetch-field "Set-Cookie2" nil nil t))))
384 (and cookies (url-http-debug "Found %d Set-Cookie headers" (length cookies))) 386 (and cookies (url-http-debug "Found %d Set-Cookie headers" (length cookies)))
385 (and cookies2 (url-http-debug "Found %d Set-Cookie2 headers" (length cookies2))) 387 (and cookies2 (url-http-debug "Found %d Set-Cookie2 headers" (length cookies2)))
386 (while cookies 388 (while cookies
@@ -554,21 +556,43 @@ should be shown to the user."
554 (let ((url-request-method url-http-method) 556 (let ((url-request-method url-http-method)
555 (url-request-data url-http-data) 557 (url-request-data url-http-data)
556 (url-request-extra-headers url-http-extra-headers)) 558 (url-request-extra-headers url-http-extra-headers))
557 ;; Remember that the request was redirected. 559 ;; Check existing number of redirects
558 (setf (car url-callback-arguments) 560 (if (or (< url-max-redirections 0)
559 (nconc (list :redirect redirect-uri) 561 (and (> url-max-redirections 0)
560 (car url-callback-arguments))) 562 (let ((events (car url-callback-arguments))
561 ;; Put in the current buffer a forwarding pointer to the new 563 (old-redirects 0))
562 ;; destination buffer. 564 (while events
563 ;; FIXME: This is a hack to fix url-retrieve-synchronously 565 (if (eq (car events) :redirect)
564 ;; without changing the API. Instead url-retrieve should 566 (setq old-redirects (1+ old-redirects)))
565 ;; either simply not return the "destination" buffer, or it 567 (and (setq events (cdr events))
566 ;; should take an optional `dest-buf' argument. 568 (setq events (cdr events))))
567 (set (make-local-variable 'url-redirect-buffer) 569 (< old-redirects url-max-redirections))))
568 (url-retrieve-internal 570 ;; url-max-redirections hasn't been reached, so go
569 redirect-uri url-callback-function 571 ;; ahead and redirect.
570 url-callback-arguments)) 572 (progn
571 (url-mark-buffer-as-dead (current-buffer)))))) 573 ;; Remember that the request was redirected.
574 (setf (car url-callback-arguments)
575 (nconc (list :redirect redirect-uri)
576 (car url-callback-arguments)))
577 ;; Put in the current buffer a forwarding pointer to the new
578 ;; destination buffer.
579 ;; FIXME: This is a hack to fix url-retrieve-synchronously
580 ;; without changing the API. Instead url-retrieve should
581 ;; either simply not return the "destination" buffer, or it
582 ;; should take an optional `dest-buf' argument.
583 (set (make-local-variable 'url-redirect-buffer)
584 (url-retrieve-internal
585 redirect-uri url-callback-function
586 url-callback-arguments))
587 (url-mark-buffer-as-dead (current-buffer)))
588 ;; We hit url-max-redirections, so issue an error and
589 ;; stop redirecting.
590 (url-http-debug "Maximum redirections reached")
591 (setf (car url-callback-arguments)
592 (nconc (list :error (list 'error 'http-redirect-limit
593 redirect-uri))
594 (car url-callback-arguments)))
595 (setq success t))))))
572 (4 ; Client error 596 (4 ; Client error
573 ;; 400 Bad Request 597 ;; 400 Bad Request
574 ;; 401 Unauthorized 598 ;; 401 Unauthorized
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 2b69c54133f..a9a0fb151e9 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -108,7 +108,7 @@
108(defun url-recreate-url-attributes (urlobj) 108(defun url-recreate-url-attributes (urlobj)
109 "Recreate the attributes of an URL string from the parsed URLOBJ." 109 "Recreate the attributes of an URL string from the parsed URLOBJ."
110 (when (url-attributes urlobj) 110 (when (url-attributes urlobj)
111 (concat "?" 111 (concat ";"
112 (mapconcat (lambda (x) 112 (mapconcat (lambda (x)
113 (if (cdr x) 113 (if (cdr x)
114 (concat (car x) "=" (cdr x)) 114 (concat (car x) "=" (cdr x))
@@ -168,7 +168,7 @@ Format is:
168 (setq full t) 168 (setq full t)
169 (forward-char 2) 169 (forward-char 2)
170 (setq save-pos (point)) 170 (setq save-pos (point))
171 (skip-chars-forward "^/\\?#") 171 (skip-chars-forward "^/")
172 (setq host (buffer-substring save-pos (point))) 172 (setq host (buffer-substring save-pos (point)))
173 (if (string-match "^\\([^@]+\\)@" host) 173 (if (string-match "^\\([^@]+\\)@" host)
174 (setq user (match-string 1 host) 174 (setq user (match-string 1 host)
@@ -189,25 +189,29 @@ Format is:
189 (setq port (url-scheme-get-property prot 'default-port))) 189 (setq port (url-scheme-get-property prot 'default-port)))
190 190
191 ;; 3.3. Path 191 ;; 3.3. Path
192 ;; Gross hack to preserve ';' in data URLs
192 (setq save-pos (point)) 193 (setq save-pos (point))
193 (skip-chars-forward "^#?")
194 (setq file (buffer-substring save-pos (point)))
195 194
196 ;; 3.4. Query 195 ;; 3.4. Query
197 (when (looking-at "\\?") 196 (if (string= "data" prot)
198 (forward-char 1) 197 (goto-char (point-max))
199 (setq save-pos (point)) 198 ;; Now check for references
200 (skip-chars-forward "^#") 199 (skip-chars-forward "^#")
201 ;; RFC 3986 specifies no general way of parsing the query 200 (if (eobp)
202 ;; string, but `url-parse-args' seems universal enough. 201 nil
203 (setq attr (url-parse-args (buffer-substring save-pos (point)) t) 202 (delete-region
204 attr (nreverse attr))) 203 (point)
205 204 (progn
206 ;; 3.5. Fragment 205 (skip-chars-forward "#")
207 (when (looking-at "#") 206 (setq refs (buffer-substring (point) (point-max)))
208 (forward-char 1) 207 (point-max))))
209 (setq refs (buffer-substring (point) (point-max)))) 208 (goto-char save-pos)
209 (skip-chars-forward "^;")
210 (if (not (eobp))
211 (setq attr (url-parse-args (buffer-substring (point) (point-max)) t)
212 attr (nreverse attr))))
210 213
214 (setq file (buffer-substring save-pos (point)))
211 (if (and host (string-match "%[0-9][0-9]" host)) 215 (if (and host (string-match "%[0-9][0-9]" host))
212 (setq host (url-unhex-string host))) 216 (setq host (url-unhex-string host)))
213 (vector prot user pass host port file refs attr full)))))) 217 (vector prot user pass host port file refs attr full))))))
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 705eb947001..d0bd9a84c05 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -320,6 +320,12 @@ undefined."
320 "\\`\\([-a-zA-Z0-9+.]+:\\)" 320 "\\`\\([-a-zA-Z0-9+.]+:\\)"
321 "A regular expression that will match an absolute URL.") 321 "A regular expression that will match an absolute URL.")
322 322
323(defcustom url-max-redirections 30
324 "*The maximum number of redirection requests to honor in a HTTP connection.
325A negative number means to honor an unlimited number of redirection requests."
326 :type 'integer
327 :group 'url)
328
323(defcustom url-confirmation-func 'y-or-n-p 329(defcustom url-confirmation-func 'y-or-n-p
324 "*What function to use for asking yes or no functions. 330 "*What function to use for asking yes or no functions.
325Possible values are `yes-or-no-p' or `y-or-n-p', or any function that 331Possible values are `yes-or-no-p' or `y-or-n-p', or any function that
diff --git a/lisp/vc-arch.el b/lisp/vc-arch.el
index 0f02db0ba96..488f9108d36 100644
--- a/lisp/vc-arch.el
+++ b/lisp/vc-arch.el
@@ -109,6 +109,19 @@
109 109
110(defconst vc-arch-tagline-re "^\\W*arch-tag:[ \t]*\\(.*[^ \t\n]\\)") 110(defconst vc-arch-tagline-re "^\\W*arch-tag:[ \t]*\\(.*[^ \t\n]\\)")
111 111
112(defmacro vc-with-current-file-buffer (file &rest body)
113 (declare (indent 2) (debug t))
114 `(let ((-kill-buf- nil)
115 (-file- ,file))
116 (with-current-buffer (or (find-buffer-visiting -file-)
117 (setq -kill-buf- (generate-new-buffer " temp")))
118 ;; Avoid find-file-literally since it can do many undesirable extra
119 ;; things (among which, call us back into an infinite loop).
120 (if -kill-buf- (insert-file-contents -file-))
121 (unwind-protect
122 (progn ,@body)
123 (if (buffer-live-p -kill-buf-) (kill-buffer -kill-buf-))))))
124
112(defun vc-arch-file-source-p (file) 125(defun vc-arch-file-source-p (file)
113 "Can return nil, `maybe' or a non-nil value. 126 "Can return nil, `maybe' or a non-nil value.
114Only the value `maybe' can be trusted :-(." 127Only the value `maybe' can be trusted :-(."
@@ -122,7 +135,7 @@ Only the value `maybe' can be trusted :-(."
122 (concat ".arch-ids/" (file-name-nondirectory file) ".id") 135 (concat ".arch-ids/" (file-name-nondirectory file) ".id")
123 (file-name-directory file))) 136 (file-name-directory file)))
124 ;; Check the presence of a tagline. 137 ;; Check the presence of a tagline.
125 (with-current-buffer (find-file-noselect file) 138 (vc-with-current-file-buffer file
126 (save-excursion 139 (save-excursion
127 (goto-char (point-max)) 140 (goto-char (point-max))
128 (or (re-search-backward vc-arch-tagline-re (- (point) 1000) t) 141 (or (re-search-backward vc-arch-tagline-re (- (point) 1000) t)
diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el
index ae4758169f4..a4b3b11301e 100644
--- a/lisp/vc-rcs.el
+++ b/lisp/vc-rcs.el
@@ -666,6 +666,7 @@ Optional arg REVISION is a revision to annotate from."
666 " " 666 " "
667 (aref rda 0) 667 (aref rda 0)
668 ls) 668 ls)
669 :vc-annotate-prefix t
669 :vc-rcs-r/d/a rda))) 670 :vc-rcs-r/d/a rda)))
670 (maphash 671 (maphash
671 (if all-me 672 (if all-me
@@ -688,9 +689,9 @@ encoded as fractional days."
688 "Return the time of the next annotation (as fraction of days) 689 "Return the time of the next annotation (as fraction of days)
689systime, or nil if there is none. Also, reposition point." 690systime, or nil if there is none. Also, reposition point."
690 (unless (eobp) 691 (unless (eobp)
691 (search-forward ": ") 692 (prog1 (vc-annotate-convert-time
692 (vc-annotate-convert-time 693 (aref (get-text-property (point) :vc-rcs-r/d/a) 1))
693 (aref (get-text-property (point) :vc-rcs-r/d/a) 1)))) 694 (goto-char (next-single-property-change (point) :vc-annotate-prefix)))))
694 695
695(defun vc-rcs-annotate-extract-revision-at-line () 696(defun vc-rcs-annotate-extract-revision-at-line ()
696 (aref (get-text-property (point) :vc-rcs-r/d/a) 0)) 697 (aref (get-text-property (point) :vc-rcs-r/d/a) 0))
@@ -907,7 +908,7 @@ Returns: nil if no headers were found
907 (vc-file-setprop file 'vc-state 908 (vc-file-setprop file 'vc-state
908 (cond 909 (cond
909 ((eq locking-user 'none) 'up-to-date) 910 ((eq locking-user 'none) 'up-to-date)
910 ((string= locking-user (vc-user-login-name file)) 911 ((string= locking-user (vc-user-login-name file))
911 'edited) 912 'edited)
912 (t locking-user))) 913 (t locking-user)))
913 ;; If the file has headers, we don't want to query the 914 ;; If the file has headers, we don't want to query the
diff --git a/lisp/view.el b/lisp/view.el
index f914624d6f6..8dd9e032868 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -438,7 +438,7 @@ p searches backward for last regular expression.
438\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer. 438\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer.
439\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer. 439\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer.
440 440
441The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was 441The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
442entered by view-file, view-file-other-window, view-file-other-frame, or 442entered by view-file, view-file-other-window, view-file-other-frame, or
443\\[dired-view-file] \(\\[view-file], \\[view-file-other-window], 443\\[dired-view-file] \(\\[view-file], \\[view-file-other-window],
444\\[view-file-other-frame], or the Dired mode v command), 444\\[view-file-other-frame], or the Dired mode v command),
@@ -446,7 +446,7 @@ then \\[View-quit] will try to kill the current buffer.
446If view-mode was entered from another buffer, by \\[view-buffer], 446If view-mode was entered from another buffer, by \\[view-buffer],
447\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file], 447\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
448\\[view-file-other-window], or \\[view-file-other-frame], 448\\[view-file-other-window], or \\[view-file-other-frame],
449then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer. 449then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
450 450
451Entry to view-mode runs the normal hook `view-mode-hook'." 451Entry to view-mode runs the normal hook `view-mode-hook'."
452 (interactive "P") 452 (interactive "P")
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index dc7f691e721..1c670d77458 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -102,42 +102,34 @@ visited by the buffers.")
102(defvar whitespace-mode nil 102(defvar whitespace-mode nil
103 "Non-nil when Whitespace mode (a minor mode) is enabled.") 103 "Non-nil when Whitespace mode (a minor mode) is enabled.")
104(make-variable-buffer-local 'whitespace-mode) 104(make-variable-buffer-local 'whitespace-mode)
105(put 'whitespace-mode 'permanent-local nil)
106 105
107(defvar whitespace-mode-line nil 106(defvar whitespace-mode-line nil
108 "String to display in the mode line for Whitespace mode.") 107 "String to display in the mode line for Whitespace mode.")
109(make-variable-buffer-local 'whitespace-mode-line) 108(make-variable-buffer-local 'whitespace-mode-line)
110(put 'whitespace-mode-line 'permanent-local nil)
111 109
112(defvar whitespace-check-buffer-leading nil 110(defvar whitespace-check-buffer-leading nil
113 "Test leading whitespace for file in current buffer if t.") 111 "Test leading whitespace for file in current buffer if t.")
114(make-variable-buffer-local 'whitespace-check-buffer-leading) 112(make-variable-buffer-local 'whitespace-check-buffer-leading)
115(put 'whitespace-check-buffer-leading 'permanent-local nil)
116 113
117(defvar whitespace-check-buffer-trailing nil 114(defvar whitespace-check-buffer-trailing nil
118 "Test trailing whitespace for file in current buffer if t.") 115 "Test trailing whitespace for file in current buffer if t.")
119(make-variable-buffer-local 'whitespace-check-buffer-trailing) 116(make-variable-buffer-local 'whitespace-check-buffer-trailing)
120(put 'whitespace-check-buffer-trailing 'permanent-local nil)
121 117
122(defvar whitespace-check-buffer-indent nil 118(defvar whitespace-check-buffer-indent nil
123 "Test indentation whitespace for file in current buffer if t.") 119 "Test indentation whitespace for file in current buffer if t.")
124(make-variable-buffer-local 'whitespace-check-buffer-indent) 120(make-variable-buffer-local 'whitespace-check-buffer-indent)
125(put 'whitespace-check-buffer-indent 'permanent-local nil)
126 121
127(defvar whitespace-check-buffer-spacetab nil 122(defvar whitespace-check-buffer-spacetab nil
128 "Test Space-followed-by-TABS whitespace for file in current buffer if t.") 123 "Test Space-followed-by-TABS whitespace for file in current buffer if t.")
129(make-variable-buffer-local 'whitespace-check-buffer-spacetab) 124(make-variable-buffer-local 'whitespace-check-buffer-spacetab)
130(put 'whitespace-check-buffer-spacetab 'permanent-local nil)
131 125
132(defvar whitespace-check-buffer-ateol nil 126(defvar whitespace-check-buffer-ateol nil
133 "Test end-of-line whitespace for file in current buffer if t.") 127 "Test end-of-line whitespace for file in current buffer if t.")
134(make-variable-buffer-local 'whitespace-check-buffer-ateol) 128(make-variable-buffer-local 'whitespace-check-buffer-ateol)
135(put 'whitespace-check-buffer-ateol 'permanent-local nil)
136 129
137(defvar whitespace-highlighted-space nil 130(defvar whitespace-highlighted-space nil
138 "The variable to store the extent to highlight.") 131 "The variable to store the extent to highlight.")
139(make-variable-buffer-local 'whitespace-highlighted-space) 132(make-variable-buffer-local 'whitespace-highlighted-space)
140(put 'whitespace-highlighted-space 'permanent-local nil)
141 133
142;; For flavors of Emacs which don't define `defgroup' and `defcustom'. 134;; For flavors of Emacs which don't define `defgroup' and `defcustom'.
143(eval-when-compile 135(eval-when-compile
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 035f54b8980..4c560918594 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -84,7 +84,7 @@
84 :group 'hypermedia) 84 :group 'hypermedia)
85 85
86(defgroup widget-documentation nil 86(defgroup widget-documentation nil
87 "Options controling the display of documentation strings." 87 "Options controlling the display of documentation strings."
88 :group 'widgets) 88 :group 'widgets)
89 89
90(defgroup widget-faces nil 90(defgroup widget-faces nil
diff --git a/lisp/woman.el b/lisp/woman.el
index ffa0ea692ad..43ebd8df013 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -486,24 +486,28 @@ As a special case, if PATHS is nil then replace it by calling
486 486
487(defun woman-Cyg-to-Win (file) 487(defun woman-Cyg-to-Win (file)
488 "Convert an absolute filename FILE from Cygwin to Windows form." 488 "Convert an absolute filename FILE from Cygwin to Windows form."
489 ;; Code taken from w32-symlinks.el 489 ;; MANPATH_MAP conses are not converted since they presumably map
490 (if (eq (aref file 0) ?/) 490 ;; Cygwin to Cygwin form.
491 ;; Try to use Cygwin mount table via `cygpath.exe'. 491 (if (consp file)
492 (condition-case nil 492 file
493 (with-temp-buffer 493 ;; Code taken from w32-symlinks.el
494 ;; cygpath -m file 494 (if (eq (aref file 0) ?/)
495 (call-process "cygpath" nil t nil "-m" file) 495 ;; Try to use Cygwin mount table via `cygpath.exe'.
496 (buffer-substring 1 (buffer-size))) 496 (condition-case nil
497 (error 497 (with-temp-buffer
498 ;; Assume no `cygpath' program available. 498 ;; cygpath -m file
499 ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/ 499 (call-process "cygpath" nil t nil "-m" file)
500 (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file) 500 (buffer-substring 1 (buffer-size)))
501 (if (match-string 1) ; /cygdrive/x/ or //x/ -> /x/ 501 (error
502 (setq file (substring file (match-end 1)))) 502 ;; Assume no `cygpath' program available.
503 (aset file 0 (aref file 1)) ; /x/ -> xx/ 503 ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
504 (aset file 1 ?:)) ; xx/ -> x:/ 504 (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
505 file)) 505 (if (match-string 1) ; /cygdrive/x/ or //x/ -> /x/
506 file)) 506 (setq file (substring file (match-end 1))))
507 (aset file 0 (aref file 1)) ; /x/ -> xx/
508 (aset file 1 ?:)) ; xx/ -> x:/
509 file))
510 file)))
507 511
508 512
509;;; User options: 513;;; User options:
@@ -547,11 +551,12 @@ Change only via `Customization' or the function `add-hook'."
547 (mapcar 'woman-Cyg-to-Win path) 551 (mapcar 'woman-Cyg-to-Win path)
548 path)) 552 path))
549 "*List of dirs to search and/or files to try for man config file. 553 "*List of dirs to search and/or files to try for man config file.
550A trailing separator (`/' for UNIX etc.) on directories is optional, 554A trailing separator (`/' for UNIX etc.) on directories is
551and the filename is used if a directory specified is the first to 555optional, and the filename is used if a directory specified is
552contain the strings \"man\" and \".conf\" (in that order). 556the first to start with \"man\" and has an extension starting
553If MANPATH is not set but a config file is found then it is parsed 557with \".conf\". If MANPATH is not set but a config file is found
554instead to provide a default value for `woman-manpath'." 558then it is parsed instead to provide a default value for
559`woman-manpath'."
555 :type '(repeat string) 560 :type '(repeat string)
556 :group 'woman-interface) 561 :group 'woman-interface)
557 562
@@ -564,7 +569,9 @@ Concatenate data from all lines in the config file of the form
564or 569or
565 MANDATORY_MANPATH /usr/man 570 MANDATORY_MANPATH /usr/man
566or 571or
567 OPTIONAL_MANPATH /usr/man" 572 OPTIONAL_MANPATH /usr/man
573or
574 MANPATH_MAP /opt/bin /opt/man"
568 ;; Functionality suggested by Charles Curley. 575 ;; Functionality suggested by Charles Curley.
569 (let ((path woman-man.conf-path) 576 (let ((path woman-man.conf-path)
570 file manpath) 577 file manpath)
@@ -576,7 +583,7 @@ or
576 (or (not (file-directory-p file)) 583 (or (not (file-directory-p file))
577 (and 584 (and
578 (setq file 585 (setq file
579 (directory-files file t "man.*\\.conf" t)) 586 (directory-files file t "\\`man.*\\.conf[a-z]*\\'" t))
580 (file-readable-p (setq file (car file))))) 587 (file-readable-p (setq file (car file)))))
581 ;; Parse the file -- if no MANPATH data ignore it: 588 ;; Parse the file -- if no MANPATH data ignore it:
582 (with-temp-buffer 589 (with-temp-buffer
@@ -584,8 +591,13 @@ or
584 (while (re-search-forward 591 (while (re-search-forward
585 ;; `\(?: ... \)' is a "shy group" 592 ;; `\(?: ... \)' is a "shy group"
586 "\ 593 "\
587^[ \t]*\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)" nil t) 594^[ \t]*\\(?:\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)\\|\
588 (setq manpath (cons (match-string 1) manpath))) 595MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
596 (add-to-list 'manpath
597 (if (match-beginning 1)
598 (match-string 1)
599 (cons (match-string 2)
600 (match-string 3)))))
589 manpath)) 601 manpath))
590 )) 602 ))
591 (setq path (cdr path))) 603 (setq path (cdr path)))
@@ -600,6 +612,11 @@ subdirectories of the form `man?', or more precisely subdirectories
600selected by the value of `woman-manpath-man-regexp'. Non-directory 612selected by the value of `woman-manpath-man-regexp'. Non-directory
601and unreadable files are ignored. 613and unreadable files are ignored.
602 614
615Elements can also be a cons cell indicating a mapping from PATH
616to manual trees: if such an element's car is equal to a path
617element of the environment variable PATH, the cdr of the cons
618cell is included in the directory tree search.
619
603If not set then the environment variable MANPATH is used. If no such 620If not set then the environment variable MANPATH is used. If no such
604environment variable is found, the default list is determined by 621environment variable is found, the default list is determined by
605consulting the man configuration file if found, which is determined by 622consulting the man configuration file if found, which is determined by
@@ -618,7 +635,7 @@ I recommend including drive letters explicitly, e.g.
618 635
619The MANPATH environment variable may be set using DOS semi-colon- 636The MANPATH environment variable may be set using DOS semi-colon-
620separated or UN*X/Cygwin colon-separated syntax (but not mixed)." 637separated or UN*X/Cygwin colon-separated syntax (but not mixed)."
621 :type '(repeat string) 638 :type '(repeat (choice string (cons string string)))
622 :group 'woman-interface) 639 :group 'woman-interface)
623 640
624(defcustom woman-manpath-man-regexp "[Mm][Aa][Nn]" 641(defcustom woman-manpath-man-regexp "[Mm][Aa][Nn]"
@@ -1159,7 +1176,14 @@ Set from the cache by `woman-read-directory-cache'.")
1159Called both to generate and to check the cache!" 1176Called both to generate and to check the cache!"
1160 ;; Must use substituted paths because values of env vars may change! 1177 ;; Must use substituted paths because values of env vars may change!
1161 (list woman-cache-level 1178 (list woman-cache-level
1162 (mapcar 'substitute-in-file-name woman-manpath) 1179 (let (lst path)
1180 (dolist (dir woman-manpath (nreverse lst))
1181 (when (consp dir)
1182 (unless path
1183 (setq path
1184 (split-string (getenv "PATH") path-separator t)))
1185 (setq dir (and (member (car dir) path) (cdr dir))))
1186 (when dir (add-to-list 'lst (substitute-in-file-name dir)))))
1163 (mapcar 'substitute-in-file-name woman-path))) 1187 (mapcar 'substitute-in-file-name woman-path)))
1164 1188
1165(defun woman-read-directory-cache () 1189(defun woman-read-directory-cache ()
@@ -1320,10 +1344,15 @@ Ignore any paths that are unreadable or not directories."
1320 ;; Allow each path to be a single string or a list of strings: 1344 ;; Allow each path to be a single string or a list of strings:
1321 (if (not (listp woman-manpath)) (setq woman-manpath (list woman-manpath))) 1345 (if (not (listp woman-manpath)) (setq woman-manpath (list woman-manpath)))
1322 (if (not (listp woman-path)) (setq woman-path (list woman-path))) 1346 (if (not (listp woman-path)) (setq woman-path (list woman-path)))
1323 (let (dir head dirs) 1347 (let (dir head dirs path)
1324 (while woman-manpath 1348 (while woman-manpath
1325 (setq dir (car woman-manpath) 1349 (setq dir (car woman-manpath)
1326 woman-manpath (cdr woman-manpath)) 1350 woman-manpath (cdr woman-manpath))
1351 (when (consp dir)
1352 (unless path
1353 (setq path (split-string (getenv "PATH") path-separator t)))
1354 (setq dir (and (member (car dir) path)
1355 (cdr dir))))
1327 (if (and dir (woman-file-readable-p dir)) 1356 (if (and dir (woman-file-readable-p dir))
1328 ;; NB: `parse-colon-path' creates null elements for 1357 ;; NB: `parse-colon-path' creates null elements for
1329 ;; redundant (semi-)colons and trailing `/'s! 1358 ;; redundant (semi-)colons and trailing `/'s!
@@ -2102,18 +2131,6 @@ No external programs are used."
2102 (interactive) ; mainly for testing 2131 (interactive) ; mainly for testing
2103 (WoMan-log-begin) 2132 (WoMan-log-begin)
2104 (run-hooks 'woman-pre-format-hook) 2133 (run-hooks 'woman-pre-format-hook)
2105
2106 ;; look for macro sets that woman cannot handle:
2107 (goto-char (point-min))
2108 (let ((case-fold-search nil))
2109 (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
2110 (progn (goto-char (point-min))
2111 (re-search-forward "^\\.TH[ \n]" (point-max) t))
2112 (progn (goto-char (point-min))
2113 (not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
2114 (point-max) t))))
2115 (error "WoMan can only format man pages written with the usual `-man' macros")))
2116
2117 (and (boundp 'font-lock-mode) font-lock-mode (font-lock-mode -1)) 2134 (and (boundp 'font-lock-mode) font-lock-mode (font-lock-mode -1))
2118 ;; (fundamental-mode) 2135 ;; (fundamental-mode)
2119 (let ((start-time (current-time)) ; (HIGH LOW MICROSEC) 2136 (let ((start-time (current-time)) ; (HIGH LOW MICROSEC)
@@ -2269,6 +2286,18 @@ Currently set only from '\" t in the first line of the source file.")
2269 ;; conditionals and switch source requests: 2286 ;; conditionals and switch source requests:
2270 (woman0-roff-buffer from) 2287 (woman0-roff-buffer from)
2271 2288
2289 ;; Check for macro sets that woman cannot handle. We can only
2290 ;; because do this after processing source-switch directives.
2291 (goto-char (point-min))
2292 (let ((case-fold-search nil))
2293 (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
2294 (progn (goto-char (point-min))
2295 (re-search-forward "^\\.TH[ \n]" (point-max) t))
2296 (progn (goto-char (point-min))
2297 (not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
2298 (point-max) t))))
2299 (error "WoMan can only format man pages written with the usual `-man' macros")))
2300
2272 ;; Process \k escapes BEFORE changing tab width (?): 2301 ;; Process \k escapes BEFORE changing tab width (?):
2273 (goto-char from) 2302 (goto-char from)
2274 (woman-mark-horizonal-position) 2303 (woman-mark-horizonal-position)
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index 899049cef03..ede5f1359f7 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -50,7 +50,8 @@
50 50
51;; Mouse events symbols must have an 'event-kind property with 51;; Mouse events symbols must have an 'event-kind property with
52;; the value 'mouse-click. 52;; the value 'mouse-click.
53(dolist (event-type '(mouse-1 mouse-2 mouse-3)) 53(dolist (event-type '(mouse-1 mouse-2 mouse-3
54 M-down-mouse-1 M-down-mouse-2 M-down-mouse-3))
54 (put event-type 'event-kind 'mouse-click)) 55 (put event-type 'event-kind 'mouse-click))
55 56
56(defun xterm-mouse-translate (event) 57(defun xterm-mouse-translate (event)
@@ -108,6 +109,8 @@
108;;(defvar xterm-mouse-y 0 109;;(defvar xterm-mouse-y 0
109;; "Position of last xterm mouse event relative to the frame.") 110;; "Position of last xterm mouse event relative to the frame.")
110 111
112(defvar xt-mouse-epoch nil)
113
111;; Indicator for the xterm-mouse mode. 114;; Indicator for the xterm-mouse mode.
112 115
113(defun xterm-mouse-position-function (pos) 116(defun xterm-mouse-position-function (pos)
@@ -129,6 +132,13 @@
129 (let* ((type (- (xterm-mouse-event-read) #o40)) 132 (let* ((type (- (xterm-mouse-event-read) #o40))
130 (x (- (xterm-mouse-event-read) #o40 1)) 133 (x (- (xterm-mouse-event-read) #o40 1))
131 (y (- (xterm-mouse-event-read) #o40 1)) 134 (y (- (xterm-mouse-event-read) #o40 1))
135 ;; Emulate timestamp information. This is accurate enough
136 ;; for default value of mouse-1-click-follows-link (450msec).
137 (timestamp (truncate
138 (* 1000
139 (- (float-time)
140 (or xt-mouse-epoch
141 (setq xt-mouse-epoch (float-time)))))))
132 (mouse (intern 142 (mouse (intern
133 ;; For buttons > 3, the release-event looks 143 ;; For buttons > 3, the release-event looks
134 ;; differently (see xc/programs/xterm/button.c, 144 ;; differently (see xc/programs/xterm/button.c,
@@ -136,6 +146,11 @@
136 ;; a release-event only, no down-event. 146 ;; a release-event only, no down-event.
137 (cond ((>= type 64) 147 (cond ((>= type 64)
138 (format "mouse-%d" (- type 60))) 148 (format "mouse-%d" (- type 60)))
149 ((memq type '(8 9 10))
150 (setq xterm-mouse-last type)
151 (format "M-down-mouse-%d" (- type 7)))
152 ((= type 11)
153 (format "mouse-%d" (- xterm-mouse-last 7)))
139 ((= type 3) 154 ((= type 3)
140 (format "mouse-%d" (+ 1 xterm-mouse-last))) 155 (format "mouse-%d" (+ 1 xterm-mouse-last)))
141 (t 156 (t
@@ -150,10 +165,13 @@
150 (set-terminal-parameter nil 'xterm-mouse-y y) 165 (set-terminal-parameter nil 'xterm-mouse-y y)
151 (setq 166 (setq
152 last-input-event 167 last-input-event
153 (if w 168 (list mouse
154 (list mouse (posn-at-x-y (- x left) (- y top) w t)) 169 (let ((event (if w
155 (list mouse 170 (posn-at-x-y (- x left) (- y top) w t)
156 (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t)))))))) 171 (append (list nil 'menu-bar)
172 (nthcdr 2 (posn-at-x-y x y))))))
173 (setcar (nthcdr 3 event) timestamp)
174 event)))))
157 175
158;;;###autoload 176;;;###autoload
159(define-minor-mode xterm-mouse-mode 177(define-minor-mode xterm-mouse-mode