aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorEli Zaretskii2012-12-10 14:08:02 +0200
committerEli Zaretskii2012-12-10 14:08:02 +0200
commit3907e630a71d48e693062b350571990d7ba08bbb (patch)
tree2be1ecc0796e42c7a453a9fd5131eb5866f79876 /lisp
parentcf2d22b874ca2df0072e32ee641e8efffe4abd6d (diff)
parent81606b10501169a5671061b8461bbc32dcec8705 (diff)
downloademacs-3907e630a71d48e693062b350571990d7ba08bbb.tar.gz
emacs-3907e630a71d48e693062b350571990d7ba08bbb.zip
Merge from trunk + rename the event. Not tested yet.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog960
-rw-r--r--lisp/ChangeLog.152
-rw-r--r--lisp/Makefile.in12
-rw-r--r--lisp/allout.el7
-rw-r--r--lisp/buff-menu.el63
-rw-r--r--lisp/button.el73
-rw-r--r--lisp/calc/README13
-rw-r--r--lisp/calc/calc-forms.el491
-rw-r--r--lisp/calc/calc.el46
-rw-r--r--lisp/calendar/diary-lib.el3
-rw-r--r--lisp/calendar/time-date.el13
-rw-r--r--lisp/cedet/ChangeLog13
-rw-r--r--lisp/cedet/semantic/fw.el14
-rw-r--r--lisp/color.el9
-rw-r--r--lisp/cus-edit.el34
-rw-r--r--lisp/cus-face.el44
-rw-r--r--lisp/custom.el79
-rw-r--r--lisp/descr-text.el5
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dired.el19
-rw-r--r--lisp/dirtrack.el3
-rw-r--r--lisp/dos-w32.el2
-rw-r--r--lisp/emacs-lisp/advice.el55
-rw-r--r--lisp/emacs-lisp/byte-run.el10
-rw-r--r--lisp/emacs-lisp/bytecomp.el7
-rw-r--r--lisp/emacs-lisp/cl-extra.el9
-rw-r--r--lisp/emacs-lisp/cl-lib.el31
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el29
-rw-r--r--lisp/emacs-lisp/cl-macs.el315
-rw-r--r--lisp/emacs-lisp/cl-seq.el9
-rw-r--r--lisp/emacs-lisp/cl.el9
-rw-r--r--lisp/emacs-lisp/derived.el34
-rw-r--r--lisp/emacs-lisp/edebug.el15
-rw-r--r--lisp/emacs-lisp/ert-x.el47
-rw-r--r--lisp/emacs-lisp/ert.el804
-rw-r--r--lisp/emacs-lisp/lisp-mode.el128
-rw-r--r--lisp/emacs-lisp/nadvice.el50
-rw-r--r--lisp/emacs-lisp/syntax.el20
-rw-r--r--lisp/emacs-lisp/trace.el206
-rw-r--r--lisp/erc/ChangeLog33
-rw-r--r--lisp/erc/erc-backend.el226
-rw-r--r--lisp/erc/erc-capab.el1
-rw-r--r--lisp/erc/erc-dcc.el68
-rw-r--r--lisp/erc/erc-ezbounce.el1
-rw-r--r--lisp/erc/erc-join.el1
-rw-r--r--lisp/erc/erc-log.el7
-rw-r--r--lisp/erc/erc-match.el1
-rw-r--r--lisp/erc/erc-netsplit.el7
-rw-r--r--lisp/erc/erc-networks.el14
-rw-r--r--lisp/erc/erc-notify.el4
-rw-r--r--lisp/erc/erc-pcomplete.el1
-rw-r--r--lisp/erc/erc-services.el2
-rw-r--r--lisp/erc/erc-speedbar.el1
-rw-r--r--lisp/erc/erc-track.el26
-rw-r--r--lisp/erc/erc.el197
-rw-r--r--lisp/eshell/em-cmpl.el8
-rw-r--r--lisp/faces.el182
-rw-r--r--lisp/ffap.el194
-rw-r--r--lisp/filecache.el136
-rw-r--r--lisp/files.el64
-rw-r--r--lisp/find-cmd.el15
-rw-r--r--lisp/generic-x.el3
-rw-r--r--lisp/gnus/ChangeLog92
-rw-r--r--lisp/gnus/gmm-utils.el25
-rw-r--r--lisp/gnus/gnus-art.el2
-rw-r--r--lisp/gnus/gnus-bookmark.el2
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/gnus-score.el53
-rw-r--r--lisp/gnus/gnus-start.el11
-rw-r--r--lisp/gnus/gnus-sum.el4
-rw-r--r--lisp/gnus/gnus-sync.el36
-rw-r--r--lisp/gnus/gnus-util.el21
-rw-r--r--lisp/gnus/gnus.el21
-rw-r--r--lisp/gnus/message.el30
-rw-r--r--lisp/gnus/spam-stat.el14
-rw-r--r--lisp/gnus/spam.el32
-rw-r--r--lisp/hi-lock.el197
-rw-r--r--lisp/hilit-chg.el64
-rw-r--r--lisp/hippie-exp.el2
-rw-r--r--lisp/icomplete.el107
-rw-r--r--lisp/ido.el5
-rw-r--r--lisp/image-dired.el2
-rw-r--r--lisp/image-mode.el10
-rw-r--r--lisp/image.el6
-rw-r--r--lisp/info.el61
-rw-r--r--lisp/jka-cmpr-hook.el15
-rw-r--r--lisp/json.el1
-rw-r--r--lisp/ldefs-boot.el2040
-rw-r--r--lisp/mail/mailabbrev.el8
-rw-r--r--lisp/mail/rmail.el49
-rw-r--r--lisp/mail/rmailedit.el24
-rw-r--r--lisp/mail/rmailsum.el2
-rw-r--r--lisp/mail/unrmail.el41
-rw-r--r--lisp/makefile.w32-in106
-rw-r--r--lisp/mh-e/ChangeLog133
-rw-r--r--lisp/mh-e/mh-comp.el179
-rw-r--r--lisp/mh-e/mh-compat.el40
-rw-r--r--lisp/mh-e/mh-e.el128
-rw-r--r--lisp/mh-e/mh-folder.el127
-rw-r--r--lisp/mh-e/mh-junk.el112
-rw-r--r--lisp/mh-e/mh-letter.el130
-rw-r--r--lisp/mh-e/mh-mime.el125
-rw-r--r--lisp/mh-e/mh-scan.el50
-rw-r--r--lisp/mh-e/mh-search.el29
-rw-r--r--lisp/mh-e/mh-show.el16
-rw-r--r--lisp/mh-e/mh-thread.el27
-rw-r--r--lisp/minibuf-eldef.el10
-rw-r--r--lisp/minibuffer.el42
-rw-r--r--lisp/mouse.el14
-rw-r--r--lisp/net/rcirc.el34
-rw-r--r--lisp/net/tramp-adb.el981
-rw-r--r--lisp/net/tramp-compat.el20
-rw-r--r--lisp/net/tramp-gvfs.el6
-rw-r--r--lisp/net/tramp-sh.el60
-rw-r--r--lisp/net/tramp.el13
-rw-r--r--lisp/novice.el1
-rw-r--r--lisp/obsolete/longlines.el (renamed from lisp/longlines.el)11
-rw-r--r--lisp/obsolete/terminal.el (renamed from lisp/terminal.el)15
-rw-r--r--lisp/org/ChangeLog5
-rw-r--r--lisp/org/org-bibtex.el3
-rw-r--r--lisp/pcomplete.el3
-rw-r--r--lisp/play/gamegrid.el2
-rw-r--r--lisp/printing.el6
-rw-r--r--lisp/profiler.el54
-rw-r--r--lisp/progmodes/autoconf.el29
-rw-r--r--lisp/progmodes/cc-defs.el2
-rw-r--r--lisp/progmodes/cc-engine.el53
-rw-r--r--lisp/progmodes/cc-mode.el11
-rw-r--r--lisp/progmodes/cperl-mode.el7
-rw-r--r--lisp/progmodes/etags.el4
-rw-r--r--lisp/progmodes/grep.el6
-rw-r--r--lisp/progmodes/js.el46
-rw-r--r--lisp/progmodes/m4-mode.el14
-rw-r--r--lisp/progmodes/make-mode.el58
-rw-r--r--lisp/progmodes/octave-mod.el5
-rw-r--r--lisp/progmodes/perl-mode.el40
-rw-r--r--lisp/progmodes/python.el115
-rw-r--r--lisp/progmodes/scheme.el68
-rw-r--r--lisp/progmodes/sh-script.el87
-rw-r--r--lisp/progmodes/sql.el575
-rw-r--r--lisp/ps-bdf.el19
-rw-r--r--lisp/ses.el26
-rw-r--r--lisp/shell.el34
-rw-r--r--lisp/simple.el34
-rw-r--r--lisp/sort.el56
-rw-r--r--lisp/speedbar.el1
-rw-r--r--lisp/startup.el39
-rw-r--r--lisp/subr.el207
-rw-r--r--lisp/term.el6
-rw-r--r--lisp/term/ns-win.el22
-rw-r--r--lisp/term/w32-win.el11
-rw-r--r--lisp/textmodes/css-mode.el32
-rw-r--r--lisp/textmodes/fill.el6
-rw-r--r--lisp/textmodes/ispell.el23
-rw-r--r--lisp/textmodes/reftex-parse.el2
-rw-r--r--lisp/textmodes/reftex-toc.el2
-rw-r--r--lisp/textmodes/reftex.el24
-rw-r--r--lisp/textmodes/sgml-mode.el134
-rw-r--r--lisp/textmodes/table.el53
-rw-r--r--lisp/textmodes/tex-mode.el113
-rw-r--r--lisp/textmodes/texinfo.el115
-rw-r--r--lisp/uniquify.el29
-rw-r--r--lisp/url/ChangeLog5
-rw-r--r--lisp/url/url-misc.el36
-rw-r--r--lisp/url/url-parse.el2
-rw-r--r--lisp/vc/add-log.el104
-rw-r--r--lisp/vc/diff-mode.el28
-rw-r--r--lisp/vc/ediff-diff.el145
-rw-r--r--lisp/vc/vc-dir.el29
-rw-r--r--lisp/vc/vc-git.el2
-rw-r--r--lisp/vc/vc-hg.el33
-rw-r--r--lisp/vc/vc-hooks.el17
-rw-r--r--lisp/vc/vc-svn.el2
-rw-r--r--lisp/vc/vc.el27
-rw-r--r--lisp/vcursor.el2
-rw-r--r--lisp/wdired.el30
-rw-r--r--lisp/window.el60
-rw-r--r--lisp/woman.el13
178 files changed, 8560 insertions, 4421 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f26643ea5cf..b06344075d7 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,959 @@
12012-12-10 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
2
3 * subr.el (inotify-event-p, inotify-handle-event): New functions.
4
52012-12-10 Dani Moncayo <dmoncayo@gmail.com>
6
7 * simple.el (just-one-space): Doc fix.
8
92012-12-10 Eli Zaretskii <eliz@gnu.org>
10
11 * textmodes/texinfo.el (texinfo-enable-quote-envs): Add
12 "smallexample".
13
142012-12-10 Le Wang <l26wang@gmail.com>
15
16 * hilit-chg.el (hilit-chg-set-face-on-change): Don't burp in
17 narrowed buffer (bug#12361).
18
192012-12-10 Juanma Barranquero <lekktu@gmail.com>
20
21 * vc/vc-hooks.el (vc-state): Doc fix.
22
232012-12-10 Glenn Morris <rgm@gnu.org>
24
25 * mail/rmail.el (rmail-maybe-display-summary):
26 Preserve buffer, in case select-window changes it. (Bug#13066)
27
282012-12-10 Stefan Monnier <monnier@iro.umontreal.ca>
29
30 * emacs-lisp/cl.el, emacs-lisp/cl-lib.el: Move cl-unload-function and
31 cl-load-hook where they belong.
32
332012-12-10 Stefan Monnier <monnier@iro.umontreal.ca>
34
35 * emacs-lisp/cl-lib.el (cl-declaim): Paren typo.
36
372012-12-09 Eli Zaretskii <eliz@gnu.org>
38
39 Parallelize byte compilation on MS-Windows.
40 * makefile.w32-in (WINS_BASIC1, WINS_BASIC2, WINS_BASIC3)
41 (WINS_BASIC4): New variables, subdivide subdirectories into 4 parts.
42 (WINS_BASIC): Define as concatenation of the above.
43 (compile): Subdivide into 4 separate and independent jobs that can
44 be run in parallel.
45 (compile0-CMD, compile0-SH): New targets for compiling
46 COMPILE_FIRST files, which are prerequisites for the rest of the
47 byte-compilation.
48 (compile1-CMD, compile2-CMD, compile3-CMD, compile4-CMD):
49 New targets for parallel compilation with cmd.exe.
50 (compile1-SH, compile2-SH, compile3-SH, compile4-SH): Ditto for
51 compiling under a Unixy shell.
52
532012-12-09 Chong Yidong <cyd@gnu.org>
54
55 * simple.el (set-mark-default-inactive): Delete this
56 accidentally-introduced option.
57 (set-mark-command, exchange-point-and-mark): Remove calls.
58
592012-12-09 Glenn Morris <rgm@gnu.org>
60
61 * emacs-lisp/lisp-mode.el (eval-defun-1): Doc fix.
62 Respect a defcustom's :set function, if appropriate. (Bug#109)
63 (eval-defun): Doc fix.
64
652012-12-08 Juri Linkov <juri@jurta.org>
66
67 * info.el (Info-copy-current-node-name, Info-breadcrumbs)
68 (Info-fontify-node, Info-bookmark-make-record): Remove the
69 file extension from Info-current-file (Bug#13016).
70
712012-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
72
73 * hi-lock.el (hi-lock-unface-buffer): If there's no matching regexp at
74 point, still provide some default.
75 (hi-lock--regexps-at-point): Don't enforce a "hi-lock-" prefix on face
76 names, since we don't use it right now. Actually return the list.
77 (hi-lock-file-patterns, hi-lock-interactive-patterns): Use defvar-local.
78
792012-12-07 Chong Yidong <cyd@gnu.org>
80
81 * novice.el (disabled-command-function): Remove a spurious help
82 xref (Bug#13043). Suggested by Kelly Dean.
83
84 * subr.el (text-clone-maintain): Fix clone overlay deletion when a
85 syntax is specified (Bug#13025).
86
87 * info.el (Info-set-mode-line): Remove the file extension from
88 Info-current-file if there is one (Bug#13016).
89
902012-12-07 Glenn Morris <rgm@gnu.org>
91
92 * mail/rmail.el (rmail-mime-decoded): New permanent local.
93 (rmail-show-message-1): Set rmail-mime-decoded when appropriate.
94 * mail/rmailedit.el (rmail-cease-edit): Respect rmail-mbox-format
95 and rmail-mime-decoded. (Bug#9841)
96
97 * mail/unrmail.el (unrmail-mbox-format): New option. (Bug#6574)
98 (batch-unrmail, unrmail): Doc fixes.
99 (unrmail): Respect unrmail-mbox-format.
100 * mail/rmail.el (rmail-mbox-format): New option.
101 (rmail-show-message-1): Respect rmail-mbox-format.
102
1032012-12-07 Stefan Monnier <monnier@iro.umontreal.ca>
104
105 * emacs-lisp/cl-macs.el (cl-tagbody): New macro.
106
1072012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
108
109 Further cleanup of the "cl-" namespace. Fit CL in 80 columns.
110 * emacs-lisp/cl-macs.el (cl--pop2, cl--optimize-safety)
111 (cl--optimize-speed, cl--not-toplevel, cl--parse-loop-clause)
112 (cl--expand-do-loop, cl--proclaim-history, cl--declare-stack)
113 (cl--do-proclaim, cl--proclaims-deferred): Rename from the "cl-" prefix.
114 (cl-progv): Don't rely on dynamic scoping to find the body.
115 * emacs-lisp/cl-lib.el (cl--optimize-speed, cl--optimize-safety)
116 (cl--proclaims-deferred): Rename from the "cl-" prefix.
117 (cl-declaim): Use backquotes.
118 * emacs-lisp/cl-extra.el (cl-make-random-state, cl-random-state-p):
119 Use "cl--" prefix for the object's tag.
120
121 * ses.el: Use advice-add/remove.
122 (ses--advice-copy-region-as-kill, ses--advice-yank): New functions.
123 (copy-region-as-kill, yank): Use advice-add.
124 (ses-unload-function): Use advice-remove.
125
1262012-12-06 Jonas Bernoulli <jonas@bernoul.li>
127
128 * button.el: Make them work in header-lines (bug#12817).
129 (button-map): Add bindings for header-line and mode-line use.
130 (button-get, button-put, button-label): `button' may now be a string.
131 (button-activate): Don't make it a defsubst.
132 (button--area-button-p, button--area-button-string): New functions.
133 (make-text-button): Fix the return value when `beg' was a string.
134 (push-button): Handle the mode-line case.
135
1362012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
137
138 * progmodes/sql.el: Use cl-lib and lexical-binding; various cleanup.
139 (sql-signum): Remove. Use `cl-signum' instead.
140 (sql-read-passwd): Remove; use read-passwd instread.
141 (sql-get-login-ext): Use read-string.
142 (sql-get-login): Use dolist and pcase.
143 (sql--completion-table): Rename from sql-try-completion.
144 Use complete-with-action.
145 (sql-mode): Don't change abbrev-all-caps globally.
146 (sql-connect): Don't rely on dynamic scoping for `new-name'.
147 (sql-postgres-completion-object): Initialize vars in their `let'.
148 (sql-comint-sybase, sql-comint-sqlite, sql-comint-mysql)
149 (sql-comint-solid, sql-comint-ms, sql-comint-postgres)
150 (sql-comint-interbase): Use a single append, without setq.
151 (sql-comint-linter): Same, and unwind-protect the LINTER_MBX var.
152
153 * hi-lock.el: Rework the default face and the serialize regexp code.
154 (hi-lock--auto-select-face-defaults): Remove.
155 (hi-lock-string-serialize-serial): Remove.
156 (hi-lock--hashcons-hash): Rename from hi-lock-string-serialize-hash;
157 make weak.
158 (hi-lock--hashcons): Rename from hi-lock-string-serialize, return an
159 equal string.
160 (hi-lock-set-pattern): Adjust accordingly.
161 (hi-lock--regexps-at-point): Simplify accordingly.
162 (hi-lock--auto-select-face-defaults): Remove.
163 (hi-lock--last-face): New var to replace it.
164 (hi-lock-read-face-name): Rewrite (bug#11095).
165 (hi-lock-unface-buffer): Arrange for the face to be the next default.
166
1672012-12-06 Michael Albinus <michael.albinus@gmx.de>
168
169 * net/tramp.el (tramp-replace-environment-variables):
170 Hide compiler warning.
171 (tramp-file-name-for-operation): Remove `executable-find',
172 `start-process', `call-process' and `call-process-region'.
173
174 * net/tramp-compat.el (top): Don't require 'tramp-util and 'tramp-vc.
175
176 * net/tramp-gvfs.el (tramp-gvfs-dbus-event-error): Ensure backward
177 compatibility.
178
179 * net/tramp-sh.el (top): Remove `tramp-sh-handle-call-process-region'.
180
1812012-12-06 Chong Yidong <cyd@gnu.org>
182
183 * ffap.el (ffap-replace-file-component): Fix typo.
184
1852012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
186
187 * progmodes/octave-mod.el (octave-mark-block): Move out of tokens and
188 fix open-paren-like token test (bug#12785).
189
1902012-12-06 Glenn Morris <rgm@gnu.org>
191
192 * mail/rmailsum.el (rmail-new-summary): Tweak for
193 rmail-maybe-display-summary changing buffer. (Bug#13066)
194
1952012-12-06 Juri Linkov <juri@jurta.org>
196
197 * info.el (Info-fontify-node): Don't hide the last newline.
198 (Bug#12272)
199
2002012-12-06 Katsumi Yamaoka <yamaoka@jpl.org>
201
202 * mail/mailabbrev.el (mail-abbrev-expand-wrapper): Work in minibuffer
203 so as to enable message-read-from-minibuffer to expand mail aliases.
204
2052012-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
206
207 * minibuf-eldef.el (minibuf-eldef-update-minibuffer): Don't mess with
208 the `intangible' property.
209 Suggested by Christopher Schmidt <christopher@ch.ristopher.com>
210
2112012-12-05 Deniz Dogan <deniz@dogan.se>
212
213 * net/rcirc.el (rcirc-urls): Update documentation.
214 (rcirc-condition-filter): New function.
215 (rcirc-browse-url, rcirc-markup-urls): Use only URLs before point
216 and exclude consecutive duplicate URLs (Bug#6082).
217
2182012-12-05 Michael Albinus <michael.albinus@gmx.de>
219
220 * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
221 Check return code of copy command.
222
223 * net/tramp-adb.el (tramp-adb-sdk-dir, tramp-adb-prompt):
224 Use group `tramp'. Add version.
225
2262012-12-05 Chong Yidong <cyd@gnu.org>
227
228 * ffap.el (ffap-url-regexp): Don't require matching at front of
229 string (Bug#4952).
230 (ffap-url-p): If only a substring matches, return that.
231 (ffap-url-at-point): Use the return value of ffap-url-p.
232 (ffap-read-file-or-url, ffap-read-file-or-url-internal)
233 (find-file-at-point, dired-at-point, dired-at-point-prompter)
234 (ffap-guess-file-name-at-point): Likewise.
235 (ffap-replace-file-component): Fix typo.
236
237 * info.el (info-display-manual): Add existing Info buffers, whose
238 files may not be in Info-directory-list, to the completion.
239 (info--manual-names): New helper function.
240
2412012-12-05 Glenn Morris <rgm@gnu.org>
242
243 * vc/vc-hg.el (vc-hg-resolve-when-done, vc-hg-find-file-hook):
244 New functions, for detecting and resolving conflicts. (Bug#10709)
245
2462012-12-04 Jambunathan K <kjambunathan@gmail.com>
247
248 * hi-lock.el (hi-lock-auto-select-face): New user variable.
249 (hi-lock-auto-select-face-defaults): New buffer local variable.
250 (hi-lock-read-face-name): Honor `hi-lock-auto-select-face'.
251 (hi-lock-unface-buffer): Prompt user with useful defaults.
252 With prefix arg, unhighlight all hi-lock patterns in buffer.
253
2542012-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
255
256 * obsolete/terminal.el, obsolete/longlines.el: Add obsolecence info.
257
2582012-12-04 Michael Albinus <michael.albinus@gmx.de>
259
260 * Makefile.in (TRAMP_SRC):
261 * makefile.w32-in (TRAMP_SRC): Add tramp-adb.el.
262
2632012-12-04 Juergen Hoetzel <juergen@archlinux.org>
264
265 * net/tramp-adb.el: New package.
266
2672012-12-04 Chong Yidong <cyd@gnu.org>
268
269 * terminal.el: Move to obsolete/.
270
271 * longlines.el: Move to obsolete/.
272
273 * vc/ediff-diff.el (ediff-extract-diffs, ediff-extract-diffs3):
274 Remove code referring to longlines mode.
275
2762012-12-03 Juri Linkov <juri@jurta.org>
277
278 * sort.el (delete-duplicate-lines): New command. (Bug#13032)
279
2802012-12-03 Agustín Martín Domingo <agustin.martin@hispalinux.es>
281
282 * textmodes/ispell.el (ispell-init-process)
283 (ispell-start-process, ispell-internal-change-dictionary):
284 Make sure personal dictionary name is expanded after initial
285 `default-directory' value. Use expanded strings for
286 keep/restart checks and for value (Bug#13019).
287
2882012-12-03 Jay Belanger <jay.p.belanger@gmail.com>
289
290 * calc/calc-forms.el (math-date-to-iso-dt): Fix weekday number.
291
2922012-12-03 Leo Liu <sdl.web@gmail.com>
293
294 * files.el (dir-locals-read-from-file): Check file non-empty
295 before reading. (Bug#13038)
296
2972012-12-03 Glenn Morris <rgm@gnu.org>
298
299 * jka-cmpr-hook.el (jka-compr-get-compression-info):
300 Remove any version extension before checking filename. (Bug#13006)
301 (jka-compr-compression-info-list): Belated :version bump.
302
3032012-12-03 Chong Yidong <cyd@gnu.org>
304
305 * simple.el (transient-mark-mode): Doc fix (Bug#11523).
306
307 * buff-menu.el (Buffer-menu-delete-backwards, Buffer-menu-mode)
308 (buffer-menu): Doc fix (Bug#12294).
309
3102012-12-03 Roland Winkler <winkler@gnu.org>
311
312 * calendar/diary-lib.el (diary-header-line-format): Use keybinding
313 of diary-show-all-entries in the diary buffer (Bug#12994).
314
3152012-12-03 Michael Albinus <michael.albinus@gmx.de>
316
317 * net/tramp-sh.el (tramp-perl-encode): Use "read STDIN" instead of
318 "<STDIN>". This is binary safe.
319
3202012-12-03 Jay Belanger <jay.p.belanger@gmail.com>
321
322 * calc/calc-forms.el (math-absolute-from-iso-dt)
323 (math-date-to-iso-dt, math-parse-iso-date-validate)
324 (math-iso-dt-to-date): New functions.
325 (math-fd-iso-dt, math-fd-isoyear, math-fd-isoweek)
326 (math-fd-isoweekday): New variables.
327 (calc-date-notation, math-parse-standard-date, math-format-date)
328 (math-format-date-part): Add support for more formatting codes.
329
3302012-12-02 Dmitry Gutov <dgutov@yandex.ru>
331
332 * vc/vc.el (vc-delete-file, vc-rename-file): Default to the
333 current buffer's file name when called interactively (Bug#12488).
334
3352012-12-02 Juri Linkov <juri@jurta.org>
336
337 * info.el (info-display-manual): Don't clobber an existing Info
338 buffer (Bug#10770). Add completion (Bug#10771).
339
3402012-12-01 Yuya Nishihara <yuya@tcha.org> (tiny change)
341
342 * vc/vc-hooks.el (vc-find-file-hook): Expand buffer-file-truename
343 before using it for comparison (Bug#5297).
344
3452012-12-01 Jari Aalto <jari.aalto@cante.net>
346
347 * textmodes/css-mode.el (css-current-defun-name): New function.
348 (css-mode): Use it.
349
350 * textmodes/sgml-mode.el (html-current-defun-name): New function.
351 (html-mode): Use it.
352
3532012-12-01 Chong Yidong <cyd@gnu.org>
354
355 Modularize add-log-current-defun (Bug#2224).
356 Suggested by Jari Aalto.
357
358 * vc/add-log.el (add-log-current-defun-function): Doc fix.
359 (add-log-current-defun): Move mode-specific code to other files.
360 (add-log-lisp-like-modes, add-log-c-like-modes)
361 (add-log-tex-like-modes): Variables deleted.
362
363 * emacs-lisp/lisp-mode.el (lisp-current-defun-name): New.
364 (lisp-mode-variables): Use it.
365
366 * progmodes/cc-mode.el (c-common-init):
367 * progmodes/cperl-mode.el (cperl-mode): Set a value for
368 add-log-current-defun-function.
369
370 * progmodes/m4-mode.el (m4-current-defun-name): New function.
371 (m4-mode): Use it.
372
373 * progmodes/perl-mode.el (perl-current-defun-name): New.
374 (perl-mode): Use it.
375
376 * progmodes/scheme.el (scheme-mode-variables, dsssl-mode):
377 Use lisp-current-defun-name.
378
379 * textmodes/tex-mode.el (tex-current-defun-name): New.
380 (tex-common-initialization): Use it.
381
382 * textmodes/texinfo.el (texinfo-current-defun-name): New.
383 (texinfo-mode): Use it.
384
3852012-12-01 Chong Yidong <cyd@gnu.org>
386
387 * emacs-lisp/lisp-mode.el (lisp-mode-variables, lisp-mode):
388 * progmodes/autoconf.el (autoconf-mode):
389 * progmodes/js.el (js-mode):
390 * progmodes/make-mode.el (makefile-mode, makefile-makepp-mode)
391 (makefile-bsdmake-mode, makefile-imake-mode, makefile-browse):
392 * progmodes/perl-mode.el (perl-mode):
393 * progmodes/sh-script.el (sh-mode, sh-set-shell):
394 * textmodes/css-mode.el (css-mode):
395 * textmodes/sgml-mode.el (html-mode, sgml-mode)
396 (sgml-tags-invisible, sgml-guess-indent):
397 * textmodes/tex-mode.el (tex-common-initialization)
398 (latex-complete-bibtex-keys, tex-shell, tex-main-file)
399 (doctex-mode, plain-tex-mode, latex-mode):
400 * textmodes/texinfo.el (texinfo-mode): Use setq-local.
401
4022012-12-01 Kirk Kelsey <kirk.kelsey@0x4b.net>
403
404 * vc/vc-hg.el (vc-hg-next-revision):
405 Ensure use of default "tip" output format. (Bug#6968)
406
4072012-12-01 Kim F. Storm <storm@cua.dk>
408
409 * startup.el (fancy-startup-tail): Add a clickable link
410 (Bug#2176).
411
4122012-12-01 Chong Yidong <cyd@gnu.org>
413
414 * startup.el (fancy-startup-tail): Improve the message about
415 auto-save files (Bug#2176).
416
417 * files.el (recover-session): Improve the descriptive message, and
418 use substitute-command-keys.
419
4202012-12-01 Glenn Morris <rgm@gnu.org>
421
422 * ido.el (ido-file-internal):
423 Handle other-window, other-frame for dired. (Bug#13036)
424
4252012-11-30 Glenn Morris <rgm@gnu.org>
426
427 * icomplete.el (icomplete-separator): Fix :version.
428
4292012-11-30 Chong Yidong <cyd@gnu.org>
430
431 * shell.el (shell): For C-u M-x shell, use an inactive shell
432 buffer as the default (Bug#1975).
433 (shell-apply-ansi-color, shell-reapply-ansi-color): New functions.
434 (shell-mode): Use them to reapply ansi colorization if Shell mode
435 is re-enabled.
436
4372012-11-30 Yuriy Vostrikov <delamonpansie@gmail.com> (tiny change)
438
439 * vc/vc-git.el (vc-git-command): Disable the pager (Bug#6137).
440
4412012-11-30 Samuel Bronson <naesten@gmail.com>
442
443 * progmodes/grep.el (grep-compute-defaults): Do not pass the -e
444 flag to xargs, for compatibility with BSD xargs (Bug#11703).
445
4462012-11-30 Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>
447
448 * textmodes/fill.el (fill-region-as-paragraph): Handle overshoot
449 by move-to-column (Bug#3234).
450
4512012-11-30 Chong Yidong <cyd@gnu.org>
452
453 * longlines.el (longlines-wrap-line, longlines-encode-region):
454 Preserve text properties (Bug#1425).
455
4562012-11-30 OKAZAKI Tetsurou <okazaki.tetsurou@gmail.com> (tiny change)
457
458 * vc/vc.el (vc-register): Allow registering a file which is
459 already registered with a different backend (Bug#10589).
460
4612012-11-29 Jambunathan K <kjambunathan@gmail.com>
462 Stefan Monnier <monnier@iro.umontreal.ca>
463
464 * icomplete.el: Change separator; add ido-style commands.
465 (icomplete-show-key-bindings): Remove custom var.
466 (icomplete-get-keys): Remove function.
467 (icomplete-forward-completions, icomplete-backward-completions):
468 New commands.
469 (icomplete-minibuffer-map): New var.
470 (icomplete-minibuffer-setup): Use it.
471 (icomplete-exhibit): Don't delay if the list of completions is known.
472 (icomplete-separator): New custom.
473 (icomplete-completions): Use it.
474 * minibuffer.el (completion-all-sorted-completions): Delete duplicates.
475 (minibuffer-force-complete-and-exit): New command.
476 (minibuffer--complete-and-exit): New function extracted from
477 minibuffer-complete-and-exit.
478 (minibuffer-complete-and-exit): Use it.
479
480 * progmodes/etags.el (visit-tags-table-buffer): Give a more precise
481 error message when the file doesn't exist (bug#12974).
482
4832012-11-29 Kelly Dean <kellydeanch@yahoo.com> (tiny change)
484
485 * simple.el (activate-mark): Run activate-mark-hook (bug#13027).
486
4872012-11-29 Glenn Morris <rgm@gnu.org>
488
489 * files.el (hack-dir-local-variables): Warn if try to set
490 coding via dir-locals, since it doesn't work. (Bug#7169)
491
492 Add desktop support for restoring vc-dir buffers. (Bug#10606)
493 * vc/vc-dir.el (vc-dir-mode): Autoload it (for desktop restore).
494 Set buffer-local value of desktop-save-buffer.
495 (vc-dir-desktop-buffer-misc-data, vc-dir-restore-desktop-buffer):
496 New functions.
497 (desktop-buffer-mode-handlers): Add vc-dir-mode entry.
498 * desktop.el (desktop-save-buffer-p): Treat vc-dir like dired.
499
500 * files.el (inhibit-local-variables-ignore-case): New. (Bug#10610)
501 (inhibit-local-variables-p): Use inhibit-local-variables-ignore-case.
502 Doc fix.
503 (inhibit-local-variables-regexps, inhibit-local-variables-suffixes):
504 Doc fixes.
505
5062012-11-28 Jay Belanger <jay.p.belanger@gmail.com>
507
508 * calc/calc-forms.el (calc-date-notation): Fix regexp
509 used to find time codes. Fix symbol for seconds.
510
5112012-11-27 Glenn Morris <rgm@gnu.org>
512
513 * emacs-lisp/derived.el (derived-mode-make-docstring):
514 Don't mention "abbrev" or "syntax" if nil. (Bug#11277)
515
5162012-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
517
518 * textmodes/table.el (table-insert): Don't use `symbol-name' on
519 lexically scoped variables (bug#13005).
520
5212012-11-27 Glenn Morris <rgm@gnu.org>
522
523 * vc/vc-hooks.el (vc-mistrust-permissions):
524 Default to t, to avoid data-loss. (Bug#11490)
525
5262012-11-27 Fabián Ezequiel Gallina <fgallina@cuca>
527
528 * progmodes/python.el (python-indent-guess-indent-offset):
529 If indentation is guessed make python-indent-offset buffer-local.
530
531 Fix Imenu regression.
532 * progmodes/python.el (python-nav-beginning-of-defun):
533 Fix forward movement when statement(s) separates point from defun.
534 (python-imenu-prev-index-position): New function.
535
5362012-11-27 Eli Zaretskii <eliz@gnu.org>
537
538 * subr.el (buffer-file-type): Declare with defvar-local. Doc fix.
539
540 * dos-w32.el (find-file-not-found-set-buffer-file-coding-system):
541 Don't set buffer-file-type. Return nil. (Bug#12989)
542
5432012-11-27 Glenn Morris <rgm@gnu.org>
544
545 * hippie-exp.el (hippie-expand-try-functions-list):
546 Re-autoload it. (Bug#12982)
547
5482012-11-27 Eli Zaretskii <eliz@gnu.org>
549
550 * descr-text.el (describe-char-padded-string):
551 Call internal-char-font only on GUI frames. (Bug#11964)
552
5532012-11-27 Andreas Schwab <schwab@linux-m68k.org>
554
555 * buff-menu.el (Buffer-menu-buffer+size-width): Fix customize type
556 and obsoletion message.
557
5582012-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
559
560 * emacs-lisp/cl-macs.el (cl--transform-lambda): Add back `declare' in
561 the constructs to keep outside of the `cl-block' (bug#12977).
562
5632012-11-27 Chong Yidong <cyd@gnu.org>
564
565 * mouse.el (mouse-drag-line): Even if the line is not draggable,
566 keep reading until we get the up-event anyway, in order to process
567 the up-event for mouse-1-click-follows-link (Bug#12971).
568
5692012-11-26 Stefan Monnier <monnier@iro.umontreal.ca>
570
571 * emacs-lisp/advice.el (ad-should-compile): Don't compile advice if the
572 base function is not yet defined (bug#12965).
573 (ad-activate-advised-definition): Use ad-compile-function.
574 (ad-activate): Use cond.
575
5762012-11-25 Leo Liu <sdl.web@gmail.com>
577
578 * textmodes/sgml-mode.el (sgml-tag): Fix indentation for closing tag.
579 (Bug#12979)
580
5812012-11-24 Vincent Belaïche <vincentb1@users.sourceforge.net>
582
583 * textmodes/reftex-parse.el (reftex-parse-from-file): Use variable
584 reftex-section-info-function in order to be compatible with
585 Texinfo integration.
586
587 * textmodes/reftex.el (reftex-section-pre-regexp)
588 (reftex-section-post-regexp, reftex-section-info-function):
589 New variable.
590 (reftex-compile-variables): Use variables reftex-section-pre-regexp,
591 reftex-section-post-regexp, and reftex-section-info-function in order
592 to be compatible with Texinfo integration.
593
594 * textmodes/reftex-toc.el (reftex-toc-promote-action):
595 use reftex-section-pre-regexp variable in order to be compatible with
596 Texinfo integration.
597
5982012-11-25 Chong Yidong <cyd@gnu.org>
599
600 * faces.el: Make face-spec-set more analogous to setq.
601 (face-spec-set): Change the third arg to specify whether this
602 function is being called via defface, customize, or a third party.
603 Set the appropriate symbol properties. Clear the override spec if
604 setting via Custom. Initialize face if necessary. (Bug#4988)
605 (face-spec-recalc): Allow theme faces to completely replace the
606 defface spec, in the same way as custom faces (Bug#8454).
607
608 * cus-face.el (custom-declare-face): Move face initialization to
609 face-spec-set.
610 (custom-theme-set-faces): Don't initialize the face name here, as
611 that is now done in face-spec-set.
612
613 * cus-edit.el (custom-face-set, custom-face-mark-to-save)
614 (custom-face-reset-saved, custom-face-mark-to-reset-standard):
615 Simplify by using the new arg to face-spec-set.
616
617 * emacs-lisp/lisp-mode.el (eval-defun-1): When evaluating defface,
618 reset face-override-spec too, and use custom-declare-face.
619
6202012-11-24 Jan Djärv <jan.h.d@swipnet.se>
621
622 * term/ns-win.el (ns-initialize-window-system): Move creation of
623 fontsets here (Bug#11964).
624
6252012-11-24 Vincent Belaïche <vincentb1@users.sourceforge.net>
626
627 * ses.el (ses-rename-cell): Correct bug on mode-line update after
628 cell renaming.
629
6302012-11-24 Chong Yidong <cyd@gnu.org>
631
632 * woman.el (woman-default-faces, woman-monochrome-faces): Mark as
633 obsolete.
634
635 * custom.el (custom-theme-set-variables): Use a topological sort
636 for ordering by custom dependencies (Bug#12952).
637 (custom--sort-vars, custom--sort-vars-1): New functions.
638
6392012-11-24 Stefan Monnier <monnier@iro.umontreal.ca>
640
641 * emacs-lisp/bytecomp.el (byte-compile-file): Setup default value for
642 lexical-binding (bug#12938).
643
6442012-11-24 Wolfgang Jenkner <wjenkner@inode.at>
645
646 * image-mode.el (image-transform-check-size): Use assertions only
647 for images of type imagemagick.
648
649 Otherwise no error, image-transform-fit-to-{width,height} is
650 silently ignored, as before. Doc fix.
651
6522012-11-24 Chong Yidong <cyd@gnu.org>
653
654 * faces.el (color-defined-p): Doc fix (Bug#12853).
655
6562012-11-24 Juri Linkov <juri@jurta.org>
657
658 * dired.el (dired-mark): Add optional arg `interactive'.
659 Check for `use-region-p' if `interactive' is non-nil.
660 (dired-unmark, dired-flag-file-deletion): Add optional arg
661 `interactive'. Call `dired-mark' with the arg `interactive'.
662 (Bug#10624)
663
664 * wdired.el: Revert 2012-10-17 change partly and replace it with
665 Patch by Christopher Schmidt <christopher@ch.ristopher.com>.
666 (wdired-finish-edit): Add marks for new file names to
667 `wdired-old-marks'. Restore marks using `dired-mark-remembered'
668 after `revert-buffer'.
669 (wdired-do-renames): Remove calls to `dired-remove-file',
670 `dired-add-file', `dired-add-entry'. (Bug#11795)
671
6722012-11-24 Alan Mackenzie <acm@muc.de>
673
674 * progmodes/cc-defs.el (c-version): Bump to 5.32.4.
675
676 Fix bugs in the state cache. Enhance a debugging mechanism.
677 * progmodes/cc-engine.el (c-parse-state-get-strategy): Don't use
678 "brace at column zero" strategy for C++.
679 (c-append-lower-brace-pair-to-state-cache): Repair algorithm.
680 (c-parse-state-point): New variable.
681 (c-record-parse-state-state): Record old parse state with
682 `copy-tree'. Record previous value of point.
683 (c-debug-parse-state-double-cons): New debugging function.
684 (c-debug-parse-state): Call the above new function.
685 (c-toggle-parse-state-debug): Output a confirmatory message.
686
687 * progmodes/cc-mode.el (c-before-change, c-after-change):
688 Call c-invalidate-state-cache from `c-before-change' instead of
689 `c-after-change'.
690
6912012-11-23 Chong Yidong <cyd@gnu.org>
692
693 * find-cmd.el (find-constituents): Add executable, ipath,
694 readable, samefile, writable, daystart, regextype (Bug#12856).
695
6962012-11-23 Stefan Monnier <monnier@iro.umontreal.ca>
697
698 * emacs-lisp/ert.el, emacs-lisp/ert-x.el: Use cl-lib and lexical-binding.
699
7002012-11-22 Paul Eggert <eggert@cs.ucla.edu>
701
702 * calc/calc.el (calc-gregorian-switch): Move to after calc-refresh
703 definition. This fixes a bootstrap failure.
704 (calc-gregorian-switch): In menu, put dates before regions.
705 This is easier to follow, lines up better in the menu, and lets us
706 coalesce regions that switch at the same time. Give country
707 names, not "Vatican", as that's better for non-expert users.
708 Use names that are stable between the date of switch and now, e.g.,
709 Bohemia and Moravia (which existed then and now) and not
710 Czechoslovakia (which didn't exist then and doesn't exist now).
711 What is now the U.S. mostly did not switch at the same time as
712 Britain, so omit the U.S. Correct spelling of "Britain".
713 Catholic Switzerland was too much of a mess, so omit it.
714
7152012-11-22 Jay Belanger <jay.p.belanger@gmail.com>
716
717 * calc/calc.el (calc-gregorian-switch): Refresh the Calc buffer
718 after the variable is changed.
719
7202012-11-21 Daniel Colascione <dancol@dancol.org>
721
722 * progmodes/sql.el (sql-mode-font-lock-object-name): Support IF NOT EXISTS
723 in SQL declarations for font-lock.
724 (sql-imenu-generic-expression): Teach imenu about IF NOT EXISTS.
725
7262012-11-21 Glenn Morris <rgm@gnu.org>
727
728 * faces.el (face-underline-p, face-inverse-video-p, face-bold-p)
729 (face-italic-p): Add optional argument "inherit".
730
731 * faces.el (set-face-inverse-video, set-face-bold, set-face-italic):
732 Remove -p suffix from names, for consistency with other set-face-*.
733 (set-face-inverse-video): Fix interactive spec.
734 * play/gamegrid.el (gamegrid-make-mono-tty-face):
735 * textmodes/table.el (table--update-cell-face):
736 Use set-face-inverse-video rather than now obsolete alias.
737
7382012-11-21 Eli Zaretskii <eliz@gnu.org>
739
740 * simple.el (line-move): Don't call line-move-partial if
741 scroll-conservatively is in effect. (Bug#12927)
742
7432012-11-21 Stefan Monnier <monnier@iro.umontreal.ca>
744
745 * eshell/em-cmpl.el (eshell-pcomplete): Refine fix for bug#12838:
746 Fallback on completion-at-point rather than
747 pcomplete-expand-and-complete, and only if pcomplete actually failed.
748 (eshell-cmpl-initialize): Setup completion-at-point.
749
750 * pcomplete.el (pcomplete--entries): Obey pcomplete-ignore-case.
751
752 * emacs-lisp/ert.el (ert--expand-should-1): Adapt to cl-lib.
753
7542012-11-21 Michael Albinus <michael.albinus@gmx.de>
755
756 * net/tramp-sh.el (tramp-do-copy-or-rename-file): If both files
757 are remote, check out-of-band property for both.
758
7592012-11-21 Stefan Monnier <monnier@iro.umontreal.ca>
760
761 * window.el (switch-to-buffer): Re-add the warning that was lost in the
762 code rewrite.
763
7642012-11-21 Paul Eggert <eggert@cs.ucla.edu>
765
766 More minor time fixes.
767 * calendar/time-date.el: Commentary fix.
768 * net/tramp-sh.el (tramp-do-file-attributes-with-ls): Undo last change;
769 too much other code depends on (0 0) time stamps.
770 * net/tramp.el (tramp-time-less-p, tramp-time-subtract):
771 Add a couple of FIXME comments.
772
773 Minor cleanup for times as lists of four integers.
774 * files.el (dir-locals-directory-cache):
775 * ps-bdf.el (bdf-file-mod-time, bdf-read-font-info):
776 Doc fixes.
777 * net/tramp-sh.el (tramp-do-file-attributes-with-ls):
778 * ps-bdf.el (bdf-file-newer-than-time):
779 Process four-integers time stamps, not two. Doc fixes.
780
7812012-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
782
783 * uniquify.el (uniquify-managed): Use defvar-local.
784 (rename-buffer, create-file-buffer): Advise with advice-add.
785 (uniquify-unload-function): Unadvise accordingly.
786
787 * emacs-lisp/trace.el: Rewrite, use nadvice and lexical-binding.
788 (trace-buffer): Don't purecopy.
789 (trace-entry-message, trace-exit-message): Add `context' arg.
790 (trace--timer): New var.
791 (trace-make-advice): Adjust for use in nadvice.
792 Add `context' argument. Delay `display-buffer' via a timer.
793 (trace-function-internal): Use advice-add.
794 (trace--read-args): New function.
795 (trace-function-foreground, trace-function-background): Use it.
796 (trace-function): Rename to trace-function-foreground and redefine as
797 an alias to that new name.
798 (untrace-function, untrace-all): Adjust to the use of nadvice.
799
800 * emacs-lisp/bytecomp.el (byte-compile): Fix handling of closures.
801
802 * emacs-lisp/byte-run.el (defun-declarations-alist): Fix last change.
803
804 * subr.el (called-interactively-p-functions): New var.
805 (internal--called-interactively-p--get-frame): New macro.
806 (called-interactively-p, interactive-p): Rewrite in Lisp.
807 * emacs-lisp/nadvice.el (advice--called-interactively-skip): New fun.
808 (called-interactively-p-functions): Use it.
809 * emacs-lisp/edebug.el (edebug--called-interactively-skip): New fun.
810 (called-interactively-p-functions): Use it.
811 * allout.el (allout-called-interactively-p): Don't assume
812 called-interactively-p is a subr.
813
8142012-11-20 Glenn Morris <rgm@gnu.org>
815
816 * profiler.el (profiler-report-mode-map): Add a menu.
817 No need to bind `q' because we derive from special-mode.
818 (profiler-report-find-entry): Handle calls from the menu-bar.
819
8202012-11-19 Stefan Monnier <monnier@iro.umontreal.ca>
821
822 * emacs-lisp/byte-run.el (defun-declarations-alist):
823 Allow a compiler-macro to be a lambda expression.
824
825 * progmodes/python.el: Use cl-lib. Move var declarations outside of
826 eval-when-compile.
827 (python-syntax-context): Add compiler-macro.
828 (python-font-lock-keywords): Simplify with De Morgan.
829
830 * vc/diff-mode.el (diff-hunk): Don't make useless timers.
831
832 * files.el (load-file): Require match in minibuffer selection, as was
833 the case in Emacs-20 before we changed the spec to allow .elc files
834 (bug#12935).
835
836 * json.el: Don't require cl since we don't use it.
837 * color.el: Don't require cl.
838 (color-complement): `caddr' -> `nth 2'.
839
840 * calendar/time-date.el (time-to-seconds): De-obsolete.
841
8422012-11-19 Jay Belanger <jay.p.belanger@gmail.com>
843
844 * calc/calc-forms.el (math-leap-year-p): Fix formula for negative
845 year numbers.
846 (math-date-to-julian-dt): Adjust the initial approximation for the
847 year to deal with the new definition of the DATE.
848
8492012-11-19 Daniel Colascione <dancol@dancol.org>
850
851 * term/w32-win.el (cygwin-convert-path-from-windows):
852 Accomodate rename of cygwin_convert_path* to cygwin_convert_file_name*.
853
8542012-11-18 Chong Yidong <cyd@gnu.org>
855
856 * filecache.el (file-cache--read-list): New function.
857 (file-cache-add-directory-list, file-cache-add-file-list)
858 (file-cache-delete-file-list, file-cache-delete-directory-list):
859 Use it to read a list of files or directories (Bug#12846).
860 (file-cache-add-file, file-cache-add-directory)
861 (file-cache-delete-file-list, file-cache-delete-file-regexp)
862 (file-cache-delete-directory): Print an message.
863
8642012-11-18 Jay Belanger <jay.p.belanger@gmail.com>
865
866 * calc/calc-forms.el (math-date-to-dt): Use integer date when
867 calling `math-date-to-julian-dt' and 'math-date-to-gregorian-dt'.
868
8692012-11-18 Glenn Morris <rgm@gnu.org>
870
871 * image.el (insert-image, insert-sliced-image): Doc fix.
872
8732012-11-18 Chong Yidong <cyd@gnu.org>
874
875 * emacs-lisp/syntax.el (syntax-propertize-function): Doc fix
876 (Bug#12810).
877
8782012-11-18 OKAZAKI Tetsurou <okazaki.tetsurou@gmail.com> (tiny change)
879
880 * vc/vc-svn.el (vc-svn-merge-news): Properly parse the merge
881 response when the target file is in a subdirectory (Bug#12757).
882
8832012-11-18 Chong Yidong <cyd@gnu.org>
884
885 * filecache.el (file-cache-add-file-list): Doc fix (Bug#12694).
886
8872012-11-18 Glenn Morris <rgm@gnu.org>
888
889 * emacs-lisp/cl-lib.el (face-underline-p):
890 Use set-face-underline rather than the alias set-face-underline-p.
891
892 * window.el (with-temp-buffer-window): Doc fix.
893 * subr.el (with-output-to-temp-buffer):
894 Add doc xref to with-temp-buffer-window.
895
8962012-11-18 Juanma Barranquero <lekktu@gmail.com>
897
898 * woman.el (woman-non-underline-faces): Use `set-face-underline'.
899 * calc/calc.el (math-format-date-cache): Declare.
900
9012012-11-17 Paul Eggert <eggert@cs.ucla.edu>
902
903 Calc by default uses the Gregorian calendar for all dates (Bug#12633).
904 It also uses January 1, 1 AD as its day number 1.
905 * calc/calc-forms.el (math-julian-date-beginning)
906 (math-julian-date-beginning-int): Implement this.
907
9082012-11-17 Juanma Barranquero <lekktu@gmail.com>
909
910 * descr-text.el (quail-find-key):
911 * dired.el (desktop-file-name):
912 * dirtrack.el (shell-prefixed-directory-name, shell-process-cd):
913 * generic-x.el (comint-mode, comint-exec):
914 * image-dired.el (widget-forward):
915 * info.el (speedbar-add-expansion-list, speedbar-center-buffer-smartly)
916 (speedbar-change-expand-button-char)
917 (speedbar-change-initial-expansion-list, speedbar-delete-subblock)
918 (speedbar-make-specialized-keymap, speedbar-make-tag-line):
919 * printing.el (easy-menu-add-item, easy-menu-remove-item)
920 (widget-field-action, widget-value-set):
921 * speedbar.el (imenu--make-index-alist):
922 * term.el (ring-empty-p, ring-ref, ring-insert-at-beginning)
923 (ring-length, ring-insert):
924 * vcursor.el (compare-windows-skip-whitespace):
925 * woman.el (dired-get-filename):
926 Declare functions.
927
928 * term/w32-win.el (cygwin-convert-path-from-windows): Fix declaration.
929
9302012-11-17 Jay Belanger <jay.p.belanger@gmail.com>
931
932 * calc/calc.el (calc-gregorian-switch): New variable.
933
934 * calc/calc-forms.el (math-day-in-year, math-dt-before-p)
935 (math-absolute-from-gregorian-dt, math-absolute-from-julian-dt)
936 (math-date-to-julian-dt, math-date-to-gregorian-dt): New functions.
937 (math-leap-year-p): Add option to distinguish between Julian
938 and Gregorian calendars.
939 (math-day-number): Use `math-day-in-year' to do the computations.
940 (math-absolute-from-dt): Rename from `math-absolute-from-date'.
941 Use `math-absolute-from-gregorian' and `math-absolute-from-julian'
942 to do the computations.
943 (math-date-to-dt): Use `math-date-to-julian-dt' and
944 `math-date-to-gregorian-dt' to do the computations.
945 (calcFunc-weekday, math-format-date-part): Use the new version of
946 the DATE to determine the weekday.
947 (calcFunc-newmonth, calcFunc-newyear): Use `calc-gregorian-switch'
948 when necessary.
949
9502012-11-17 Eli Zaretskii <eliz@gnu.org>
951
952 * term/w32-win.el (w32-handle-dropped-file): Use 'file://' only on
953 Cygwin; otherwise use 'file:'. (Bug#12914)
954 (cygwin-convert-path-from-windows): Declare, to avoid
955 byte-compiler warnings.
956
12012-11-17 Andreas Politz <politza@fh-trier.de> 9572012-11-17 Andreas Politz <politza@fh-trier.de>
2 958
3 * ibuffer.el (ibuffer-mark-forward, ibuffer-unmark-forward) 959 * ibuffer.el (ibuffer-mark-forward, ibuffer-unmark-forward)
@@ -3459,7 +4415,7 @@
3459 * calendar/cal-tex.el (cal-tex-weekly-common): 4415 * calendar/cal-tex.el (cal-tex-weekly-common):
3460 Restore leading blank page. 4416 Restore leading blank page.
3461 4417
34622012-08-22 Le Wang <l26wang@gmail.com> (tiny change) 44182012-08-22 Le Wang <l26wang@gmail.com>
3463 4419
3464 * misc.el (forward-to-word, backward-to-word): Activate or extend 4420 * misc.el (forward-to-word, backward-to-word): Activate or extend
3465 the region under `shift-select-mode'. (Bug#12231) 4421 the region under `shift-select-mode'. (Bug#12231)
@@ -11103,7 +12059,7 @@
11103 * dynamic-setting.el (font-setting-change-default-font): Don't 12059 * dynamic-setting.el (font-setting-change-default-font): Don't
11104 change the default face if SET-FONT argument is non-nil (Bug#9982). 12060 change the default face if SET-FONT argument is non-nil (Bug#9982).
11105 12061
111062012-01-29 Samuel Bronson <naesten@gmail.com> (tiny change) 120622012-01-29 Samuel Bronson <naesten@gmail.com>
11107 12063
11108 * custom.el (defcustom): Add doc link to Lisp manual (Bug#10635). 12064 * custom.el (defcustom): Add doc link to Lisp manual (Bug#10635).
11109 12065
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index 83657a98bfd..b97cd80cdba 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -7979,7 +7979,7 @@
7979 Remember the buffers at head, rather than their name. 7979 Remember the buffers at head, rather than their name.
7980 * iswitchb.el (iswitchb-kill-buffer): Re-make the list. 7980 * iswitchb.el (iswitchb-kill-buffer): Re-make the list.
7981 7981
79822010-08-22 Kirk Kelsey <kirk.kelsey@0x4b.net> (tiny change) 79822010-08-22 Kirk Kelsey <kirk.kelsey@0x4b.net>
7983 Stefan Monnier <monnier@iro.umontreal.ca> 7983 Stefan Monnier <monnier@iro.umontreal.ca>
7984 7984
7985 * progmodes/make-mode.el (makefile-fill-paragraph): Account for the 7985 * progmodes/make-mode.el (makefile-fill-paragraph): Account for the
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 643b698c6e8..0b56dc8aec4 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -377,12 +377,12 @@ $(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC)
377# an own subdirectory. OTOH, it does not hurt to keep them in 377# an own subdirectory. OTOH, it does not hurt to keep them in
378# lisp/net. 378# lisp/net.
379TRAMP_DIR = $(lisp)/net 379TRAMP_DIR = $(lisp)/net
380TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-cache.el \ 380TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-adb.el \
381 $(TRAMP_DIR)/tramp-cmds.el $(TRAMP_DIR)/tramp-compat.el \ 381 $(TRAMP_DIR)/tramp-cache.el $(TRAMP_DIR)/tramp-cmds.el \
382 $(TRAMP_DIR)/tramp-ftp.el $(TRAMP_DIR)/tramp-gvfs.el \ 382 $(TRAMP_DIR)/tramp-compat.el $(TRAMP_DIR)/tramp-ftp.el \
383 $(TRAMP_DIR)/tramp-gw.el $(TRAMP_DIR)/tramp-sh.el \ 383 $(TRAMP_DIR)/tramp-gvfs.el $(TRAMP_DIR)/tramp-gw.el \
384 $(TRAMP_DIR)/tramp-smb.el $(TRAMP_DIR)/tramp-uu.el \ 384 $(TRAMP_DIR)/tramp-sh.el $(TRAMP_DIR)/tramp-smb.el \
385 $(TRAMP_DIR)/trampver.el 385 $(TRAMP_DIR)/tramp-uu.el $(TRAMP_DIR)/trampver.el
386 386
387$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) 387$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC)
388 $(emacs) -l autoload \ 388 $(emacs) -l autoload \
diff --git a/lisp/allout.el b/lisp/allout.el
index 04de853ebe0..e93aefd12cc 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -1657,10 +1657,9 @@ and the place for the cursor after the decryption is done."
1657(defmacro allout-called-interactively-p () 1657(defmacro allout-called-interactively-p ()
1658 "A version of `called-interactively-p' independent of Emacs version." 1658 "A version of `called-interactively-p' independent of Emacs version."
1659 ;; ... to ease maintenance of allout without betraying deprecation. 1659 ;; ... to ease maintenance of allout without betraying deprecation.
1660 (if (equal (subr-arity (symbol-function 'called-interactively-p)) 1660 (if (ignore-errors (called-interactively-p 'interactive) t)
1661 '(0 . 0)) 1661 '(called-interactively-p 'interactive)
1662 '(called-interactively-p) 1662 '(called-interactively-p)))
1663 '(called-interactively-p 'interactive)))
1664;;;_ = allout-inhibit-aberrance-doublecheck nil 1663;;;_ = allout-inhibit-aberrance-doublecheck nil
1665;; In some exceptional moments, disparate topic depths need to be allowed 1664;; In some exceptional moments, disparate topic depths need to be allowed
1666;; momentarily, eg when one topic is being yanked into another and they're 1665;; momentarily, eg when one topic is being yanked into another and they're
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 6ab6e548ab5..3161973ba32 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -55,12 +55,12 @@ If nil, use `Buffer-menu-name-width' and `Buffer-menu-size-width'.
55If non-nil, the value of `Buffer-menu-name-width' is overridden; 55If non-nil, the value of `Buffer-menu-name-width' is overridden;
56the name column is assigned width `Buffer-menu-buffer+size-width' 56the name column is assigned width `Buffer-menu-buffer+size-width'
57minus `Buffer-menu-size-width'. This use is deprecated." 57minus `Buffer-menu-size-width'. This use is deprecated."
58 :type 'number 58 :type '(choice (const nil) number)
59 :group 'Buffer-menu 59 :group 'Buffer-menu
60 :version "24.3") 60 :version "24.3")
61 61
62(make-obsolete-variable 'Buffer-menu-buffer+size-width 62(make-obsolete-variable 'Buffer-menu-buffer+size-width
63 "`Buffer-menu-name-width' and `Buffer-menu-size-width'" 63 "use `Buffer-menu-name-width' and `Buffer-menu-size-width' instead."
64 "24.3") 64 "24.3")
65 65
66(defcustom Buffer-menu-name-width 19 66(defcustom Buffer-menu-name-width 19
@@ -204,31 +204,11 @@ commands.")
204 204
205(define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu" 205(define-derived-mode Buffer-menu-mode tabulated-list-mode "Buffer Menu"
206 "Major mode for Buffer Menu buffers. 206 "Major mode for Buffer Menu buffers.
207The Buffer Menu is invoked by the commands \\[list-buffers], \\[buffer-menu], and 207The Buffer Menu is invoked by the commands \\[list-buffers],
208\\[buffer-menu-other-window]. See `buffer-menu' for details." 208\\[buffer-menu], and \\[buffer-menu-other-window].
209 (set (make-local-variable 'buffer-stale-function) 209See `buffer-menu' for a description of its contents.
210 (lambda (&optional _noconfirm) 'fast))
211 (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
212
213(defun buffer-menu (&optional arg)
214 "Switch to the Buffer Menu.
215By default, all buffers are listed except those whose names start
216with a space (which are for internal use). With prefix argument
217ARG, show only buffers that are visiting files.
218
219The first column (denoted \"C\") shows \".\" for the buffer from
220which you came. It shows \">\" for buffers you mark to be
221displayed, and \"D\" for those you mark for deletion.
222
223The \"R\" column has a \"%\" if the buffer is read-only.
224The \"M\" column has a \"*\" if it is modified, or \"S\" if you
225have marked it for saving.
226
227After this come the buffer name, its size in characters, its
228major mode, and the visited file name (if any).
229 210
230 211In Buffer Menu mode, the following commands are defined:
231In the Buffer Menu, the following commands are defined:
232\\<Buffer-menu-mode-map> 212\\<Buffer-menu-mode-map>
233\\[quit-window] Remove the Buffer Menu from the display. 213\\[quit-window] Remove the Buffer Menu from the display.
234\\[Buffer-menu-this-window] Select current line's buffer in place of the buffer menu. 214\\[Buffer-menu-this-window] Select current line's buffer in place of the buffer menu.
@@ -244,7 +224,7 @@ In the Buffer Menu, the following commands are defined:
244\\[Buffer-menu-1-window] Select that buffer in full-frame window. 224\\[Buffer-menu-1-window] Select that buffer in full-frame window.
245\\[Buffer-menu-2-window] Select that buffer in one window, together with the 225\\[Buffer-menu-2-window] Select that buffer in one window, together with the
246 buffer selected before this one in another window. 226 buffer selected before this one in another window.
247\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers. 227\\[Buffer-menu-isearch-buffers] Incremental search in the marked buffers.
248\\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers. 228\\[Buffer-menu-isearch-buffers-regexp] Isearch for regexp in the marked buffers.
249\\[Buffer-menu-visit-tags-table] visit-tags-table this buffer. 229\\[Buffer-menu-visit-tags-table] visit-tags-table this buffer.
250\\[Buffer-menu-not-modified] Clear modified-flag on that buffer. 230\\[Buffer-menu-not-modified] Clear modified-flag on that buffer.
@@ -259,6 +239,29 @@ In the Buffer Menu, the following commands are defined:
259\\[revert-buffer] Update the list of buffers. 239\\[revert-buffer] Update the list of buffers.
260\\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers. 240\\[Buffer-menu-toggle-files-only] Toggle whether the menu displays only file buffers.
261\\[Buffer-menu-bury] Bury the buffer listed on this line." 241\\[Buffer-menu-bury] Bury the buffer listed on this line."
242 (set (make-local-variable 'buffer-stale-function)
243 (lambda (&optional _noconfirm) 'fast))
244 (add-hook 'tabulated-list-revert-hook 'list-buffers--refresh nil t))
245
246(defun buffer-menu (&optional arg)
247 "Switch to the Buffer Menu.
248By default, the Buffer Menu lists all buffers except those whose
249names start with a space (which are for internal use). With
250prefix argument ARG, show only buffers that are visiting files.
251
252In the Buffer Menu, the first column (denoted \"C\") shows \".\"
253for the buffer from which you came, \">\" for buffers you mark to
254be displayed, and \"D\" for those you mark for deletion.
255
256The \"R\" column has a \"%\" if the buffer is read-only.
257The \"M\" column has a \"*\" if it is modified, or \"S\" if you
258have marked it for saving.
259
260The remaining columns show the buffer name, the buffer size in
261characters, its major mode, and the visited file name (if any).
262
263See `Buffer-menu-mode' for the keybindings available the Buffer
264Menu."
262 (interactive "P") 265 (interactive "P")
263 (switch-to-buffer (list-buffers-noselect arg)) 266 (switch-to-buffer (list-buffers-noselect arg))
264 (message 267 (message
@@ -280,7 +283,7 @@ ARG, show only buffers that are visiting files."
280(defun list-buffers (&optional arg) 283(defun list-buffers (&optional arg)
281 "Display a list of existing buffers. 284 "Display a list of existing buffers.
282The list is displayed in a buffer named \"*Buffer List*\". 285The list is displayed in a buffer named \"*Buffer List*\".
283See `buffer-menu' for details about the Buffer Menu buffer. 286See `buffer-menu' for a description of the Buffer Menu.
284 287
285By default, all buffers are listed except those whose names start 288By default, all buffers are listed except those whose names start
286with a space (which are for internal use). With prefix argument 289with a space (which are for internal use). With prefix argument
@@ -377,7 +380,9 @@ buffers to delete; a negative ARG means to delete backwards."
377 380
378(defun Buffer-menu-delete-backwards (&optional arg) 381(defun Buffer-menu-delete-backwards (&optional arg)
379 "Mark the buffer on this Buffer Menu line for deletion, and move up. 382 "Mark the buffer on this Buffer Menu line for deletion, and move up.
380Prefix ARG means move that many lines." 383A subsequent \\<Buffer-menu-mode-map>`\\[Buffer-menu-execute]'
384command will delete the marked buffer. Prefix ARG means move
385that many lines."
381 (interactive "p") 386 (interactive "p")
382 (Buffer-menu-delete (- (or arg 1)))) 387 (Buffer-menu-delete (- (or arg 1))))
383 388
diff --git a/lisp/button.el b/lisp/button.el
index 3cf38fa64c6..c52dcabed08 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -64,6 +64,11 @@
64 ;; might get converted to ^M when building loaddefs.el 64 ;; might get converted to ^M when building loaddefs.el
65 (define-key map [(control ?m)] 'push-button) 65 (define-key map [(control ?m)] 'push-button)
66 (define-key map [mouse-2] 'push-button) 66 (define-key map [mouse-2] 'push-button)
67 ;; FIXME: You'd think that for keymaps coming from text-properties on the
68 ;; mode-line or header-line, the `mode-line' or `header-line' prefix
69 ;; shouldn't be necessary!
70 (define-key map [mode-line mouse-2] 'push-button)
71 (define-key map [header-line mouse-2] 'push-button)
67 map) 72 map)
68 "Keymap used by buttons.") 73 "Keymap used by buttons.")
69 74
@@ -184,10 +189,12 @@ changes to a supertype are not reflected in its subtypes)."
184 189
185(defun button-get (button prop) 190(defun button-get (button prop)
186 "Get the property of button BUTTON named PROP." 191 "Get the property of button BUTTON named PROP."
187 (if (overlayp button) 192 (cond ((overlayp button)
188 (overlay-get button prop) 193 (overlay-get button prop))
189 ;; Must be a text-property button. 194 ((button--area-button-p button)
190 (get-text-property button prop))) 195 (get-text-property 0 prop (button--area-button-string button)))
196 (t ; Must be a text-property button.
197 (get-text-property button prop))))
191 198
192(defun button-put (button prop val) 199(defun button-put (button prop val)
193 "Set BUTTON's PROP property to VAL." 200 "Set BUTTON's PROP property to VAL."
@@ -202,21 +209,30 @@ changes to a supertype are not reflected in its subtypes)."
202 ;; Disallow updating the `category' property directly. 209 ;; Disallow updating the `category' property directly.
203 (error "Button `category' property may not be set directly"))) 210 (error "Button `category' property may not be set directly")))
204 ;; Add the property. 211 ;; Add the property.
205 (if (overlayp button) 212 (cond ((overlayp button)
206 (overlay-put button prop val) 213 (overlay-put button prop val))
207 ;; Must be a text-property button. 214 ((button--area-button-p button)
208 (put-text-property 215 (setq button (button--area-button-string button))
209 (or (previous-single-property-change (1+ button) 'button) 216 (put-text-property 0 (length button) prop val button))
210 (point-min)) 217 (t ; Must be a text-property button.
211 (or (next-single-property-change button 'button) 218 (put-text-property
212 (point-max)) 219 (or (previous-single-property-change (1+ button) 'button)
213 prop val))) 220 (point-min))
214 221 (or (next-single-property-change button 'button)
215(defsubst button-activate (button &optional use-mouse-action) 222 (point-max))
223 prop val))))
224
225(defun button-activate (button &optional use-mouse-action)
216 "Call BUTTON's action property. 226 "Call BUTTON's action property.
217If USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action 227If USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action
218instead of its normal action; if the button has no mouse-action, 228instead of its normal action; if the button has no mouse-action,
219the normal action is used instead." 229the normal action is used instead.
230
231The action can either be a marker or a function. If it's a
232marker then goto it. Otherwise it it is a function then it is
233called with BUTTON as only argument. BUTTON is either an
234overlay, a buffer position, or (for buttons in the mode-line or
235header-line) a string."
220 (let ((action (or (and use-mouse-action (button-get button 'mouse-action)) 236 (let ((action (or (and use-mouse-action (button-get button 'mouse-action))
221 (button-get button 'action)))) 237 (button-get button 'action))))
222 (if (markerp action) 238 (if (markerp action)
@@ -228,7 +244,10 @@ the normal action is used instead."
228 244
229(defun button-label (button) 245(defun button-label (button)
230 "Return BUTTON's text label." 246 "Return BUTTON's text label."
231 (buffer-substring-no-properties (button-start button) (button-end button))) 247 (if (button--area-button-p button)
248 (substring-no-properties (button--area-button-string button))
249 (buffer-substring-no-properties (button-start button)
250 (button-end button))))
232 251
233(defsubst button-type (button) 252(defsubst button-type (button)
234 "Return BUTTON's button-type." 253 "Return BUTTON's button-type."
@@ -238,6 +257,12 @@ the normal action is used instead."
238 "Return t if BUTTON has button-type TYPE, or one of TYPE's subtypes." 257 "Return t if BUTTON has button-type TYPE, or one of TYPE's subtypes."
239 (button-type-subtype-p (button-get button 'type) type)) 258 (button-type-subtype-p (button-get button 'type) type))
240 259
260(defalias 'button--area-button-p 'stringp
261 "Return non-nil if BUTTON is an area button.
262Such area buttons are used for buttons in the mode-line and header-line.")
263
264(defalias 'button--area-button-string 'identity
265 "Return area button BUTTON's button-string.")
241 266
242;; Creating overlay buttons 267;; Creating overlay buttons
243 268
@@ -324,7 +349,7 @@ Also see `insert-text-button'."
324 (cons 'button (cons (list t) properties)) 349 (cons 'button (cons (list t) properties))
325 object) 350 object)
326 ;; Return something that can be used to get at the button. 351 ;; Return something that can be used to get at the button.
327 beg)) 352 (or object beg)))
328 353
329(defun insert-text-button (label &rest properties) 354(defun insert-text-button (label &rest properties)
330 "Insert a button with the label LABEL. 355 "Insert a button with the label LABEL.
@@ -405,7 +430,9 @@ POS may be either a buffer position or a mouse-event. If
405USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action 430USE-MOUSE-ACTION is non-nil, invoke the button's mouse-action
406instead of its normal action; if the button has no mouse-action, 431instead of its normal action; if the button has no mouse-action,
407the normal action is used instead. The action may be either a 432the normal action is used instead. The action may be either a
408function to call or a marker to display. 433function to call or a marker to display and is invoked using
434`button-activate' (which see).
435
409POS defaults to point, except when `push-button' is invoked 436POS defaults to point, except when `push-button' is invoked
410interactively as the result of a mouse-event, in which case, the 437interactively as the result of a mouse-event, in which case, the
411mouse event is used. 438mouse event is used.
@@ -417,11 +444,13 @@ return t."
417 ;; POS is a mouse event; switch to the proper window/buffer 444 ;; POS is a mouse event; switch to the proper window/buffer
418 (let ((posn (event-start pos))) 445 (let ((posn (event-start pos)))
419 (with-current-buffer (window-buffer (posn-window posn)) 446 (with-current-buffer (window-buffer (posn-window posn))
420 (push-button (posn-point posn) t))) 447 (if (posn-area posn)
448 ;; mode-line or header-line event
449 (button-activate (car (posn-string posn)) t)
450 (push-button (posn-point posn)) t)))
421 ;; POS is just normal position 451 ;; POS is just normal position
422 (let ((button (button-at (or pos (point))))) 452 (let ((button (button-at (or pos (point)))))
423 (if (not button) 453 (when button
424 nil
425 (button-activate button use-mouse-action) 454 (button-activate button use-mouse-action)
426 t)))) 455 t))))
427 456
diff --git a/lisp/calc/README b/lisp/calc/README
index 25d1a5e9b58..638b482a60a 100644
--- a/lisp/calc/README
+++ b/lisp/calc/README
@@ -70,11 +70,18 @@ opinions.
70Summary of changes to "Calc" 70Summary of changes to "Calc"
71------- -- ------- -- ---- 71------- -- ------- -- ----
72 72
73Emacs 24.4
74
75* The date forms use the Gregorian calendar for all dates.
76 (Previously they were a combination of Julian and Gregorian
77 dates.) This can be configured with the customizable variable
78 `calc-gregorian-switch'.
79
73Emacs 24.3 80Emacs 24.3
74 81
75Algebraic simplification mode is now the default. 82* Algebraic simplification mode is now the default.
76To restrict to the limited simplifications given by the former 83 To restrict to the limited simplifications given by the former
77default simplification mode, use `m I'. 84 default simplification mode, use `m I'.
78 85
79Emacs 24.1 86Emacs 24.1
80 87
diff --git a/lisp/calc/calc-forms.el b/lisp/calc/calc-forms.el
index bd748158d66..5ce76b14d72 100644
--- a/lisp/calc/calc-forms.el
+++ b/lisp/calc/calc-forms.el
@@ -94,7 +94,8 @@
94 (setcar (nthcdr arg calc-standard-date-formats) fmt)) 94 (setcar (nthcdr arg calc-standard-date-formats) fmt))
95 (let ((case-fold-search nil)) 95 (let ((case-fold-search nil))
96 (and (not (string-match "<.*>" fmt)) 96 (and (not (string-match "<.*>" fmt))
97 (string-match "\\`[^hHspP]*\\([^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*[bBhHmpPsS]+[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*\\)[^hHspP]*\\'" fmt) 97 ;; Find time part to put in <...>
98 (string-match "\\`[^hHspPT]*\\([^ac-gi-lnoqrt-zAC-GI-OQRU-Z]*\\(bs\\|bm\\|bh\\|BS\\|BH\\|[hHmpPsST]\\)+[^ac-gi-lnoqrt-zAC-GI-OQRU-Z]*\\)[^hHspPT]*\\'" fmt)
98 (string-match (concat "[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*" 99 (string-match (concat "[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*"
99 (regexp-quote (math-match-substring fmt 1)) 100 (regexp-quote (math-match-substring fmt 1))
100 "[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*") fmt) 101 "[^ac-gi-lnoqrt-zAC-GI-OQRT-Z]*") fmt)
@@ -125,7 +126,7 @@
125 lfmt nil)) 126 lfmt nil))
126 (setq time nil)) 127 (setq time nil))
127 (t 128 (t
128 (if (string-match "\\`[^a-zA-Z]*[bB][a-zA-Z]" fmt) 129 (if (string-match "\\`[^a-zA-Z]*[bBZI][a-zA-Z]" fmt)
129 (setq pos2 (1+ pos2))) 130 (setq pos2 (1+ pos2)))
130 (while (and (< pos2 (length fmt)) 131 (while (and (< pos2 (length fmt))
131 (= (upcase (aref fmt pos2)) 132 (= (upcase (aref fmt pos2))
@@ -133,6 +134,7 @@
133 (setq pos2 (1+ pos2))) 134 (setq pos2 (1+ pos2)))
134 (setq sym (intern (substring fmt pos pos2))) 135 (setq sym (intern (substring fmt pos pos2)))
135 (or (memq sym '(Y YY BY YYY YYYY 136 (or (memq sym '(Y YY BY YYY YYYY
137 ZYYY IYYY Iww w
136 aa AA aaa AAA aaaa AAAA 138 aa AA aaa AAA aaaa AAAA
137 bb BB bbb BBB bbbb BBBB 139 bb BB bbb BBB bbbb BBBB
138 M MM BM mmm Mmm Mmmm MMM MMMM 140 M MM BM mmm Mmm Mmmm MMM MMMM
@@ -140,8 +142,8 @@
140 W www Www Wwww WWW WWWW 142 W www Www Wwww WWW WWWW
141 h hh bh H HH BH 143 h hh bh H HH BH
142 p P pp PP pppp PPPP 144 p P pp PP pppp PPPP
143 m mm bm s ss bss SS BS C 145 m mm bm s ss bs SS BS C
144 N n J j U b)) 146 N n J j U b T))
145 (and (eq sym 'X) (not lfmt) (not fullfmt)) 147 (and (eq sym 'X) (not lfmt) (not fullfmt))
146 (error "Bad format code: %s" sym)) 148 (error "Bad format code: %s" sym))
147 (and (memq sym '(bb BB bbb BBB bbbb BBBB)) 149 (and (memq sym '(bb BB bbb BBB bbbb BBBB))
@@ -369,17 +371,68 @@
369 371
370;;; Some of these functions are adapted from Edward Reingold's "calendar.el". 372;;; Some of these functions are adapted from Edward Reingold's "calendar.el".
371;;; These versions are rewritten to use arbitrary-size integers. 373;;; These versions are rewritten to use arbitrary-size integers.
372;;; The Julian calendar is used up to 9/2/1752, after which the Gregorian
373;;; calendar is used; the first day after 9/2/1752 is 9/14/1752.
374 374
375;;; A numerical date is the number of days since midnight on 375;;; A numerical date is the number of days since midnight on
376;;; the morning of January 1, 1 A.D. If the date is a non-integer, 376;;; the morning of December 31, 1 B.C. (Gregorian) or January 2, 1 A.D. (Julian).
377;;; it represents a specific date and time. 377;;; Emacs's calendar refers to such a date as an absolute date, some Calc function
378;;; names also use that terminology. If the date is a non-integer, it represents
379;;; a specific date and time.
378;;; A "dt" is a list of the form, (year month day), corresponding to 380;;; A "dt" is a list of the form, (year month day), corresponding to
379;;; an integer code, or (year month day hour minute second), corresponding 381;;; an integer code, or (year month day hour minute second), corresponding
380;;; to a non-integer code. 382;;; to a non-integer code.
381 383
384(defun math-date-to-gregorian-dt (date)
385 "Return the day (YEAR MONTH DAY) in the Gregorian calendar.
386DATE is the number of days since December 31, -1 in the Gregorian calendar."
387 (let* ((month 1)
388 day
389 (year (math-quotient (math-add date (if (Math-lessp date 711859)
390 365 ; for speed, we take
391 -108)) ; >1950 as a special case
392 (if (math-negp date) 366 365)))
393 ; this result may be an overestimate
394 temp)
395 (while (Math-lessp date (setq temp (math-absolute-from-gregorian-dt year 1 1)))
396 (setq year (math-add year -1)))
397 (if (eq year 0) (setq year -1))
398 (setq date (1+ (math-sub date temp)))
399 (setq temp
400 (if (math-leap-year-p year)
401 [1 32 61 92 122 153 183 214 245 275 306 336 999]
402 [1 32 60 91 121 152 182 213 244 274 305 335 999]))
403 (while (>= date (aref temp month))
404 (setq month (1+ month)))
405 (setq day (1+ (- date (aref temp (1- month)))))
406 (list year month day)))
407
408(defun math-date-to-julian-dt (date)
409 "Return the day (YEAR MONTH DAY) in the Julian calendar.
410DATE is the number of days since December 31, -1 in the Gregorian calendar."
411 (let* ((month 1)
412 day
413 (year (math-quotient (math-add date (if (Math-lessp date 711859)
414 367 ; for speed, we take
415 -106)) ; >1950 as a special case
416 (if (math-negp date) 366 365)))
417 ; this result may be an overestimate
418 temp)
419 (while (Math-lessp date (setq temp (math-absolute-from-julian-dt year 1 1)))
420 (setq year (math-add year -1)))
421 (if (eq year 0) (setq year -1))
422 (setq date (1+ (math-sub date temp)))
423 (setq temp
424 (if (math-leap-year-p year t)
425 [1 32 61 92 122 153 183 214 245 275 306 336 999]
426 [1 32 60 91 121 152 182 213 244 274 305 335 999]))
427 (while (>= date (aref temp month))
428 (setq month (1+ month)))
429 (setq day (1+ (- date (aref temp (1- month)))))
430 (list year month day)))
431
382(defun math-date-to-dt (value) 432(defun math-date-to-dt (value)
433 "Return the day and time of VALUE.
434The integer part of VALUE is the number of days since Dec 31, -1
435in the Gregorian calendar and the remaining part determines the time."
383 (if (eq (car-safe value) 'date) 436 (if (eq (car-safe value) 'date)
384 (setq value (nth 1 value))) 437 (setq value (nth 1 value)))
385 (or (math-realp value) 438 (or (math-realp value)
@@ -387,32 +440,42 @@
387 (let* ((parts (math-date-parts value)) 440 (let* ((parts (math-date-parts value))
388 (date (car parts)) 441 (date (car parts))
389 (time (nth 1 parts)) 442 (time (nth 1 parts))
390 (month 1) 443 (dt (if (and calc-gregorian-switch
391 day 444 (Math-lessp value
392 (year (math-quotient (math-add date (if (Math-lessp date 711859) 445 (or
393 365 ; for speed, we take 446 (nth 3 calc-gregorian-switch)
394 -108)) ; >1950 as a special case 447 (apply 'math-absolute-from-gregorian-dt calc-gregorian-switch))
395 (if (math-negp value) 366 365))) 448))
396 ; this result may be an overestimate 449 (math-date-to-julian-dt date)
397 temp) 450 (math-date-to-gregorian-dt date))))
398 (while (Math-lessp date (setq temp (math-absolute-from-date year 1 1)))
399 (setq year (math-add year -1)))
400 (if (eq year 0) (setq year -1))
401 (setq date (1+ (math-sub date temp)))
402 (and (eq year 1752) (>= date 247)
403 (setq date (+ date 11)))
404 (setq temp (if (math-leap-year-p year)
405 [1 32 61 92 122 153 183 214 245 275 306 336 999]
406 [1 32 60 91 121 152 182 213 244 274 305 335 999]))
407 (while (>= date (aref temp month))
408 (setq month (1+ month)))
409 (setq day (1+ (- date (aref temp (1- month)))))
410 (if (math-integerp value) 451 (if (math-integerp value)
411 (list year month day) 452 dt
412 (list year month day 453 (append dt
413 (/ time 3600) 454 (list
414 (% (/ time 60) 60) 455 (/ time 3600)
415 (math-add (% time 60) (nth 2 parts)))))) 456 (% (/ time 60) 60)
457 (math-add (% time 60) (nth 2 parts)))))))
458
459(defun math-date-to-iso-dt (date)
460 "Return the ISO8601 date (year week day) of DATE."
461 (unless (Math-integerp date)
462 (setq date (math-floor date)))
463 (let* ((approx (nth 0 (math-date-to-gregorian-dt (math-sub date 3))))
464 (year (math-add approx
465 (let ((y approx)
466 (sum 0))
467 (while (>= (math-compare date
468 (math-absolute-from-iso-dt (setq y (math-add y 1)) 1 1)) 0)
469 (setq sum (+ sum 1)))
470 sum))))
471 (list
472 year
473 (math-add (car (math-idivmod
474 (math-sub date (math-absolute-from-iso-dt year 1 1))
475 7))
476 1)
477 (let ((day (calcFunc-mod date 7)))
478 (if (= day 0) 7 day)))))
416 479
417(defun math-dt-to-date (dt) 480(defun math-dt-to-date (dt)
418 (or (integerp (nth 1 dt)) 481 (or (integerp (nth 1 dt))
@@ -423,7 +486,17 @@
423 (math-reject-arg (nth 2 dt) 'fixnump)) 486 (math-reject-arg (nth 2 dt) 'fixnump))
424 (if (or (< (nth 2 dt) 1) (> (nth 2 dt) 31)) 487 (if (or (< (nth 2 dt) 1) (> (nth 2 dt) 31))
425 (math-reject-arg (nth 2 dt) "Day value is out of range")) 488 (math-reject-arg (nth 2 dt) "Day value is out of range"))
426 (let ((date (math-absolute-from-date (car dt) (nth 1 dt) (nth 2 dt)))) 489 (let ((date (math-absolute-from-dt (car dt) (nth 1 dt) (nth 2 dt))))
490 (if (nth 3 dt)
491 (math-add (math-float date)
492 (math-div (math-add (+ (* (nth 3 dt) 3600)
493 (* (nth 4 dt) 60))
494 (nth 5 dt))
495 '(float 864 2)))
496 date)))
497
498(defun math-iso-dt-to-date (dt)
499 (let ((date (math-absolute-from-iso-dt (car dt) (nth 1 dt) (nth 2 dt))))
427 (if (nth 3 dt) 500 (if (nth 3 dt)
428 (math-add (math-float date) 501 (math-add (math-float date)
429 (math-div (math-add (+ (* (nth 3 dt) 3600) 502 (math-div (math-add (+ (* (nth 3 dt) 3600)
@@ -446,11 +519,17 @@
446(defun math-this-year () 519(defun math-this-year ()
447 (nth 5 (decode-time))) 520 (nth 5 (decode-time)))
448 521
449(defun math-leap-year-p (year) 522(defun math-leap-year-p (year &optional julian)
450 (if (Math-lessp year 1752) 523 "Non-nil if YEAR is a leap year.
524If JULIAN is non-nil, then use the criterion for leap years
525in the Julian calendar, otherwise use the criterion in the
526Gregorian calendar."
527 (if julian
451 (if (math-negp year) 528 (if (math-negp year)
452 (= (math-imod (math-neg year) 4) 1) 529 (= (math-imod (math-neg year) 4) 1)
453 (= (math-imod year 4) 0)) 530 (= (math-imod year 4) 0))
531 (if (math-negp year)
532 (setq year (math-sub -1 year)))
454 (setq year (math-imod year 400)) 533 (setq year (math-imod year 400))
455 (or (and (= (% year 4) 0) (/= (% year 100) 0)) 534 (or (and (= (% year 4) 0) (/= (% year 100) 0))
456 (= year 0)))) 535 (= year 0))))
@@ -460,39 +539,112 @@
460 29 539 29
461 (aref [31 28 31 30 31 30 31 31 30 31 30 31] (1- month)))) 540 (aref [31 28 31 30 31 30 31 31 30 31 30 31] (1- month))))
462 541
463(defun math-day-number (year month day) 542(defun math-day-in-year (year month day &optional julian)
543 "Return the number of days of the year up to YEAR MONTH DAY.
544The count includes the given date.
545If JULIAN is non-nil, use the Julian calendar, otherwise
546use the Gregorian calendar."
464 (let ((day-of-year (+ day (* 31 (1- month))))) 547 (let ((day-of-year (+ day (* 31 (1- month)))))
465 (if (> month 2) 548 (if (> month 2)
466 (progn 549 (progn
467 (setq day-of-year (- day-of-year (/ (+ 23 (* 4 month)) 10))) 550 (setq day-of-year (- day-of-year (/ (+ 23 (* 4 month)) 10)))
468 (if (math-leap-year-p year) 551 (if (math-leap-year-p year julian)
469 (setq day-of-year (1+ day-of-year))))) 552 (setq day-of-year (1+ day-of-year)))))
470 (and (eq year 1752)
471 (or (> month 9)
472 (and (= month 9) (>= day 14)))
473 (setq day-of-year (- day-of-year 11)))
474 day-of-year)) 553 day-of-year))
475 554
476(defun math-absolute-from-date (year month day) 555(defun math-day-number (year month day)
556 "Return the number of days of the year up to YEAR MONTH DAY.
557The count includes the given date."
558 (if calc-gregorian-switch
559 (cond ((eq year (nth 0 calc-gregorian-switch))
560 (1+
561 (- (math-absolute-from-dt year month day)
562 (math-absolute-from-dt year 1 1))))
563 ((Math-lessp year (nth 0 calc-gregorian-switch))
564 (math-day-in-year year month day t))
565 (t
566 (math-day-in-year year month day)))
567 (math-day-in-year year month day)))
568
569(defun math-dt-before-p (dt1 dt2)
570 "Non-nil if DT1 occurs before DT2.
571A DT is a list of the form (YEAR MONTH DAY)."
572 (or (Math-lessp (nth 0 dt1) (nth 0 dt2))
573 (and (equal (nth 0 dt1) (nth 0 dt2))
574 (or (< (nth 1 dt1) (nth 1 dt2))
575 (and (= (nth 1 dt1) (nth 1 dt2))
576 (< (nth 2 dt1) (nth 2 dt2)))))))
577
578(defun math-absolute-from-gregorian-dt (year month day)
579 "Return the DATE of the day given by the Gregorian day YEAR MONTH DAY.
580Recall that DATE is the number of days since December 31, -1
581in the Gregorian calendar."
477 (if (eq year 0) (setq year -1)) 582 (if (eq year 0) (setq year -1))
478 (let ((yearm1 (math-sub year 1))) 583 (let ((yearm1 (math-sub year 1)))
479 (math-sub (math-add (math-day-number year month day) 584 (math-sub
480 (math-add (math-mul 365 yearm1) 585 ;; Add the number of days of the year and the numbers of days
481 (if (math-posp year) 586 ;; in the previous years (leap year days to be added separately)
482 (math-quotient yearm1 4) 587 (math-add (math-day-in-year year month day)
483 (math-sub 365 588 (math-add (math-mul 365 yearm1)
484 (math-quotient (math-sub 3 year) 589 ;; Add the number of Julian leap years
485 4))))) 590 (if (math-posp year)
486 (if (or (Math-lessp year 1753) 591 (math-quotient yearm1 4)
487 (and (eq year 1752) (<= month 9))) 592 (math-sub 365
488 1 593 (math-quotient (math-sub 3 year)
489 (let ((correction (math-mul (math-quotient yearm1 100) 3))) 594 4)))))
490 (let ((res (math-idivmod correction 4))) 595 ;; Subtract the number of Julian leap years which are not
491 (math-add (if (= (cdr res) 0) 596 ;; Gregorian leap years. In C=4N+r centuries, there will
492 -1 597 ;; be 3N+r of these days. The following will compute
493 0) 598 ;; 3N+r.
494 (car res)))))))) 599 (let* ((correction (math-mul (math-quotient yearm1 100) 3))
495 600 (res (math-idivmod correction 4)))
601 (math-add (if (= (cdr res) 0)
602 0
603 1)
604 (car res))))))
605
606(defun math-absolute-from-julian-dt (year month day)
607 "Return the DATE of the day given by the Julian day YEAR MONTH DAY.
608Recall that DATE is the number of days since December 31, -1
609in the Gregorian calendar."
610 (if (eq year 0) (setq year -1))
611 (let ((yearm1 (math-sub year 1)))
612 (math-sub
613 ;; Add the number of days of the year and the numbers of days
614 ;; in the previous years (leap year days to be added separately)
615 (math-add (math-day-in-year year month day)
616 (math-add (math-mul 365 yearm1)
617 ;; Add the number of Julian leap years
618 (if (math-posp year)
619 (math-quotient yearm1 4)
620 (math-sub 365
621 (math-quotient (math-sub 3 year)
622 4)))))
623 ;; Adjustment, since January 1, 1 (Julian) is absolute day -1
624 2)))
625
626;; calc-gregorian-switch is a customizable variable defined in calc.el
627(defvar calc-gregorian-switch)
628
629(defun math-absolute-from-iso-dt (year week day)
630 "Return the DATE of the day given by the iso8601 day YEAR WEEK DAY."
631 (let* ((janfour (math-absolute-from-gregorian-dt year 1 4))
632 (prevmon (math-sub janfour
633 (cdr (math-idivmod (math-sub janfour 1) 7)))))
634 (math-add
635 (math-add prevmon (* (1- week) 7))
636 (if (zerop day) 6 (1- day)))))
637
638(defun math-absolute-from-dt (year month day)
639 "Return the DATE of the day given by the day YEAR MONTH DAY.
640Recall that DATE is the number of days since December 31, -1
641in the Gregorian calendar."
642 (if (and calc-gregorian-switch
643 ;; The next few lines determine if the given date
644 ;; occurs before the switch to the Gregorian calendar.
645 (math-dt-before-p (list year month day) calc-gregorian-switch))
646 (math-absolute-from-julian-dt year month day)
647 (math-absolute-from-gregorian-dt year month day)))
496 648
497;;; It is safe to redefine these in your init file to use a different 649;;; It is safe to redefine these in your init file to use a different
498;;; language. 650;;; language.
@@ -526,6 +678,10 @@
526(defvar math-fd-minute) 678(defvar math-fd-minute)
527(defvar math-fd-second) 679(defvar math-fd-second)
528(defvar math-fd-bc-flag) 680(defvar math-fd-bc-flag)
681(defvar math-fd-iso-dt)
682(defvar math-fd-isoyear)
683(defvar math-fd-isoweek)
684(defvar math-fd-isoweekday)
529 685
530(defun math-format-date (math-fd-date) 686(defun math-format-date (math-fd-date)
531 (if (eq (car-safe math-fd-date) 'date) 687 (if (eq (car-safe math-fd-date) 'date)
@@ -533,12 +689,14 @@
533 (let ((entry (list math-fd-date calc-internal-prec calc-date-format))) 689 (let ((entry (list math-fd-date calc-internal-prec calc-date-format)))
534 (or (cdr (assoc entry math-format-date-cache)) 690 (or (cdr (assoc entry math-format-date-cache))
535 (let* ((math-fd-dt nil) 691 (let* ((math-fd-dt nil)
692 (math-fd-iso-dt nil)
536 (calc-group-digits nil) 693 (calc-group-digits nil)
537 (calc-leading-zeros nil) 694 (calc-leading-zeros nil)
538 (calc-number-radix 10) 695 (calc-number-radix 10)
539 (calc-twos-complement-mode nil) 696 (calc-twos-complement-mode nil)
540 math-fd-year math-fd-month math-fd-day math-fd-weekday 697 math-fd-year math-fd-month math-fd-day math-fd-weekday
541 math-fd-hour math-fd-minute math-fd-second 698 math-fd-hour math-fd-minute math-fd-second
699 math-fd-isoyear math-fd-isoweek math-fd-isoweekday
542 (math-fd-bc-flag nil) 700 (math-fd-bc-flag nil)
543 (fmt (apply 'concat (mapcar 'math-format-date-part 701 (fmt (apply 'concat (mapcar 'math-format-date-part
544 calc-date-format)))) 702 calc-date-format))))
@@ -548,13 +706,13 @@
548 (setcdr math-fd-dt nil)) 706 (setcdr math-fd-dt nil))
549 fmt)))) 707 fmt))))
550 708
551(defconst math-julian-date-beginning '(float 17214235 -1) 709(defconst math-julian-date-beginning '(float 17214225 -1)
552 "The beginning of the Julian calendar, 710 "The beginning of the Julian date calendar,
553as measured in the number of days before January 1 of the year 1AD.") 711as measured in the number of days before December 31, 1 BC (Gregorian).")
554 712
555(defconst math-julian-date-beginning-int 1721424 713(defconst math-julian-date-beginning-int 1721423
556 "The beginning of the Julian calendar, 714 "The beginning of the Julian date calendar,
557as measured in the integer number of days before January 1 of the year 1AD.") 715as measured in the integer number of days before December 31, 1 BC (Gregorian).")
558 716
559(defun math-format-date-part (x) 717(defun math-format-date-part (x)
560 (cond ((stringp x) 718 (cond ((stringp x)
@@ -578,6 +736,23 @@ as measured in the integer number of days before January 1 of the year 1AD.")
578 math-julian-date-beginning-int))) 736 math-julian-date-beginning-int)))
579 ((eq x 'U) 737 ((eq x 'U)
580 (math-format-number (nth 1 (math-date-parts math-fd-date 719164)))) 738 (math-format-number (nth 1 (math-date-parts math-fd-date 719164))))
739 ((memq x '(IYYY Iww w))
740 (progn
741 (or math-fd-iso-dt
742 (setq math-fd-iso-dt (math-date-to-iso-dt math-fd-date)
743 math-fd-isoyear (car math-fd-iso-dt)
744 math-fd-isoweek (nth 1 math-fd-iso-dt)
745 math-fd-isoweekday (nth 2 math-fd-iso-dt)))
746 (cond ((eq x 'IYYY)
747 (let* ((neg (Math-negp math-fd-isoyear))
748 (pyear (calcFunc-abs math-fd-isoyear)))
749 (if (and (natnump pyear) (< pyear 10000))
750 (concat (if neg "-" "") (format "%04d" pyear))
751 (concat (if neg "-" "+") (math-format-number pyear)))))
752 ((eq x 'Iww)
753 (concat "W" (format "%02d" math-fd-isoweek)))
754 ((eq x 'w)
755 (format "%d" math-fd-isoweekday)))))
581 ((progn 756 ((progn
582 (or math-fd-dt 757 (or math-fd-dt
583 (progn 758 (progn
@@ -585,8 +760,7 @@ as measured in the integer number of days before January 1 of the year 1AD.")
585 math-fd-year (car math-fd-dt) 760 math-fd-year (car math-fd-dt)
586 math-fd-month (nth 1 math-fd-dt) 761 math-fd-month (nth 1 math-fd-dt)
587 math-fd-day (nth 2 math-fd-dt) 762 math-fd-day (nth 2 math-fd-dt)
588 math-fd-weekday (math-mod 763 math-fd-weekday (math-mod (math-floor math-fd-date) 7)
589 (math-add (math-floor math-fd-date) 6) 7)
590 math-fd-hour (nth 3 math-fd-dt) 764 math-fd-hour (nth 3 math-fd-dt)
591 math-fd-minute (nth 4 math-fd-dt) 765 math-fd-minute (nth 4 math-fd-dt)
592 math-fd-second (nth 5 math-fd-dt)) 766 math-fd-second (nth 5 math-fd-dt))
@@ -609,6 +783,15 @@ as measured in the integer number of days before January 1 of the year 1AD.")
609 (if (and (natnump math-fd-year) (< math-fd-year 100)) 783 (if (and (natnump math-fd-year) (< math-fd-year 100))
610 (format "+%d" math-fd-year) 784 (format "+%d" math-fd-year)
611 (math-format-number math-fd-year))) 785 (math-format-number math-fd-year)))
786 ((eq x 'ZYYY)
787 (let* ((year (if (Math-negp math-fd-year)
788 (math-add math-fd-year 1)
789 math-fd-year))
790 (neg (Math-negp year))
791 (pyear (calcFunc-abs year)))
792 (if (and (natnump pyear) (< pyear 10000))
793 (concat (if neg "-" "") (format "%04d" pyear))
794 (concat (if neg "-" "+") (math-format-number pyear)))))
612 ((eq x 'b) "") 795 ((eq x 'b) "")
613 ((eq x 'aa) 796 ((eq x 'aa)
614 (and (not math-fd-bc-flag) "ad")) 797 (and (not math-fd-bc-flag) "ad"))
@@ -634,6 +817,7 @@ as measured in the integer number of days before January 1 of the year 1AD.")
634 (and math-fd-bc-flag "b.c.")) 817 (and math-fd-bc-flag "b.c."))
635 ((eq x 'BBBB) 818 ((eq x 'BBBB)
636 (and math-fd-bc-flag "B.C.")) 819 (and math-fd-bc-flag "B.C."))
820 ((eq x 'T) "T")
637 ((eq x 'M) 821 ((eq x 'M)
638 (format "%d" math-fd-month)) 822 (format "%d" math-fd-month))
639 ((eq x 'MM) 823 ((eq x 'MM)
@@ -898,6 +1082,20 @@ as measured in the integer number of days before January 1 of the year 1AD.")
898 (list 'date (math-dt-to-date (append (list year month day) 1082 (list 'date (math-dt-to-date (append (list year month day)
899 (and hour (list hour minute second)))))) 1083 (and hour (list hour minute second))))))
900 1084
1085(defun math-parse-iso-date-validate (isoyear isoweek isoweekday hour minute second)
1086 (if (or (< isoweek 1) (> isoweek 53))
1087 (throw 'syntax "Week value is out of range"))
1088 (and hour
1089 (progn
1090 (if (or (< hour 0) (> hour 23))
1091 (throw 'syntax "Hour value is out of range"))
1092 (if (or (< minute 0) (> minute 59))
1093 (throw 'syntax "Minute value is out of range"))
1094 (if (or (math-negp second) (not (Math-lessp second 60)))
1095 (throw 'syntax "Seconds value is out of range"))))
1096 (list 'date (math-iso-dt-to-date (append (list isoyear isoweek isoweekday)
1097 (and hour (list hour minute second))))))
1098
901(defun math-parse-date-word (names &optional front) 1099(defun math-parse-date-word (names &optional front)
902 (let ((n 1)) 1100 (let ((n 1))
903 (while (and names (not (string-match (if (equal (car names) "Sep") 1101 (while (and names (not (string-match (if (equal (car names) "Sep")
@@ -918,6 +1116,7 @@ as measured in the integer number of days before January 1 of the year 1AD.")
918 (let ((case-fold-search t) 1116 (let ((case-fold-search t)
919 (okay t) num 1117 (okay t) num
920 (fmt calc-date-format) this next (gnext nil) 1118 (fmt calc-date-format) this next (gnext nil)
1119 (isoyear nil) (isoweek nil) (isoweekday nil)
921 (year nil) (month nil) (day nil) (bigyear nil) (yearday nil) 1120 (year nil) (month nil) (day nil) (bigyear nil) (yearday nil)
922 (hour nil) (minute nil) (second nil) (bc-flag nil)) 1121 (hour nil) (minute nil) (second nil) (bc-flag nil))
923 (while (and fmt okay) 1122 (while (and fmt okay)
@@ -994,19 +1193,35 @@ as measured in the integer number of days before January 1 of the year 1AD.")
994 (if (string-match "\\`pm\\|p\\.m\\." math-pd-str) 1193 (if (string-match "\\`pm\\|p\\.m\\." math-pd-str)
995 (setq hour (if (= hour 12) 12 (% (+ hour 12) 24)) 1194 (setq hour (if (= hour 12) 12 (% (+ hour 12) 24))
996 math-pd-str (substring math-pd-str (match-end 0)))))) 1195 math-pd-str (substring math-pd-str (match-end 0))))))
997 ((memq this '(Y YY BY YYY YYYY)) 1196 ((memq this '(Y YY BY YYY YYYY ZYYY))
998 (and (if (memq next '(MM DD ddd hh HH mm ss SS)) 1197 (and (if (memq next '(MM DD ddd hh HH mm ss SS))
999 (if (memq this '(Y YY BYY)) 1198 (if (memq this '(Y YY BYY))
1000 (string-match "\\` *[0-9][0-9]" math-pd-str) 1199 (string-match "\\` *[0-9][0-9]" math-pd-str)
1001 (string-match "\\`[0-9][0-9][0-9][0-9]" math-pd-str)) 1200 (string-match "\\`[0-9][0-9][0-9][0-9]" math-pd-str))
1002 (string-match "\\`[-+]?[0-9]+" math-pd-str)) 1201 (string-match "\\`[-+]?[0-9]+" math-pd-str))
1003 (setq year (math-match-substring math-pd-str 0) 1202 (setq year (math-match-substring math-pd-str 0)
1004 bigyear (or (eq this 'YYY) 1203 bigyear (or (eq this 'YYY)
1005 (memq (aref math-pd-str 0) '(?\+ ?\-))) 1204 (memq (aref math-pd-str 0) '(?\+ ?\-)))
1006 math-pd-str (substring math-pd-str (match-end 0)) 1205 math-pd-str (substring math-pd-str (match-end 0))
1007 year (math-read-number year)))) 1206 year (math-read-number year))
1207 (if (and (eq this 'ZYYY) (eq year 0))
1208 (setq year (math-sub year 1)
1209 bigyear t)
1210 t)))
1211 ((eq this 'IYYY)
1212 (if (string-match "\\`[-+]?[0-9]+" math-pd-str)
1213 (setq isoyear (string-to-number (math-match-substring math-pd-str 0))
1214 math-pd-str (substring math-pd-str (match-end 0)))))
1215 ((eq this 'Iww)
1216 (if (string-match "W\\([0-9][0-9]\\)" math-pd-str)
1217 (setq isoweek (string-to-number (math-match-substring math-pd-str 1))
1218 math-pd-str (substring math-pd-str 3))))
1008 ((eq this 'b) 1219 ((eq this 'b)
1009 t) 1220 t)
1221 ((eq this 'T)
1222 (if (eq (aref math-pd-str 0) ?T)
1223 (setq math-pd-str (substring math-pd-str 1))
1224 t))
1010 ((memq this '(aa AA aaaa AAAA)) 1225 ((memq this '(aa AA aaaa AAAA))
1011 (if (string-match "\\` *\\(ad\\|a\\.d\\.\\)" math-pd-str) 1226 (if (string-match "\\` *\\(ad\\|a\\.d\\.\\)" math-pd-str)
1012 (setq math-pd-str (substring math-pd-str (match-end 0))))) 1227 (setq math-pd-str (substring math-pd-str (match-end 0)))))
@@ -1041,7 +1256,9 @@ as measured in the integer number of days before January 1 of the year 1AD.")
1041 nil)) 1256 nil))
1042 nil) 1257 nil)
1043 ((eq this 'W) 1258 ((eq this 'W)
1044 (and (>= num 0) (< num 7))) 1259 (and (>= num 0) (< num 7)))
1260 ((eq this 'w)
1261 (setq isoweekday num))
1045 ((memq this '(d ddd bdd)) 1262 ((memq this '(d ddd bdd))
1046 (setq yearday num)) 1263 (setq yearday num))
1047 ((memq this '(M MM BM)) 1264 ((memq this '(M MM BM))
@@ -1058,18 +1275,20 @@ as measured in the integer number of days before January 1 of the year 1AD.")
1058 (setq yearday nil) 1275 (setq yearday nil)
1059 (setq month 1 day 1))) 1276 (setq month 1 day 1)))
1060 (if (and okay (equal math-pd-str "")) 1277 (if (and okay (equal math-pd-str ""))
1061 (and month day (or (not (or hour minute second)) 1278 (if isoyear
1062 (and hour minute)) 1279 (math-parse-iso-date-validate isoyear isoweek isoweekday hour minute second)
1063 (progn 1280 (and month day (or (not (or hour minute second))
1064 (or year (setq year (math-this-year))) 1281 (and hour minute))
1065 (or second (setq second 0)) 1282 (progn
1066 (if bc-flag 1283 (or year (setq year (math-this-year)))
1067 (setq year (math-neg (math-abs year)))) 1284 (or second (setq second 0))
1068 (setq day (math-parse-date-validate year bigyear month day 1285 (if bc-flag
1069 hour minute second)) 1286 (setq year (math-neg (math-abs year))))
1070 (if yearday 1287 (setq day (math-parse-date-validate year bigyear month day
1071 (setq day (math-add day (1- yearday)))) 1288 hour minute second))
1072 day))))) 1289 (if yearday
1290 (setq day (math-add day (1- yearday))))
1291 day))))))
1073 1292
1074 1293
1075(defun calcFunc-now (&optional zone) 1294(defun calcFunc-now (&optional zone)
@@ -1098,7 +1317,7 @@ as measured in the integer number of days before January 1 of the year 1AD.")
1098 (setq date (nth 1 date))) 1317 (setq date (nth 1 date)))
1099 (or (math-realp date) 1318 (or (math-realp date)
1100 (math-reject-arg date 'datep)) 1319 (math-reject-arg date 'datep))
1101 (math-mod (math-add (math-floor date) 6) 7)) 1320 (math-mod (math-floor date) 7))
1102 1321
1103(defun calcFunc-yearday (date) 1322(defun calcFunc-yearday (date)
1104 (let ((dt (math-date-to-dt date))) 1323 (let ((dt (math-date-to-dt date)))
@@ -1298,7 +1517,7 @@ second, the number of seconds offset for daylight savings."
1298 0))) 1517 0)))
1299 (rounded-abs-date 1518 (rounded-abs-date
1300 (+ 1519 (+
1301 (calendar-absolute-from-gregorian 1520 (calendar-absolute-from-gregorian
1302 (list (nth 1 dt) (nth 2 dt) (nth 0 dt))) 1521 (list (nth 1 dt) (nth 2 dt) (nth 0 dt)))
1303 (/ (round (* 60 time)) 60.0 24.0)))) 1522 (/ (round (* 60 time)) 60.0 24.0))))
1304 (if (dst-in-effect rounded-abs-date) 1523 (if (dst-in-effect rounded-abs-date)
@@ -1434,28 +1653,100 @@ and ends on the last Sunday of October at 2 a.m."
1434 (and (math-messy-integerp day) (setq day (math-trunc day))) 1653 (and (math-messy-integerp day) (setq day (math-trunc day)))
1435 (or (integerp day) (math-reject-arg day 'fixnump)) 1654 (or (integerp day) (math-reject-arg day 'fixnump))
1436 (and (or (< day 0) (> day 31)) (math-reject-arg day 'range)) 1655 (and (or (< day 0) (> day 31)) (math-reject-arg day 'range))
1437 (let ((dt (math-date-to-dt date))) 1656 (let* ((dt (math-date-to-dt date))
1438 (if (or (= day 0) (> day (math-days-in-month (car dt) (nth 1 dt)))) 1657 (dim (math-days-in-month (car dt) (nth 1 dt)))
1439 (setq day (math-days-in-month (car dt) (nth 1 dt)))) 1658 (julian (if calc-gregorian-switch
1440 (and (eq (car dt) 1752) (= (nth 1 dt) 9) 1659 (math-date-to-dt (math-sub
1441 (if (>= day 14) (setq day (- day 11)))) 1660 (or (nth 3 calc-gregorian-switch)
1442 (list 'date (math-add (math-dt-to-date (list (car dt) (nth 1 dt) 1)) 1661 (apply 'math-absolute-from-gregorian-dt calc-gregorian-switch))
1443 (1- day))))) 1662 1)))))
1663 (if (or (= day 0) (> day dim))
1664 (setq day (1- dim))
1665 (setq day (1- day)))
1666 ;; Adjust if this occurs near the switch to the Gregorian calendar
1667 (if calc-gregorian-switch
1668 (cond
1669 ((and (math-dt-before-p (list (car dt) (nth 1 dt) 1) calc-gregorian-switch)
1670 (math-dt-before-p julian (list (car dt) (nth 1 dt) 1)))
1671 ;; In this case, CALC-GREGORIAN-SWITCH is the first day of the month
1672 (list 'date
1673 (math-dt-to-date (list (car calc-gregorian-switch)
1674 (nth 1 calc-gregorian-switch)
1675 (if (> (+ (nth 2 calc-gregorian-switch) day) dim)
1676 dim
1677 (+ (nth 2 calc-gregorian-switch) day))))))
1678 ((and (eq (car dt) (car calc-gregorian-switch))
1679 (= (nth 1 dt) (nth 1 calc-gregorian-switch)))
1680 ;; In this case, the switch to the Gregorian calendar occurs in the given month
1681 (if (< (+ (nth 2 julian) day) (nth 2 calc-gregorian-switch))
1682 ;; If the DAYth day occurs before the switch, use it
1683 (list 'date (math-dt-to-date (list (car dt) (nth 1 dt) (1+ day))))
1684 ;; Otherwise do some computations
1685 (let ((tm (+ day (- (nth 2 calc-gregorian-switch) (nth 2 julian)))))
1686 (list 'date (math-dt-to-date
1687 (list (car dt)
1688 (nth 1 dt)
1689 ;;
1690 (if (> tm dim) dim tm)))))))
1691 ((and (eq (car dt) (car julian))
1692 (= (nth 1 dt) (nth 1 julian)))
1693 ;; In this case, the current month is truncated because of the switch
1694 ;; to the Gregorian calendar
1695 (list 'date (math-dt-to-date
1696 (list (car dt)
1697 (nth 1 dt)
1698 (if (>= day (nth 2 julian))
1699 (nth 2 julian)
1700 (1+ day))))))
1701 (t
1702 ;; The default
1703 (list 'date (math-add (math-dt-to-date (list (car dt) (nth 1 dt) 1)) day))))
1704 (list 'date (math-add (math-dt-to-date (list (car dt) (nth 1 dt) 1)) day)))))
1444 1705
1445(defun calcFunc-newyear (date &optional day) 1706(defun calcFunc-newyear (date &optional day)
1707 (if (eq (car-safe date) 'date) (setq date (nth 1 date)))
1446 (or day (setq day 1)) 1708 (or day (setq day 1))
1447 (and (math-messy-integerp day) (setq day (math-trunc day))) 1709 (and (math-messy-integerp day) (setq day (math-trunc day)))
1448 (or (integerp day) (math-reject-arg day 'fixnump)) 1710 (or (integerp day) (math-reject-arg day 'fixnump))
1449 (let ((dt (math-date-to-dt date))) 1711 (let* ((dt (math-date-to-dt date))
1712 (gregbeg (if calc-gregorian-switch
1713 (or (nth 3 calc-gregorian-switch)
1714 (apply 'math-absolute-from-gregorian-dt calc-gregorian-switch))))
1715 (julianend (if calc-gregorian-switch (math-sub gregbeg 1)))
1716 (julian (if calc-gregorian-switch
1717 (math-date-to-dt julianend))))
1450 (if (and (>= day 0) (<= day 366)) 1718 (if (and (>= day 0) (<= day 366))
1451 (let ((max (if (eq (car dt) 1752) 355 1719 (let ((max (if (math-leap-year-p (car dt)) 366 365)))
1452 (if (math-leap-year-p (car dt)) 366 365))))
1453 (if (or (= day 0) (> day max)) (setq day max)) 1720 (if (or (= day 0) (> day max)) (setq day max))
1454 (list 'date (math-add (math-dt-to-date (list (car dt) 1 1)) 1721 (if calc-gregorian-switch
1455 (1- day)))) 1722 ;; Now to break this down into cases
1723 (cond
1724 ((and (math-dt-before-p (list (car dt) 1 1) calc-gregorian-switch)
1725 (math-dt-before-p julian (list (car dt) 1 1)))
1726 ;; In this case, CALC-GREGORIAN-SWITCH is the first day of the year
1727 (list 'date (math-min (math-add gregbeg (1- day))
1728 (math-dt-to-date (list (car calc-gregorian-switch) 12 31)))))
1729 ((eq (car dt) (car julian))
1730 ;; In this case, the switch to the Gregorian calendar occurs in the given year
1731 (if (Math-lessp (car julian) (car calc-gregorian-switch))
1732 ;; Here, the last Julian day is the last day of the year.
1733 (list 'date (math-min (math-add (math-dt-to-date (list (car dt) 1 1)) (1- day))
1734 julianend))
1735 ;; Otherwise, just make sure the date doesn't go past the end of the year
1736 (list 'date (math-min (math-add (math-dt-to-date (list (car dt) 1 1)) (1- day))
1737 (math-dt-to-date (list (car dt) 12 31))))))
1738 (t
1739 (list 'date (math-add (math-dt-to-date (list (car dt) 1 1))
1740 (1- day)))))
1741 (list 'date (math-add (math-dt-to-date (list (car dt) 1 1))
1742 (1- day)))))
1456 (if (and (>= day -12) (<= day -1)) 1743 (if (and (>= day -12) (<= day -1))
1457 (list 'date (math-dt-to-date (list (car dt) (- day) 1))) 1744 (if (and calc-gregorian-switch
1458 (math-reject-arg day 'range))))) 1745 (math-dt-before-p (list (car dt) (- day) 1) calc-gregorian-switch)
1746 (math-dt-before-p julian (list (car dt) (- day) 1)))
1747 (list 'date gregbeg)
1748 (list 'date (math-dt-to-date (list (car dt) (- day) 1))))
1749 (math-reject-arg day 'range)))))
1459 1750
1460(defun calcFunc-incmonth (date &optional step) 1751(defun calcFunc-incmonth (date &optional step)
1461 (or step (setq step 1)) 1752 (or step (setq step 1))
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index f1643b10a76..58eabf9bcec 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -464,6 +464,8 @@ to be identified as that note."
464 :type 'string 464 :type 'string
465 :group 'calc) 465 :group 'calc)
466 466
467(defvar math-format-date-cache) ; calc-forms.el
468
467(defface calc-nonselected-face 469(defface calc-nonselected-face
468 '((t :inherit shadow 470 '((t :inherit shadow
469 :slant italic)) 471 :slant italic))
@@ -2020,6 +2022,50 @@ See calc-keypad for details."
2020 (calc-refresh align))) 2022 (calc-refresh align)))
2021 (setq calc-refresh-count (1+ calc-refresh-count))) 2023 (setq calc-refresh-count (1+ calc-refresh-count)))
2022 2024
2025;; Dates that are built-in options for `calc-gregorian-switch' should be
2026;; (YEAR MONTH DAY math-date-from-gregorian-dt(YEAR MONTH DAY)) for speed.
2027(defcustom calc-gregorian-switch nil
2028 "The first day the Gregorian calendar is used by Calc's date forms.
2029This is `nil' (the default) if the Gregorian calendar is the only one used.
2030Otherwise, it should be a list `(YEAR MONTH DAY)' when Calc begins to use
2031the Gregorian calendar; Calc will use the Julian calendar for earlier dates.
2032The dates in which different regions of the world began to use the
2033Gregorian calendar vary quite a bit, even within a single country.
2034If you want Calc's date forms to switch between the Julian and
2035Gregorian calendar, you can specify the date or choose from several
2036common choices. Some of these choices should be taken with a grain
2037of salt; for example different parts of France changed calendars at
2038different times, and Sweden's change to the Gregorian calendar was
2039complicated. Also, the boundaries of the countries were different at
2040the times of the calendar changes than they are now.
2041The Vatican decided that the Gregorian calendar should take effect
2042on 15 October 1582 (Gregorian), and many Catholic countries made
2043the change then. Great Britain and its colonies had the Gregorian
2044calendar take effect on 14 September 1752 (Gregorian); this includes
2045the United States."
2046 :group 'calc
2047 :version "24.4"
2048 :type '(choice (const :tag "Always use the Gregorian calendar" nil)
2049 (const :tag "1582-10-15 - Italy, Poland, Portugal, Spain" (1582 10 15 577736))
2050 (const :tag "1582-12-20 - France" (1582 12 20 577802))
2051 (const :tag "1582-12-25 - Luxemburg" (1582 12 25 577807))
2052 (const :tag "1584-01-17 - Bohemia and Moravia" (1584 1 17 578195))
2053 (const :tag "1587-11-01 - Hungary" (1587 11 1 579579))
2054 (const :tag "1700-03-01 - Denmark" (1700 3 1 620607))
2055 (const :tag "1701-01-12 - Protestant Switzerland" (1701 1 12 620924))
2056 (const :tag "1752-09-14 - Great Britain and dominions" (1752 9 14 639797))
2057 (const :tag "1753-03-01 - Sweden" (1753 3 1 639965))
2058 (const :tag "1918-02-14 - Russia" (1918 2 14 700214))
2059 (const :tag "1919-04-14 - Romania" (1919 4 14 700638))
2060 (list :tag "(YEAR MONTH DAY)"
2061 (integer :tag "Year")
2062 (integer :tag "Month (integer)")
2063 (integer :tag "Day")))
2064 :set (lambda (symbol value)
2065 (set-default symbol value)
2066 (setq math-format-date-cache nil)
2067 (calc-refresh)))
2068
2023;;;; The Calc Trail buffer. 2069;;;; The Calc Trail buffer.
2024 2070
2025(defun calc-check-trail-aligned () 2071(defun calc-check-trail-aligned ()
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 27c6f76581c..46a7f703019 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -444,8 +444,7 @@ The format of the header is specified by `diary-header-line-format'."
444(defcustom diary-header-line-format 444(defcustom diary-header-line-format
445 '(:eval (calendar-string-spread 445 '(:eval (calendar-string-spread
446 (list (if diary-selective-display 446 (list (if diary-selective-display
447 "Some text is hidden - press \"s\" in calendar \ 447 "Some text is hidden - press \"C-c C-s\" before edit/copy"
448before edit/copy"
449 "Diary")) 448 "Diary"))
450 ?\s (window-width))) 449 ?\s (window-width)))
451 "Format of the header line displayed by `diary-simple-display'. 450 "Format of the header line displayed by `diary-simple-display'.
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 38b766084c9..9cac659d848 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -30,11 +30,10 @@
30;; value equal to HIGH * 2^16 + LOW + USEC * 10^-6 + PSEC * 10^-12 30;; value equal to HIGH * 2^16 + LOW + USEC * 10^-6 + PSEC * 10^-12
31;; seconds, where missing components are treated as zero. HIGH can be 31;; seconds, where missing components are treated as zero. HIGH can be
32;; negative, either because the value is a time difference, or because 32;; negative, either because the value is a time difference, or because
33;; the machine supports negative time stamps that fall before the 33;; the machine supports negative time stamps that fall before the epoch.
34;; epoch. The macro `with-decoded-time-value' and the 34;; The macro `with-decoded-time-value' and the function
35;; function `encode-time-value' make it easier to deal with these 35;; `encode-time-value' make it easier to deal with these formats.
36;; three formats. See `time-subtract' for an example of how to use 36;; See `time-subtract' for an example of how to use them.
37;; them.
38 37
39;;; Code: 38;;; Code:
40 39
@@ -134,9 +133,7 @@ If DATE lacks timezone information, GMT is assumed."
134;;;###autoload(if (or (featurep 'emacs) 133;;;###autoload(if (or (featurep 'emacs)
135;;;###autoload (and (fboundp 'float-time) 134;;;###autoload (and (fboundp 'float-time)
136;;;###autoload (subrp (symbol-function 'float-time)))) 135;;;###autoload (subrp (symbol-function 'float-time))))
137;;;###autoload (progn 136;;;###autoload (defalias 'time-to-seconds 'float-time)
138;;;###autoload (defalias 'time-to-seconds 'float-time)
139;;;###autoload (make-obsolete 'time-to-seconds 'float-time "21.1"))
140;;;###autoload (autoload 'time-to-seconds "time-date")) 137;;;###autoload (autoload 'time-to-seconds "time-date"))
141 138
142(eval-when-compile 139(eval-when-compile
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index a01ce4c30a3..cdfb357b646 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,12 +1,17 @@
12012-11-19 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * semantic/fw.el (semantic-make-local-hook, semantic-mode-line-update):
4 Simplify via CSE.
5
12012-11-16 David Engster <deng@randomsample.de> 62012-11-16 David Engster <deng@randomsample.de>
2 7
3 * semantic/symref/list.el (semantic-symref-symbol): Use 8 * semantic/symref/list.el (semantic-symref-symbol):
4 `semantic-complete-read-tag-project' instead of 9 Use `semantic-complete-read-tag-project' instead of
5 `semantic-complete-read-tag-buffer-deep', since the latter is not 10 `semantic-complete-read-tag-buffer-deep', since the latter is not
6 working correctly. 11 working correctly.
7 12
8 * semantic/symref.el (semantic-symref-result-get-tags): Use 13 * semantic/symref.el (semantic-symref-result-get-tags):
9 `find-buffer-visiting' to follow symbolic links. 14 Use `find-buffer-visiting' to follow symbolic links.
10 15
11 * semantic/fw.el (semantic-find-file-noselect): Always set 16 * semantic/fw.el (semantic-find-file-noselect): Always set
12 `enable-local-variables' to `:safe' when loading files. 17 `enable-local-variables' to `:safe' when loading files.
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index 14ffc808c44..6dd85309967 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -122,15 +122,13 @@
122 ) 122 )
123 123
124 124
125 (if (and (not (featurep 'xemacs)) 125 (defalias 'semantic-make-local-hook
126 (>= emacs-major-version 21)) 126 (if (and (not (featurep 'xemacs))
127 (defalias 'semantic-make-local-hook 'identity) 127 (>= emacs-major-version 21))
128 (defalias 'semantic-make-local-hook 'make-local-hook) 128 #'identity #'make-local-hook))
129 )
130 129
131 (if (featurep 'xemacs) 130 (defalias 'semantic-mode-line-update
132 (defalias 'semantic-mode-line-update 'redraw-modeline) 131 (if (featurep 'xemacs) #'redraw-modeline #'force-mode-line-update))
133 (defalias 'semantic-mode-line-update 'force-mode-line-update))
134 132
135 ;; Since Emacs 22 major mode functions should use `run-mode-hooks' to 133 ;; Since Emacs 22 major mode functions should use `run-mode-hooks' to
136 ;; run major mode hooks. 134 ;; run major mode hooks.
diff --git a/lisp/color.el b/lisp/color.el
index b915beacb0a..e1563ea474c 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -33,9 +33,6 @@
33 33
34;;; Code: 34;;; Code:
35 35
36(eval-when-compile
37 (require 'cl))
38
39;; Emacs < 23.3 36;; Emacs < 23.3
40(eval-and-compile 37(eval-and-compile
41 (unless (boundp 'float-pi) 38 (unless (boundp 'float-pi)
@@ -69,9 +66,9 @@ RED, GREEN, and BLUE should be numbers between 0.0 and 1.0, inclusive."
69COLOR-NAME should be a string naming a color (e.g. \"white\"), or 66COLOR-NAME should be a string naming a color (e.g. \"white\"), or
70a string specifying a color's RGB components (e.g. \"#ff12ec\")." 67a string specifying a color's RGB components (e.g. \"#ff12ec\")."
71 (let ((color (color-name-to-rgb color-name))) 68 (let ((color (color-name-to-rgb color-name)))
72 (list (- 1.0 (car color)) 69 (list (- 1.0 (nth 0 color))
73 (- 1.0 (cadr color)) 70 (- 1.0 (nth 1 color))
74 (- 1.0 (caddr color))))) 71 (- 1.0 (nth 2 color)))))
75 72
76(defun color-gradient (start stop step-number) 73(defun color-gradient (start stop step-number)
77 "Return a list with STEP-NUMBER colors from START to STOP. 74 "Return a list with STEP-NUMBER colors from START to STOP.
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 8e06b16bd12..69e694bd14e 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -3679,15 +3679,10 @@ Optional EVENT is the location for the menu."
3679 (setq comment nil) 3679 (setq comment nil)
3680 ;; Make the comment invisible by hand if it's empty 3680 ;; Make the comment invisible by hand if it's empty
3681 (custom-comment-hide comment-widget)) 3681 (custom-comment-hide comment-widget))
3682 (put symbol 'customized-face value)
3683 (custom-push-theme 'theme-face symbol 'user 'set value) 3682 (custom-push-theme 'theme-face symbol 'user 'set value)
3684 (if (face-spec-choose value) 3683 (face-spec-set symbol value 'customized-face)
3685 (face-spec-set symbol value t)
3686 ;; face-set-spec ignores empty attribute lists, so just give it
3687 ;; something harmless instead.
3688 (face-spec-set symbol '((t :foreground unspecified)) t))
3689 (put symbol 'customized-face-comment comment)
3690 (put symbol 'face-comment comment) 3684 (put symbol 'face-comment comment)
3685 (put symbol 'customized-face-comment comment)
3691 (custom-face-state-set widget) 3686 (custom-face-state-set widget)
3692 (custom-redraw-magic widget))) 3687 (custom-redraw-magic widget)))
3693 3688
@@ -3696,20 +3691,14 @@ Optional EVENT is the location for the menu."
3696 (let* ((symbol (widget-value widget)) 3691 (let* ((symbol (widget-value widget))
3697 (value (custom-face-widget-to-spec widget)) 3692 (value (custom-face-widget-to-spec widget))
3698 (comment-widget (widget-get widget :comment-widget)) 3693 (comment-widget (widget-get widget :comment-widget))
3699 (comment (widget-value comment-widget))) 3694 (comment (widget-value comment-widget))
3695 (standard (eq (widget-get widget :custom-state) 'standard)))
3700 (when (equal comment "") 3696 (when (equal comment "")
3701 (setq comment nil) 3697 (setq comment nil)
3702 ;; Make the comment invisible by hand if it's empty 3698 ;; Make the comment invisible by hand if it's empty
3703 (custom-comment-hide comment-widget)) 3699 (custom-comment-hide comment-widget))
3704 (custom-push-theme 'theme-face symbol 'user 'set value) 3700 (custom-push-theme 'theme-face symbol 'user 'set value)
3705 (if (face-spec-choose value) 3701 (face-spec-set symbol value (if standard 'reset 'saved-face))
3706 (face-spec-set symbol value t)
3707 ;; face-set-spec ignores empty attribute lists, so just give it
3708 ;; something harmless instead.
3709 (face-spec-set symbol '((t :foreground unspecified)) t))
3710 (unless (eq (widget-get widget :custom-state) 'standard)
3711 (put symbol 'saved-face value))
3712 (put symbol 'customized-face nil)
3713 (put symbol 'face-comment comment) 3702 (put symbol 'face-comment comment)
3714 (put symbol 'customized-face-comment nil) 3703 (put symbol 'customized-face-comment nil)
3715 (put symbol 'saved-face-comment comment))) 3704 (put symbol 'saved-face-comment comment)))
@@ -3738,13 +3727,12 @@ uncustomized (themed or standard) face."
3738 (saved-face (get face 'saved-face)) 3727 (saved-face (get face 'saved-face))
3739 (comment (get face 'saved-face-comment)) 3728 (comment (get face 'saved-face-comment))
3740 (comment-widget (widget-get widget :comment-widget))) 3729 (comment-widget (widget-get widget :comment-widget)))
3741 (put face 'customized-face nil)
3742 (put face 'customized-face-comment nil)
3743 (custom-push-theme 'theme-face face 'user 3730 (custom-push-theme 'theme-face face 'user
3744 (if saved-face 'set 'reset) 3731 (if saved-face 'set 'reset)
3745 saved-face) 3732 saved-face)
3746 (face-spec-set face saved-face t) 3733 (face-spec-set face saved-face 'saved-face)
3747 (put face 'face-comment comment) 3734 (put face 'face-comment comment)
3735 (put face 'customized-face-comment nil)
3748 (widget-value-set child saved-face) 3736 (widget-value-set child saved-face)
3749 ;; This call manages the comment visibility 3737 ;; This call manages the comment visibility
3750 (widget-value-set comment-widget (or comment "")) 3738 (widget-value-set comment-widget (or comment ""))
@@ -3764,11 +3752,10 @@ redraw the widget immediately."
3764 (comment-widget (widget-get widget :comment-widget))) 3752 (comment-widget (widget-get widget :comment-widget)))
3765 (unless value 3753 (unless value
3766 (user-error "No standard setting for this face")) 3754 (user-error "No standard setting for this face"))
3767 (put symbol 'customized-face nil)
3768 (put symbol 'customized-face-comment nil)
3769 (custom-push-theme 'theme-face symbol 'user 'reset) 3755 (custom-push-theme 'theme-face symbol 'user 'reset)
3770 (face-spec-set symbol value t) 3756 (face-spec-set symbol value 'reset)
3771 (custom-theme-recalc-face symbol) 3757 (put symbol 'face-comment nil)
3758 (put symbol 'customized-face-comment nil)
3772 (if (and custom-reset-standard-faces-list 3759 (if (and custom-reset-standard-faces-list
3773 (or (get symbol 'saved-face) (get symbol 'saved-face-comment))) 3760 (or (get symbol 'saved-face) (get symbol 'saved-face-comment)))
3774 ;; Do this later. 3761 ;; Do this later.
@@ -3784,7 +3771,6 @@ redraw the widget immediately."
3784 (put symbol 'saved-face nil) 3771 (put symbol 'saved-face nil)
3785 (put symbol 'saved-face-comment nil) 3772 (put symbol 'saved-face-comment nil)
3786 (custom-save-all)) 3773 (custom-save-all))
3787 (put symbol 'face-comment nil)
3788 (widget-value-set child 3774 (widget-value-set child
3789 (custom-pre-filter-face-spec 3775 (custom-pre-filter-face-spec
3790 (list (list t (custom-face-attributes-get 3776 (list (list t (custom-face-attributes-get
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 06fd10149d3..bf18c917cff 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -32,35 +32,14 @@
32;;; Declaring a face. 32;;; Declaring a face.
33 33
34(defun custom-declare-face (face spec doc &rest args) 34(defun custom-declare-face (face spec doc &rest args)
35 "Like `defface', but FACE is evaluated as a normal argument." 35 "Like `defface', but with FACE evaluated as a normal argument."
36 (unless (get face 'face-defface-spec) 36 (unless (get face 'face-defface-spec)
37 (let ((facep (facep face))) 37 (face-spec-set face (purecopy spec) 'face-defface-spec)
38 (unless facep 38 (push (cons 'defface face) current-load-list)
39 ;; If the user has already created the face, respect that. 39 (when doc
40 (let ((value (or (get face 'saved-face) spec)) 40 (set-face-documentation face (purecopy doc)))
41 (have-window-system (memq initial-window-system '(x w32)))) 41 (custom-handle-all-keywords face args 'custom-face)
42 ;; Create global face. 42 (run-hooks 'custom-define-hook))
43 (make-empty-face face)
44 ;; Create frame-local faces
45 (dolist (frame (frame-list))
46 (face-spec-set-2 face frame value)
47 (when (memq (window-system frame) '(x w32 ns))
48 (setq have-window-system t)))
49 ;; When making a face after frames already exist
50 (if have-window-system
51 (make-face-x-resource-internal face))))
52 ;; Don't record SPEC until we see it causes no errors.
53 (put face 'face-defface-spec (purecopy spec))
54 (push (cons 'defface face) current-load-list)
55 (when (and doc (null (face-documentation face)))
56 (set-face-documentation face (purecopy doc)))
57 (custom-handle-all-keywords face args 'custom-face)
58 (run-hooks 'custom-define-hook)
59 ;; If the face had existing settings, recalculate it. For
60 ;; example, the user might load a theme with a face setting, and
61 ;; later load a library defining that face.
62 (if facep
63 (custom-theme-recalc-face face))))
64 face) 43 face)
65 44
66;;; Face attributes. 45;;; Face attributes.
@@ -343,10 +322,7 @@ Several properties of THEME and FACE are used in the process:
343 322
344If THEME property `theme-immediate' is non-nil, this is equivalent of 323If THEME property `theme-immediate' is non-nil, this is equivalent of
345providing the NOW argument to all faces in the argument list: FACE is 324providing the NOW argument to all faces in the argument list: FACE is
346created now. The only difference is FACE property `force-face': if NOW 325created now.
347is non-nil, FACE property `force-face' is set to the symbol `rogue', else
348if THEME property `theme-immediate' is non-nil, FACE property `force-face'
349is set to the symbol `immediate'.
350 326
351SPEC itself is saved in FACE property `saved-face' and it is stored in 327SPEC itself is saved in FACE property `saved-face' and it is stored in
352FACE's list property `theme-face' \(using `custom-push-theme')." 328FACE's list property `theme-face' \(using `custom-push-theme')."
@@ -371,15 +347,11 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
371 (when (not (and oldspec (eq 'user (caar oldspec)))) 347 (when (not (and oldspec (eq 'user (caar oldspec))))
372 (put face 'saved-face spec) 348 (put face 'saved-face spec)
373 (put face 'saved-face-comment comment)) 349 (put face 'saved-face-comment comment))
374 ;; Do this AFTER checking the `theme-face' property.
375 (custom-push-theme 'theme-face face theme 'set spec) 350 (custom-push-theme 'theme-face face theme 'set spec)
376 (when (or now immediate) 351 (when (or now immediate)
377 (put face 'force-face (if now 'rogue 'immediate))) 352 (put face 'force-face (if now 'rogue 'immediate)))
378 (when (or now immediate (facep face)) 353 (when (or now immediate (facep face))
379 (unless (facep face)
380 (make-empty-face face))
381 (put face 'face-comment comment) 354 (put face 'face-comment comment)
382 (put face 'face-override-spec nil)
383 (face-spec-set face spec t)))))))) 355 (face-spec-set face spec t))))))))
384 356
385;; XEmacs compatibility function. In XEmacs, when you reset a Custom 357;; XEmacs compatibility function. In XEmacs, when you reset a Custom
diff --git a/lisp/custom.el b/lisp/custom.el
index dc810e3c97d..8dfcf4bc14c 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -948,7 +948,6 @@ prior to evaluating EXP).
948 948
949COMMENT is a comment string about SYMBOL." 949COMMENT is a comment string about SYMBOL."
950 (custom-check-theme theme) 950 (custom-check-theme theme)
951
952 ;; Process all the needed autoloads before anything else, so that the 951 ;; Process all the needed autoloads before anything else, so that the
953 ;; subsequent code has all the info it needs (e.g. which var corresponds 952 ;; subsequent code has all the info it needs (e.g. which var corresponds
954 ;; to a minor mode), regardless of the ordering of the variables. 953 ;; to a minor mode), regardless of the ordering of the variables.
@@ -958,29 +957,7 @@ COMMENT is a comment string about SYMBOL."
958 (memq (get symbol 'custom-autoload) '(nil noset))) 957 (memq (get symbol 'custom-autoload) '(nil noset)))
959 ;; This symbol needs to be autoloaded, even just for a `set'. 958 ;; This symbol needs to be autoloaded, even just for a `set'.
960 (custom-load-symbol symbol)))) 959 (custom-load-symbol symbol))))
961 960 (setq args (custom--sort-vars args))
962 ;; Move minor modes and variables with explicit requires to the end.
963 (setq args
964 (sort args
965 (lambda (a1 a2)
966 (let* ((sym1 (car a1))
967 (sym2 (car a2))
968 (1-then-2 (memq sym1 (get sym2 'custom-dependencies)))
969 (2-then-1 (memq sym2 (get sym1 'custom-dependencies))))
970 (cond ((and 1-then-2 2-then-1)
971 (error "Circular custom dependency between `%s' and `%s'"
972 sym1 sym2))
973 (2-then-1 nil)
974 ;; 1 is a dependency of 2, so needs to be set first.
975 (1-then-2)
976 ;; Put minor modes and symbols with :require last.
977 ;; Putting minor modes last ensures that the mode
978 ;; function will see other customized values rather
979 ;; than default values.
980 (t (or (nth 3 a2)
981 (eq (get sym2 'custom-set)
982 'custom-set-minor-mode))))))))
983
984 (dolist (entry args) 961 (dolist (entry args)
985 (unless (listp entry) 962 (unless (listp entry)
986 (error "Incompatible Custom theme spec")) 963 (error "Incompatible Custom theme spec"))
@@ -1014,6 +991,60 @@ COMMENT is a comment string about SYMBOL."
1014 (and (or now (default-boundp symbol)) 991 (and (or now (default-boundp symbol))
1015 (put symbol 'variable-comment comment))))))) 992 (put symbol 'variable-comment comment)))))))
1016 993
994(defvar custom--sort-vars-table)
995(defvar custom--sort-vars-result)
996
997(defun custom--sort-vars (vars)
998 "Sort VARS based on custom dependencies.
999VARS is a list whose elements have the same form as the ARGS
1000arguments to `custom-theme-set-variables'. Return the sorted
1001list, in which A occurs before B if B was defined with a
1002`:set-after' keyword specifying A (see `defcustom')."
1003 (let ((custom--sort-vars-table (make-hash-table))
1004 (dependants (make-hash-table))
1005 (custom--sort-vars-result nil)
1006 last)
1007 ;; Construct a pair of tables keyed with the symbols of VARS.
1008 (dolist (var vars)
1009 (puthash (car var) (cons t var) custom--sort-vars-table)
1010 (puthash (car var) var dependants))
1011 ;; From the second table, remove symbols that are depended-on.
1012 (dolist (var vars)
1013 (dolist (dep (get (car var) 'custom-dependencies))
1014 (remhash dep dependants)))
1015 ;; If a variable is "stand-alone", put it last if it's a minor
1016 ;; mode or has a :require flag. This is not really necessary, but
1017 ;; putting minor modes last helps ensure that the mode function
1018 ;; sees other customized values rather than default values.
1019 (maphash (lambda (sym var)
1020 (when (and (null (get sym 'custom-dependencies))
1021 (or (nth 3 var)
1022 (eq (get sym 'custom-set)
1023 'custom-set-minor-mode)))
1024 (remhash sym dependants)
1025 (push var last)))
1026 dependants)
1027 ;; The remaining symbols depend on others but are not
1028 ;; depended-upon. Do a depth-first topological sort.
1029 (maphash #'custom--sort-vars-1 dependants)
1030 (nreverse (append last custom--sort-vars-result))))
1031
1032(defun custom--sort-vars-1 (sym &optional _ignored)
1033 (let ((elt (gethash sym custom--sort-vars-table)))
1034 ;; The car of the hash table value is nil if the variable has
1035 ;; already been processed, `dependant' if it is a dependant in the
1036 ;; current graph descent, and t otherwise.
1037 (when elt
1038 (cond
1039 ((eq (car elt) 'dependant)
1040 (error "Circular custom dependency on `%s'" sym))
1041 ((car elt)
1042 (setcar elt 'dependant)
1043 (dolist (dep (get sym 'custom-dependencies))
1044 (custom--sort-vars-1 dep))
1045 (setcar elt nil)
1046 (push (cdr elt) custom--sort-vars-result))))))
1047
1017 1048
1018;;; Defining themes. 1049;;; Defining themes.
1019 1050
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 0c7f82d516e..d531e15546a 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -354,7 +354,8 @@ This function is semi-obsolete. Use `get-char-code-property'."
354;; Return a string of CH with composition for padding on both sides. 354;; Return a string of CH with composition for padding on both sides.
355;; It is displayed without overlapping with the left/right columns. 355;; It is displayed without overlapping with the left/right columns.
356(defsubst describe-char-padded-string (ch) 356(defsubst describe-char-padded-string (ch)
357 (if (internal-char-font nil ch) 357 (if (and (display-multi-font-p)
358 (internal-char-font nil ch))
358 (compose-string (string ch) 0 1 (format "\t%c\t" ch)) 359 (compose-string (string ch) 0 1 (format "\t%c\t" ch))
359 (string ch))) 360 (string ch)))
360 361
@@ -374,6 +375,8 @@ This function is semi-obsolete. Use `get-char-code-property'."
374 (format "%c:%s" x doc))) 375 (format "%c:%s" x doc)))
375 mnemonics ", "))))) 376 mnemonics ", ")))))
376 377
378(declare-function quail-find-key "quail" (char))
379
377;;;###autoload 380;;;###autoload
378(defun describe-char (pos &optional buffer) 381(defun describe-char (pos &optional buffer)
379 "Describe position POS (interactively, point) and the char after POS. 382 "Describe position POS (interactively, point) and the char after POS.
diff --git a/lisp/desktop.el b/lisp/desktop.el
index c8023bb43ed..5589dd025bc 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -825,7 +825,7 @@ MODE is the major mode.
825 (or (and filename 825 (or (and filename
826 (stringp desktop-files-not-to-save) 826 (stringp desktop-files-not-to-save)
827 (not (string-match desktop-files-not-to-save filename))) 827 (not (string-match desktop-files-not-to-save filename)))
828 (and (eq mode 'dired-mode) 828 (and (memq mode '(dired-mode vc-dir-mode))
829 (with-current-buffer bufname 829 (with-current-buffer bufname
830 (not (setq dired-skip 830 (not (setq dired-skip
831 (string-match desktop-files-not-to-save 831 (string-match desktop-files-not-to-save
diff --git a/lisp/dired.el b/lisp/dired.el
index 5f7ee48a810..1d6c667e1dd 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3109,7 +3109,7 @@ argument or confirmation)."
3109 (insert dired-marker-char))) 3109 (insert dired-marker-char)))
3110 (forward-line 1)))) 3110 (forward-line 1))))
3111 3111
3112(defun dired-mark (arg) 3112(defun dired-mark (arg &optional interactive)
3113 "Mark the file at point in the Dired buffer. 3113 "Mark the file at point in the Dired buffer.
3114If the region is active, mark all files in the region. 3114If the region is active, mark all files in the region.
3115Otherwise, with a prefix arg, mark files on the next ARG lines. 3115Otherwise, with a prefix arg, mark files on the next ARG lines.
@@ -3119,10 +3119,10 @@ If on a subdir headerline, mark all its files except `.' and `..'.
3119Use \\[dired-unmark-all-files] to remove all marks 3119Use \\[dired-unmark-all-files] to remove all marks
3120and \\[dired-unmark] on a subdir to remove the marks in 3120and \\[dired-unmark] on a subdir to remove the marks in
3121this subdir." 3121this subdir."
3122 (interactive "P") 3122 (interactive (list current-prefix-arg t))
3123 (cond 3123 (cond
3124 ;; Mark files in the active region. 3124 ;; Mark files in the active region.
3125 ((and transient-mark-mode mark-active) 3125 ((and interactive (use-region-p))
3126 (save-excursion 3126 (save-excursion
3127 (let ((beg (region-beginning)) 3127 (let ((beg (region-beginning))
3128 (end (region-end))) 3128 (end (region-end)))
@@ -3139,7 +3139,7 @@ this subdir."
3139 (prefix-numeric-value arg) 3139 (prefix-numeric-value arg)
3140 (function (lambda () (delete-char 1) (insert dired-marker-char)))))))) 3140 (function (lambda () (delete-char 1) (insert dired-marker-char))))))))
3141 3141
3142(defun dired-unmark (arg) 3142(defun dired-unmark (arg &optional interactive)
3143 "Unmark the file at point in the Dired buffer. 3143 "Unmark the file at point in the Dired buffer.
3144If the region is active, unmark all files in the region. 3144If the region is active, unmark all files in the region.
3145Otherwise, with a prefix arg, unmark files on the next ARG lines. 3145Otherwise, with a prefix arg, unmark files on the next ARG lines.
@@ -3147,11 +3147,11 @@ Otherwise, with a prefix arg, unmark files on the next ARG lines.
3147If looking at a subdir, unmark all its files except `.' and `..'. 3147If looking at a subdir, unmark all its files except `.' and `..'.
3148If the region is active in Transient Mark mode, unmark all files 3148If the region is active in Transient Mark mode, unmark all files
3149in the active region." 3149in the active region."
3150 (interactive "P") 3150 (interactive (list current-prefix-arg t))
3151 (let ((dired-marker-char ?\040)) 3151 (let ((dired-marker-char ?\040))
3152 (dired-mark arg))) 3152 (dired-mark arg interactive)))
3153 3153
3154(defun dired-flag-file-deletion (arg) 3154(defun dired-flag-file-deletion (arg &optional interactive)
3155 "In Dired, flag the current line's file for deletion. 3155 "In Dired, flag the current line's file for deletion.
3156If the region is active, flag all files in the region. 3156If the region is active, flag all files in the region.
3157Otherwise, with a prefix arg, flag files on the next ARG lines. 3157Otherwise, with a prefix arg, flag files on the next ARG lines.
@@ -3159,9 +3159,9 @@ Otherwise, with a prefix arg, flag files on the next ARG lines.
3159If on a subdir headerline, flag all its files except `.' and `..'. 3159If on a subdir headerline, flag all its files except `.' and `..'.
3160If the region is active in Transient Mark mode, flag all files 3160If the region is active in Transient Mark mode, flag all files
3161in the active region." 3161in the active region."
3162 (interactive "P") 3162 (interactive (list current-prefix-arg t))
3163 (let ((dired-marker-char dired-del-marker)) 3163 (let ((dired-marker-char dired-del-marker))
3164 (dired-mark arg))) 3164 (dired-mark arg interactive)))
3165 3165
3166(defun dired-unmark-backward (arg) 3166(defun dired-unmark-backward (arg)
3167 "In Dired, move up lines and remove marks or deletion flags there. 3167 "In Dired, move up lines and remove marks or deletion flags there.
@@ -3732,6 +3732,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
3732;;;; Desktop support 3732;;;; Desktop support
3733 3733
3734(eval-when-compile (require 'desktop)) 3734(eval-when-compile (require 'desktop))
3735(declare-function desktop-file-name "desktop" (filename dirname))
3735 3736
3736(defun dired-desktop-buffer-misc-data (dirname) 3737(defun dired-desktop-buffer-misc-data (dirname)
3737 "Auxiliary information to be saved in desktop file." 3738 "Auxiliary information to be saved in desktop file."
diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el
index 5e825032741..a66fc23dec1 100644
--- a/lisp/dirtrack.el
+++ b/lisp/dirtrack.el
@@ -220,6 +220,9 @@ the mode if ARG is omitted or nil."
220 (goto-char (point-max)) 220 (goto-char (point-max))
221 (insert msg1 msg2 "\n")))) 221 (insert msg1 msg2 "\n"))))
222 222
223(declare-function shell-prefixed-directory-name "shell" (dir))
224(declare-function shell-process-cd "shell" (arg))
225
223;;;###autoload 226;;;###autoload
224(defun dirtrack (input) 227(defun dirtrack (input)
225 "Determine the current directory from the process output for a prompt. 228 "Determine the current directory from the process output for a prompt.
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index 4839d6b9239..cb043ce8559 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -210,7 +210,7 @@ set to the appropriate coding system, and the value of
210 (untranslated-file-p (buffer-file-name)))) 210 (untranslated-file-p (buffer-file-name))))
211 (setq coding (coding-system-change-eol-conversion coding 0)) 211 (setq coding (coding-system-change-eol-conversion coding 0))
212 (setq buffer-file-coding-system coding)) 212 (setq buffer-file-coding-system coding))
213 (setq buffer-file-type (eq buffer-file-coding-system 'no-conversion))))) 213 nil)))
214 214
215;;; To set the default coding system on new files. 215;;; To set the default coding system on new files.
216(add-hook 'find-file-not-found-functions 216(add-hook 'find-file-not-found-functions
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index c2ebb3bbdc6..a947dceccc9 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -2900,19 +2900,18 @@ If COMPILE is non-nil and not a negative number then it returns t.
2900If COMPILE is a negative number then it returns nil. 2900If COMPILE is a negative number then it returns nil.
2901If COMPILE is nil then the result depends on the value of 2901If COMPILE is nil then the result depends on the value of
2902`ad-default-compilation-action' (which see)." 2902`ad-default-compilation-action' (which see)."
2903 (if (integerp compile) 2903 (cond
2904 (>= compile 0) 2904 ;; Don't compile until the real function definition is known (bug#12965).
2905 (if compile 2905 ((not (ad-real-orig-definition function)) nil)
2906 compile 2906 ((integerp compile) (>= compile 0))
2907 (cond ((eq ad-default-compilation-action 'never) 2907 (compile)
2908 nil) 2908 ((eq ad-default-compilation-action 'never) nil)
2909 ((eq ad-default-compilation-action 'always) 2909 ((eq ad-default-compilation-action 'always) t)
2910 t) 2910 ((eq ad-default-compilation-action 'like-original)
2911 ((eq ad-default-compilation-action 'like-original) 2911 (or (ad-subr-p (ad-get-orig-definition function))
2912 (or (ad-subr-p (ad-get-orig-definition function)) 2912 (ad-compiled-p (ad-get-orig-definition function))))
2913 (ad-compiled-p (ad-get-orig-definition function)))) 2913 ;; everything else means `maybe':
2914 ;; everything else means `maybe': 2914 (t (featurep 'byte-compile))))
2915 (t (featurep 'byte-compile))))))
2916 2915
2917(defun ad-activate-advised-definition (function compile) 2916(defun ad-activate-advised-definition (function compile)
2918 "Redefine FUNCTION with its advised definition from cache or scratch. 2917 "Redefine FUNCTION with its advised definition from cache or scratch.
@@ -2927,7 +2926,7 @@ The current definition and its cache-id will be put into the cache."
2927 (ad-make-advised-definition function))) 2926 (ad-make-advised-definition function)))
2928 (advice-add function :around advicefunname) 2927 (advice-add function :around advicefunname)
2929 (if (ad-should-compile function compile) 2928 (if (ad-should-compile function compile)
2930 (byte-compile advicefunname)) 2929 (ad-compile-function function))
2931 (if verified-cached-definition 2930 (if verified-cached-definition
2932 (if (not (eq verified-cached-definition 2931 (if (not (eq verified-cached-definition
2933 (symbol-function advicefunname))) 2932 (symbol-function advicefunname)))
@@ -3003,20 +3002,20 @@ definition will always be cached for later usage."
3003 (interactive 3002 (interactive
3004 (list (ad-read-advised-function "Activate advice of") 3003 (list (ad-read-advised-function "Activate advice of")
3005 current-prefix-arg)) 3004 current-prefix-arg))
3006 (if (not (ad-is-advised function)) 3005 (cond
3007 (error "ad-activate: `%s' is not advised" function) 3006 ((not (ad-is-advised function))
3008 ;; Just return for forward advised and not yet defined functions: 3007 (error "ad-activate: `%s' is not advised" function))
3009 (if (ad-get-orig-definition function) 3008 ;; Just return for forward advised and not yet defined functions:
3010 (if (not (ad-has-any-advice function)) 3009 ((not (ad-get-orig-definition function)) nil)
3011 (ad-unadvise function) 3010 ((not (ad-has-any-advice function)) (ad-unadvise function))
3012 ;; Otherwise activate the advice: 3011 ;; Otherwise activate the advice:
3013 (cond ((ad-has-redefining-advice function) 3012 ((ad-has-redefining-advice function)
3014 (ad-activate-advised-definition function compile) 3013 (ad-activate-advised-definition function compile)
3015 (ad-set-advice-info-field function 'active t) 3014 (ad-set-advice-info-field function 'active t)
3016 (eval (ad-make-hook-form function 'activation)) 3015 (eval (ad-make-hook-form function 'activation))
3017 function) 3016 function)
3018 ;; Here we are if we have all disabled advices: 3017 ;; Here we are if we have all disabled advices:
3019 (t (ad-deactivate function))))))) 3018 (t (ad-deactivate function))))
3020 3019
3021(defalias 'ad-activate-on 'ad-activate) 3020(defalias 'ad-activate-on 'ad-activate)
3022 3021
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 462b4a25154..b4582a41d6c 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -81,8 +81,14 @@ The return value of this function is not used."
81 #'(lambda (f _args new-name when) 81 #'(lambda (f _args new-name when)
82 `(make-obsolete ',f ',new-name ,when))) 82 `(make-obsolete ',f ',new-name ,when)))
83 (list 'compiler-macro 83 (list 'compiler-macro
84 #'(lambda (f _args compiler-function) 84 #'(lambda (f args compiler-function)
85 `(put ',f 'compiler-macro #',compiler-function))) 85 ;; FIXME: Make it possible to just reuse `args'.
86 `(eval-and-compile
87 (put ',f 'compiler-macro
88 ,(if (eq (car-safe compiler-function) 'lambda)
89 `(lambda ,(append (cadr compiler-function) args)
90 ,@(cddr compiler-function))
91 `#',compiler-function)))))
86 (list 'doc-string 92 (list 'doc-string
87 #'(lambda (f _args pos) 93 #'(lambda (f _args pos)
88 (list 'put (list 'quote f) ''doc-string-elt (list 'quote pos)))) 94 (list 'put (list 'quote f) ''doc-string-elt (list 'quote pos))))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index a325e0f3e44..5867cfb7064 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1748,6 +1748,9 @@ The value is non-nil if there were no errors, nil if errors."
1748 ;; There may be a file local variable setting (bug#10419). 1748 ;; There may be a file local variable setting (bug#10419).
1749 (setq buffer-read-only nil 1749 (setq buffer-read-only nil
1750 filename buffer-file-name)) 1750 filename buffer-file-name))
1751 ;; Don't inherit lexical-binding from caller (bug#12938).
1752 (unless (local-variable-p 'lexical-binding)
1753 (setq-local lexical-binding nil))
1751 ;; Set the default directory, in case an eval-when-compile uses it. 1754 ;; Set the default directory, in case an eval-when-compile uses it.
1752 (setq default-directory (file-name-directory filename))) 1755 (setq default-directory (file-name-directory filename)))
1753 ;; Check if the file's local variables explicitly specify not to 1756 ;; Check if the file's local variables explicitly specify not to
@@ -2509,8 +2512,8 @@ If FORM is a lambda or a macro, byte-compile it as a function."
2509 (when (symbolp form) 2512 (when (symbolp form)
2510 (unless (memq (car-safe fun) '(closure lambda)) 2513 (unless (memq (car-safe fun) '(closure lambda))
2511 (error "Don't know how to compile %S" fun)) 2514 (error "Don't know how to compile %S" fun))
2512 (setq fun (byte-compile--reify-function fun)) 2515 (setq lexical-binding (eq (car fun) 'closure))
2513 (setq lexical-binding (eq (car fun) 'closure))) 2516 (setq fun (byte-compile--reify-function fun)))
2514 (unless (eq (car-safe fun) 'lambda) 2517 (unless (eq (car-safe fun) 'lambda)
2515 (error "Don't know how to compile %S" fun)) 2518 (error "Don't know how to compile %S" fun))
2516 ;; Expand macros. 2519 ;; Expand macros.
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index 7c25972835b..b12b332d2e6 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -51,7 +51,8 @@ TYPE is a Common Lisp type specifier.
51 ((eq type 'string) (if (stringp x) x (concat x))) 51 ((eq type 'string) (if (stringp x) x (concat x)))
52 ((eq type 'array) (if (arrayp x) x (vconcat x))) 52 ((eq type 'array) (if (arrayp x) x (vconcat x)))
53 ((and (eq type 'character) (stringp x) (= (length x) 1)) (aref x 0)) 53 ((and (eq type 'character) (stringp x) (= (length x) 1)) (aref x 0))
54 ((and (eq type 'character) (symbolp x)) (cl-coerce (symbol-name x) type)) 54 ((and (eq type 'character) (symbolp x))
55 (cl-coerce (symbol-name x) type))
55 ((eq type 'float) (float x)) 56 ((eq type 'float) (float x))
56 ((cl-typep x type) x) 57 ((cl-typep x type) x)
57 (t (error "Can't coerce %s to type %s" x type)))) 58 (t (error "Can't coerce %s to type %s" x type))))
@@ -69,7 +70,7 @@ strings case-insensitively."
69 ((stringp x) 70 ((stringp x)
70 (and (stringp y) (= (length x) (length y)) 71 (and (stringp y) (= (length x) (length y))
71 (or (string-equal x y) 72 (or (string-equal x y)
72 (string-equal (downcase x) (downcase y))))) ; lazy but simple! 73 (string-equal (downcase x) (downcase y))))) ;Lazy but simple!
73 ((numberp x) 74 ((numberp x)
74 (and (numberp y) (= x y))) 75 (and (numberp y) (= x y)))
75 ((consp x) 76 ((consp x)
@@ -439,14 +440,14 @@ Optional second arg STATE is a random-state object."
439If STATE is t, return a new state object seeded from the time of day." 440If STATE is t, return a new state object seeded from the time of day."
440 (cond ((null state) (cl-make-random-state cl--random-state)) 441 (cond ((null state) (cl-make-random-state cl--random-state))
441 ((vectorp state) (copy-tree state t)) 442 ((vectorp state) (copy-tree state t))
442 ((integerp state) (vector 'cl-random-state-tag -1 30 state)) 443 ((integerp state) (vector 'cl--random-state-tag -1 30 state))
443 (t (cl-make-random-state (cl--random-time))))) 444 (t (cl-make-random-state (cl--random-time)))))
444 445
445;;;###autoload 446;;;###autoload
446(defun cl-random-state-p (object) 447(defun cl-random-state-p (object)
447 "Return t if OBJECT is a random-state object." 448 "Return t if OBJECT is a random-state object."
448 (and (vectorp object) (= (length object) 4) 449 (and (vectorp object) (= (length object) 4)
449 (eq (aref object 0) 'cl-random-state-tag))) 450 (eq (aref object 0) 'cl--random-state-tag)))
450 451
451 452
452;; Implementation limits. 453;; Implementation limits.
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index bfc63134985..9175dd7d608 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -93,8 +93,8 @@
93 93
94(require 'macroexp) 94(require 'macroexp)
95 95
96(defvar cl-optimize-speed 1) 96(defvar cl--optimize-speed 1)
97(defvar cl-optimize-safety 1) 97(defvar cl--optimize-safety 1)
98 98
99;;;###autoload 99;;;###autoload
100(define-obsolete-variable-alias 100(define-obsolete-variable-alias
@@ -113,12 +113,6 @@ printer proceeds to the next function on the list.
113This variable is not used at present, but it is defined in hopes that 113This variable is not used at present, but it is defined in hopes that
114a future Emacs interpreter will be able to use it.") 114a future Emacs interpreter will be able to use it.")
115 115
116(defun cl-unload-function ()
117 "Stop unloading of the Common Lisp extensions."
118 (message "Cannot unload the feature `cl'")
119 ;; Stop standard unloading!
120 t)
121
122;;; Generalized variables. 116;;; Generalized variables.
123;; These macros are defined here so that they 117;; These macros are defined here so that they
124;; can safely be used in init files. 118;; can safely be used in init files.
@@ -248,23 +242,21 @@ one value.
248 (equal (buffer-name (symbol-value 'byte-compile--outbuffer)) 242 (equal (buffer-name (symbol-value 'byte-compile--outbuffer))
249 " *Compiler Output*")))) 243 " *Compiler Output*"))))
250 244
251(defvar cl-proclaims-deferred nil) 245(defvar cl--proclaims-deferred nil)
252 246
253(defun cl-proclaim (spec) 247(defun cl-proclaim (spec)
254 "Record a global declaration specified by SPEC." 248 "Record a global declaration specified by SPEC."
255 (if (fboundp 'cl-do-proclaim) (cl-do-proclaim spec t) 249 (if (fboundp 'cl--do-proclaim) (cl--do-proclaim spec t)
256 (push spec cl-proclaims-deferred)) 250 (push spec cl--proclaims-deferred))
257 nil) 251 nil)
258 252
259(defmacro cl-declaim (&rest specs) 253(defmacro cl-declaim (&rest specs)
260 "Like `cl-proclaim', but takes any number of unevaluated, unquoted arguments. 254 "Like `cl-proclaim', but takes any number of unevaluated, unquoted arguments.
261Puts `(cl-eval-when (compile load eval) ...)' around the declarations 255Puts `(cl-eval-when (compile load eval) ...)' around the declarations
262so that they are registered at compile-time as well as run-time." 256so that they are registered at compile-time as well as run-time."
263 (let ((body (mapcar (function (lambda (x) 257 (let ((body (mapcar (lambda (x) `(cl-proclaim ',x)) specs)))
264 (list 'cl-proclaim (list 'quote x)))) 258 (if (cl--compiling-file) `(cl-eval-when (compile load eval) ,@body)
265 specs))) 259 `(progn ,@body)))) ; Avoid loading cl-macs.el for cl-eval-when.
266 (if (cl--compiling-file) (cl-list* 'cl-eval-when '(compile load eval) body)
267 (cons 'progn body)))) ; avoid loading cl-macs.el for cl-eval-when
268 260
269 261
270;;; Symbols. 262;;; Symbols.
@@ -301,7 +293,8 @@ always returns nil."
301 "Return t if INTEGER is even." 293 "Return t if INTEGER is even."
302 (eq (logand integer 1) 0)) 294 (eq (logand integer 1) 0))
303 295
304(defvar cl--random-state (vector 'cl-random-state-tag -1 30 (cl--random-time))) 296(defvar cl--random-state
297 (vector 'cl--random-state-tag -1 30 (cl--random-time)))
305 298
306(defconst cl-most-positive-float nil 299(defconst cl-most-positive-float nil
307 "The largest value that a Lisp float can hold. 300 "The largest value that a Lisp float can hold.
@@ -661,7 +654,7 @@ If ALIST is non-nil, the new pairs are prepended to it."
661(gv-define-setter face-foreground (x f &optional s) 654(gv-define-setter face-foreground (x f &optional s)
662 `(set-face-foreground ,f ,x ,s)) 655 `(set-face-foreground ,f ,x ,s))
663(gv-define-setter face-underline-p (x f &optional s) 656(gv-define-setter face-underline-p (x f &optional s)
664 `(set-face-underline-p ,f ,x ,s)) 657 `(set-face-underline ,f ,x ,s))
665(gv-define-simple-setter file-modes set-file-modes t) 658(gv-define-simple-setter file-modes set-file-modes t)
666(gv-define-simple-setter frame-height set-screen-height t) 659(gv-define-simple-setter frame-height set-screen-height t)
667(gv-define-simple-setter frame-parameters modify-frame-parameters t) 660(gv-define-simple-setter frame-parameters modify-frame-parameters t)
@@ -747,8 +740,6 @@ If ALIST is non-nil, the new pairs are prepended to it."
747 740
748(provide 'cl-lib) 741(provide 'cl-lib)
749 742
750(run-hooks 'cl-load-hook)
751
752;; Local variables: 743;; Local variables:
753;; byte-compile-dynamic: t 744;; byte-compile-dynamic: t
754;; End: 745;; End:
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 69882e36f22..f699ee7fb8e 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -11,7 +11,7 @@
11;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively 11;;;;;; cl--map-overlays cl--map-intervals cl--map-keymap-recursively
12;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan 12;;;;;; cl-notevery cl-notany cl-every cl-some cl-mapcon cl-mapcan
13;;;;;; cl-mapl cl-mapc cl-maplist cl-map cl--mapcar-many cl-equalp 13;;;;;; cl-mapl cl-mapc cl-maplist cl-map cl--mapcar-many cl-equalp
14;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "8e9fee941c465ac0fee9b92a92d64154") 14;;;;;; cl-coerce) "cl-extra" "cl-extra.el" "3ee58411735a01dd1e1d3964fdcfae70")
15;;; Generated autoloads from cl-extra.el 15;;; Generated autoloads from cl-extra.el
16 16
17(autoload 'cl-coerce "cl-extra" "\ 17(autoload 'cl-coerce "cl-extra" "\
@@ -224,7 +224,7 @@ Return the value of SYMBOL's PROPNAME property, or DEFAULT if none.
224 224
225\(fn SYMBOL PROPNAME &optional DEFAULT)" nil nil) 225\(fn SYMBOL PROPNAME &optional DEFAULT)" nil nil)
226 226
227(put 'cl-get 'compiler-macro #'cl--compiler-macro-get) 227(eval-and-compile (put 'cl-get 'compiler-macro #'cl--compiler-macro-get))
228 228
229(autoload 'cl-getf "cl-extra" "\ 229(autoload 'cl-getf "cl-extra" "\
230Search PROPLIST for property PROPNAME; return its value or DEFAULT. 230Search PROPLIST for property PROPNAME; return its value or DEFAULT.
@@ -262,12 +262,12 @@ including `cl-block' and `cl-eval-when'.
262;;;;;; cl-rotatef cl-shiftf cl-remf cl-psetf cl-declare cl-the cl-locally 262;;;;;; cl-rotatef cl-shiftf cl-remf cl-psetf cl-declare cl-the cl-locally
263;;;;;; cl-multiple-value-setq cl-multiple-value-bind cl-symbol-macrolet 263;;;;;; cl-multiple-value-setq cl-multiple-value-bind cl-symbol-macrolet
264;;;;;; cl-macrolet cl-labels cl-flet* cl-flet cl-progv cl-psetq 264;;;;;; cl-macrolet cl-labels cl-flet* cl-flet cl-progv cl-psetq
265;;;;;; cl-do-all-symbols cl-do-symbols cl-dotimes cl-dolist cl-do* 265;;;;;; cl-do-all-symbols cl-do-symbols cl-tagbody cl-dotimes cl-dolist
266;;;;;; cl-do cl-loop cl-return-from cl-return cl-block cl-etypecase 266;;;;;; cl-do* cl-do cl-loop cl-return-from cl-return cl-block cl-etypecase
267;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when 267;;;;;; cl-typecase cl-ecase cl-case cl-load-time-value cl-eval-when
268;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp 268;;;;;; cl-destructuring-bind cl-function cl-defmacro cl-defun cl-gentemp
269;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*) 269;;;;;; cl-gensym cl--compiler-macro-cXXr cl--compiler-macro-list*)
270;;;;;; "cl-macs" "cl-macs.el" "a7d9b56ea588b869813de8ed7ec1fbcd") 270;;;;;; "cl-macs" "cl-macs.el" "d3af72b1cff3398fa1480065fc2887a2")
271;;; Generated autoloads from cl-macs.el 271;;; Generated autoloads from cl-macs.el
272 272
273(autoload 'cl--compiler-macro-list* "cl-macs" "\ 273(autoload 'cl--compiler-macro-list* "cl-macs" "\
@@ -465,6 +465,19 @@ nil.
465 465
466(put 'cl-dotimes 'lisp-indent-function '1) 466(put 'cl-dotimes 'lisp-indent-function '1)
467 467
468(autoload 'cl-tagbody "cl-macs" "\
469Execute statements while providing for control transfers to labels.
470Each element of LABELS-OR-STMTS can be either a label (integer or symbol)
471or a `cons' cell, in which case it's taken to be a statement.
472This distinction is made before performing macroexpansion.
473Statements are executed in sequence left to right, discarding any return value,
474stopping only when reaching the end of LABELS-OR-STMTS.
475Any statement can transfer control at any time to the statements that follow
476one of the labels with the special form (go LABEL).
477Labels have lexical scope and dynamic extent.
478
479\(fn &rest LABELS-OR-STMTS)" nil t)
480
468(autoload 'cl-do-symbols "cl-macs" "\ 481(autoload 'cl-do-symbols "cl-macs" "\
469Loop over all symbols. 482Loop over all symbols.
470Evaluate BODY with VAR bound to each interned symbol, or to each symbol 483Evaluate BODY with VAR bound to each interned symbol, or to each symbol
@@ -759,7 +772,7 @@ surrounded by (cl-block NAME ...).
759;;;;;; cl-nsubstitute-if cl-nsubstitute cl-substitute-if-not cl-substitute-if 772;;;;;; cl-nsubstitute-if cl-nsubstitute cl-substitute-if-not cl-substitute-if
760;;;;;; cl-substitute cl-delete-duplicates cl-remove-duplicates cl-delete-if-not 773;;;;;; cl-substitute cl-delete-duplicates cl-remove-duplicates cl-delete-if-not
761;;;;;; cl-delete-if cl-delete cl-remove-if-not cl-remove-if cl-remove 774;;;;;; cl-delete-if cl-delete cl-remove-if-not cl-remove-if cl-remove
762;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "4c1e1191e82dc8d5449a5ec4d59efc10") 775;;;;;; cl-replace cl-fill cl-reduce) "cl-seq" "cl-seq.el" "4b8ddc5bea2fcc626526ce3644071568")
763;;; Generated autoloads from cl-seq.el 776;;; Generated autoloads from cl-seq.el
764 777
765(autoload 'cl-reduce "cl-seq" "\ 778(autoload 'cl-reduce "cl-seq" "\
@@ -1020,7 +1033,7 @@ Keywords supported: :test :test-not :key
1020 1033
1021\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil) 1034\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil)
1022 1035
1023(put 'cl-member 'compiler-macro #'cl--compiler-macro-member) 1036(eval-and-compile (put 'cl-member 'compiler-macro #'cl--compiler-macro-member))
1024 1037
1025(autoload 'cl-member-if "cl-seq" "\ 1038(autoload 'cl-member-if "cl-seq" "\
1026Find the first item satisfying PREDICATE in LIST. 1039Find the first item satisfying PREDICATE in LIST.
@@ -1050,7 +1063,7 @@ Keywords supported: :test :test-not :key
1050 1063
1051\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil) 1064\(fn ITEM LIST [KEYWORD VALUE]...)" nil nil)
1052 1065
1053(put 'cl-assoc 'compiler-macro #'cl--compiler-macro-assoc) 1066(eval-and-compile (put 'cl-assoc 'compiler-macro #'cl--compiler-macro-assoc))
1054 1067
1055(autoload 'cl-assoc-if "cl-seq" "\ 1068(autoload 'cl-assoc-if "cl-seq" "\
1056Find the first item whose car satisfies PREDICATE in LIST. 1069Find the first item whose car satisfies PREDICATE in LIST.
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 918e992512c..39df7befcd2 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -48,13 +48,13 @@
48;; `gv' is required here because cl-macs can be loaded before loaddefs.el. 48;; `gv' is required here because cl-macs can be loaded before loaddefs.el.
49(require 'gv) 49(require 'gv)
50 50
51(defmacro cl-pop2 (place) 51(defmacro cl--pop2 (place)
52 (declare (debug edebug-sexps)) 52 (declare (debug edebug-sexps))
53 `(prog1 (car (cdr ,place)) 53 `(prog1 (car (cdr ,place))
54 (setq ,place (cdr (cdr ,place))))) 54 (setq ,place (cdr (cdr ,place)))))
55 55
56(defvar cl-optimize-safety) 56(defvar cl--optimize-safety)
57(defvar cl-optimize-speed) 57(defvar cl--optimize-speed)
58 58
59;;; Initialization. 59;;; Initialization.
60 60
@@ -216,12 +216,17 @@ The name is made by appending a number to PREFIX, default \"G\"."
216(defvar cl--bind-inits) (defvar cl--bind-lets) (defvar cl--bind-forms) 216(defvar cl--bind-inits) (defvar cl--bind-lets) (defvar cl--bind-forms)
217 217
218(defun cl--transform-lambda (form bind-block) 218(defun cl--transform-lambda (form bind-block)
219 "Transform a function form FORM of name BIND-BLOCK.
220BIND-BLOCK is the name of the symbol to which the function will be bound,
221and which will be used for the name of the `cl-block' surrounding the
222function's body.
223FORM is of the form (ARGS . BODY)."
219 (let* ((args (car form)) (body (cdr form)) (orig-args args) 224 (let* ((args (car form)) (body (cdr form)) (orig-args args)
220 (cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil) 225 (cl--bind-block bind-block) (cl--bind-defs nil) (cl--bind-enquote nil)
221 (cl--bind-inits nil) (cl--bind-lets nil) (cl--bind-forms nil) 226 (cl--bind-inits nil) (cl--bind-lets nil) (cl--bind-forms nil)
222 (header nil) (simple-args nil)) 227 (header nil) (simple-args nil))
223 (while (or (stringp (car body)) 228 (while (or (stringp (car body))
224 (memq (car-safe (car body)) '(interactive cl-declare))) 229 (memq (car-safe (car body)) '(interactive declare cl-declare)))
225 (push (pop body) header)) 230 (push (pop body) header))
226 (setq args (if (listp args) (cl-copy-list args) (list '&rest args))) 231 (setq args (if (listp args) (cl-copy-list args) (list '&rest args)))
227 (let ((p (last args))) (if (cdr p) (setcdr p (list '&rest (cdr p))))) 232 (let ((p (last args))) (if (cdr p) (setcdr p (list '&rest (cdr p)))))
@@ -426,7 +431,7 @@ its argument list allows full Common Lisp conventions."
426 (if (memq '&environment args) (error "&environment used incorrectly")) 431 (if (memq '&environment args) (error "&environment used incorrectly"))
427 (let ((save-args args) 432 (let ((save-args args)
428 (restarg (memq '&rest args)) 433 (restarg (memq '&rest args))
429 (safety (if (cl--compiling-file) cl-optimize-safety 3)) 434 (safety (if (cl--compiling-file) cl--optimize-safety 3))
430 (keys nil) 435 (keys nil)
431 (laterarg nil) (exactarg nil) minarg) 436 (laterarg nil) (exactarg nil) minarg)
432 (or num (setq num 0)) 437 (or num (setq num 0))
@@ -435,7 +440,7 @@ its argument list allows full Common Lisp conventions."
435 (setq restarg (cadr restarg))) 440 (setq restarg (cadr restarg)))
436 (push (list restarg expr) cl--bind-lets) 441 (push (list restarg expr) cl--bind-lets)
437 (if (eq (car args) '&whole) 442 (if (eq (car args) '&whole)
438 (push (list (cl-pop2 args) restarg) cl--bind-lets)) 443 (push (list (cl--pop2 args) restarg) cl--bind-lets))
439 (let ((p args)) 444 (let ((p args))
440 (setq minarg restarg) 445 (setq minarg restarg)
441 (while (and p (not (memq (car p) cl--lambda-list-keywords))) 446 (while (and p (not (memq (car p) cl--lambda-list-keywords)))
@@ -471,7 +476,7 @@ its argument list allows full Common Lisp conventions."
471 (if def `(if ,restarg ,poparg ,def) poparg)) 476 (if def `(if ,restarg ,poparg ,def) poparg))
472 (setq num (1+ num)))))) 477 (setq num (1+ num))))))
473 (if (eq (car args) '&rest) 478 (if (eq (car args) '&rest)
474 (let ((arg (cl-pop2 args))) 479 (let ((arg (cl--pop2 args)))
475 (if (consp arg) (cl--do-arglist arg restarg))) 480 (if (consp arg) (cl--do-arglist arg restarg)))
476 (or (eq (car args) '&key) (= safety 0) exactarg 481 (or (eq (car args) '&key) (= safety 0) exactarg
477 (push `(if ,restarg 482 (push `(if ,restarg
@@ -569,7 +574,7 @@ its argument list allows full Common Lisp conventions."
569 574
570;;; The `cl-eval-when' form. 575;;; The `cl-eval-when' form.
571 576
572(defvar cl-not-toplevel nil) 577(defvar cl--not-toplevel nil)
573 578
574;;;###autoload 579;;;###autoload
575(defmacro cl-eval-when (when &rest body) 580(defmacro cl-eval-when (when &rest body)
@@ -581,9 +586,9 @@ If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
581\(fn (WHEN...) BODY...)" 586\(fn (WHEN...) BODY...)"
582 (declare (indent 1) (debug ((&rest &or "compile" "load" "eval") body))) 587 (declare (indent 1) (debug ((&rest &or "compile" "load" "eval") body)))
583 (if (and (fboundp 'cl--compiling-file) (cl--compiling-file) 588 (if (and (fboundp 'cl--compiling-file) (cl--compiling-file)
584 (not cl-not-toplevel) (not (boundp 'for-effect))) ; horrible kludge 589 (not cl--not-toplevel) (not (boundp 'for-effect))) ;Horrible kludge.
585 (let ((comp (or (memq 'compile when) (memq :compile-toplevel when))) 590 (let ((comp (or (memq 'compile when) (memq :compile-toplevel when)))
586 (cl-not-toplevel t)) 591 (cl--not-toplevel t))
587 (if (or (memq 'load when) (memq :load-toplevel when)) 592 (if (or (memq 'load when) (memq :load-toplevel when))
588 (if comp (cons 'progn (mapcar 'cl--compile-time-too body)) 593 (if comp (cons 'progn (mapcar 'cl--compile-time-too body))
589 `(if nil nil ,@body)) 594 `(if nil nil ,@body))
@@ -754,7 +759,8 @@ This is compatible with Common Lisp, but note that `defun' and
754(defvar cl--loop-first-flag) 759(defvar cl--loop-first-flag)
755(defvar cl--loop-initially) (defvar cl--loop-map-form) (defvar cl--loop-name) 760(defvar cl--loop-initially) (defvar cl--loop-map-form) (defvar cl--loop-name)
756(defvar cl--loop-result) (defvar cl--loop-result-explicit) 761(defvar cl--loop-result) (defvar cl--loop-result-explicit)
757(defvar cl--loop-result-var) (defvar cl--loop-steps) (defvar cl--loop-symbol-macs) 762(defvar cl--loop-result-var) (defvar cl--loop-steps)
763(defvar cl--loop-symbol-macs)
758 764
759;;;###autoload 765;;;###autoload
760(defmacro cl-loop (&rest loop-args) 766(defmacro cl-loop (&rest loop-args)
@@ -787,7 +793,8 @@ Valid clauses are:
787 "return"] form] 793 "return"] form]
788 ;; Simple default, which covers 99% of the cases. 794 ;; Simple default, which covers 99% of the cases.
789 symbolp form))) 795 symbolp form)))
790 (if (not (memq t (mapcar 'symbolp (delq nil (delq t (cl-copy-list loop-args)))))) 796 (if (not (memq t (mapcar #'symbolp
797 (delq nil (delq t (cl-copy-list loop-args))))))
791 `(cl-block nil (while t ,@loop-args)) 798 `(cl-block nil (while t ,@loop-args))
792 (let ((cl--loop-args loop-args) (cl--loop-name nil) (cl--loop-bindings nil) 799 (let ((cl--loop-args loop-args) (cl--loop-name nil) (cl--loop-bindings nil)
793 (cl--loop-body nil) (cl--loop-steps nil) 800 (cl--loop-body nil) (cl--loop-steps nil)
@@ -798,14 +805,16 @@ Valid clauses are:
798 (cl--loop-map-form nil) (cl--loop-first-flag nil) 805 (cl--loop-map-form nil) (cl--loop-first-flag nil)
799 (cl--loop-destr-temps nil) (cl--loop-symbol-macs nil)) 806 (cl--loop-destr-temps nil) (cl--loop-symbol-macs nil))
800 (setq cl--loop-args (append cl--loop-args '(cl-end-loop))) 807 (setq cl--loop-args (append cl--loop-args '(cl-end-loop)))
801 (while (not (eq (car cl--loop-args) 'cl-end-loop)) (cl-parse-loop-clause)) 808 (while (not (eq (car cl--loop-args) 'cl-end-loop))
809 (cl--parse-loop-clause))
802 (if cl--loop-finish-flag 810 (if cl--loop-finish-flag
803 (push `((,cl--loop-finish-flag t)) cl--loop-bindings)) 811 (push `((,cl--loop-finish-flag t)) cl--loop-bindings))
804 (if cl--loop-first-flag 812 (if cl--loop-first-flag
805 (progn (push `((,cl--loop-first-flag t)) cl--loop-bindings) 813 (progn (push `((,cl--loop-first-flag t)) cl--loop-bindings)
806 (push `(setq ,cl--loop-first-flag nil) cl--loop-steps))) 814 (push `(setq ,cl--loop-first-flag nil) cl--loop-steps)))
807 (let* ((epilogue (nconc (nreverse cl--loop-finally) 815 (let* ((epilogue (nconc (nreverse cl--loop-finally)
808 (list (or cl--loop-result-explicit cl--loop-result)))) 816 (list (or cl--loop-result-explicit
817 cl--loop-result))))
809 (ands (cl--loop-build-ands (nreverse cl--loop-body))) 818 (ands (cl--loop-build-ands (nreverse cl--loop-body)))
810 (while-body (nconc (cadr ands) (nreverse cl--loop-steps))) 819 (while-body (nconc (cadr ands) (nreverse cl--loop-steps)))
811 (body (append 820 (body (append
@@ -825,7 +834,8 @@ Valid clauses are:
825 `((if ,cl--loop-finish-flag 834 `((if ,cl--loop-finish-flag
826 (progn ,@epilogue) ,cl--loop-result-var))) 835 (progn ,@epilogue) ,cl--loop-result-var)))
827 epilogue)))) 836 epilogue))))
828 (if cl--loop-result-var (push (list cl--loop-result-var) cl--loop-bindings)) 837 (if cl--loop-result-var
838 (push (list cl--loop-result-var) cl--loop-bindings))
829 (while cl--loop-bindings 839 (while cl--loop-bindings
830 (if (cdar cl--loop-bindings) 840 (if (cdar cl--loop-bindings)
831 (setq body (list (cl--loop-let (pop cl--loop-bindings) body t))) 841 (setq body (list (cl--loop-let (pop cl--loop-bindings) body t)))
@@ -835,7 +845,8 @@ Valid clauses are:
835 (push (car (pop cl--loop-bindings)) lets)) 845 (push (car (pop cl--loop-bindings)) lets))
836 (setq body (list (cl--loop-let lets body nil)))))) 846 (setq body (list (cl--loop-let lets body nil))))))
837 (if cl--loop-symbol-macs 847 (if cl--loop-symbol-macs
838 (setq body (list `(cl-symbol-macrolet ,cl--loop-symbol-macs ,@body)))) 848 (setq body
849 (list `(cl-symbol-macrolet ,cl--loop-symbol-macs ,@body))))
839 `(cl-block ,cl--loop-name ,@body))))) 850 `(cl-block ,cl--loop-name ,@body)))))
840 851
841;; Below is a complete spec for cl-loop, in several parts that correspond 852;; Below is a complete spec for cl-loop, in several parts that correspond
@@ -990,7 +1001,7 @@ Valid clauses are:
990 1001
991 1002
992 1003
993(defun cl-parse-loop-clause () ; uses loop-* 1004(defun cl--parse-loop-clause () ; uses loop-*
994 (let ((word (pop cl--loop-args)) 1005 (let ((word (pop cl--loop-args))
995 (hash-types '(hash-key hash-keys hash-value hash-values)) 1006 (hash-types '(hash-key hash-keys hash-value hash-values))
996 (key-types '(key-code key-codes key-seq key-seqs 1007 (key-types '(key-code key-codes key-seq key-seqs
@@ -1005,17 +1016,21 @@ Valid clauses are:
1005 1016
1006 ((eq word 'initially) 1017 ((eq word 'initially)
1007 (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args)) 1018 (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
1008 (or (consp (car cl--loop-args)) (error "Syntax error on `initially' clause")) 1019 (or (consp (car cl--loop-args))
1020 (error "Syntax error on `initially' clause"))
1009 (while (consp (car cl--loop-args)) 1021 (while (consp (car cl--loop-args))
1010 (push (pop cl--loop-args) cl--loop-initially))) 1022 (push (pop cl--loop-args) cl--loop-initially)))
1011 1023
1012 ((eq word 'finally) 1024 ((eq word 'finally)
1013 (if (eq (car cl--loop-args) 'return) 1025 (if (eq (car cl--loop-args) 'return)
1014 (setq cl--loop-result-explicit (or (cl-pop2 cl--loop-args) '(quote nil))) 1026 (setq cl--loop-result-explicit
1027 (or (cl--pop2 cl--loop-args) '(quote nil)))
1015 (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args)) 1028 (if (memq (car cl--loop-args) '(do doing)) (pop cl--loop-args))
1016 (or (consp (car cl--loop-args)) (error "Syntax error on `finally' clause")) 1029 (or (consp (car cl--loop-args))
1030 (error "Syntax error on `finally' clause"))
1017 (if (and (eq (caar cl--loop-args) 'return) (null cl--loop-name)) 1031 (if (and (eq (caar cl--loop-args) 'return) (null cl--loop-name))
1018 (setq cl--loop-result-explicit (or (nth 1 (pop cl--loop-args)) '(quote nil))) 1032 (setq cl--loop-result-explicit
1033 (or (nth 1 (pop cl--loop-args)) '(quote nil)))
1019 (while (consp (car cl--loop-args)) 1034 (while (consp (car cl--loop-args))
1020 (push (pop cl--loop-args) cl--loop-finally))))) 1035 (push (pop cl--loop-args) cl--loop-finally)))))
1021 1036
@@ -1031,7 +1046,8 @@ Valid clauses are:
1031 (if (eq word 'being) (setq word (pop cl--loop-args))) 1046 (if (eq word 'being) (setq word (pop cl--loop-args)))
1032 (if (memq word '(the each)) (setq word (pop cl--loop-args))) 1047 (if (memq word '(the each)) (setq word (pop cl--loop-args)))
1033 (if (memq word '(buffer buffers)) 1048 (if (memq word '(buffer buffers))
1034 (setq word 'in cl--loop-args (cons '(buffer-list) cl--loop-args))) 1049 (setq word 'in
1050 cl--loop-args (cons '(buffer-list) cl--loop-args)))
1035 (cond 1051 (cond
1036 1052
1037 ((memq word '(from downfrom upfrom to downto upto 1053 ((memq word '(from downfrom upfrom to downto upto
@@ -1040,15 +1056,19 @@ Valid clauses are:
1040 (if (memq (car cl--loop-args) '(downto above)) 1056 (if (memq (car cl--loop-args) '(downto above))
1041 (error "Must specify `from' value for downward cl-loop")) 1057 (error "Must specify `from' value for downward cl-loop"))
1042 (let* ((down (or (eq (car cl--loop-args) 'downfrom) 1058 (let* ((down (or (eq (car cl--loop-args) 'downfrom)
1043 (memq (cl-caddr cl--loop-args) '(downto above)))) 1059 (memq (cl-caddr cl--loop-args)
1060 '(downto above))))
1044 (excl (or (memq (car cl--loop-args) '(above below)) 1061 (excl (or (memq (car cl--loop-args) '(above below))
1045 (memq (cl-caddr cl--loop-args) '(above below)))) 1062 (memq (cl-caddr cl--loop-args)
1046 (start (and (memq (car cl--loop-args) '(from upfrom downfrom)) 1063 '(above below))))
1047 (cl-pop2 cl--loop-args))) 1064 (start (and (memq (car cl--loop-args)
1065 '(from upfrom downfrom))
1066 (cl--pop2 cl--loop-args)))
1048 (end (and (memq (car cl--loop-args) 1067 (end (and (memq (car cl--loop-args)
1049 '(to upto downto above below)) 1068 '(to upto downto above below))
1050 (cl-pop2 cl--loop-args))) 1069 (cl--pop2 cl--loop-args)))
1051 (step (and (eq (car cl--loop-args) 'by) (cl-pop2 cl--loop-args))) 1070 (step (and (eq (car cl--loop-args) 'by)
1071 (cl--pop2 cl--loop-args)))
1052 (end-var (and (not (macroexp-const-p end)) 1072 (end-var (and (not (macroexp-const-p end))
1053 (make-symbol "--cl-var--"))) 1073 (make-symbol "--cl-var--")))
1054 (step-var (and (not (macroexp-const-p step)) 1074 (step-var (and (not (macroexp-const-p step))
@@ -1082,7 +1102,7 @@ Valid clauses are:
1082 loop-for-sets)))) 1102 loop-for-sets))))
1083 (push (list temp 1103 (push (list temp
1084 (if (eq (car cl--loop-args) 'by) 1104 (if (eq (car cl--loop-args) 'by)
1085 (let ((step (cl-pop2 cl--loop-args))) 1105 (let ((step (cl--pop2 cl--loop-args)))
1086 (if (and (memq (car-safe step) 1106 (if (and (memq (car-safe step)
1087 '(quote function 1107 '(quote function
1088 cl-function)) 1108 cl-function))
@@ -1094,7 +1114,8 @@ Valid clauses are:
1094 1114
1095 ((eq word '=) 1115 ((eq word '=)
1096 (let* ((start (pop cl--loop-args)) 1116 (let* ((start (pop cl--loop-args))
1097 (then (if (eq (car cl--loop-args) 'then) (cl-pop2 cl--loop-args) start))) 1117 (then (if (eq (car cl--loop-args) 'then)
1118 (cl--pop2 cl--loop-args) start)))
1098 (push (list var nil) loop-for-bindings) 1119 (push (list var nil) loop-for-bindings)
1099 (if (or ands (eq (car cl--loop-args) 'and)) 1120 (if (or ands (eq (car cl--loop-args) 'and))
1100 (progn 1121 (progn
@@ -1131,14 +1152,15 @@ Valid clauses are:
1131 (let ((ref (or (memq (car cl--loop-args) '(in-ref of-ref)) 1152 (let ((ref (or (memq (car cl--loop-args) '(in-ref of-ref))
1132 (and (not (memq (car cl--loop-args) '(in of))) 1153 (and (not (memq (car cl--loop-args) '(in of)))
1133 (error "Expected `of'")))) 1154 (error "Expected `of'"))))
1134 (seq (cl-pop2 cl--loop-args)) 1155 (seq (cl--pop2 cl--loop-args))
1135 (temp-seq (make-symbol "--cl-seq--")) 1156 (temp-seq (make-symbol "--cl-seq--"))
1136 (temp-idx (if (eq (car cl--loop-args) 'using) 1157 (temp-idx
1137 (if (and (= (length (cadr cl--loop-args)) 2) 1158 (if (eq (car cl--loop-args) 'using)
1138 (eq (cl-caadr cl--loop-args) 'index)) 1159 (if (and (= (length (cadr cl--loop-args)) 2)
1139 (cadr (cl-pop2 cl--loop-args)) 1160 (eq (cl-caadr cl--loop-args) 'index))
1140 (error "Bad `using' clause")) 1161 (cadr (cl--pop2 cl--loop-args))
1141 (make-symbol "--cl-idx--")))) 1162 (error "Bad `using' clause"))
1163 (make-symbol "--cl-idx--"))))
1142 (push (list temp-seq seq) loop-for-bindings) 1164 (push (list temp-seq seq) loop-for-bindings)
1143 (push (list temp-idx 0) loop-for-bindings) 1165 (push (list temp-idx 0) loop-for-bindings)
1144 (if ref 1166 (if ref
@@ -1161,15 +1183,17 @@ Valid clauses are:
1161 loop-for-steps))) 1183 loop-for-steps)))
1162 1184
1163 ((memq word hash-types) 1185 ((memq word hash-types)
1164 (or (memq (car cl--loop-args) '(in of)) (error "Expected `of'")) 1186 (or (memq (car cl--loop-args) '(in of))
1165 (let* ((table (cl-pop2 cl--loop-args)) 1187 (error "Expected `of'"))
1166 (other (if (eq (car cl--loop-args) 'using) 1188 (let* ((table (cl--pop2 cl--loop-args))
1167 (if (and (= (length (cadr cl--loop-args)) 2) 1189 (other
1168 (memq (cl-caadr cl--loop-args) hash-types) 1190 (if (eq (car cl--loop-args) 'using)
1169 (not (eq (cl-caadr cl--loop-args) word))) 1191 (if (and (= (length (cadr cl--loop-args)) 2)
1170 (cadr (cl-pop2 cl--loop-args)) 1192 (memq (cl-caadr cl--loop-args) hash-types)
1171 (error "Bad `using' clause")) 1193 (not (eq (cl-caadr cl--loop-args) word)))
1172 (make-symbol "--cl-var--")))) 1194 (cadr (cl--pop2 cl--loop-args))
1195 (error "Bad `using' clause"))
1196 (make-symbol "--cl-var--"))))
1173 (if (memq word '(hash-value hash-values)) 1197 (if (memq word '(hash-value hash-values))
1174 (setq var (prog1 other (setq other var)))) 1198 (setq var (prog1 other (setq other var))))
1175 (setq cl--loop-map-form 1199 (setq cl--loop-map-form
@@ -1177,16 +1201,19 @@ Valid clauses are:
1177 1201
1178 ((memq word '(symbol present-symbol external-symbol 1202 ((memq word '(symbol present-symbol external-symbol
1179 symbols present-symbols external-symbols)) 1203 symbols present-symbols external-symbols))
1180 (let ((ob (and (memq (car cl--loop-args) '(in of)) (cl-pop2 cl--loop-args)))) 1204 (let ((ob (and (memq (car cl--loop-args) '(in of))
1205 (cl--pop2 cl--loop-args))))
1181 (setq cl--loop-map-form 1206 (setq cl--loop-map-form
1182 `(mapatoms (lambda (,var) . --cl-map) ,ob)))) 1207 `(mapatoms (lambda (,var) . --cl-map) ,ob))))
1183 1208
1184 ((memq word '(overlay overlays extent extents)) 1209 ((memq word '(overlay overlays extent extents))
1185 (let ((buf nil) (from nil) (to nil)) 1210 (let ((buf nil) (from nil) (to nil))
1186 (while (memq (car cl--loop-args) '(in of from to)) 1211 (while (memq (car cl--loop-args) '(in of from to))
1187 (cond ((eq (car cl--loop-args) 'from) (setq from (cl-pop2 cl--loop-args))) 1212 (cond ((eq (car cl--loop-args) 'from)
1188 ((eq (car cl--loop-args) 'to) (setq to (cl-pop2 cl--loop-args))) 1213 (setq from (cl--pop2 cl--loop-args)))
1189 (t (setq buf (cl-pop2 cl--loop-args))))) 1214 ((eq (car cl--loop-args) 'to)
1215 (setq to (cl--pop2 cl--loop-args)))
1216 (t (setq buf (cl--pop2 cl--loop-args)))))
1190 (setq cl--loop-map-form 1217 (setq cl--loop-map-form
1191 `(cl--map-overlays 1218 `(cl--map-overlays
1192 (lambda (,var ,(make-symbol "--cl-var--")) 1219 (lambda (,var ,(make-symbol "--cl-var--"))
@@ -1198,11 +1225,13 @@ Valid clauses are:
1198 (var1 (make-symbol "--cl-var1--")) 1225 (var1 (make-symbol "--cl-var1--"))
1199 (var2 (make-symbol "--cl-var2--"))) 1226 (var2 (make-symbol "--cl-var2--")))
1200 (while (memq (car cl--loop-args) '(in of property from to)) 1227 (while (memq (car cl--loop-args) '(in of property from to))
1201 (cond ((eq (car cl--loop-args) 'from) (setq from (cl-pop2 cl--loop-args))) 1228 (cond ((eq (car cl--loop-args) 'from)
1202 ((eq (car cl--loop-args) 'to) (setq to (cl-pop2 cl--loop-args))) 1229 (setq from (cl--pop2 cl--loop-args)))
1230 ((eq (car cl--loop-args) 'to)
1231 (setq to (cl--pop2 cl--loop-args)))
1203 ((eq (car cl--loop-args) 'property) 1232 ((eq (car cl--loop-args) 'property)
1204 (setq prop (cl-pop2 cl--loop-args))) 1233 (setq prop (cl--pop2 cl--loop-args)))
1205 (t (setq buf (cl-pop2 cl--loop-args))))) 1234 (t (setq buf (cl--pop2 cl--loop-args)))))
1206 (if (and (consp var) (symbolp (car var)) (symbolp (cdr var))) 1235 (if (and (consp var) (symbolp (car var)) (symbolp (cdr var)))
1207 (setq var1 (car var) var2 (cdr var)) 1236 (setq var1 (car var) var2 (cdr var))
1208 (push (list var `(cons ,var1 ,var2)) loop-for-sets)) 1237 (push (list var `(cons ,var1 ,var2)) loop-for-sets))
@@ -1212,15 +1241,17 @@ Valid clauses are:
1212 ,buf ,prop ,from ,to)))) 1241 ,buf ,prop ,from ,to))))
1213 1242
1214 ((memq word key-types) 1243 ((memq word key-types)
1215 (or (memq (car cl--loop-args) '(in of)) (error "Expected `of'")) 1244 (or (memq (car cl--loop-args) '(in of))
1216 (let ((cl-map (cl-pop2 cl--loop-args)) 1245 (error "Expected `of'"))
1217 (other (if (eq (car cl--loop-args) 'using) 1246 (let ((cl-map (cl--pop2 cl--loop-args))
1218 (if (and (= (length (cadr cl--loop-args)) 2) 1247 (other
1219 (memq (cl-caadr cl--loop-args) key-types) 1248 (if (eq (car cl--loop-args) 'using)
1220 (not (eq (cl-caadr cl--loop-args) word))) 1249 (if (and (= (length (cadr cl--loop-args)) 2)
1221 (cadr (cl-pop2 cl--loop-args)) 1250 (memq (cl-caadr cl--loop-args) key-types)
1222 (error "Bad `using' clause")) 1251 (not (eq (cl-caadr cl--loop-args) word)))
1223 (make-symbol "--cl-var--")))) 1252 (cadr (cl--pop2 cl--loop-args))
1253 (error "Bad `using' clause"))
1254 (make-symbol "--cl-var--"))))
1224 (if (memq word '(key-binding key-bindings)) 1255 (if (memq word '(key-binding key-bindings))
1225 (setq var (prog1 other (setq other var)))) 1256 (setq var (prog1 other (setq other var))))
1226 (setq cl--loop-map-form 1257 (setq cl--loop-map-form
@@ -1240,7 +1271,8 @@ Valid clauses are:
1240 loop-for-steps))) 1271 loop-for-steps)))
1241 1272
1242 ((memq word '(window windows)) 1273 ((memq word '(window windows))
1243 (let ((scr (and (memq (car cl--loop-args) '(in of)) (cl-pop2 cl--loop-args))) 1274 (let ((scr (and (memq (car cl--loop-args) '(in of))
1275 (cl--pop2 cl--loop-args)))
1244 (temp (make-symbol "--cl-var--")) 1276 (temp (make-symbol "--cl-var--"))
1245 (minip (make-symbol "--cl-minip--"))) 1277 (minip (make-symbol "--cl-minip--")))
1246 (push (list var (if scr 1278 (push (list var (if scr
@@ -1335,7 +1367,8 @@ Valid clauses are:
1335 1367
1336 ((memq word '(minimize minimizing maximize maximizing)) 1368 ((memq word '(minimize minimizing maximize maximizing))
1337 (let* ((what (pop cl--loop-args)) 1369 (let* ((what (pop cl--loop-args))
1338 (temp (if (cl--simple-expr-p what) what (make-symbol "--cl-var--"))) 1370 (temp (if (cl--simple-expr-p what) what
1371 (make-symbol "--cl-var--")))
1339 (var (cl--loop-handle-accum nil)) 1372 (var (cl--loop-handle-accum nil))
1340 (func (intern (substring (symbol-name word) 0 3))) 1373 (func (intern (substring (symbol-name word) 0 3)))
1341 (set `(setq ,var (if ,var (,func ,var ,temp) ,temp)))) 1374 (set `(setq ,var (if ,var (,func ,var ,temp) ,temp))))
@@ -1346,7 +1379,8 @@ Valid clauses are:
1346 ((eq word 'with) 1379 ((eq word 'with)
1347 (let ((bindings nil)) 1380 (let ((bindings nil))
1348 (while (progn (push (list (pop cl--loop-args) 1381 (while (progn (push (list (pop cl--loop-args)
1349 (and (eq (car cl--loop-args) '=) (cl-pop2 cl--loop-args))) 1382 (and (eq (car cl--loop-args) '=)
1383 (cl--pop2 cl--loop-args)))
1350 bindings) 1384 bindings)
1351 (eq (car cl--loop-args) 'and)) 1385 (eq (car cl--loop-args) 'and))
1352 (pop cl--loop-args)) 1386 (pop cl--loop-args))
@@ -1359,19 +1393,23 @@ Valid clauses are:
1359 (push `(not ,(pop cl--loop-args)) cl--loop-body)) 1393 (push `(not ,(pop cl--loop-args)) cl--loop-body))
1360 1394
1361 ((eq word 'always) 1395 ((eq word 'always)
1362 (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--"))) 1396 (or cl--loop-finish-flag
1397 (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
1363 (push `(setq ,cl--loop-finish-flag ,(pop cl--loop-args)) cl--loop-body) 1398 (push `(setq ,cl--loop-finish-flag ,(pop cl--loop-args)) cl--loop-body)
1364 (setq cl--loop-result t)) 1399 (setq cl--loop-result t))
1365 1400
1366 ((eq word 'never) 1401 ((eq word 'never)
1367 (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--"))) 1402 (or cl--loop-finish-flag
1403 (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
1368 (push `(setq ,cl--loop-finish-flag (not ,(pop cl--loop-args))) 1404 (push `(setq ,cl--loop-finish-flag (not ,(pop cl--loop-args)))
1369 cl--loop-body) 1405 cl--loop-body)
1370 (setq cl--loop-result t)) 1406 (setq cl--loop-result t))
1371 1407
1372 ((eq word 'thereis) 1408 ((eq word 'thereis)
1373 (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-flag--"))) 1409 (or cl--loop-finish-flag
1374 (or cl--loop-result-var (setq cl--loop-result-var (make-symbol "--cl-var--"))) 1410 (setq cl--loop-finish-flag (make-symbol "--cl-flag--")))
1411 (or cl--loop-result-var
1412 (setq cl--loop-result-var (make-symbol "--cl-var--")))
1375 (push `(setq ,cl--loop-finish-flag 1413 (push `(setq ,cl--loop-finish-flag
1376 (not (setq ,cl--loop-result-var ,(pop cl--loop-args)))) 1414 (not (setq ,cl--loop-result-var ,(pop cl--loop-args))))
1377 cl--loop-body)) 1415 cl--loop-body))
@@ -1379,11 +1417,11 @@ Valid clauses are:
1379 ((memq word '(if when unless)) 1417 ((memq word '(if when unless))
1380 (let* ((cond (pop cl--loop-args)) 1418 (let* ((cond (pop cl--loop-args))
1381 (then (let ((cl--loop-body nil)) 1419 (then (let ((cl--loop-body nil))
1382 (cl-parse-loop-clause) 1420 (cl--parse-loop-clause)
1383 (cl--loop-build-ands (nreverse cl--loop-body)))) 1421 (cl--loop-build-ands (nreverse cl--loop-body))))
1384 (else (let ((cl--loop-body nil)) 1422 (else (let ((cl--loop-body nil))
1385 (if (eq (car cl--loop-args) 'else) 1423 (if (eq (car cl--loop-args) 'else)
1386 (progn (pop cl--loop-args) (cl-parse-loop-clause))) 1424 (progn (pop cl--loop-args) (cl--parse-loop-clause)))
1387 (cl--loop-build-ands (nreverse cl--loop-body)))) 1425 (cl--loop-build-ands (nreverse cl--loop-body))))
1388 (simple (and (eq (car then) t) (eq (car else) t)))) 1426 (simple (and (eq (car then) t) (eq (car else) t))))
1389 (if (eq (car cl--loop-args) 'end) (pop cl--loop-args)) 1427 (if (eq (car cl--loop-args) 'end) (pop cl--loop-args))
@@ -1405,8 +1443,10 @@ Valid clauses are:
1405 (push (cons 'progn (nreverse (cons t body))) cl--loop-body))) 1443 (push (cons 'progn (nreverse (cons t body))) cl--loop-body)))
1406 1444
1407 ((eq word 'return) 1445 ((eq word 'return)
1408 (or cl--loop-finish-flag (setq cl--loop-finish-flag (make-symbol "--cl-var--"))) 1446 (or cl--loop-finish-flag
1409 (or cl--loop-result-var (setq cl--loop-result-var (make-symbol "--cl-var--"))) 1447 (setq cl--loop-finish-flag (make-symbol "--cl-var--")))
1448 (or cl--loop-result-var
1449 (setq cl--loop-result-var (make-symbol "--cl-var--")))
1410 (push `(setq ,cl--loop-result-var ,(pop cl--loop-args) 1450 (push `(setq ,cl--loop-result-var ,(pop cl--loop-args)
1411 ,cl--loop-finish-flag nil) cl--loop-body)) 1451 ,cl--loop-finish-flag nil) cl--loop-body))
1412 1452
@@ -1416,7 +1456,7 @@ Valid clauses are:
1416 (or handler (error "Expected a cl-loop keyword, found %s" word)) 1456 (or handler (error "Expected a cl-loop keyword, found %s" word))
1417 (funcall handler)))) 1457 (funcall handler))))
1418 (if (eq (car cl--loop-args) 'and) 1458 (if (eq (car cl--loop-args) 'and)
1419 (progn (pop cl--loop-args) (cl-parse-loop-clause))))) 1459 (progn (pop cl--loop-args) (cl--parse-loop-clause)))))
1420 1460
1421(defun cl--loop-let (specs body par) ; uses loop-* 1461(defun cl--loop-let (specs body par) ; uses loop-*
1422 (let ((p specs) (temps nil) (new nil)) 1462 (let ((p specs) (temps nil) (new nil))
@@ -1435,10 +1475,12 @@ Valid clauses are:
1435 (if (and (consp (car specs)) (listp (caar specs))) 1475 (if (and (consp (car specs)) (listp (caar specs)))
1436 (let* ((spec (caar specs)) (nspecs nil) 1476 (let* ((spec (caar specs)) (nspecs nil)
1437 (expr (cadr (pop specs))) 1477 (expr (cadr (pop specs)))
1438 (temp (cdr (or (assq spec cl--loop-destr-temps) 1478 (temp
1439 (car (push (cons spec (or (last spec 0) 1479 (cdr (or (assq spec cl--loop-destr-temps)
1440 (make-symbol "--cl-var--"))) 1480 (car (push (cons spec
1441 cl--loop-destr-temps)))))) 1481 (or (last spec 0)
1482 (make-symbol "--cl-var--")))
1483 cl--loop-destr-temps))))))
1442 (push (list temp expr) new) 1484 (push (list temp expr) new)
1443 (while (consp spec) 1485 (while (consp spec)
1444 (push (list (pop spec) 1486 (push (list (pop spec)
@@ -1447,24 +1489,27 @@ Valid clauses are:
1447 (setq specs (nconc (nreverse nspecs) specs))) 1489 (setq specs (nconc (nreverse nspecs) specs)))
1448 (push (pop specs) new))) 1490 (push (pop specs) new)))
1449 (if (eq body 'setq) 1491 (if (eq body 'setq)
1450 (let ((set (cons (if par 'cl-psetq 'setq) (apply 'nconc (nreverse new))))) 1492 (let ((set (cons (if par 'cl-psetq 'setq)
1493 (apply 'nconc (nreverse new)))))
1451 (if temps `(let* ,(nreverse temps) ,set) set)) 1494 (if temps `(let* ,(nreverse temps) ,set) set))
1452 `(,(if par 'let 'let*) 1495 `(,(if par 'let 'let*)
1453 ,(nconc (nreverse temps) (nreverse new)) ,@body)))) 1496 ,(nconc (nreverse temps) (nreverse new)) ,@body))))
1454 1497
1455(defun cl--loop-handle-accum (def &optional func) ; uses loop-* 1498(defun cl--loop-handle-accum (def &optional func) ; uses loop-*
1456 (if (eq (car cl--loop-args) 'into) 1499 (if (eq (car cl--loop-args) 'into)
1457 (let ((var (cl-pop2 cl--loop-args))) 1500 (let ((var (cl--pop2 cl--loop-args)))
1458 (or (memq var cl--loop-accum-vars) 1501 (or (memq var cl--loop-accum-vars)
1459 (progn (push (list (list var def)) cl--loop-bindings) 1502 (progn (push (list (list var def)) cl--loop-bindings)
1460 (push var cl--loop-accum-vars))) 1503 (push var cl--loop-accum-vars)))
1461 var) 1504 var)
1462 (or cl--loop-accum-var 1505 (or cl--loop-accum-var
1463 (progn 1506 (progn
1464 (push (list (list (setq cl--loop-accum-var (make-symbol "--cl-var--")) def)) 1507 (push (list (list
1465 cl--loop-bindings) 1508 (setq cl--loop-accum-var (make-symbol "--cl-var--"))
1509 def))
1510 cl--loop-bindings)
1466 (setq cl--loop-result (if func (list func cl--loop-accum-var) 1511 (setq cl--loop-result (if func (list func cl--loop-accum-var)
1467 cl--loop-accum-var)) 1512 cl--loop-accum-var))
1468 cl--loop-accum-var)))) 1513 cl--loop-accum-var))))
1469 1514
1470(defun cl--loop-build-ands (clauses) 1515(defun cl--loop-build-ands (clauses)
@@ -1511,7 +1556,7 @@ such that COMBO is equivalent to (and . CLAUSES)."
1511 ((&rest &or symbolp (symbolp &optional form form)) 1556 ((&rest &or symbolp (symbolp &optional form form))
1512 (form body) 1557 (form body)
1513 cl-declarations body))) 1558 cl-declarations body)))
1514 (cl-expand-do-loop steps endtest body nil)) 1559 (cl--expand-do-loop steps endtest body nil))
1515 1560
1516;;;###autoload 1561;;;###autoload
1517(defmacro cl-do* (steps endtest &rest body) 1562(defmacro cl-do* (steps endtest &rest body)
@@ -1519,9 +1564,9 @@ such that COMBO is equivalent to (and . CLAUSES)."
1519 1564
1520\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" 1565\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
1521 (declare (indent 2) (debug cl-do)) 1566 (declare (indent 2) (debug cl-do))
1522 (cl-expand-do-loop steps endtest body t)) 1567 (cl--expand-do-loop steps endtest body t))
1523 1568
1524(defun cl-expand-do-loop (steps endtest body star) 1569(defun cl--expand-do-loop (steps endtest body star)
1525 `(cl-block nil 1570 `(cl-block nil
1526 (,(if star 'let* 'let) 1571 (,(if star 'let* 'let)
1527 ,(mapcar (lambda (c) (if (consp c) (list (car c) (nth 1 c)) c)) 1572 ,(mapcar (lambda (c) (if (consp c) (list (car c) (nth 1 c)) c))
@@ -1566,6 +1611,52 @@ nil.
1566 (if (advice-member-p #'cl--wrap-in-nil-block 'dotimes) 1611 (if (advice-member-p #'cl--wrap-in-nil-block 'dotimes)
1567 loop `(cl-block nil ,loop)))) 1612 loop `(cl-block nil ,loop))))
1568 1613
1614(defvar cl--tagbody-alist nil)
1615
1616;;;###autoload
1617(defmacro cl-tagbody (&rest labels-or-stmts)
1618 "Execute statements while providing for control transfers to labels.
1619Each element of LABELS-OR-STMTS can be either a label (integer or symbol)
1620or a `cons' cell, in which case it's taken to be a statement.
1621This distinction is made before performing macroexpansion.
1622Statements are executed in sequence left to right, discarding any return value,
1623stopping only when reaching the end of LABELS-OR-STMTS.
1624Any statement can transfer control at any time to the statements that follow
1625one of the labels with the special form (go LABEL).
1626Labels have lexical scope and dynamic extent."
1627 (let ((blocks '())
1628 (first-label (if (consp (car labels-or-stmts))
1629 'cl--preamble (pop labels-or-stmts))))
1630 (let ((block (list first-label)))
1631 (dolist (label-or-stmt labels-or-stmts)
1632 (if (consp label-or-stmt) (push label-or-stmt block)
1633 ;; Add a "go to next block" to implement the fallthrough.
1634 (unless (eq 'go (car-safe (car-safe block)))
1635 (push `(go ,label-or-stmt) block))
1636 (push (nreverse block) blocks)
1637 (setq block (list label-or-stmt))))
1638 (unless (eq 'go (car-safe (car-safe block)))
1639 (push `(go cl--exit) block))
1640 (push (nreverse block) blocks))
1641 (let ((catch-tag (make-symbol "cl--tagbody-tag")))
1642 (push (cons 'cl--exit catch-tag) cl--tagbody-alist)
1643 (dolist (block blocks)
1644 (push (cons (car block) catch-tag) cl--tagbody-alist))
1645 (macroexpand-all
1646 `(let ((next-label ',first-label))
1647 (while
1648 (not (eq (setq next-label
1649 (catch ',catch-tag
1650 (cl-case next-label
1651 ,@blocks)))
1652 'cl--exit))))
1653 `((go . ,(lambda (label)
1654 (let ((catch-tag (cdr (assq label cl--tagbody-alist))))
1655 (unless catch-tag
1656 (error "Unknown cl-tagbody go label `%S'" label))
1657 `(throw ',catch-tag ',label))))
1658 ,@macroexpand-all-environment)))))
1659
1569;;;###autoload 1660;;;###autoload
1570(defmacro cl-do-symbols (spec &rest body) 1661(defmacro cl-do-symbols (spec &rest body)
1571 "Loop over all symbols. 1662 "Loop over all symbols.
@@ -1615,19 +1706,18 @@ second list (or to nil if VALUES is shorter than SYMBOLS); then the
1615BODY forms are executed and their result is returned. This is much like 1706BODY forms are executed and their result is returned. This is much like
1616a `let' form, except that the list of symbols can be computed at run-time." 1707a `let' form, except that the list of symbols can be computed at run-time."
1617 (declare (indent 2) (debug (form form body))) 1708 (declare (indent 2) (debug (form form body)))
1618 (let ((bodyfun (make-symbol "cl--progv-body")) 1709 (let ((bodyfun (make-symbol "body"))
1619 (binds (make-symbol "binds")) 1710 (binds (make-symbol "binds"))
1620 (syms (make-symbol "syms")) 1711 (syms (make-symbol "syms"))
1621 (vals (make-symbol "vals"))) 1712 (vals (make-symbol "vals")))
1622 `(progn 1713 `(progn
1623 (defvar ,bodyfun)
1624 (let* ((,syms ,symbols) 1714 (let* ((,syms ,symbols)
1625 (,vals ,values) 1715 (,vals ,values)
1626 (,bodyfun (lambda () ,@body)) 1716 (,bodyfun (lambda () ,@body))
1627 (,binds ())) 1717 (,binds ()))
1628 (while ,syms 1718 (while ,syms
1629 (push (list (pop ,syms) (list 'quote (pop ,vals))) ,binds)) 1719 (push (list (pop ,syms) (list 'quote (pop ,vals))) ,binds))
1630 (eval (list 'let ,binds '(funcall ,bodyfun))))))) 1720 (eval (list 'let ,binds (list 'funcall (list 'quote ,bodyfun))))))))
1631 1721
1632(defvar cl--labels-convert-cache nil) 1722(defvar cl--labels-convert-cache nil)
1633 1723
@@ -1898,11 +1988,11 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
1898 (declare (indent 1) (debug (cl-type-spec form))) 1988 (declare (indent 1) (debug (cl-type-spec form)))
1899 form) 1989 form)
1900 1990
1901(defvar cl-proclaim-history t) ; for future compilers 1991(defvar cl--proclaim-history t) ; for future compilers
1902(defvar cl-declare-stack t) ; for future compilers 1992(defvar cl--declare-stack t) ; for future compilers
1903 1993
1904(defun cl-do-proclaim (spec hist) 1994(defun cl--do-proclaim (spec hist)
1905 (and hist (listp cl-proclaim-history) (push spec cl-proclaim-history)) 1995 (and hist (listp cl--proclaim-history) (push spec cl--proclaim-history))
1906 (cond ((eq (car-safe spec) 'special) 1996 (cond ((eq (car-safe spec) 'special)
1907 (if (boundp 'byte-compile-bound-variables) 1997 (if (boundp 'byte-compile-bound-variables)
1908 (setq byte-compile-bound-variables 1998 (setq byte-compile-bound-variables
@@ -1927,9 +2017,9 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
1927 '((0 nil) (1 t) (2 t) (3 t)))) 2017 '((0 nil) (1 t) (2 t) (3 t))))
1928 (safety (assq (nth 1 (assq 'safety (cdr spec))) 2018 (safety (assq (nth 1 (assq 'safety (cdr spec)))
1929 '((0 t) (1 t) (2 t) (3 nil))))) 2019 '((0 t) (1 t) (2 t) (3 nil)))))
1930 (if speed (setq cl-optimize-speed (car speed) 2020 (if speed (setq cl--optimize-speed (car speed)
1931 byte-optimize (nth 1 speed))) 2021 byte-optimize (nth 1 speed)))
1932 (if safety (setq cl-optimize-safety (car safety) 2022 (if safety (setq cl--optimize-safety (car safety)
1933 byte-compile-delete-errors (nth 1 safety))))) 2023 byte-compile-delete-errors (nth 1 safety)))))
1934 2024
1935 ((and (eq (car-safe spec) 'warn) (boundp 'byte-compile-warnings)) 2025 ((and (eq (car-safe spec) 'warn) (boundp 'byte-compile-warnings))
@@ -1941,10 +2031,10 @@ values. For compatibility, (cl-values A B C) is a synonym for (list A B C).
1941 nil) 2031 nil)
1942 2032
1943;;; Process any proclamations made before cl-macs was loaded. 2033;;; Process any proclamations made before cl-macs was loaded.
1944(defvar cl-proclaims-deferred) 2034(defvar cl--proclaims-deferred)
1945(let ((p (reverse cl-proclaims-deferred))) 2035(let ((p (reverse cl--proclaims-deferred)))
1946 (while p (cl-do-proclaim (pop p) t)) 2036 (while p (cl--do-proclaim (pop p) t))
1947 (setq cl-proclaims-deferred nil)) 2037 (setq cl--proclaims-deferred nil))
1948 2038
1949;;;###autoload 2039;;;###autoload
1950(defmacro cl-declare (&rest specs) 2040(defmacro cl-declare (&rest specs)
@@ -1957,8 +2047,8 @@ will turn off byte-compile warnings in the function.
1957See Info node `(cl)Declarations' for details." 2047See Info node `(cl)Declarations' for details."
1958 (if (cl--compiling-file) 2048 (if (cl--compiling-file)
1959 (while specs 2049 (while specs
1960 (if (listp cl-declare-stack) (push (car specs) cl-declare-stack)) 2050 (if (listp cl--declare-stack) (push (car specs) cl--declare-stack))
1961 (cl-do-proclaim (pop specs) nil))) 2051 (cl--do-proclaim (pop specs) nil)))
1962 nil) 2052 nil)
1963 2053
1964;;; The standard modify macros. 2054;;; The standard modify macros.
@@ -2204,7 +2294,7 @@ value, that slot cannot be set via `setf'.
2204 (copier (intern (format "copy-%s" name))) 2294 (copier (intern (format "copy-%s" name)))
2205 (predicate (intern (format "%s-p" name))) 2295 (predicate (intern (format "%s-p" name)))
2206 (print-func nil) (print-auto nil) 2296 (print-func nil) (print-auto nil)
2207 (safety (if (cl--compiling-file) cl-optimize-safety 3)) 2297 (safety (if (cl--compiling-file) cl--optimize-safety 3))
2208 (include nil) 2298 (include nil)
2209 (tag (intern (format "cl-struct-%s" name))) 2299 (tag (intern (format "cl-struct-%s" name)))
2210 (tag-symbol (intern (format "cl-struct-%s-tags" name))) 2300 (tag-symbol (intern (format "cl-struct-%s-tags" name)))
@@ -2449,7 +2539,8 @@ The type name can then be used in `cl-typecase', `cl-check-type', etc."
2449 (if (consp (cadr type)) `(> ,val ,(cl-caadr type)) 2539 (if (consp (cadr type)) `(> ,val ,(cl-caadr type))
2450 `(>= ,val ,(cadr type)))) 2540 `(>= ,val ,(cadr type))))
2451 ,(if (memq (cl-caddr type) '(* nil)) t 2541 ,(if (memq (cl-caddr type) '(* nil)) t
2452 (if (consp (cl-caddr type)) `(< ,val ,(cl-caaddr type)) 2542 (if (consp (cl-caddr type))
2543 `(< ,val ,(cl-caaddr type))
2453 `(<= ,val ,(cl-caddr type))))))) 2544 `(<= ,val ,(cl-caddr type)))))))
2454 ((memq (car type) '(and or not)) 2545 ((memq (car type) '(and or not))
2455 (cons (car type) 2546 (cons (car type)
@@ -2474,7 +2565,7 @@ TYPE is a Common Lisp-style type specifier."
2474STRING is an optional description of the desired type." 2565STRING is an optional description of the desired type."
2475 (declare (debug (place cl-type-spec &optional stringp))) 2566 (declare (debug (place cl-type-spec &optional stringp)))
2476 (and (or (not (cl--compiling-file)) 2567 (and (or (not (cl--compiling-file))
2477 (< cl-optimize-speed 3) (= cl-optimize-safety 3)) 2568 (< cl--optimize-speed 3) (= cl--optimize-safety 3))
2478 (let* ((temp (if (cl--simple-expr-p form 3) 2569 (let* ((temp (if (cl--simple-expr-p form 3)
2479 form (make-symbol "--cl-var--"))) 2570 form (make-symbol "--cl-var--")))
2480 (body `(or ,(cl--make-type-test temp type) 2571 (body `(or ,(cl--make-type-test temp type)
@@ -2494,7 +2585,7 @@ They are not evaluated unless the assertion fails. If STRING is
2494omitted, a default message listing FORM itself is used." 2585omitted, a default message listing FORM itself is used."
2495 (declare (debug (form &rest form))) 2586 (declare (debug (form &rest form)))
2496 (and (or (not (cl--compiling-file)) 2587 (and (or (not (cl--compiling-file))
2497 (< cl-optimize-speed 3) (= cl-optimize-safety 3)) 2588 (< cl--optimize-speed 3) (= cl--optimize-safety 3))
2498 (let ((sargs (and show-args 2589 (let ((sargs (and show-args
2499 (delq nil (mapcar (lambda (x) 2590 (delq nil (mapcar (lambda (x)
2500 (unless (macroexp-const-p x) 2591 (unless (macroexp-const-p x)
@@ -2690,14 +2781,14 @@ surrounded by (cl-block NAME ...).
2690 2781
2691;;; Things that are side-effect-free. 2782;;; Things that are side-effect-free.
2692(mapc (lambda (x) (put x 'side-effect-free t)) 2783(mapc (lambda (x) (put x 'side-effect-free t))
2693 '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd cl-lcm 2784 '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd
2694 cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem cl-subseq 2785 cl-lcm cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem
2695 cl-list-length cl-get cl-getf)) 2786 cl-subseq cl-list-length cl-get cl-getf))
2696 2787
2697;;; Things that are side-effect-and-error-free. 2788;;; Things that are side-effect-and-error-free.
2698(mapc (lambda (x) (put x 'side-effect-free 'error-free)) 2789(mapc (lambda (x) (put x 'side-effect-free 'error-free))
2699 '(eql cl-floatp-safe cl-list* cl-subst cl-acons cl-equalp cl-random-state-p 2790 '(eql cl-floatp-safe cl-list* cl-subst cl-acons cl-equalp
2700 copy-tree cl-sublis)) 2791 cl-random-state-p copy-tree cl-sublis))
2701 2792
2702 2793
2703(run-hooks 'cl-macs-load-hook) 2794(run-hooks 'cl-macs-load-hook)
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index 1fa562e328a..b8fd3c29b5c 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -105,6 +105,9 @@
105 (eq (not (funcall cl-test ,x ,y)) cl-test-not) 105 (eq (not (funcall cl-test ,x ,y)) cl-test-not)
106 (eql ,x ,y))) 106 (eql ,x ,y)))
107 107
108;; Yuck! These vars are set/bound by cl--parsing-keywords to match :if :test
109;; and :key keyword args, and they are also accessed (sometimes) via dynamic
110;; scoping (and some of those accesses are from macro-expanded code).
108(defvar cl-test) (defvar cl-test-not) 111(defvar cl-test) (defvar cl-test-not)
109(defvar cl-if) (defvar cl-if-not) 112(defvar cl-if) (defvar cl-if-not)
110(defvar cl-key) 113(defvar cl-key)
@@ -333,7 +336,8 @@ This is a destructive function; it reuses the storage of SEQ whenever possible.
333 336
334(defun cl--delete-duplicates (cl-seq cl-keys cl-copy) 337(defun cl--delete-duplicates (cl-seq cl-keys cl-copy)
335 (if (listp cl-seq) 338 (if (listp cl-seq)
336 (cl--parsing-keywords (:test :test-not :key (:start 0) :end :from-end :if) 339 (cl--parsing-keywords
340 (:test :test-not :key (:start 0) :end :from-end :if)
337 () 341 ()
338 (if cl-from-end 342 (if cl-from-end
339 (let ((cl-p (nthcdr cl-start cl-seq)) cl-i) 343 (let ((cl-p (nthcdr cl-start cl-seq)) cl-i)
@@ -776,7 +780,8 @@ to avoid corrupting the original LIST1 and LIST2.
776 (setq cl-list1 (prog1 cl-list2 (setq cl-list2 cl-list1)))) 780 (setq cl-list1 (prog1 cl-list2 (setq cl-list2 cl-list1))))
777 (while cl-list2 781 (while cl-list2
778 (if (or cl-keys (numberp (car cl-list2))) 782 (if (or cl-keys (numberp (car cl-list2)))
779 (setq cl-list1 (apply 'cl-adjoin (car cl-list2) cl-list1 cl-keys)) 783 (setq cl-list1
784 (apply 'cl-adjoin (car cl-list2) cl-list1 cl-keys))
780 (or (memq (car cl-list2) cl-list1) 785 (or (memq (car cl-list2) cl-list1)
781 (push (car cl-list2) cl-list1))) 786 (push (car cl-list2) cl-list1)))
782 (pop cl-list2)) 787 (pop cl-list2))
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 40d12358b17..7241b3c5984 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -83,6 +83,12 @@
83;; (delete-region (1- (point)) (point))) 83;; (delete-region (1- (point)) (point)))
84;; (save-buffer))))) 84;; (save-buffer)))))
85 85
86(defun cl-unload-function ()
87 "Stop unloading of the Common Lisp extensions."
88 (message "Cannot unload the feature `cl'")
89 ;; Stop standard unloading!
90 t)
91
86;;; Aliases to cl-lib's features. 92;;; Aliases to cl-lib's features.
87 93
88(dolist (var '( 94(dolist (var '(
@@ -735,4 +741,7 @@ You can replace this macro with `gv-letplace'."
735 (list accessor temp)))) 741 (list accessor temp))))
736 742
737(provide 'cl) 743(provide 'cl)
744
745(run-hooks 'cl-load-hook)
746
738;;; cl.el ends here 747;;; cl.el ends here
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 8c8d37b2194..f4b79eb3016 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -295,16 +295,32 @@ is not very useful."
295 ;; Use a default docstring. 295 ;; Use a default docstring.
296 (setq docstring 296 (setq docstring
297 (if (null parent) 297 (if (null parent)
298 (format "Major-mode. 298 ;; FIXME filling.
299Uses keymap `%s', abbrev table `%s' and syntax-table `%s'." map abbrev syntax) 299 (format "Major-mode.\nUses keymap `%s'%s%s." map
300 (if abbrev (format "%s abbrev table `%s'"
301 (if syntax "," " and") abbrev) "")
302 (if syntax (format " and syntax-table `%s'" syntax) ""))
300 (format "Major mode derived from `%s' by `define-derived-mode'. 303 (format "Major mode derived from `%s' by `define-derived-mode'.
301It inherits all of the parent's attributes, but has its own keymap, 304It inherits all of the parent's attributes, but has its own keymap%s:
302abbrev table and syntax table: 305
303 306 `%s'%s
304 `%s', `%s' and `%s' 307
305 308which more-or-less shadow%s %s's corresponding table%s."
306which more-or-less shadow %s's corresponding tables." 309 parent
307 parent map abbrev syntax parent)))) 310 (cond ((and abbrev syntax)
311 ",\nabbrev table and syntax table")
312 (abbrev "\nand abbrev table")
313 (syntax "\nand syntax table")
314 (t ""))
315 map
316 (cond ((and abbrev syntax)
317 (format ", `%s' and `%s'" abbrev syntax))
318 ((or abbrev syntax)
319 (format " and `%s'" (or abbrev syntax)))
320 (t ""))
321 (if (or abbrev syntax) "" "s")
322 parent
323 (if (or abbrev syntax) "s" "")))))
308 324
309 (unless (string-match (regexp-quote (symbol-name hook)) docstring) 325 (unless (string-match (regexp-quote (symbol-name hook)) docstring)
310 ;; Make sure the docstring mentions the mode's hook. 326 ;; Make sure the docstring mentions the mode's hook.
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 483ed64de20..12311711fe0 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -4268,6 +4268,21 @@ With prefix argument, make it a temporary breakpoint."
4268 4268
4269;;; Finalize Loading 4269;;; Finalize Loading
4270 4270
4271;; When edebugging a function, some of the sub-expressions are
4272;; wrapped in (edebug-enter (lambda () ..)), so we need to teach
4273;; called-interactively-p that calls within the inner lambda should refer to
4274;; the outside function.
4275(add-hook 'called-interactively-p-functions
4276 #'edebug--called-interactively-skip)
4277(defun edebug--called-interactively-skip (i frame1 frame2)
4278 (when (and (eq (car-safe (nth 1 frame1)) 'lambda)
4279 (eq (nth 1 (nth 1 frame1)) '())
4280 (eq (nth 1 frame2) 'edebug-enter))
4281 ;; `edebug-enter' calls itself on its first invocation.
4282 (if (eq (nth 1 (internal--called-interactively-p--get-frame i))
4283 'edebug-enter)
4284 2 1)))
4285
4271;; Finally, hook edebug into the rest of Emacs. 4286;; Finally, hook edebug into the rest of Emacs.
4272;; There are probably some other things that could go here. 4287;; There are probably some other things that could go here.
4273 4288
diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el
index c3b8e5e10d4..60d74774e87 100644
--- a/lisp/emacs-lisp/ert-x.el
+++ b/lisp/emacs-lisp/ert-x.el
@@ -1,4 +1,4 @@
1;;; ert-x.el --- Staging area for experimental extensions to ERT 1;;; ert-x.el --- Staging area for experimental extensions to ERT -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2008, 2010-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2008, 2010-2012 Free Software Foundation, Inc.
4 4
@@ -28,8 +28,7 @@
28 28
29;;; Code: 29;;; Code:
30 30
31(eval-when-compile 31(eval-when-compile (require 'cl-lib))
32 (require 'cl))
33(require 'ert) 32(require 'ert)
34 33
35 34
@@ -90,8 +89,8 @@ ERT--THUNK with that buffer as current."
90 (kill-buffer ert--buffer) 89 (kill-buffer ert--buffer)
91 (remhash ert--buffer ert--test-buffers)))) 90 (remhash ert--buffer ert--test-buffers))))
92 91
93(defmacro* ert-with-test-buffer ((&key ((:name name-form))) 92(cl-defmacro ert-with-test-buffer ((&key ((:name name-form)))
94 &body body) 93 &body body)
95 "Create a test buffer and run BODY in that buffer. 94 "Create a test buffer and run BODY in that buffer.
96 95
97To be used in ERT tests. If BODY finishes successfully, the test 96To be used in ERT tests. If BODY finishes successfully, the test
@@ -116,10 +115,10 @@ the name of the test and the result of NAME-FORM."
116 "Kill all test buffers that are still live." 115 "Kill all test buffers that are still live."
117 (interactive) 116 (interactive)
118 (let ((count 0)) 117 (let ((count 0))
119 (maphash (lambda (buffer dummy) 118 (maphash (lambda (buffer _dummy)
120 (when (or (not (buffer-live-p buffer)) 119 (when (or (not (buffer-live-p buffer))
121 (kill-buffer buffer)) 120 (kill-buffer buffer))
122 (incf count))) 121 (cl-incf count)))
123 ert--test-buffers) 122 ert--test-buffers)
124 (message "%s out of %s test buffers killed" 123 (message "%s out of %s test buffers killed"
125 count (hash-table-count ert--test-buffers))) 124 count (hash-table-count ert--test-buffers)))
@@ -149,9 +148,9 @@ the rest are arguments to the command.
149 148
150NOTE: Since the command is not called by `call-interactively' 149NOTE: Since the command is not called by `call-interactively'
151test for `called-interactively' in the command will fail." 150test for `called-interactively' in the command will fail."
152 (assert (listp command) t) 151 (cl-assert (listp command) t)
153 (assert (commandp (car command)) t) 152 (cl-assert (commandp (car command)) t)
154 (assert (not unread-command-events) t) 153 (cl-assert (not unread-command-events) t)
155 (let (return-value) 154 (let (return-value)
156 ;; For the order of things here see command_loop_1 in keyboard.c. 155 ;; For the order of things here see command_loop_1 in keyboard.c.
157 ;; 156 ;;
@@ -175,7 +174,7 @@ test for `called-interactively' in the command will fail."
175 (when (boundp 'last-repeatable-command) 174 (when (boundp 'last-repeatable-command)
176 (setq last-repeatable-command real-last-command)) 175 (setq last-repeatable-command real-last-command))
177 (when (and deactivate-mark transient-mark-mode) (deactivate-mark)) 176 (when (and deactivate-mark transient-mark-mode) (deactivate-mark))
178 (assert (not unread-command-events) t) 177 (cl-assert (not unread-command-events) t)
179 return-value)) 178 return-value))
180 179
181(defun ert-run-idle-timers () 180(defun ert-run-idle-timers ()
@@ -198,7 +197,7 @@ rather than the entire match."
198 (with-temp-buffer 197 (with-temp-buffer
199 (insert s) 198 (insert s)
200 (dolist (x regexps) 199 (dolist (x regexps)
201 (destructuring-bind (regexp subexp) (if (listp x) x `(,x nil)) 200 (cl-destructuring-bind (regexp subexp) (if (listp x) x `(,x nil))
202 (goto-char (point-min)) 201 (goto-char (point-min))
203 (while (re-search-forward regexp nil t) 202 (while (re-search-forward regexp nil t)
204 (replace-match "" t t nil subexp)))) 203 (replace-match "" t t nil subexp))))
@@ -224,15 +223,15 @@ would return the string \"foo bar baz quux\" where the substring
224None of the ARGS are modified, but the return value may share 223None of the ARGS are modified, but the return value may share
225structure with the plists in ARGS." 224structure with the plists in ARGS."
226 (with-temp-buffer 225 (with-temp-buffer
227 (loop with current-plist = nil 226 (cl-loop with current-plist = nil
228 for x in args do 227 for x in args do
229 (etypecase x 228 (cl-etypecase x
230 (string (let ((begin (point))) 229 (string (let ((begin (point)))
231 (insert x) 230 (insert x)
232 (set-text-properties begin (point) current-plist))) 231 (set-text-properties begin (point) current-plist)))
233 (list (unless (zerop (mod (length x) 2)) 232 (list (unless (zerop (mod (length x) 2))
234 (error "Odd number of args in plist: %S" x)) 233 (error "Odd number of args in plist: %S" x))
235 (setq current-plist x)))) 234 (setq current-plist x))))
236 (buffer-string))) 235 (buffer-string)))
237 236
238 237
@@ -245,8 +244,8 @@ buffer, and renames the original buffer back to BUFFER-NAME.
245 244
246This is useful if THUNK has undesirable side-effects on an Emacs 245This is useful if THUNK has undesirable side-effects on an Emacs
247buffer with a fixed name such as *Messages*." 246buffer with a fixed name such as *Messages*."
248 (lexical-let ((new-buffer-name (generate-new-buffer-name 247 (let ((new-buffer-name (generate-new-buffer-name
249 (format "%s orig buffer" buffer-name)))) 248 (format "%s orig buffer" buffer-name))))
250 (with-current-buffer (get-buffer-create buffer-name) 249 (with-current-buffer (get-buffer-create buffer-name)
251 (rename-buffer new-buffer-name)) 250 (rename-buffer new-buffer-name))
252 (unwind-protect 251 (unwind-protect
@@ -258,7 +257,7 @@ buffer with a fixed name such as *Messages*."
258 (with-current-buffer new-buffer-name 257 (with-current-buffer new-buffer-name
259 (rename-buffer buffer-name))))) 258 (rename-buffer buffer-name)))))
260 259
261(defmacro* ert-with-buffer-renamed ((buffer-name-form) &body body) 260(cl-defmacro ert-with-buffer-renamed ((buffer-name-form) &body body)
262 "Protect the buffer named BUFFER-NAME from side-effects and run BODY. 261 "Protect the buffer named BUFFER-NAME from side-effects and run BODY.
263 262
264See `ert-call-with-buffer-renamed' for details." 263See `ert-call-with-buffer-renamed' for details."
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index ff00be7a237..ab6dcb58143 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -1,4 +1,4 @@
1;;; ert.el --- Emacs Lisp Regression Testing 1;;; ert.el --- Emacs Lisp Regression Testing -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2007-2008, 2010-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2008, 2010-2012 Free Software Foundation, Inc.
4 4
@@ -54,8 +54,7 @@
54 54
55;;; Code: 55;;; Code:
56 56
57(eval-when-compile 57(eval-when-compile (require 'cl-lib))
58 (require 'cl))
59(require 'button) 58(require 'button)
60(require 'debug) 59(require 'debug)
61(require 'easymenu) 60(require 'easymenu)
@@ -105,33 +104,33 @@
105 "A reimplementation of `remove-if-not'. 104 "A reimplementation of `remove-if-not'.
106 105
107ERT-PRED is a predicate, ERT-LIST is the input list." 106ERT-PRED is a predicate, ERT-LIST is the input list."
108 (loop for ert-x in ert-list 107 (cl-loop for ert-x in ert-list
109 if (funcall ert-pred ert-x) 108 if (funcall ert-pred ert-x)
110 collect ert-x)) 109 collect ert-x))
111 110
112(defun ert--intersection (a b) 111(defun ert--intersection (a b)
113 "A reimplementation of `intersection'. Intersect the sets A and B. 112 "A reimplementation of `intersection'. Intersect the sets A and B.
114 113
115Elements are compared using `eql'." 114Elements are compared using `eql'."
116 (loop for x in a 115 (cl-loop for x in a
117 if (memql x b) 116 if (memql x b)
118 collect x)) 117 collect x))
119 118
120(defun ert--set-difference (a b) 119(defun ert--set-difference (a b)
121 "A reimplementation of `set-difference'. Subtract the set B from the set A. 120 "A reimplementation of `set-difference'. Subtract the set B from the set A.
122 121
123Elements are compared using `eql'." 122Elements are compared using `eql'."
124 (loop for x in a 123 (cl-loop for x in a
125 unless (memql x b) 124 unless (memql x b)
126 collect x)) 125 collect x))
127 126
128(defun ert--set-difference-eq (a b) 127(defun ert--set-difference-eq (a b)
129 "A reimplementation of `set-difference'. Subtract the set B from the set A. 128 "A reimplementation of `set-difference'. Subtract the set B from the set A.
130 129
131Elements are compared using `eq'." 130Elements are compared using `eq'."
132 (loop for x in a 131 (cl-loop for x in a
133 unless (memq x b) 132 unless (memq x b)
134 collect x)) 133 collect x))
135 134
136(defun ert--union (a b) 135(defun ert--union (a b)
137 "A reimplementation of `union'. Compute the union of the sets A and B. 136 "A reimplementation of `union'. Compute the union of the sets A and B.
@@ -149,7 +148,7 @@ Elements are compared using `eql'."
149 (make-symbol (format "%s%s" 148 (make-symbol (format "%s%s"
150 prefix 149 prefix
151 (prog1 ert--gensym-counter 150 (prog1 ert--gensym-counter
152 (incf ert--gensym-counter)))))) 151 (cl-incf ert--gensym-counter))))))
153 152
154(defun ert--coerce-to-vector (x) 153(defun ert--coerce-to-vector (x)
155 "Coerce X to a vector." 154 "Coerce X to a vector."
@@ -158,19 +157,19 @@ Elements are compared using `eql'."
158 x 157 x
159 (vconcat x))) 158 (vconcat x)))
160 159
161(defun* ert--remove* (x list &key key test) 160(cl-defun ert--remove* (x list &key key test)
162 "Does not support all the keywords of remove*." 161 "Does not support all the keywords of remove*."
163 (unless key (setq key #'identity)) 162 (unless key (setq key #'identity))
164 (unless test (setq test #'eql)) 163 (unless test (setq test #'eql))
165 (loop for y in list 164 (cl-loop for y in list
166 unless (funcall test x (funcall key y)) 165 unless (funcall test x (funcall key y))
167 collect y)) 166 collect y))
168 167
169(defun ert--string-position (c s) 168(defun ert--string-position (c s)
170 "Return the position of the first occurrence of C in S, or nil if none." 169 "Return the position of the first occurrence of C in S, or nil if none."
171 (loop for i from 0 170 (cl-loop for i from 0
172 for x across s 171 for x across s
173 when (eql x c) return i)) 172 when (eql x c) return i))
174 173
175(defun ert--mismatch (a b) 174(defun ert--mismatch (a b)
176 "Return index of first element that differs between A and B. 175 "Return index of first element that differs between A and B.
@@ -184,29 +183,30 @@ Like `mismatch'. Uses `equal' for comparison."
184 (t 183 (t
185 (let ((la (length a)) 184 (let ((la (length a))
186 (lb (length b))) 185 (lb (length b)))
187 (assert (arrayp a) t) 186 (cl-assert (arrayp a) t)
188 (assert (arrayp b) t) 187 (cl-assert (arrayp b) t)
189 (assert (<= la lb) t) 188 (cl-assert (<= la lb) t)
190 (loop for i below la 189 (cl-loop for i below la
191 when (not (equal (aref a i) (aref b i))) return i 190 when (not (equal (aref a i) (aref b i))) return i
192 finally (return (if (/= la lb) 191 finally (cl-return (if (/= la lb)
193 la 192 la
194 (assert (equal a b) t) 193 (cl-assert (equal a b) t)
195 nil))))))) 194 nil)))))))
196 195
197(defun ert--subseq (seq start &optional end) 196(defun ert--subseq (seq start &optional end)
198 "Return a subsequence of SEQ from START to END." 197 "Return a subsequence of SEQ from START to END."
199 (when (char-table-p seq) (error "Not supported")) 198 (when (char-table-p seq) (error "Not supported"))
200 (let ((vector (substring (ert--coerce-to-vector seq) start end))) 199 (let ((vector (substring (ert--coerce-to-vector seq) start end)))
201 (etypecase seq 200 (cl-etypecase seq
202 (vector vector) 201 (vector vector)
203 (string (concat vector)) 202 (string (concat vector))
204 (list (append vector nil)) 203 (list (append vector nil))
205 (bool-vector (loop with result = (make-bool-vector (length vector) nil) 204 (bool-vector (cl-loop with result
206 for i below (length vector) do 205 = (make-bool-vector (length vector) nil)
207 (setf (aref result i) (aref vector i)) 206 for i below (length vector) do
208 finally (return result))) 207 (setf (aref result i) (aref vector i))
209 (char-table (assert nil))))) 208 finally (cl-return result)))
209 (char-table (cl-assert nil)))))
210 210
211(defun ert-equal-including-properties (a b) 211(defun ert-equal-including-properties (a b)
212 "Return t if A and B have similar structure and contents. 212 "Return t if A and B have similar structure and contents.
@@ -225,10 +225,10 @@ Emacs bug 6581 at URL `http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6581'."
225;;; Defining and locating tests. 225;;; Defining and locating tests.
226 226
227;; The data structure that represents a test case. 227;; The data structure that represents a test case.
228(defstruct ert-test 228(cl-defstruct ert-test
229 (name nil) 229 (name nil)
230 (documentation nil) 230 (documentation nil)
231 (body (assert nil)) 231 (body (cl-assert nil))
232 (most-recent-result nil) 232 (most-recent-result nil)
233 (expected-result-type ':passed) 233 (expected-result-type ':passed)
234 (tags '())) 234 (tags '()))
@@ -273,7 +273,7 @@ Returns a two-element list containing the keys-and-values plist
273and the body." 273and the body."
274 (let ((extracted-key-accu '()) 274 (let ((extracted-key-accu '())
275 (remaining keys-and-body)) 275 (remaining keys-and-body))
276 (while (and (consp remaining) (keywordp (first remaining))) 276 (while (keywordp (car-safe remaining))
277 (let ((keyword (pop remaining))) 277 (let ((keyword (pop remaining)))
278 (unless (consp remaining) 278 (unless (consp remaining)
279 (error "Value expected after keyword %S in %S" 279 (error "Value expected after keyword %S in %S"
@@ -283,13 +283,13 @@ and the body."
283 keys-and-body)) 283 keys-and-body))
284 (push (cons keyword (pop remaining)) extracted-key-accu))) 284 (push (cons keyword (pop remaining)) extracted-key-accu)))
285 (setq extracted-key-accu (nreverse extracted-key-accu)) 285 (setq extracted-key-accu (nreverse extracted-key-accu))
286 (list (loop for (key . value) in extracted-key-accu 286 (list (cl-loop for (key . value) in extracted-key-accu
287 collect key 287 collect key
288 collect value) 288 collect value)
289 remaining))) 289 remaining)))
290 290
291;;;###autoload 291;;;###autoload
292(defmacro* ert-deftest (name () &body docstring-keys-and-body) 292(cl-defmacro ert-deftest (name () &body docstring-keys-and-body)
293 "Define NAME (a symbol) as a test. 293 "Define NAME (a symbol) as a test.
294 294
295BODY is evaluated as a `progn' when the test is run. It should 295BODY is evaluated as a `progn' when the test is run. It should
@@ -313,12 +313,13 @@ description of valid values for RESULT-TYPE.
313 (indent 2)) 313 (indent 2))
314 (let ((documentation nil) 314 (let ((documentation nil)
315 (documentation-supplied-p nil)) 315 (documentation-supplied-p nil))
316 (when (stringp (first docstring-keys-and-body)) 316 (when (stringp (car docstring-keys-and-body))
317 (setq documentation (pop docstring-keys-and-body) 317 (setq documentation (pop docstring-keys-and-body)
318 documentation-supplied-p t)) 318 documentation-supplied-p t))
319 (destructuring-bind ((&key (expected-result nil expected-result-supplied-p) 319 (cl-destructuring-bind
320 (tags nil tags-supplied-p)) 320 ((&key (expected-result nil expected-result-supplied-p)
321 body) 321 (tags nil tags-supplied-p))
322 body)
322 (ert--parse-keys-and-body docstring-keys-and-body) 323 (ert--parse-keys-and-body docstring-keys-and-body)
323 `(progn 324 `(progn
324 (ert-set-test ',name 325 (ert-set-test ',name
@@ -388,16 +389,11 @@ DATA is displayed to the user and should state the reason of the failure."
388(defun ert--expand-should-1 (whole form inner-expander) 389(defun ert--expand-should-1 (whole form inner-expander)
389 "Helper function for the `should' macro and its variants." 390 "Helper function for the `should' macro and its variants."
390 (let ((form 391 (let ((form
391 ;; If `cl-macroexpand' isn't bound, the code that we're 392 (macroexpand form (cond
392 ;; compiling doesn't depend on cl and thus doesn't need an 393 ((boundp 'macroexpand-all-environment)
393 ;; environment arg for `macroexpand'. 394 macroexpand-all-environment)
394 (if (fboundp 'cl-macroexpand) 395 ((boundp 'cl-macro-environment)
395 ;; Suppress warning about run-time call to cl function: we 396 cl-macro-environment)))))
396 ;; only call it if it's fboundp.
397 (with-no-warnings
398 (cl-macroexpand form (and (boundp 'cl-macro-environment)
399 cl-macro-environment)))
400 (macroexpand form))))
401 (cond 397 (cond
402 ((or (atom form) (ert--special-operator-p (car form))) 398 ((or (atom form) (ert--special-operator-p (car form)))
403 (let ((value (ert--gensym "value-"))) 399 (let ((value (ert--gensym "value-")))
@@ -410,10 +406,10 @@ DATA is displayed to the user and should state the reason of the failure."
410 (t 406 (t
411 (let ((fn-name (car form)) 407 (let ((fn-name (car form))
412 (arg-forms (cdr form))) 408 (arg-forms (cdr form)))
413 (assert (or (symbolp fn-name) 409 (cl-assert (or (symbolp fn-name)
414 (and (consp fn-name) 410 (and (consp fn-name)
415 (eql (car fn-name) 'lambda) 411 (eql (car fn-name) 'lambda)
416 (listp (cdr fn-name))))) 412 (listp (cdr fn-name)))))
417 (let ((fn (ert--gensym "fn-")) 413 (let ((fn (ert--gensym "fn-"))
418 (args (ert--gensym "args-")) 414 (args (ert--gensym "args-"))
419 (value (ert--gensym "value-")) 415 (value (ert--gensym "value-"))
@@ -451,35 +447,34 @@ should return code that calls INNER-FORM and performs the checks
451and error signaling specific to the particular variant of 447and error signaling specific to the particular variant of
452`should'. The code that INNER-EXPANDER returns must not call 448`should'. The code that INNER-EXPANDER returns must not call
453FORM-DESCRIPTION-FORM before it has called INNER-FORM." 449FORM-DESCRIPTION-FORM before it has called INNER-FORM."
454 (lexical-let ((inner-expander inner-expander)) 450 (ert--expand-should-1
455 (ert--expand-should-1 451 whole form
456 whole form 452 (lambda (inner-form form-description-form value-var)
457 (lambda (inner-form form-description-form value-var) 453 (let ((form-description (ert--gensym "form-description-")))
458 (let ((form-description (ert--gensym "form-description-"))) 454 `(let (,form-description)
459 `(let (,form-description) 455 ,(funcall inner-expander
460 ,(funcall inner-expander 456 `(unwind-protect
461 `(unwind-protect 457 ,inner-form
462 ,inner-form 458 (setq ,form-description ,form-description-form)
463 (setq ,form-description ,form-description-form) 459 (ert--signal-should-execution ,form-description))
464 (ert--signal-should-execution ,form-description)) 460 `,form-description
465 `,form-description 461 value-var))))))
466 value-var))))))) 462
467 463(cl-defmacro should (form)
468(defmacro* should (form)
469 "Evaluate FORM. If it returns nil, abort the current test as failed. 464 "Evaluate FORM. If it returns nil, abort the current test as failed.
470 465
471Returns the value of FORM." 466Returns the value of FORM."
472 (ert--expand-should `(should ,form) form 467 (ert--expand-should `(should ,form) form
473 (lambda (inner-form form-description-form value-var) 468 (lambda (inner-form form-description-form _value-var)
474 `(unless ,inner-form 469 `(unless ,inner-form
475 (ert-fail ,form-description-form))))) 470 (ert-fail ,form-description-form)))))
476 471
477(defmacro* should-not (form) 472(cl-defmacro should-not (form)
478 "Evaluate FORM. If it returns non-nil, abort the current test as failed. 473 "Evaluate FORM. If it returns non-nil, abort the current test as failed.
479 474
480Returns nil." 475Returns nil."
481 (ert--expand-should `(should-not ,form) form 476 (ert--expand-should `(should-not ,form) form
482 (lambda (inner-form form-description-form value-var) 477 (lambda (inner-form form-description-form _value-var)
483 `(unless (not ,inner-form) 478 `(unless (not ,inner-form)
484 (ert-fail ,form-description-form))))) 479 (ert-fail ,form-description-form)))))
485 480
@@ -490,10 +485,10 @@ Returns nil."
490Determines whether CONDITION matches TYPE and EXCLUDE-SUBTYPES, 485Determines whether CONDITION matches TYPE and EXCLUDE-SUBTYPES,
491and aborts the current test as failed if it doesn't." 486and aborts the current test as failed if it doesn't."
492 (let ((signaled-conditions (get (car condition) 'error-conditions)) 487 (let ((signaled-conditions (get (car condition) 'error-conditions))
493 (handled-conditions (etypecase type 488 (handled-conditions (cl-etypecase type
494 (list type) 489 (list type)
495 (symbol (list type))))) 490 (symbol (list type)))))
496 (assert signaled-conditions) 491 (cl-assert signaled-conditions)
497 (unless (ert--intersection signaled-conditions handled-conditions) 492 (unless (ert--intersection signaled-conditions handled-conditions)
498 (ert-fail (append 493 (ert-fail (append
499 (funcall form-description-fn) 494 (funcall form-description-fn)
@@ -512,7 +507,7 @@ and aborts the current test as failed if it doesn't."
512 507
513;; FIXME: The expansion will evaluate the keyword args (if any) in 508;; FIXME: The expansion will evaluate the keyword args (if any) in
514;; nonstandard order. 509;; nonstandard order.
515(defmacro* should-error (form &rest keys &key type exclude-subtypes) 510(cl-defmacro should-error (form &rest keys &key type exclude-subtypes)
516 "Evaluate FORM and check that it signals an error. 511 "Evaluate FORM and check that it signals an error.
517 512
518The error signaled needs to match TYPE. TYPE should be a list 513The error signaled needs to match TYPE. TYPE should be a list
@@ -560,19 +555,19 @@ failed."
560 555
561(defun ert--proper-list-p (x) 556(defun ert--proper-list-p (x)
562 "Return non-nil if X is a proper list, nil otherwise." 557 "Return non-nil if X is a proper list, nil otherwise."
563 (loop 558 (cl-loop
564 for firstp = t then nil 559 for firstp = t then nil
565 for fast = x then (cddr fast) 560 for fast = x then (cddr fast)
566 for slow = x then (cdr slow) do 561 for slow = x then (cdr slow) do
567 (when (null fast) (return t)) 562 (when (null fast) (cl-return t))
568 (when (not (consp fast)) (return nil)) 563 (when (not (consp fast)) (cl-return nil))
569 (when (null (cdr fast)) (return t)) 564 (when (null (cdr fast)) (cl-return t))
570 (when (not (consp (cdr fast))) (return nil)) 565 (when (not (consp (cdr fast))) (cl-return nil))
571 (when (and (not firstp) (eq fast slow)) (return nil)))) 566 (when (and (not firstp) (eq fast slow)) (cl-return nil))))
572 567
573(defun ert--explain-format-atom (x) 568(defun ert--explain-format-atom (x)
574 "Format the atom X for `ert--explain-equal'." 569 "Format the atom X for `ert--explain-equal'."
575 (typecase x 570 (cl-typecase x
576 (fixnum (list x (format "#x%x" x) (format "?%c" x))) 571 (fixnum (list x (format "#x%x" x) (format "?%c" x)))
577 (t x))) 572 (t x)))
578 573
@@ -581,7 +576,7 @@ failed."
581Returns nil if they are." 576Returns nil if they are."
582 (if (not (equal (type-of a) (type-of b))) 577 (if (not (equal (type-of a) (type-of b)))
583 `(different-types ,a ,b) 578 `(different-types ,a ,b)
584 (etypecase a 579 (cl-etypecase a
585 (cons 580 (cons
586 (let ((a-proper-p (ert--proper-list-p a)) 581 (let ((a-proper-p (ert--proper-list-p a))
587 (b-proper-p (ert--proper-list-p b))) 582 (b-proper-p (ert--proper-list-p b)))
@@ -593,19 +588,19 @@ Returns nil if they are."
593 ,a ,b 588 ,a ,b
594 first-mismatch-at 589 first-mismatch-at
595 ,(ert--mismatch a b)) 590 ,(ert--mismatch a b))
596 (loop for i from 0 591 (cl-loop for i from 0
597 for ai in a 592 for ai in a
598 for bi in b 593 for bi in b
599 for xi = (ert--explain-equal-rec ai bi) 594 for xi = (ert--explain-equal-rec ai bi)
600 do (when xi (return `(list-elt ,i ,xi))) 595 do (when xi (cl-return `(list-elt ,i ,xi)))
601 finally (assert (equal a b) t))) 596 finally (cl-assert (equal a b) t)))
602 (let ((car-x (ert--explain-equal-rec (car a) (car b)))) 597 (let ((car-x (ert--explain-equal-rec (car a) (car b))))
603 (if car-x 598 (if car-x
604 `(car ,car-x) 599 `(car ,car-x)
605 (let ((cdr-x (ert--explain-equal-rec (cdr a) (cdr b)))) 600 (let ((cdr-x (ert--explain-equal-rec (cdr a) (cdr b))))
606 (if cdr-x 601 (if cdr-x
607 `(cdr ,cdr-x) 602 `(cdr ,cdr-x)
608 (assert (equal a b) t) 603 (cl-assert (equal a b) t)
609 nil)))))))) 604 nil))))))))
610 (array (if (not (equal (length a) (length b))) 605 (array (if (not (equal (length a) (length b)))
611 `(arrays-of-different-length ,(length a) ,(length b) 606 `(arrays-of-different-length ,(length a) ,(length b)
@@ -613,12 +608,12 @@ Returns nil if they are."
613 ,@(unless (char-table-p a) 608 ,@(unless (char-table-p a)
614 `(first-mismatch-at 609 `(first-mismatch-at
615 ,(ert--mismatch a b)))) 610 ,(ert--mismatch a b))))
616 (loop for i from 0 611 (cl-loop for i from 0
617 for ai across a 612 for ai across a
618 for bi across b 613 for bi across b
619 for xi = (ert--explain-equal-rec ai bi) 614 for xi = (ert--explain-equal-rec ai bi)
620 do (when xi (return `(array-elt ,i ,xi))) 615 do (when xi (cl-return `(array-elt ,i ,xi)))
621 finally (assert (equal a b) t)))) 616 finally (cl-assert (equal a b) t))))
622 (atom (if (not (equal a b)) 617 (atom (if (not (equal a b))
623 (if (and (symbolp a) (symbolp b) (string= a b)) 618 (if (and (symbolp a) (symbolp b) (string= a b))
624 `(different-symbols-with-the-same-name ,a ,b) 619 `(different-symbols-with-the-same-name ,a ,b)
@@ -637,10 +632,10 @@ Returns nil if they are."
637 632
638(defun ert--significant-plist-keys (plist) 633(defun ert--significant-plist-keys (plist)
639 "Return the keys of PLIST that have non-null values, in order." 634 "Return the keys of PLIST that have non-null values, in order."
640 (assert (zerop (mod (length plist) 2)) t) 635 (cl-assert (zerop (mod (length plist) 2)) t)
641 (loop for (key value . rest) on plist by #'cddr 636 (cl-loop for (key value . rest) on plist by #'cddr
642 unless (or (null value) (memq key accu)) collect key into accu 637 unless (or (null value) (memq key accu)) collect key into accu
643 finally (return accu))) 638 finally (cl-return accu)))
644 639
645(defun ert--plist-difference-explanation (a b) 640(defun ert--plist-difference-explanation (a b)
646 "Return a programmer-readable explanation of why A and B are different plists. 641 "Return a programmer-readable explanation of why A and B are different plists.
@@ -648,8 +643,8 @@ Returns nil if they are."
648Returns nil if they are equivalent, i.e., have the same value for 643Returns nil if they are equivalent, i.e., have the same value for
649each key, where absent values are treated as nil. The order of 644each key, where absent values are treated as nil. The order of
650key/value pairs in each list does not matter." 645key/value pairs in each list does not matter."
651 (assert (zerop (mod (length a) 2)) t) 646 (cl-assert (zerop (mod (length a) 2)) t)
652 (assert (zerop (mod (length b) 2)) t) 647 (cl-assert (zerop (mod (length b) 2)) t)
653 ;; Normalizing the plists would be another way to do this but it 648 ;; Normalizing the plists would be another way to do this but it
654 ;; requires a total ordering on all lisp objects (since any object 649 ;; requires a total ordering on all lisp objects (since any object
655 ;; is valid as a text property key). Perhaps defining such an 650 ;; is valid as a text property key). Perhaps defining such an
@@ -659,21 +654,21 @@ key/value pairs in each list does not matter."
659 (keys-b (ert--significant-plist-keys b)) 654 (keys-b (ert--significant-plist-keys b))
660 (keys-in-a-not-in-b (ert--set-difference-eq keys-a keys-b)) 655 (keys-in-a-not-in-b (ert--set-difference-eq keys-a keys-b))
661 (keys-in-b-not-in-a (ert--set-difference-eq keys-b keys-a))) 656 (keys-in-b-not-in-a (ert--set-difference-eq keys-b keys-a)))
662 (flet ((explain-with-key (key) 657 (cl-flet ((explain-with-key (key)
663 (let ((value-a (plist-get a key)) 658 (let ((value-a (plist-get a key))
664 (value-b (plist-get b key))) 659 (value-b (plist-get b key)))
665 (assert (not (equal value-a value-b)) t) 660 (cl-assert (not (equal value-a value-b)) t)
666 `(different-properties-for-key 661 `(different-properties-for-key
667 ,key ,(ert--explain-equal-including-properties value-a 662 ,key ,(ert--explain-equal-including-properties value-a
668 value-b))))) 663 value-b)))))
669 (cond (keys-in-a-not-in-b 664 (cond (keys-in-a-not-in-b
670 (explain-with-key (first keys-in-a-not-in-b))) 665 (explain-with-key (car keys-in-a-not-in-b)))
671 (keys-in-b-not-in-a 666 (keys-in-b-not-in-a
672 (explain-with-key (first keys-in-b-not-in-a))) 667 (explain-with-key (car keys-in-b-not-in-a)))
673 (t 668 (t
674 (loop for key in keys-a 669 (cl-loop for key in keys-a
675 when (not (equal (plist-get a key) (plist-get b key))) 670 when (not (equal (plist-get a key) (plist-get b key)))
676 return (explain-with-key key))))))) 671 return (explain-with-key key)))))))
677 672
678(defun ert--abbreviate-string (s len suffixp) 673(defun ert--abbreviate-string (s len suffixp)
679 "Shorten string S to at most LEN chars. 674 "Shorten string S to at most LEN chars.
@@ -697,29 +692,30 @@ Returns a programmer-readable explanation of why A and B are not
697`ert-equal-including-properties', or nil if they are." 692`ert-equal-including-properties', or nil if they are."
698 (if (not (equal a b)) 693 (if (not (equal a b))
699 (ert--explain-equal a b) 694 (ert--explain-equal a b)
700 (assert (stringp a) t) 695 (cl-assert (stringp a) t)
701 (assert (stringp b) t) 696 (cl-assert (stringp b) t)
702 (assert (eql (length a) (length b)) t) 697 (cl-assert (eql (length a) (length b)) t)
703 (loop for i from 0 to (length a) 698 (cl-loop for i from 0 to (length a)
704 for props-a = (text-properties-at i a) 699 for props-a = (text-properties-at i a)
705 for props-b = (text-properties-at i b) 700 for props-b = (text-properties-at i b)
706 for difference = (ert--plist-difference-explanation props-a props-b) 701 for difference = (ert--plist-difference-explanation
707 do (when difference 702 props-a props-b)
708 (return `(char ,i ,(substring-no-properties a i (1+ i)) 703 do (when difference
709 ,difference 704 (cl-return `(char ,i ,(substring-no-properties a i (1+ i))
710 context-before 705 ,difference
711 ,(ert--abbreviate-string 706 context-before
712 (substring-no-properties a 0 i) 707 ,(ert--abbreviate-string
713 10 t) 708 (substring-no-properties a 0 i)
714 context-after 709 10 t)
715 ,(ert--abbreviate-string 710 context-after
716 (substring-no-properties a (1+ i)) 711 ,(ert--abbreviate-string
717 10 nil)))) 712 (substring-no-properties a (1+ i))
718 ;; TODO(ohler): Get `equal-including-properties' fixed in 713 10 nil))))
719 ;; Emacs, delete `ert-equal-including-properties', and 714 ;; TODO(ohler): Get `equal-including-properties' fixed in
720 ;; re-enable this assertion. 715 ;; Emacs, delete `ert-equal-including-properties', and
721 ;;finally (assert (equal-including-properties a b) t) 716 ;; re-enable this assertion.
722 ))) 717 ;;finally (cl-assert (equal-including-properties a b) t)
718 )))
723(put 'ert-equal-including-properties 719(put 'ert-equal-including-properties
724 'ert-explainer 720 'ert-explainer
725 'ert--explain-equal-including-properties) 721 'ert--explain-equal-including-properties)
@@ -734,8 +730,8 @@ Returns a programmer-readable explanation of why A and B are not
734 730
735Bound dynamically. This is a list of (PREFIX . MESSAGE) pairs.") 731Bound dynamically. This is a list of (PREFIX . MESSAGE) pairs.")
736 732
737(defmacro* ert-info ((message-form &key ((:prefix prefix-form) "Info: ")) 733(cl-defmacro ert-info ((message-form &key ((:prefix prefix-form) "Info: "))
738 &body body) 734 &body body)
739 "Evaluate MESSAGE-FORM and BODY, and report the message if BODY fails. 735 "Evaluate MESSAGE-FORM and BODY, and report the message if BODY fails.
740 736
741To be used within ERT tests. MESSAGE-FORM should evaluate to a 737To be used within ERT tests. MESSAGE-FORM should evaluate to a
@@ -755,18 +751,19 @@ and is displayed in front of the value of MESSAGE-FORM."
755 "Non-nil means enter debugger when a test fails or terminates with an error.") 751 "Non-nil means enter debugger when a test fails or terminates with an error.")
756 752
757;; The data structures that represent the result of running a test. 753;; The data structures that represent the result of running a test.
758(defstruct ert-test-result 754(cl-defstruct ert-test-result
759 (messages nil) 755 (messages nil)
760 (should-forms nil) 756 (should-forms nil)
761 ) 757 )
762(defstruct (ert-test-passed (:include ert-test-result))) 758(cl-defstruct (ert-test-passed (:include ert-test-result)))
763(defstruct (ert-test-result-with-condition (:include ert-test-result)) 759(cl-defstruct (ert-test-result-with-condition (:include ert-test-result))
764 (condition (assert nil)) 760 (condition (cl-assert nil))
765 (backtrace (assert nil)) 761 (backtrace (cl-assert nil))
766 (infos (assert nil))) 762 (infos (cl-assert nil)))
767(defstruct (ert-test-quit (:include ert-test-result-with-condition))) 763(cl-defstruct (ert-test-quit (:include ert-test-result-with-condition)))
768(defstruct (ert-test-failed (:include ert-test-result-with-condition))) 764(cl-defstruct (ert-test-failed (:include ert-test-result-with-condition)))
769(defstruct (ert-test-aborted-with-non-local-exit (:include ert-test-result))) 765(cl-defstruct (ert-test-aborted-with-non-local-exit
766 (:include ert-test-result)))
770 767
771 768
772(defun ert--record-backtrace () 769(defun ert--record-backtrace ()
@@ -779,7 +776,7 @@ and is displayed in front of the value of MESSAGE-FORM."
779 ;; `ert-results-pop-to-backtrace-for-test-at-point' given that we 776 ;; `ert-results-pop-to-backtrace-for-test-at-point' given that we
780 ;; already have `ert-results-rerun-test-debugging-errors-at-point'. 777 ;; already have `ert-results-rerun-test-debugging-errors-at-point'.
781 ;; For batch use, however, printing the backtrace may be useful. 778 ;; For batch use, however, printing the backtrace may be useful.
782 (loop 779 (cl-loop
783 ;; 6 is the number of frames our own debugger adds (when 780 ;; 6 is the number of frames our own debugger adds (when
784 ;; compiled; more when interpreted). FIXME: Need to describe a 781 ;; compiled; more when interpreted). FIXME: Need to describe a
785 ;; procedure for determining this constant. 782 ;; procedure for determining this constant.
@@ -796,33 +793,33 @@ and is displayed in front of the value of MESSAGE-FORM."
796 (print-level 8) 793 (print-level 8)
797 (print-length 50)) 794 (print-length 50))
798 (dolist (frame backtrace) 795 (dolist (frame backtrace)
799 (ecase (first frame) 796 (cl-ecase (car frame)
800 ((nil) 797 ((nil)
801 ;; Special operator. 798 ;; Special operator.
802 (destructuring-bind (special-operator &rest arg-forms) 799 (cl-destructuring-bind (special-operator &rest arg-forms)
803 (cdr frame) 800 (cdr frame)
804 (insert 801 (insert
805 (format " %S\n" (list* special-operator arg-forms))))) 802 (format " %S\n" (cons special-operator arg-forms)))))
806 ((t) 803 ((t)
807 ;; Function call. 804 ;; Function call.
808 (destructuring-bind (fn &rest args) (cdr frame) 805 (cl-destructuring-bind (fn &rest args) (cdr frame)
809 (insert (format " %S(" fn)) 806 (insert (format " %S(" fn))
810 (loop for firstp = t then nil 807 (cl-loop for firstp = t then nil
811 for arg in args do 808 for arg in args do
812 (unless firstp 809 (unless firstp
813 (insert " ")) 810 (insert " "))
814 (insert (format "%S" arg))) 811 (insert (format "%S" arg)))
815 (insert ")\n"))))))) 812 (insert ")\n")))))))
816 813
817;; A container for the state of the execution of a single test and 814;; A container for the state of the execution of a single test and
818;; environment data needed during its execution. 815;; environment data needed during its execution.
819(defstruct ert--test-execution-info 816(cl-defstruct ert--test-execution-info
820 (test (assert nil)) 817 (test (cl-assert nil))
821 (result (assert nil)) 818 (result (cl-assert nil))
822 ;; A thunk that may be called when RESULT has been set to its final 819 ;; A thunk that may be called when RESULT has been set to its final
823 ;; value and test execution should be terminated. Should not 820 ;; value and test execution should be terminated. Should not
824 ;; return. 821 ;; return.
825 (exit-continuation (assert nil)) 822 (exit-continuation (cl-assert nil))
826 ;; The binding of `debugger' outside of the execution of the test. 823 ;; The binding of `debugger' outside of the execution of the test.
827 next-debugger 824 next-debugger
828 ;; The binding of `ert-debug-on-error' that is in effect for the 825 ;; The binding of `ert-debug-on-error' that is in effect for the
@@ -831,7 +828,7 @@ and is displayed in front of the value of MESSAGE-FORM."
831 ;; don't remember whether this feature is important.) 828 ;; don't remember whether this feature is important.)
832 ert-debug-on-error) 829 ert-debug-on-error)
833 830
834(defun ert--run-test-debugger (info debugger-args) 831(defun ert--run-test-debugger (info args)
835 "During a test run, `debugger' is bound to a closure that calls this function. 832 "During a test run, `debugger' is bound to a closure that calls this function.
836 833
837This function records failures and errors and either terminates 834This function records failures and errors and either terminates
@@ -839,21 +836,21 @@ the test silently or calls the interactive debugger, as
839appropriate. 836appropriate.
840 837
841INFO is the ert--test-execution-info corresponding to this test 838INFO is the ert--test-execution-info corresponding to this test
842run. DEBUGGER-ARGS are the arguments to `debugger'." 839run. ARGS are the arguments to `debugger'."
843 (destructuring-bind (first-debugger-arg &rest more-debugger-args) 840 (cl-destructuring-bind (first-debugger-arg &rest more-debugger-args)
844 debugger-args 841 args
845 (ecase first-debugger-arg 842 (cl-ecase first-debugger-arg
846 ((lambda debug t exit nil) 843 ((lambda debug t exit nil)
847 (apply (ert--test-execution-info-next-debugger info) debugger-args)) 844 (apply (ert--test-execution-info-next-debugger info) args))
848 (error 845 (error
849 (let* ((condition (first more-debugger-args)) 846 (let* ((condition (car more-debugger-args))
850 (type (case (car condition) 847 (type (cl-case (car condition)
851 ((quit) 'quit) 848 ((quit) 'quit)
852 (otherwise 'failed))) 849 (otherwise 'failed)))
853 (backtrace (ert--record-backtrace)) 850 (backtrace (ert--record-backtrace))
854 (infos (reverse ert--infos))) 851 (infos (reverse ert--infos)))
855 (setf (ert--test-execution-info-result info) 852 (setf (ert--test-execution-info-result info)
856 (ecase type 853 (cl-ecase type
857 (quit 854 (quit
858 (make-ert-test-quit :condition condition 855 (make-ert-test-quit :condition condition
859 :backtrace backtrace 856 :backtrace backtrace
@@ -864,39 +861,42 @@ run. DEBUGGER-ARGS are the arguments to `debugger'."
864 :infos infos)))) 861 :infos infos))))
865 ;; Work around Emacs's heuristic (in eval.c) for detecting 862 ;; Work around Emacs's heuristic (in eval.c) for detecting
866 ;; errors in the debugger. 863 ;; errors in the debugger.
867 (incf num-nonmacro-input-events) 864 (cl-incf num-nonmacro-input-events)
868 ;; FIXME: We should probably implement more fine-grained 865 ;; FIXME: We should probably implement more fine-grained
869 ;; control a la non-t `debug-on-error' here. 866 ;; control a la non-t `debug-on-error' here.
870 (cond 867 (cond
871 ((ert--test-execution-info-ert-debug-on-error info) 868 ((ert--test-execution-info-ert-debug-on-error info)
872 (apply (ert--test-execution-info-next-debugger info) debugger-args)) 869 (apply (ert--test-execution-info-next-debugger info) args))
873 (t)) 870 (t))
874 (funcall (ert--test-execution-info-exit-continuation info))))))) 871 (funcall (ert--test-execution-info-exit-continuation info)))))))
875 872
876(defun ert--run-test-internal (ert-test-execution-info) 873(defun ert--run-test-internal (test-execution-info)
877 "Low-level function to run a test according to ERT-TEST-EXECUTION-INFO. 874 "Low-level function to run a test according to TEST-EXECUTION-INFO.
878 875
879This mainly sets up debugger-related bindings." 876This mainly sets up debugger-related bindings."
880 (lexical-let ((info ert-test-execution-info)) 877 (setf (ert--test-execution-info-next-debugger test-execution-info) debugger
881 (setf (ert--test-execution-info-next-debugger info) debugger 878 (ert--test-execution-info-ert-debug-on-error test-execution-info)
882 (ert--test-execution-info-ert-debug-on-error info) ert-debug-on-error) 879 ert-debug-on-error)
883 (catch 'ert--pass 880 (catch 'ert--pass
884 ;; For now, each test gets its own temp buffer and its own 881 ;; For now, each test gets its own temp buffer and its own
885 ;; window excursion, just to be safe. If this turns out to be 882 ;; window excursion, just to be safe. If this turns out to be
886 ;; too expensive, we can remove it. 883 ;; too expensive, we can remove it.
887 (with-temp-buffer 884 (with-temp-buffer
888 (save-window-excursion 885 (save-window-excursion
889 (let ((debugger (lambda (&rest debugger-args) 886 (let ((debugger (lambda (&rest args)
890 (ert--run-test-debugger info debugger-args))) 887 (ert--run-test-debugger test-execution-info
891 (debug-on-error t) 888 args)))
892 (debug-on-quit t) 889 (debug-on-error t)
893 ;; FIXME: Do we need to store the old binding of this 890 (debug-on-quit t)
894 ;; and consider it in `ert--run-test-debugger'? 891 ;; FIXME: Do we need to store the old binding of this
895 (debug-ignored-errors nil) 892 ;; and consider it in `ert--run-test-debugger'?
896 (ert--infos '())) 893 (debug-ignored-errors nil)
897 (funcall (ert-test-body (ert--test-execution-info-test info)))))) 894 (ert--infos '()))
898 (ert-pass)) 895 (funcall (ert-test-body (ert--test-execution-info-test
899 (setf (ert--test-execution-info-result info) (make-ert-test-passed))) 896 test-execution-info))))))
897 (ert-pass))
898 (setf (ert--test-execution-info-result test-execution-info)
899 (make-ert-test-passed))
900 nil) 900 nil)
901 901
902(defun ert--force-message-log-buffer-truncation () 902(defun ert--force-message-log-buffer-truncation ()
@@ -934,18 +934,18 @@ The elements are of type `ert-test'.")
934 934
935Returns the result and stores it in ERT-TEST's `most-recent-result' slot." 935Returns the result and stores it in ERT-TEST's `most-recent-result' slot."
936 (setf (ert-test-most-recent-result ert-test) nil) 936 (setf (ert-test-most-recent-result ert-test) nil)
937 (block error 937 (cl-block error
938 (lexical-let ((begin-marker 938 (let ((begin-marker
939 (with-current-buffer (get-buffer-create "*Messages*") 939 (with-current-buffer (get-buffer-create "*Messages*")
940 (set-marker (make-marker) (point-max))))) 940 (set-marker (make-marker) (point-max)))))
941 (unwind-protect 941 (unwind-protect
942 (lexical-let ((info (make-ert--test-execution-info 942 (let ((info (make-ert--test-execution-info
943 :test ert-test 943 :test ert-test
944 :result 944 :result
945 (make-ert-test-aborted-with-non-local-exit) 945 (make-ert-test-aborted-with-non-local-exit)
946 :exit-continuation (lambda () 946 :exit-continuation (lambda ()
947 (return-from error nil)))) 947 (cl-return-from error nil))))
948 (should-form-accu (list))) 948 (should-form-accu (list)))
949 (unwind-protect 949 (unwind-protect
950 (let ((ert--should-execution-observer 950 (let ((ert--should-execution-observer
951 (lambda (form-description) 951 (lambda (form-description)
@@ -987,32 +987,32 @@ t -- Always matches.
987 RESULT." 987 RESULT."
988 ;; It would be easy to add `member' and `eql' types etc., but I 988 ;; It would be easy to add `member' and `eql' types etc., but I
989 ;; haven't bothered yet. 989 ;; haven't bothered yet.
990 (etypecase result-type 990 (cl-etypecase result-type
991 ((member nil) nil) 991 ((member nil) nil)
992 ((member t) t) 992 ((member t) t)
993 ((member :failed) (ert-test-failed-p result)) 993 ((member :failed) (ert-test-failed-p result))
994 ((member :passed) (ert-test-passed-p result)) 994 ((member :passed) (ert-test-passed-p result))
995 (cons 995 (cons
996 (destructuring-bind (operator &rest operands) result-type 996 (cl-destructuring-bind (operator &rest operands) result-type
997 (ecase operator 997 (cl-ecase operator
998 (and 998 (and
999 (case (length operands) 999 (cl-case (length operands)
1000 (0 t) 1000 (0 t)
1001 (t 1001 (t
1002 (and (ert-test-result-type-p result (first operands)) 1002 (and (ert-test-result-type-p result (car operands))
1003 (ert-test-result-type-p result `(and ,@(rest operands))))))) 1003 (ert-test-result-type-p result `(and ,@(cdr operands)))))))
1004 (or 1004 (or
1005 (case (length operands) 1005 (cl-case (length operands)
1006 (0 nil) 1006 (0 nil)
1007 (t 1007 (t
1008 (or (ert-test-result-type-p result (first operands)) 1008 (or (ert-test-result-type-p result (car operands))
1009 (ert-test-result-type-p result `(or ,@(rest operands))))))) 1009 (ert-test-result-type-p result `(or ,@(cdr operands)))))))
1010 (not 1010 (not
1011 (assert (eql (length operands) 1)) 1011 (cl-assert (eql (length operands) 1))
1012 (not (ert-test-result-type-p result (first operands)))) 1012 (not (ert-test-result-type-p result (car operands))))
1013 (satisfies 1013 (satisfies
1014 (assert (eql (length operands) 1)) 1014 (cl-assert (eql (length operands) 1))
1015 (funcall (first operands) result))))))) 1015 (funcall (car operands) result)))))))
1016 1016
1017(defun ert-test-result-expected-p (test result) 1017(defun ert-test-result-expected-p (test result)
1018 "Return non-nil if TEST's expected result type matches RESULT." 1018 "Return non-nil if TEST's expected result type matches RESULT."
@@ -1053,9 +1053,9 @@ set implied by them without checking whether it is really
1053contained in UNIVERSE." 1053contained in UNIVERSE."
1054 ;; This code needs to match the etypecase in 1054 ;; This code needs to match the etypecase in
1055 ;; `ert-insert-human-readable-selector'. 1055 ;; `ert-insert-human-readable-selector'.
1056 (etypecase selector 1056 (cl-etypecase selector
1057 ((member nil) nil) 1057 ((member nil) nil)
1058 ((member t) (etypecase universe 1058 ((member t) (cl-etypecase universe
1059 (list universe) 1059 (list universe)
1060 ((member t) (ert-select-tests "" universe)))) 1060 ((member t) (ert-select-tests "" universe))))
1061 ((member :new) (ert-select-tests 1061 ((member :new) (ert-select-tests
@@ -1083,7 +1083,7 @@ contained in UNIVERSE."
1083 universe)) 1083 universe))
1084 ((member :unexpected) (ert-select-tests `(not :expected) universe)) 1084 ((member :unexpected) (ert-select-tests `(not :expected) universe))
1085 (string 1085 (string
1086 (etypecase universe 1086 (cl-etypecase universe
1087 ((member t) (mapcar #'ert-get-test 1087 ((member t) (mapcar #'ert-get-test
1088 (apropos-internal selector #'ert-test-boundp))) 1088 (apropos-internal selector #'ert-test-boundp)))
1089 (list (ert--remove-if-not (lambda (test) 1089 (list (ert--remove-if-not (lambda (test)
@@ -1093,51 +1093,51 @@ contained in UNIVERSE."
1093 universe)))) 1093 universe))))
1094 (ert-test (list selector)) 1094 (ert-test (list selector))
1095 (symbol 1095 (symbol
1096 (assert (ert-test-boundp selector)) 1096 (cl-assert (ert-test-boundp selector))
1097 (list (ert-get-test selector))) 1097 (list (ert-get-test selector)))
1098 (cons 1098 (cons
1099 (destructuring-bind (operator &rest operands) selector 1099 (cl-destructuring-bind (operator &rest operands) selector
1100 (ecase operator 1100 (cl-ecase operator
1101 (member 1101 (member
1102 (mapcar (lambda (purported-test) 1102 (mapcar (lambda (purported-test)
1103 (etypecase purported-test 1103 (cl-etypecase purported-test
1104 (symbol (assert (ert-test-boundp purported-test)) 1104 (symbol (cl-assert (ert-test-boundp purported-test))
1105 (ert-get-test purported-test)) 1105 (ert-get-test purported-test))
1106 (ert-test purported-test))) 1106 (ert-test purported-test)))
1107 operands)) 1107 operands))
1108 (eql 1108 (eql
1109 (assert (eql (length operands) 1)) 1109 (cl-assert (eql (length operands) 1))
1110 (ert-select-tests `(member ,@operands) universe)) 1110 (ert-select-tests `(member ,@operands) universe))
1111 (and 1111 (and
1112 ;; Do these definitions of AND, NOT and OR satisfy de 1112 ;; Do these definitions of AND, NOT and OR satisfy de
1113 ;; Morgan's laws? Should they? 1113 ;; Morgan's laws? Should they?
1114 (case (length operands) 1114 (cl-case (length operands)
1115 (0 (ert-select-tests 't universe)) 1115 (0 (ert-select-tests 't universe))
1116 (t (ert-select-tests `(and ,@(rest operands)) 1116 (t (ert-select-tests `(and ,@(cdr operands))
1117 (ert-select-tests (first operands) 1117 (ert-select-tests (car operands)
1118 universe))))) 1118 universe)))))
1119 (not 1119 (not
1120 (assert (eql (length operands) 1)) 1120 (cl-assert (eql (length operands) 1))
1121 (let ((all-tests (ert-select-tests 't universe))) 1121 (let ((all-tests (ert-select-tests 't universe)))
1122 (ert--set-difference all-tests 1122 (ert--set-difference all-tests
1123 (ert-select-tests (first operands) 1123 (ert-select-tests (car operands)
1124 all-tests)))) 1124 all-tests))))
1125 (or 1125 (or
1126 (case (length operands) 1126 (cl-case (length operands)
1127 (0 (ert-select-tests 'nil universe)) 1127 (0 (ert-select-tests 'nil universe))
1128 (t (ert--union (ert-select-tests (first operands) universe) 1128 (t (ert--union (ert-select-tests (car operands) universe)
1129 (ert-select-tests `(or ,@(rest operands)) 1129 (ert-select-tests `(or ,@(cdr operands))
1130 universe))))) 1130 universe)))))
1131 (tag 1131 (tag
1132 (assert (eql (length operands) 1)) 1132 (cl-assert (eql (length operands) 1))
1133 (let ((tag (first operands))) 1133 (let ((tag (car operands)))
1134 (ert-select-tests `(satisfies 1134 (ert-select-tests `(satisfies
1135 ,(lambda (test) 1135 ,(lambda (test)
1136 (member tag (ert-test-tags test)))) 1136 (member tag (ert-test-tags test))))
1137 universe))) 1137 universe)))
1138 (satisfies 1138 (satisfies
1139 (assert (eql (length operands) 1)) 1139 (cl-assert (eql (length operands) 1))
1140 (ert--remove-if-not (first operands) 1140 (ert--remove-if-not (car operands)
1141 (ert-select-tests 't universe)))))))) 1141 (ert-select-tests 't universe))))))))
1142 1142
1143(defun ert--insert-human-readable-selector (selector) 1143(defun ert--insert-human-readable-selector (selector)
@@ -1146,26 +1146,27 @@ contained in UNIVERSE."
1146 ;; `backtrace' slot of the result objects in the 1146 ;; `backtrace' slot of the result objects in the
1147 ;; `most-recent-result' slots of test case objects in (eql ...) or 1147 ;; `most-recent-result' slots of test case objects in (eql ...) or
1148 ;; (member ...) selectors. 1148 ;; (member ...) selectors.
1149 (labels ((rec (selector) 1149 (cl-labels ((rec (selector)
1150 ;; This code needs to match the etypecase in `ert-select-tests'. 1150 ;; This code needs to match the etypecase in
1151 (etypecase selector 1151 ;; `ert-select-tests'.
1152 ((or (member nil t 1152 (cl-etypecase selector
1153 :new :failed :passed 1153 ((or (member nil t
1154 :expected :unexpected) 1154 :new :failed :passed
1155 string 1155 :expected :unexpected)
1156 symbol) 1156 string
1157 selector) 1157 symbol)
1158 (ert-test 1158 selector)
1159 (if (ert-test-name selector) 1159 (ert-test
1160 (make-symbol (format "<%S>" (ert-test-name selector))) 1160 (if (ert-test-name selector)
1161 (make-symbol "<unnamed test>"))) 1161 (make-symbol (format "<%S>" (ert-test-name selector)))
1162 (cons 1162 (make-symbol "<unnamed test>")))
1163 (destructuring-bind (operator &rest operands) selector 1163 (cons
1164 (ecase operator 1164 (cl-destructuring-bind (operator &rest operands) selector
1165 ((member eql and not or) 1165 (cl-ecase operator
1166 `(,operator ,@(mapcar #'rec operands))) 1166 ((member eql and not or)
1167 ((member tag satisfies) 1167 `(,operator ,@(mapcar #'rec operands)))
1168 selector))))))) 1168 ((member tag satisfies)
1169 selector)))))))
1169 (insert (format "%S" (rec selector))))) 1170 (insert (format "%S" (rec selector)))))
1170 1171
1171 1172
@@ -1182,21 +1183,21 @@ contained in UNIVERSE."
1182;; that corresponds to this run in order to be able to update the 1183;; that corresponds to this run in order to be able to update the
1183;; statistics correctly when a test is re-run interactively and has a 1184;; statistics correctly when a test is re-run interactively and has a
1184;; different result than before. 1185;; different result than before.
1185(defstruct ert--stats 1186(cl-defstruct ert--stats
1186 (selector (assert nil)) 1187 (selector (cl-assert nil))
1187 ;; The tests, in order. 1188 ;; The tests, in order.
1188 (tests (assert nil) :type vector) 1189 (tests (cl-assert nil) :type vector)
1189 ;; A map of test names (or the test objects themselves for unnamed 1190 ;; A map of test names (or the test objects themselves for unnamed
1190 ;; tests) to indices into the `tests' vector. 1191 ;; tests) to indices into the `tests' vector.
1191 (test-map (assert nil) :type hash-table) 1192 (test-map (cl-assert nil) :type hash-table)
1192 ;; The results of the tests during this run, in order. 1193 ;; The results of the tests during this run, in order.
1193 (test-results (assert nil) :type vector) 1194 (test-results (cl-assert nil) :type vector)
1194 ;; The start times of the tests, in order, as reported by 1195 ;; The start times of the tests, in order, as reported by
1195 ;; `current-time'. 1196 ;; `current-time'.
1196 (test-start-times (assert nil) :type vector) 1197 (test-start-times (cl-assert nil) :type vector)
1197 ;; The end times of the tests, in order, as reported by 1198 ;; The end times of the tests, in order, as reported by
1198 ;; `current-time'. 1199 ;; `current-time'.
1199 (test-end-times (assert nil) :type vector) 1200 (test-end-times (cl-assert nil) :type vector)
1200 (passed-expected 0) 1201 (passed-expected 0)
1201 (passed-unexpected 0) 1202 (passed-unexpected 0)
1202 (failed-expected 0) 1203 (failed-expected 0)
@@ -1246,21 +1247,25 @@ Also changes the counters in STATS to match."
1246 (results (ert--stats-test-results stats)) 1247 (results (ert--stats-test-results stats))
1247 (old-test (aref tests pos)) 1248 (old-test (aref tests pos))
1248 (map (ert--stats-test-map stats))) 1249 (map (ert--stats-test-map stats)))
1249 (flet ((update (d) 1250 (cl-flet ((update (d)
1250 (if (ert-test-result-expected-p (aref tests pos) 1251 (if (ert-test-result-expected-p (aref tests pos)
1251 (aref results pos)) 1252 (aref results pos))
1252 (etypecase (aref results pos) 1253 (cl-etypecase (aref results pos)
1253 (ert-test-passed (incf (ert--stats-passed-expected stats) d)) 1254 (ert-test-passed
1254 (ert-test-failed (incf (ert--stats-failed-expected stats) d)) 1255 (cl-incf (ert--stats-passed-expected stats) d))
1255 (null) 1256 (ert-test-failed
1256 (ert-test-aborted-with-non-local-exit) 1257 (cl-incf (ert--stats-failed-expected stats) d))
1257 (ert-test-quit)) 1258 (null)
1258 (etypecase (aref results pos) 1259 (ert-test-aborted-with-non-local-exit)
1259 (ert-test-passed (incf (ert--stats-passed-unexpected stats) d)) 1260 (ert-test-quit))
1260 (ert-test-failed (incf (ert--stats-failed-unexpected stats) d)) 1261 (cl-etypecase (aref results pos)
1261 (null) 1262 (ert-test-passed
1262 (ert-test-aborted-with-non-local-exit) 1263 (cl-incf (ert--stats-passed-unexpected stats) d))
1263 (ert-test-quit))))) 1264 (ert-test-failed
1265 (cl-incf (ert--stats-failed-unexpected stats) d))
1266 (null)
1267 (ert-test-aborted-with-non-local-exit)
1268 (ert-test-quit)))))
1264 ;; Adjust counters to remove the result that is currently in stats. 1269 ;; Adjust counters to remove the result that is currently in stats.
1265 (update -1) 1270 (update -1)
1266 ;; Put new test and result into stats. 1271 ;; Put new test and result into stats.
@@ -1278,11 +1283,11 @@ Also changes the counters in STATS to match."
1278SELECTOR is the selector that was used to select TESTS." 1283SELECTOR is the selector that was used to select TESTS."
1279 (setq tests (ert--coerce-to-vector tests)) 1284 (setq tests (ert--coerce-to-vector tests))
1280 (let ((map (make-hash-table :size (length tests)))) 1285 (let ((map (make-hash-table :size (length tests))))
1281 (loop for i from 0 1286 (cl-loop for i from 0
1282 for test across tests 1287 for test across tests
1283 for key = (ert--stats-test-key test) do 1288 for key = (ert--stats-test-key test) do
1284 (assert (not (gethash key map))) 1289 (cl-assert (not (gethash key map)))
1285 (setf (gethash key map) i)) 1290 (setf (gethash key map) i))
1286 (make-ert--stats :selector selector 1291 (make-ert--stats :selector selector
1287 :tests tests 1292 :tests tests
1288 :test-map map 1293 :test-map map
@@ -1324,8 +1329,8 @@ SELECTOR is the selector that was used to select TESTS."
1324 (force-mode-line-update) 1329 (force-mode-line-update)
1325 (unwind-protect 1330 (unwind-protect
1326 (progn 1331 (progn
1327 (loop for test in tests do 1332 (cl-loop for test in tests do
1328 (ert-run-or-rerun-test stats test listener)) 1333 (ert-run-or-rerun-test stats test listener))
1329 (setq abortedp nil)) 1334 (setq abortedp nil))
1330 (setf (ert--stats-aborted-p stats) abortedp) 1335 (setf (ert--stats-aborted-p stats) abortedp)
1331 (setf (ert--stats-end-time stats) (current-time)) 1336 (setf (ert--stats-end-time stats) (current-time))
@@ -1349,7 +1354,7 @@ SELECTOR is the selector that was used to select TESTS."
1349 "Return a character that represents the test result RESULT. 1354 "Return a character that represents the test result RESULT.
1350 1355
1351EXPECTEDP specifies whether the result was expected." 1356EXPECTEDP specifies whether the result was expected."
1352 (let ((s (etypecase result 1357 (let ((s (cl-etypecase result
1353 (ert-test-passed ".P") 1358 (ert-test-passed ".P")
1354 (ert-test-failed "fF") 1359 (ert-test-failed "fF")
1355 (null "--") 1360 (null "--")
@@ -1361,7 +1366,7 @@ EXPECTEDP specifies whether the result was expected."
1361 "Return a string that represents the test result RESULT. 1366 "Return a string that represents the test result RESULT.
1362 1367
1363EXPECTEDP specifies whether the result was expected." 1368EXPECTEDP specifies whether the result was expected."
1364 (let ((s (etypecase result 1369 (let ((s (cl-etypecase result
1365 (ert-test-passed '("passed" "PASSED")) 1370 (ert-test-passed '("passed" "PASSED"))
1366 (ert-test-failed '("failed" "FAILED")) 1371 (ert-test-failed '("failed" "FAILED"))
1367 (null '("unknown" "UNKNOWN")) 1372 (null '("unknown" "UNKNOWN"))
@@ -1383,9 +1388,9 @@ Ensures a final newline is inserted."
1383 "Insert `ert-info' infos from RESULT into current buffer. 1388 "Insert `ert-info' infos from RESULT into current buffer.
1384 1389
1385RESULT must be an `ert-test-result-with-condition'." 1390RESULT must be an `ert-test-result-with-condition'."
1386 (check-type result ert-test-result-with-condition) 1391 (cl-check-type result ert-test-result-with-condition)
1387 (dolist (info (ert-test-result-with-condition-infos result)) 1392 (dolist (info (ert-test-result-with-condition-infos result))
1388 (destructuring-bind (prefix . message) info 1393 (cl-destructuring-bind (prefix . message) info
1389 (let ((begin (point)) 1394 (let ((begin (point))
1390 (indentation (make-string (+ (length prefix) 4) ?\s)) 1395 (indentation (make-string (+ (length prefix) 4) ?\s))
1391 (end nil)) 1396 (end nil))
@@ -1421,14 +1426,14 @@ Returns the stats object."
1421 (ert-run-tests 1426 (ert-run-tests
1422 selector 1427 selector
1423 (lambda (event-type &rest event-args) 1428 (lambda (event-type &rest event-args)
1424 (ecase event-type 1429 (cl-ecase event-type
1425 (run-started 1430 (run-started
1426 (destructuring-bind (stats) event-args 1431 (cl-destructuring-bind (stats) event-args
1427 (message "Running %s tests (%s)" 1432 (message "Running %s tests (%s)"
1428 (length (ert--stats-tests stats)) 1433 (length (ert--stats-tests stats))
1429 (ert--format-time-iso8601 (ert--stats-start-time stats))))) 1434 (ert--format-time-iso8601 (ert--stats-start-time stats)))))
1430 (run-ended 1435 (run-ended
1431 (destructuring-bind (stats abortedp) event-args 1436 (cl-destructuring-bind (stats abortedp) event-args
1432 (let ((unexpected (ert-stats-completed-unexpected stats)) 1437 (let ((unexpected (ert-stats-completed-unexpected stats))
1433 (expected-failures (ert--stats-failed-expected stats))) 1438 (expected-failures (ert--stats-failed-expected stats)))
1434 (message "\n%sRan %s tests, %s results as expected%s (%s)%s\n" 1439 (message "\n%sRan %s tests, %s results as expected%s (%s)%s\n"
@@ -1446,19 +1451,19 @@ Returns the stats object."
1446 (format "\n%s expected failures" expected-failures))) 1451 (format "\n%s expected failures" expected-failures)))
1447 (unless (zerop unexpected) 1452 (unless (zerop unexpected)
1448 (message "%s unexpected results:" unexpected) 1453 (message "%s unexpected results:" unexpected)
1449 (loop for test across (ert--stats-tests stats) 1454 (cl-loop for test across (ert--stats-tests stats)
1450 for result = (ert-test-most-recent-result test) do 1455 for result = (ert-test-most-recent-result test) do
1451 (when (not (ert-test-result-expected-p test result)) 1456 (when (not (ert-test-result-expected-p test result))
1452 (message "%9s %S" 1457 (message "%9s %S"
1453 (ert-string-for-test-result result nil) 1458 (ert-string-for-test-result result nil)
1454 (ert-test-name test)))) 1459 (ert-test-name test))))
1455 (message "%s" ""))))) 1460 (message "%s" "")))))
1456 (test-started 1461 (test-started
1457 ) 1462 )
1458 (test-ended 1463 (test-ended
1459 (destructuring-bind (stats test result) event-args 1464 (cl-destructuring-bind (stats test result) event-args
1460 (unless (ert-test-result-expected-p test result) 1465 (unless (ert-test-result-expected-p test result)
1461 (etypecase result 1466 (cl-etypecase result
1462 (ert-test-passed 1467 (ert-test-passed
1463 (message "Test %S passed unexpectedly" (ert-test-name test))) 1468 (message "Test %S passed unexpectedly" (ert-test-name test)))
1464 (ert-test-result-with-condition 1469 (ert-test-result-with-condition
@@ -1484,7 +1489,7 @@ Returns the stats object."
1484 (ert--pp-with-indentation-and-newline 1489 (ert--pp-with-indentation-and-newline
1485 (ert-test-result-with-condition-condition result))) 1490 (ert-test-result-with-condition-condition result)))
1486 (goto-char (1- (point-max))) 1491 (goto-char (1- (point-max)))
1487 (assert (looking-at "\n")) 1492 (cl-assert (looking-at "\n"))
1488 (delete-char 1) 1493 (delete-char 1)
1489 (message "Test %S condition:" (ert-test-name test)) 1494 (message "Test %S condition:" (ert-test-name test))
1490 (message "%s" (buffer-string)))) 1495 (message "%s" (buffer-string))))
@@ -1532,7 +1537,7 @@ the tests)."
1532 (1 font-lock-keyword-face nil t) 1537 (1 font-lock-keyword-face nil t)
1533 (2 font-lock-function-name-face nil t))))) 1538 (2 font-lock-function-name-face nil t)))))
1534 1539
1535(defun* ert--remove-from-list (list-var element &key key test) 1540(cl-defun ert--remove-from-list (list-var element &key key test)
1536 "Remove ELEMENT from the value of LIST-VAR if present. 1541 "Remove ELEMENT from the value of LIST-VAR if present.
1537 1542
1538This can be used as an inverse of `add-to-list'." 1543This can be used as an inverse of `add-to-list'."
@@ -1557,7 +1562,7 @@ If ADD-DEFAULT-TO-PROMPT is non-nil, PROMPT will be modified to
1557include the default, if any. 1562include the default, if any.
1558 1563
1559Signals an error if no test name was read." 1564Signals an error if no test name was read."
1560 (etypecase default 1565 (cl-etypecase default
1561 (string (let ((symbol (intern-soft default))) 1566 (string (let ((symbol (intern-soft default)))
1562 (unless (and symbol (ert-test-boundp symbol)) 1567 (unless (and symbol (ert-test-boundp symbol))
1563 (setq default nil)))) 1568 (setq default nil))))
@@ -1614,11 +1619,11 @@ Nothing more than an interactive interface to `ert-make-test-unbound'."
1614;;; Display of test progress and results. 1619;;; Display of test progress and results.
1615 1620
1616;; An entry in the results buffer ewoc. There is one entry per test. 1621;; An entry in the results buffer ewoc. There is one entry per test.
1617(defstruct ert--ewoc-entry 1622(cl-defstruct ert--ewoc-entry
1618 (test (assert nil)) 1623 (test (cl-assert nil))
1619 ;; If the result of this test was expected, its ewoc entry is hidden 1624 ;; If the result of this test was expected, its ewoc entry is hidden
1620 ;; initially. 1625 ;; initially.
1621 (hidden-p (assert nil)) 1626 (hidden-p (cl-assert nil))
1622 ;; An ewoc entry may be collapsed to hide details such as the error 1627 ;; An ewoc entry may be collapsed to hide details such as the error
1623 ;; condition. 1628 ;; condition.
1624 ;; 1629 ;;
@@ -1694,7 +1699,7 @@ Also sets `ert--results-progress-bar-button-begin'."
1694 ((ert--stats-current-test stats) 'running) 1699 ((ert--stats-current-test stats) 'running)
1695 ((ert--stats-end-time stats) 'finished) 1700 ((ert--stats-end-time stats) 'finished)
1696 (t 'preparing)))) 1701 (t 'preparing))))
1697 (ecase state 1702 (cl-ecase state
1698 (preparing 1703 (preparing
1699 (insert "")) 1704 (insert ""))
1700 (aborted 1705 (aborted
@@ -1705,12 +1710,12 @@ Also sets `ert--results-progress-bar-button-begin'."
1705 (t 1710 (t
1706 (insert "Aborted.")))) 1711 (insert "Aborted."))))
1707 (running 1712 (running
1708 (assert (ert--stats-current-test stats)) 1713 (cl-assert (ert--stats-current-test stats))
1709 (insert "Running test: ") 1714 (insert "Running test: ")
1710 (ert-insert-test-name-button (ert-test-name 1715 (ert-insert-test-name-button (ert-test-name
1711 (ert--stats-current-test stats)))) 1716 (ert--stats-current-test stats))))
1712 (finished 1717 (finished
1713 (assert (not (ert--stats-current-test stats))) 1718 (cl-assert (not (ert--stats-current-test stats)))
1714 (insert "Finished."))) 1719 (insert "Finished.")))
1715 (insert "\n") 1720 (insert "\n")
1716 (if (ert--stats-end-time stats) 1721 (if (ert--stats-end-time stats)
@@ -1813,7 +1818,7 @@ non-nil, returns the face for expected results.."
1813(defun ert-face-for-stats (stats) 1818(defun ert-face-for-stats (stats)
1814 "Return a face that represents STATS." 1819 "Return a face that represents STATS."
1815 (cond ((ert--stats-aborted-p stats) 'nil) 1820 (cond ((ert--stats-aborted-p stats) 'nil)
1816 ((plusp (ert-stats-completed-unexpected stats)) 1821 ((cl-plusp (ert-stats-completed-unexpected stats))
1817 (ert-face-for-test-result nil)) 1822 (ert-face-for-test-result nil))
1818 ((eql (ert-stats-completed-expected stats) (ert-stats-total stats)) 1823 ((eql (ert-stats-completed-expected stats) (ert-stats-total stats))
1819 (ert-face-for-test-result t)) 1824 (ert-face-for-test-result t))
@@ -1824,7 +1829,7 @@ non-nil, returns the face for expected results.."
1824 (let* ((test (ert--ewoc-entry-test entry)) 1829 (let* ((test (ert--ewoc-entry-test entry))
1825 (stats ert--results-stats) 1830 (stats ert--results-stats)
1826 (result (let ((pos (ert--stats-test-pos stats test))) 1831 (result (let ((pos (ert--stats-test-pos stats test)))
1827 (assert pos) 1832 (cl-assert pos)
1828 (aref (ert--stats-test-results stats) pos))) 1833 (aref (ert--stats-test-results stats) pos)))
1829 (hiddenp (ert--ewoc-entry-hidden-p entry)) 1834 (hiddenp (ert--ewoc-entry-hidden-p entry))
1830 (expandedp (ert--ewoc-entry-expanded-p entry)) 1835 (expandedp (ert--ewoc-entry-expanded-p entry))
@@ -1850,7 +1855,7 @@ non-nil, returns the face for expected results.."
1850 (ert--string-first-line (ert-test-documentation test)) 1855 (ert--string-first-line (ert-test-documentation test))
1851 'font-lock-face 'font-lock-doc-face) 1856 'font-lock-face 'font-lock-doc-face)
1852 "\n")) 1857 "\n"))
1853 (etypecase result 1858 (cl-etypecase result
1854 (ert-test-passed 1859 (ert-test-passed
1855 (if (ert-test-result-expected-p test result) 1860 (if (ert-test-result-expected-p test result)
1856 (insert " passed\n") 1861 (insert " passed\n")
@@ -1908,9 +1913,10 @@ BUFFER-NAME, if non-nil, is the buffer name to use."
1908 (make-string (ert-stats-total stats) 1913 (make-string (ert-stats-total stats)
1909 (ert-char-for-test-result nil t))) 1914 (ert-char-for-test-result nil t)))
1910 (set (make-local-variable 'ert--results-listener) listener) 1915 (set (make-local-variable 'ert--results-listener) listener)
1911 (loop for test across (ert--stats-tests stats) do 1916 (cl-loop for test across (ert--stats-tests stats) do
1912 (ewoc-enter-last ewoc 1917 (ewoc-enter-last ewoc
1913 (make-ert--ewoc-entry :test test :hidden-p t))) 1918 (make-ert--ewoc-entry :test test
1919 :hidden-p t)))
1914 (ert--results-update-ewoc-hf ert--results-ewoc ert--results-stats) 1920 (ert--results-update-ewoc-hf ert--results-ewoc ert--results-stats)
1915 (goto-char (1- (point-max))) 1921 (goto-char (1- (point-max)))
1916 buffer))))) 1922 buffer)))))
@@ -1945,21 +1951,21 @@ and how to display message."
1945 default nil)) 1951 default nil))
1946 nil)) 1952 nil))
1947 (unless message-fn (setq message-fn 'message)) 1953 (unless message-fn (setq message-fn 'message))
1948 (lexical-let ((output-buffer-name output-buffer-name) 1954 (let ((output-buffer-name output-buffer-name)
1949 buffer 1955 buffer
1950 listener 1956 listener
1951 (message-fn message-fn)) 1957 (message-fn message-fn))
1952 (setq listener 1958 (setq listener
1953 (lambda (event-type &rest event-args) 1959 (lambda (event-type &rest event-args)
1954 (ecase event-type 1960 (cl-ecase event-type
1955 (run-started 1961 (run-started
1956 (destructuring-bind (stats) event-args 1962 (cl-destructuring-bind (stats) event-args
1957 (setq buffer (ert--setup-results-buffer stats 1963 (setq buffer (ert--setup-results-buffer stats
1958 listener 1964 listener
1959 output-buffer-name)) 1965 output-buffer-name))
1960 (pop-to-buffer buffer))) 1966 (pop-to-buffer buffer)))
1961 (run-ended 1967 (run-ended
1962 (destructuring-bind (stats abortedp) event-args 1968 (cl-destructuring-bind (stats abortedp) event-args
1963 (funcall message-fn 1969 (funcall message-fn
1964 "%sRan %s tests, %s results were as expected%s" 1970 "%sRan %s tests, %s results were as expected%s"
1965 (if (not abortedp) 1971 (if (not abortedp)
@@ -1976,19 +1982,19 @@ and how to display message."
1976 ert--results-ewoc) 1982 ert--results-ewoc)
1977 stats))) 1983 stats)))
1978 (test-started 1984 (test-started
1979 (destructuring-bind (stats test) event-args 1985 (cl-destructuring-bind (stats test) event-args
1980 (with-current-buffer buffer 1986 (with-current-buffer buffer
1981 (let* ((ewoc ert--results-ewoc) 1987 (let* ((ewoc ert--results-ewoc)
1982 (pos (ert--stats-test-pos stats test)) 1988 (pos (ert--stats-test-pos stats test))
1983 (node (ewoc-nth ewoc pos))) 1989 (node (ewoc-nth ewoc pos)))
1984 (assert node) 1990 (cl-assert node)
1985 (setf (ert--ewoc-entry-test (ewoc-data node)) test) 1991 (setf (ert--ewoc-entry-test (ewoc-data node)) test)
1986 (aset ert--results-progress-bar-string pos 1992 (aset ert--results-progress-bar-string pos
1987 (ert-char-for-test-result nil t)) 1993 (ert-char-for-test-result nil t))
1988 (ert--results-update-stats-display-maybe ewoc stats) 1994 (ert--results-update-stats-display-maybe ewoc stats)
1989 (ewoc-invalidate ewoc node))))) 1995 (ewoc-invalidate ewoc node)))))
1990 (test-ended 1996 (test-ended
1991 (destructuring-bind (stats test result) event-args 1997 (cl-destructuring-bind (stats test result) event-args
1992 (with-current-buffer buffer 1998 (with-current-buffer buffer
1993 (let* ((ewoc ert--results-ewoc) 1999 (let* ((ewoc ert--results-ewoc)
1994 (pos (ert--stats-test-pos stats test)) 2000 (pos (ert--stats-test-pos stats test))
@@ -2020,28 +2026,28 @@ and how to display message."
2020(define-derived-mode ert-results-mode special-mode "ERT-Results" 2026(define-derived-mode ert-results-mode special-mode "ERT-Results"
2021 "Major mode for viewing results of ERT test runs.") 2027 "Major mode for viewing results of ERT test runs.")
2022 2028
2023(loop for (key binding) in 2029(cl-loop for (key binding) in
2024 '(;; Stuff that's not in the menu. 2030 '( ;; Stuff that's not in the menu.
2025 ("\t" forward-button) 2031 ("\t" forward-button)
2026 ([backtab] backward-button) 2032 ([backtab] backward-button)
2027 ("j" ert-results-jump-between-summary-and-result) 2033 ("j" ert-results-jump-between-summary-and-result)
2028 ("L" ert-results-toggle-printer-limits-for-test-at-point) 2034 ("L" ert-results-toggle-printer-limits-for-test-at-point)
2029 ("n" ert-results-next-test) 2035 ("n" ert-results-next-test)
2030 ("p" ert-results-previous-test) 2036 ("p" ert-results-previous-test)
2031 ;; Stuff that is in the menu. 2037 ;; Stuff that is in the menu.
2032 ("R" ert-results-rerun-all-tests) 2038 ("R" ert-results-rerun-all-tests)
2033 ("r" ert-results-rerun-test-at-point) 2039 ("r" ert-results-rerun-test-at-point)
2034 ("d" ert-results-rerun-test-at-point-debugging-errors) 2040 ("d" ert-results-rerun-test-at-point-debugging-errors)
2035 ("." ert-results-find-test-at-point-other-window) 2041 ("." ert-results-find-test-at-point-other-window)
2036 ("b" ert-results-pop-to-backtrace-for-test-at-point) 2042 ("b" ert-results-pop-to-backtrace-for-test-at-point)
2037 ("m" ert-results-pop-to-messages-for-test-at-point) 2043 ("m" ert-results-pop-to-messages-for-test-at-point)
2038 ("l" ert-results-pop-to-should-forms-for-test-at-point) 2044 ("l" ert-results-pop-to-should-forms-for-test-at-point)
2039 ("h" ert-results-describe-test-at-point) 2045 ("h" ert-results-describe-test-at-point)
2040 ("D" ert-delete-test) 2046 ("D" ert-delete-test)
2041 ("T" ert-results-pop-to-timings) 2047 ("T" ert-results-pop-to-timings)
2042 ) 2048 )
2043 do 2049 do
2044 (define-key ert-results-mode-map key binding)) 2050 (define-key ert-results-mode-map key binding))
2045 2051
2046(easy-menu-define ert-results-mode-menu ert-results-mode-map 2052(easy-menu-define ert-results-mode-menu ert-results-mode-map
2047 "Menu for `ert-results-mode'." 2053 "Menu for `ert-results-mode'."
@@ -2121,15 +2127,15 @@ To be used in the ERT results buffer."
2121EWOC-FN specifies the direction and should be either `ewoc-prev' 2127EWOC-FN specifies the direction and should be either `ewoc-prev'
2122or `ewoc-next'. If there are no more nodes in that direction, an 2128or `ewoc-next'. If there are no more nodes in that direction, an
2123error is signaled with the message ERROR-MESSAGE." 2129error is signaled with the message ERROR-MESSAGE."
2124 (loop 2130 (cl-loop
2125 (setq node (funcall ewoc-fn ert--results-ewoc node)) 2131 (setq node (funcall ewoc-fn ert--results-ewoc node))
2126 (when (null node) 2132 (when (null node)
2127 (error "%s" error-message)) 2133 (error "%s" error-message))
2128 (unless (ert--ewoc-entry-hidden-p (ewoc-data node)) 2134 (unless (ert--ewoc-entry-hidden-p (ewoc-data node))
2129 (goto-char (ewoc-location node)) 2135 (goto-char (ewoc-location node))
2130 (return)))) 2136 (cl-return))))
2131 2137
2132(defun ert--results-expand-collapse-button-action (button) 2138(defun ert--results-expand-collapse-button-action (_button)
2133 "Expand or collapse the test node BUTTON belongs to." 2139 "Expand or collapse the test node BUTTON belongs to."
2134 (let* ((ewoc ert--results-ewoc) 2140 (let* ((ewoc ert--results-ewoc)
2135 (node (save-excursion 2141 (node (save-excursion
@@ -2158,11 +2164,11 @@ To be used in the ERT results buffer."
2158(defun ert--ewoc-position (ewoc node) 2164(defun ert--ewoc-position (ewoc node)
2159 ;; checkdoc-order: nil 2165 ;; checkdoc-order: nil
2160 "Return the position of NODE in EWOC, or nil if NODE is not in EWOC." 2166 "Return the position of NODE in EWOC, or nil if NODE is not in EWOC."
2161 (loop for i from 0 2167 (cl-loop for i from 0
2162 for node-here = (ewoc-nth ewoc 0) then (ewoc-next ewoc node-here) 2168 for node-here = (ewoc-nth ewoc 0) then (ewoc-next ewoc node-here)
2163 do (when (eql node node-here) 2169 do (when (eql node node-here)
2164 (return i)) 2170 (cl-return i))
2165 finally (return nil))) 2171 finally (cl-return nil)))
2166 2172
2167(defun ert-results-jump-between-summary-and-result () 2173(defun ert-results-jump-between-summary-and-result ()
2168 "Jump back and forth between the test run summary and individual test results. 2174 "Jump back and forth between the test run summary and individual test results.
@@ -2210,7 +2216,7 @@ To be used in the ERT results buffer."
2210 "Return the test at point, or nil. 2216 "Return the test at point, or nil.
2211 2217
2212To be used in the ERT results buffer." 2218To be used in the ERT results buffer."
2213 (assert (eql major-mode 'ert-results-mode)) 2219 (cl-assert (eql major-mode 'ert-results-mode))
2214 (if (ert--results-test-node-or-null-at-point) 2220 (if (ert--results-test-node-or-null-at-point)
2215 (let* ((node (ert--results-test-node-at-point)) 2221 (let* ((node (ert--results-test-node-at-point))
2216 (test (ert--ewoc-entry-test (ewoc-data node)))) 2222 (test (ert--ewoc-entry-test (ewoc-data node))))
@@ -2282,9 +2288,9 @@ definition."
2282 (point)) 2288 (point))
2283 ((eventp last-command-event) 2289 ((eventp last-command-event)
2284 (posn-point (event-start last-command-event))) 2290 (posn-point (event-start last-command-event)))
2285 (t (assert nil)))) 2291 (t (cl-assert nil))))
2286 2292
2287(defun ert--results-progress-bar-button-action (button) 2293(defun ert--results-progress-bar-button-action (_button)
2288 "Jump to details for the test represented by the character clicked in BUTTON." 2294 "Jump to details for the test represented by the character clicked in BUTTON."
2289 (goto-char (ert--button-action-position)) 2295 (goto-char (ert--button-action-position))
2290 (ert-results-jump-between-summary-and-result)) 2296 (ert-results-jump-between-summary-and-result))
@@ -2294,7 +2300,7 @@ definition."
2294 2300
2295To be used in the ERT results buffer." 2301To be used in the ERT results buffer."
2296 (interactive) 2302 (interactive)
2297 (assert (eql major-mode 'ert-results-mode)) 2303 (cl-assert (eql major-mode 'ert-results-mode))
2298 (let ((selector (ert--stats-selector ert--results-stats))) 2304 (let ((selector (ert--stats-selector ert--results-stats)))
2299 (ert-run-tests-interactively selector (buffer-name)))) 2305 (ert-run-tests-interactively selector (buffer-name))))
2300 2306
@@ -2303,13 +2309,13 @@ To be used in the ERT results buffer."
2303 2309
2304To be used in the ERT results buffer." 2310To be used in the ERT results buffer."
2305 (interactive) 2311 (interactive)
2306 (destructuring-bind (test redefinition-state) 2312 (cl-destructuring-bind (test redefinition-state)
2307 (ert--results-test-at-point-allow-redefinition) 2313 (ert--results-test-at-point-allow-redefinition)
2308 (when (null test) 2314 (when (null test)
2309 (error "No test at point")) 2315 (error "No test at point"))
2310 (let* ((stats ert--results-stats) 2316 (let* ((stats ert--results-stats)
2311 (progress-message (format "Running %stest %S" 2317 (progress-message (format "Running %stest %S"
2312 (ecase redefinition-state 2318 (cl-ecase redefinition-state
2313 ((nil) "") 2319 ((nil) "")
2314 (redefined "new definition of ") 2320 (redefined "new definition of ")
2315 (deleted "deleted ")) 2321 (deleted "deleted "))
@@ -2350,7 +2356,7 @@ To be used in the ERT results buffer."
2350 (stats ert--results-stats) 2356 (stats ert--results-stats)
2351 (pos (ert--stats-test-pos stats test)) 2357 (pos (ert--stats-test-pos stats test))
2352 (result (aref (ert--stats-test-results stats) pos))) 2358 (result (aref (ert--stats-test-results stats) pos)))
2353 (etypecase result 2359 (cl-etypecase result
2354 (ert-test-passed (error "Test passed, no backtrace available")) 2360 (ert-test-passed (error "Test passed, no backtrace available"))
2355 (ert-test-result-with-condition 2361 (ert-test-result-with-condition
2356 (let ((backtrace (ert-test-result-with-condition-backtrace result)) 2362 (let ((backtrace (ert-test-result-with-condition-backtrace result))
@@ -2408,13 +2414,14 @@ To be used in the ERT results buffer."
2408 (ert-simple-view-mode) 2414 (ert-simple-view-mode)
2409 (if (null (ert-test-result-should-forms result)) 2415 (if (null (ert-test-result-should-forms result))
2410 (insert "\n(No should forms during this test.)\n") 2416 (insert "\n(No should forms during this test.)\n")
2411 (loop for form-description in (ert-test-result-should-forms result) 2417 (cl-loop for form-description
2412 for i from 1 do 2418 in (ert-test-result-should-forms result)
2413 (insert "\n") 2419 for i from 1 do
2414 (insert (format "%s: " i)) 2420 (insert "\n")
2415 (let ((begin (point))) 2421 (insert (format "%s: " i))
2416 (ert--pp-with-indentation-and-newline form-description) 2422 (let ((begin (point)))
2417 (ert--make-xrefs-region begin (point))))) 2423 (ert--pp-with-indentation-and-newline form-description)
2424 (ert--make-xrefs-region begin (point)))))
2418 (goto-char (point-min)) 2425 (goto-char (point-min))
2419 (insert "`should' forms executed during test `") 2426 (insert "`should' forms executed during test `")
2420 (ert-insert-test-name-button (ert-test-name test)) 2427 (ert-insert-test-name-button (ert-test-name test))
@@ -2443,17 +2450,16 @@ To be used in the ERT results buffer."
2443To be used in the ERT results buffer." 2450To be used in the ERT results buffer."
2444 (interactive) 2451 (interactive)
2445 (let* ((stats ert--results-stats) 2452 (let* ((stats ert--results-stats)
2446 (start-times (ert--stats-test-start-times stats))
2447 (end-times (ert--stats-test-end-times stats))
2448 (buffer (get-buffer-create "*ERT timings*")) 2453 (buffer (get-buffer-create "*ERT timings*"))
2449 (data (loop for test across (ert--stats-tests stats) 2454 (data (cl-loop for test across (ert--stats-tests stats)
2450 for start-time across (ert--stats-test-start-times stats) 2455 for start-time across (ert--stats-test-start-times
2451 for end-time across (ert--stats-test-end-times stats) 2456 stats)
2452 collect (list test 2457 for end-time across (ert--stats-test-end-times stats)
2453 (float-time (subtract-time end-time 2458 collect (list test
2454 start-time)))))) 2459 (float-time (subtract-time
2460 end-time start-time))))))
2455 (setq data (sort data (lambda (a b) 2461 (setq data (sort data (lambda (a b)
2456 (> (second a) (second b))))) 2462 (> (cl-second a) (cl-second b)))))
2457 (pop-to-buffer buffer) 2463 (pop-to-buffer buffer)
2458 (let ((inhibit-read-only t)) 2464 (let ((inhibit-read-only t))
2459 (buffer-disable-undo) 2465 (buffer-disable-undo)
@@ -2462,13 +2468,13 @@ To be used in the ERT results buffer."
2462 (if (null data) 2468 (if (null data)
2463 (insert "(No data)\n") 2469 (insert "(No data)\n")
2464 (insert (format "%-3s %8s %8s\n" "" "time" "cumul")) 2470 (insert (format "%-3s %8s %8s\n" "" "time" "cumul"))
2465 (loop for (test time) in data 2471 (cl-loop for (test time) in data
2466 for cumul-time = time then (+ cumul-time time) 2472 for cumul-time = time then (+ cumul-time time)
2467 for i from 1 do 2473 for i from 1 do
2468 (let ((begin (point))) 2474 (progn
2469 (insert (format "%3s: %8.3f %8.3f " i time cumul-time)) 2475 (insert (format "%3s: %8.3f %8.3f " i time cumul-time))
2470 (ert-insert-test-name-button (ert-test-name test)) 2476 (ert-insert-test-name-button (ert-test-name test))
2471 (insert "\n")))) 2477 (insert "\n"))))
2472 (goto-char (point-min)) 2478 (goto-char (point-min))
2473 (insert "Tests by run time (seconds):\n\n") 2479 (insert "Tests by run time (seconds):\n\n")
2474 (forward-line 1)))) 2480 (forward-line 1))))
@@ -2481,7 +2487,7 @@ To be used in the ERT results buffer."
2481 (error "Requires Emacs 24")) 2487 (error "Requires Emacs 24"))
2482 (let (test-name 2488 (let (test-name
2483 test-definition) 2489 test-definition)
2484 (etypecase test-or-test-name 2490 (cl-etypecase test-or-test-name
2485 (symbol (setq test-name test-or-test-name 2491 (symbol (setq test-name test-or-test-name
2486 test-definition (ert-get-test test-or-test-name))) 2492 test-definition (ert-get-test test-or-test-name)))
2487 (ert-test (setq test-name (ert-test-name test-or-test-name) 2493 (ert-test (setq test-name (ert-test-name test-or-test-name)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 64aac4b81db..df6680a6d94 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -195,45 +195,34 @@ score-mode.el. KEYWORDS-CASE-INSENSITIVE non-nil means that for
195font-lock keywords will not be case sensitive." 195font-lock keywords will not be case sensitive."
196 (when lisp-syntax 196 (when lisp-syntax
197 (set-syntax-table lisp-mode-syntax-table)) 197 (set-syntax-table lisp-mode-syntax-table))
198 (make-local-variable 'paragraph-ignore-fill-prefix) 198 (setq-local paragraph-ignore-fill-prefix t)
199 (setq paragraph-ignore-fill-prefix t) 199 (setq-local fill-paragraph-function 'lisp-fill-paragraph)
200 (make-local-variable 'fill-paragraph-function)
201 (setq fill-paragraph-function 'lisp-fill-paragraph)
202 ;; Adaptive fill mode gets the fill wrong for a one-line paragraph made of 200 ;; Adaptive fill mode gets the fill wrong for a one-line paragraph made of
203 ;; a single docstring. Let's fix it here. 201 ;; a single docstring. Let's fix it here.
204 (set (make-local-variable 'adaptive-fill-function) 202 (setq-local adaptive-fill-function
205 (lambda () (if (looking-at "\\s-+\"[^\n\"]+\"\\s-*$") ""))) 203 (lambda () (if (looking-at "\\s-+\"[^\n\"]+\"\\s-*$") "")))
206 ;; Adaptive fill mode gets in the way of auto-fill, 204 ;; Adaptive fill mode gets in the way of auto-fill,
207 ;; and should make no difference for explicit fill 205 ;; and should make no difference for explicit fill
208 ;; because lisp-fill-paragraph should do the job. 206 ;; because lisp-fill-paragraph should do the job.
209 ;; I believe that newcomment's auto-fill code properly deals with it -stef 207 ;; I believe that newcomment's auto-fill code properly deals with it -stef
210 ;;(set (make-local-variable 'adaptive-fill-mode) nil) 208 ;;(set (make-local-variable 'adaptive-fill-mode) nil)
211 (make-local-variable 'indent-line-function) 209 (setq-local indent-line-function 'lisp-indent-line)
212 (setq indent-line-function 'lisp-indent-line) 210 (setq-local outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(")
213 (make-local-variable 'outline-regexp) 211 (setq-local outline-level 'lisp-outline-level)
214 (setq outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(") 212 (setq-local add-log-current-defun-function #'lisp-current-defun-name)
215 (make-local-variable 'outline-level) 213 (setq-local comment-start ";")
216 (setq outline-level 'lisp-outline-level)
217 (make-local-variable 'comment-start)
218 (setq comment-start ";")
219 (make-local-variable 'comment-start-skip)
220 ;; Look within the line for a ; following an even number of backslashes 214 ;; Look within the line for a ; following an even number of backslashes
221 ;; after either a non-backslash or the line beginning. 215 ;; after either a non-backslash or the line beginning.
222 (setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *") 216 (setq-local comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
223 (make-local-variable 'font-lock-comment-start-skip)
224 ;; Font lock mode uses this only when it KNOWS a comment is starting. 217 ;; Font lock mode uses this only when it KNOWS a comment is starting.
225 (setq font-lock-comment-start-skip ";+ *") 218 (setq-local font-lock-comment-start-skip ";+ *")
226 (make-local-variable 'comment-add) 219 (setq-local comment-add 1) ;default to `;;' in comment-region
227 (setq comment-add 1) ;default to `;;' in comment-region 220 (setq-local comment-column 40)
228 (make-local-variable 'comment-column)
229 (setq comment-column 40)
230 ;; Don't get confused by `;' in doc strings when paragraph-filling. 221 ;; Don't get confused by `;' in doc strings when paragraph-filling.
231 (set (make-local-variable 'comment-use-global-state) t) 222 (setq-local comment-use-global-state t)
232 (make-local-variable 'imenu-generic-expression) 223 (setq-local imenu-generic-expression lisp-imenu-generic-expression)
233 (setq imenu-generic-expression lisp-imenu-generic-expression) 224 (setq-local multibyte-syntax-as-symbol t)
234 (make-local-variable 'multibyte-syntax-as-symbol) 225 (setq-local syntax-begin-function 'beginning-of-defun)
235 (setq multibyte-syntax-as-symbol t)
236 (set (make-local-variable 'syntax-begin-function) 'beginning-of-defun)
237 (setq font-lock-defaults 226 (setq font-lock-defaults
238 `((lisp-font-lock-keywords 227 `((lisp-font-lock-keywords
239 lisp-font-lock-keywords-1 lisp-font-lock-keywords-2) 228 lisp-font-lock-keywords-1 lisp-font-lock-keywords-2)
@@ -249,6 +238,32 @@ font-lock keywords will not be case sensitive."
249 1000 238 1000
250 len))) 239 len)))
251 240
241(defun lisp-current-defun-name ()
242 "Return the name of the defun at point, or nil."
243 (save-excursion
244 (let ((location (point)))
245 ;; If we are now precisely at the beginning of a defun, make sure
246 ;; beginning-of-defun finds that one rather than the previous one.
247 (or (eobp) (forward-char 1))
248 (beginning-of-defun)
249 ;; Make sure we are really inside the defun found, not after it.
250 (when (and (looking-at "\\s(")
251 (progn (end-of-defun)
252 (< location (point)))
253 (progn (forward-sexp -1)
254 (>= location (point))))
255 (if (looking-at "\\s(")
256 (forward-char 1))
257 ;; Skip the defining construct name, typically "defun" or
258 ;; "defvar".
259 (forward-sexp 1)
260 ;; The second element is usually a symbol being defined. If it
261 ;; is not, use the first symbol in it.
262 (skip-chars-forward " \t\n'(")
263 (buffer-substring-no-properties (point)
264 (progn (forward-sexp 1)
265 (point)))))))
266
252(defvar lisp-mode-shared-map 267(defvar lisp-mode-shared-map
253 (let ((map (make-sparse-keymap))) 268 (let ((map (make-sparse-keymap)))
254 (define-key map "\e\C-q" 'indent-sexp) 269 (define-key map "\e\C-q" 'indent-sexp)
@@ -519,10 +534,9 @@ or to switch back to an existing one.
519Entry to this mode calls the value of `lisp-mode-hook' 534Entry to this mode calls the value of `lisp-mode-hook'
520if that value is non-nil." 535if that value is non-nil."
521 (lisp-mode-variables nil t) 536 (lisp-mode-variables nil t)
522 (set (make-local-variable 'find-tag-default-function) 'lisp-find-tag-default) 537 (setq-local find-tag-default-function 'lisp-find-tag-default)
523 (make-local-variable 'comment-start-skip) 538 (setq-local comment-start-skip
524 (setq comment-start-skip 539 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
525 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *")
526 (setq imenu-case-fold-search t)) 540 (setq imenu-case-fold-search t))
527 541
528(defun lisp-find-tag-default () 542(defun lisp-find-tag-default ()
@@ -816,6 +830,7 @@ this command arranges for all errors to enter the debugger."
816(defun eval-defun-1 (form) 830(defun eval-defun-1 (form)
817 "Treat some expressions specially. 831 "Treat some expressions specially.
818Reset the `defvar' and `defcustom' variables to the initial value. 832Reset the `defvar' and `defcustom' variables to the initial value.
833\(For `defcustom', use the :set function if there is one.)
819Reinitialize the face according to the `defface' specification." 834Reinitialize the face according to the `defface' specification."
820 ;; The code in edebug-defun should be consistent with this, but not 835 ;; The code in edebug-defun should be consistent with this, but not
821 ;; the same, since this gets a macroexpanded form. 836 ;; the same, since this gets a macroexpanded form.
@@ -831,14 +846,19 @@ Reinitialize the face according to the `defface' specification."
831 ;; `custom-declare-variable' with a quoted value arg. 846 ;; `custom-declare-variable' with a quoted value arg.
832 ((and (eq (car form) 'custom-declare-variable) 847 ((and (eq (car form) 'custom-declare-variable)
833 (default-boundp (eval (nth 1 form) lexical-binding))) 848 (default-boundp (eval (nth 1 form) lexical-binding)))
834 ;; Force variable to be bound. 849 ;; Force variable to be bound, using :set function if specified.
835 (set-default (eval (nth 1 form) lexical-binding) 850 (let ((setfunc (memq :set form)))
836 ;; The second arg is an expression that evaluates to 851 (when setfunc
837 ;; an expression. The second evaluation is the one 852 (setq setfunc (car-safe (cdr-safe setfunc)))
838 ;; normally performed not be normal execution but by 853 (or (functionp setfunc) (setq setfunc nil)))
839 ;; custom-initialize-set (for example), which does not 854 (funcall (or setfunc 'set-default)
840 ;; use lexical-binding. 855 (eval (nth 1 form) lexical-binding)
841 (eval (eval (nth 2 form) lexical-binding))) 856 ;; The second arg is an expression that evaluates to
857 ;; an expression. The second evaluation is the one
858 ;; normally performed not by normal execution but by
859 ;; custom-initialize-set (for example), which does not
860 ;; use lexical-binding.
861 (eval (eval (nth 2 form) lexical-binding))))
842 form) 862 form)
843 ;; `defface' is macroexpanded to `custom-declare-face'. 863 ;; `defface' is macroexpanded to `custom-declare-face'.
844 ((eq (car form) 'custom-declare-face) 864 ((eq (car form) 'custom-declare-face)
@@ -847,21 +867,8 @@ Reinitialize the face according to the `defface' specification."
847 (setq face-new-frame-defaults 867 (setq face-new-frame-defaults
848 (assq-delete-all face-symbol face-new-frame-defaults)) 868 (assq-delete-all face-symbol face-new-frame-defaults))
849 (put face-symbol 'face-defface-spec nil) 869 (put face-symbol 'face-defface-spec nil)
850 (put face-symbol 'face-documentation (nth 3 form)) 870 (put face-symbol 'face-override-spec nil))
851 ;; Setting `customized-face' to the new spec after calling 871 form)
852 ;; the form, but preserving the old saved spec in `saved-face',
853 ;; imitates the situation when the new face spec is set
854 ;; temporarily for the current session in the customize
855 ;; buffer, thus allowing `face-user-default-spec' to use the
856 ;; new customized spec instead of the saved spec.
857 ;; Resetting `saved-face' temporarily to nil is needed to let
858 ;; `defface' change the spec, regardless of a saved spec.
859 (prog1 `(prog1 ,form
860 (put ,(nth 1 form) 'saved-face
861 ',(get face-symbol 'saved-face))
862 (put ,(nth 1 form) 'customized-face
863 ,(nth 2 form)))
864 (put face-symbol 'saved-face nil))))
865 ((eq (car form) 'progn) 872 ((eq (car form) 'progn)
866 (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) 873 (cons 'progn (mapcar 'eval-defun-1 (cdr form))))
867 (t form))) 874 (t form)))
@@ -914,11 +921,12 @@ Return the result of evaluation."
914 921
915If the current defun is actually a call to `defvar' or `defcustom', 922If the current defun is actually a call to `defvar' or `defcustom',
916evaluating it this way resets the variable using its initial value 923evaluating it this way resets the variable using its initial value
917expression even if the variable already has some other value. 924expression (using the defcustom's :set function if there is one), even
918\(Normally `defvar' and `defcustom' do not alter the value if there 925if the variable already has some other value. \(Normally `defvar' and
919already is one.) In an analogous way, evaluating a `defface' 926`defcustom' do not alter the value if there already is one.) In an
920overrides any customizations of the face, so that it becomes 927analogous way, evaluating a `defface' overrides any customizations of
921defined exactly as the `defface' expression says. 928the face, so that it becomes defined exactly as the `defface' expression
929says.
922 930
923If `eval-expression-debug-on-error' is non-nil, which is the default, 931If `eval-expression-debug-on-error' is non-nil, which is the default,
924this command arranges for all errors to enter the debugger. 932this command arranges for all errors to enter the debugger.
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 540e0166ec2..d9c5316b1b8 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -402,6 +402,56 @@ of the piece of advice."
402 (if (fboundp function-name) 402 (if (fboundp function-name)
403 (symbol-function function-name)))))) 403 (symbol-function function-name))))))
404 404
405;; When code is advised, called-interactively-p needs to be taught to skip
406;; the advising frames.
407;; FIXME: This Major Ugly Hack won't handle calls to called-interactively-p
408;; done from the advised function if the deepest advice is an around advice!
409;; In other cases (calls from an advice or calls from the advised function when
410;; the deepest advice is not an around advice), it should hopefully get
411;; it right.
412(add-hook 'called-interactively-p-functions
413 #'advice--called-interactively-skip)
414(defun advice--called-interactively-skip (origi frame1 frame2)
415 (let* ((i origi)
416 (get-next-frame
417 (lambda ()
418 (setq frame1 frame2)
419 (setq frame2 (internal--called-interactively-p--get-frame i))
420 ;; (message "Advice Frame %d = %S" i frame2)
421 (setq i (1+ i)))))
422 (when (and (eq (nth 1 frame2) 'apply)
423 (progn
424 (funcall get-next-frame)
425 (advice--p (indirect-function (nth 1 frame2)))))
426 (funcall get-next-frame)
427 ;; If we now have the symbol, this was the head advice and
428 ;; we're done.
429 (while (advice--p (nth 1 frame1))
430 ;; This was an inner advice called from some earlier advice.
431 ;; The stack frames look different depending on the particular
432 ;; kind of the earlier advice.
433 (let ((inneradvice (nth 1 frame1)))
434 (if (and (eq (nth 1 frame2) 'apply)
435 (progn
436 (funcall get-next-frame)
437 (advice--p (indirect-function
438 (nth 1 frame2)))))
439 ;; The earlier advice was something like a before/after
440 ;; advice where the "next" code is called directly by the
441 ;; advice--p object.
442 (funcall get-next-frame)
443 ;; It's apparently an around advice, where the "next" is
444 ;; called by the body of the advice in any way it sees fit,
445 ;; so we need to skip the frames of that body.
446 (while
447 (progn
448 (funcall get-next-frame)
449 (not (and (eq (nth 1 frame2) 'apply)
450 (eq (nth 3 frame2) inneradvice)))))
451 (funcall get-next-frame)
452 (funcall get-next-frame))))
453 (- i origi 1))))
454
405 455
406(provide 'nadvice) 456(provide 'nadvice)
407;;; nadvice.el ends here 457;;; nadvice.el ends here
diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index c3d78b3444b..592cb1b0174 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -55,12 +55,18 @@
55 ;; have to flush that cache between each function, and we couldn't use 55 ;; have to flush that cache between each function, and we couldn't use
56 ;; syntax-ppss-flush-cache since that would not only flush the cache but also 56 ;; syntax-ppss-flush-cache since that would not only flush the cache but also
57 ;; reset syntax-propertize--done which should not be done in this case). 57 ;; reset syntax-propertize--done which should not be done in this case).
58 "Mode-specific function to apply the syntax-table properties. 58 "Mode-specific function to apply `syntax-table' text properties.
59Called with two arguments: START and END. 59The value of this variable is a function to be called by Font
60This function can call `syntax-ppss' on any position before END, but it 60Lock mode, prior to performing syntactic fontification on a
61should not call `syntax-ppss-flush-cache', which means that it should not 61stretch of text. It is given two arguments, START and END: the
62call `syntax-ppss' on some position and later modify the buffer on some 62start and end of the text to be fontified. Major modes can
63earlier position.") 63specify a custom function to apply `syntax-table' properties to
64override the default syntax table in special cases.
65
66The specified function may call `syntax-ppss' on any position
67before END, but it should not call `syntax-ppss-flush-cache',
68which means that it should not call `syntax-ppss' on some
69position and later modify the buffer on some earlier position.")
64 70
65(defvar syntax-propertize-chunk-size 500) 71(defvar syntax-propertize-chunk-size 500)
66 72
@@ -118,7 +124,7 @@ The arg RULES can be of the same form as in `syntax-propertize-rules'.
118The return value is an object that can be passed as a rule to 124The return value is an object that can be passed as a rule to
119`syntax-propertize-rules'. 125`syntax-propertize-rules'.
120I.e. this is useful only when you want to share rules among several 126I.e. this is useful only when you want to share rules among several
121syntax-propertize-functions." 127`syntax-propertize-function's."
122 (declare (debug syntax-propertize-rules)) 128 (declare (debug syntax-propertize-rules))
123 ;; Precompile? Yeah, right! 129 ;; Precompile? Yeah, right!
124 ;; Seriously, tho, this is a macro for 2 reasons: 130 ;; Seriously, tho, this is a macro for 2 reasons:
diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el
index c6fff7aa443..722e6270e95 100644
--- a/lisp/emacs-lisp/trace.el
+++ b/lisp/emacs-lisp/trace.el
@@ -1,4 +1,4 @@
1;;; trace.el --- tracing facility for Emacs Lisp functions 1;;; trace.el --- tracing facility for Emacs Lisp functions -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1993, 1998, 2000-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 1998, 2000-2012 Free Software Foundation, Inc.
4 4
@@ -151,18 +151,15 @@
151 151
152;;; Code: 152;;; Code:
153 153
154(require 'advice)
155
156(defgroup trace nil 154(defgroup trace nil
157 "Tracing facility for Emacs Lisp functions." 155 "Tracing facility for Emacs Lisp functions."
158 :prefix "trace-" 156 :prefix "trace-"
159 :group 'lisp) 157 :group 'lisp)
160 158
161;;;###autoload 159;;;###autoload
162(defcustom trace-buffer (purecopy "*trace-output*") 160(defcustom trace-buffer "*trace-output*"
163 "Trace output will by default go to that buffer." 161 "Trace output will by default go to that buffer."
164 :type 'string 162 :type 'string)
165 :group 'trace)
166 163
167;; Current level of traced function invocation: 164;; Current level of traced function invocation:
168(defvar trace-level 0) 165(defvar trace-level 0)
@@ -176,78 +173,109 @@
176(defvar inhibit-trace nil 173(defvar inhibit-trace nil
177 "If non-nil, all tracing is temporarily inhibited.") 174 "If non-nil, all tracing is temporarily inhibited.")
178 175
179(defun trace-entry-message (function level argument-bindings) 176(defun trace-entry-message (function level args context)
180 ;; Generates a string that describes that FUNCTION has been entered at 177 "Generate a string that describes that FUNCTION has been entered.
181 ;; trace LEVEL with ARGUMENT-BINDINGS. 178LEVEL is the trace level, ARGS is the list of arguments passed to FUNCTION,
182 (format "%s%s%d -> %s: %s\n" 179and CONTEXT is a string describing the dynamic context (e.g. values of
183 (mapconcat 'char-to-string (make-string (1- level) ?|) " ") 180some global variables)."
184 (if (> level 1) " " "") 181 (let ((print-circle t))
185 level 182 (format "%s%s%d -> %S%s\n"
186 function 183 (mapconcat 'char-to-string (make-string (1- level) ?|) " ")
187 (let ((print-circle t)) 184 (if (> level 1) " " "")
188 (mapconcat (lambda (binding) 185 level
189 (concat 186 (cons function args)
190 (symbol-name (ad-arg-binding-field binding 'name)) 187 context)))
191 "=" 188
192 ;; do this so we'll see strings: 189(defun trace-exit-message (function level value context)
193 (prin1-to-string 190 "Generate a string that describes that FUNCTION has exited.
194 (ad-arg-binding-field binding 'value)))) 191LEVEL is the trace level, VALUE value returned by FUNCTION,
195 argument-bindings 192and CONTEXT is a string describing the dynamic context (e.g. values of
196 " ")))) 193some global variables)."
197 194 (let ((print-circle t))
198(defun trace-exit-message (function level value) 195 (format "%s%s%d <- %s: %S%s\n"
199 ;; Generates a string that describes that FUNCTION has been exited at 196 (mapconcat 'char-to-string (make-string (1- level) ?|) " ")
200 ;; trace LEVEL and that it returned VALUE. 197 (if (> level 1) " " "")
201 (format "%s%s%d <- %s: %s\n" 198 level
202 (mapconcat 'char-to-string (make-string (1- level) ?|) " ") 199 function
203 (if (> level 1) " " "") 200 ;; Do this so we'll see strings:
204 level 201 value
205 function 202 context)))
206 ;; do this so we'll see strings: 203
207 (let ((print-circle t)) (prin1-to-string value)))) 204(defvar trace--timer nil)
208 205
209(defun trace-make-advice (function buffer background) 206(defun trace-make-advice (function buffer background context)
210 ;; Builds the piece of advice to be added to FUNCTION's advice info 207 "Build the piece of advice to be added to trace FUNCTION.
211 ;; so that it will generate the proper trace output in BUFFER 208FUNCTION is the name of the traced function.
212 ;; (quietly if BACKGROUND is t). 209BUFFER is the buffer where the trace should be printed.
213 (ad-make-advice 210BACKGROUND if nil means to display BUFFER.
214 trace-advice-name nil t 211CONTEXT if non-nil should be a function that returns extra info that should
215 `(advice 212be printed along with the arguments in the trace."
216 lambda () 213 (lambda (body &rest args)
217 (let ((trace-level (1+ trace-level)) 214 (let ((trace-level (1+ trace-level))
218 (trace-buffer (get-buffer-create ,buffer))) 215 (trace-buffer (get-buffer-create buffer))
219 (unless inhibit-trace 216 (ctx (funcall context)))
220 (with-current-buffer trace-buffer 217 (unless inhibit-trace
221 (set (make-local-variable 'window-point-insertion-type) t) 218 (with-current-buffer trace-buffer
222 ,(unless background '(display-buffer trace-buffer)) 219 (set (make-local-variable 'window-point-insertion-type) t)
223 (goto-char (point-max)) 220 (unless (or background trace--timer
224 ;; Insert a separator from previous trace output: 221 (get-buffer-window trace-buffer 'visible))
225 (if (= trace-level 1) (insert trace-separator)) 222 (setq trace--timer
226 (insert 223 ;; Postpone the display to some later time, in case we
227 (trace-entry-message 224 ;; can't actually do it now.
228 ',function trace-level ad-arg-bindings)))) 225 (run-with-timer 0 nil
229 ad-do-it 226 (lambda ()
230 (unless inhibit-trace 227 (setq trace--timer nil)
231 (with-current-buffer trace-buffer 228 (display-buffer trace-buffer)))))
232 ,(unless background '(display-buffer trace-buffer)) 229 (goto-char (point-max))
233 (goto-char (point-max)) 230 ;; Insert a separator from previous trace output:
234 (insert 231 (if (= trace-level 1) (insert trace-separator))
235 (trace-exit-message 232 (insert
236 ',function trace-level ad-return-value)))))))) 233 (trace-entry-message
237 234 function trace-level args ctx))))
238(defun trace-function-internal (function buffer background) 235 (let ((result))
239 ;; Adds trace advice for FUNCTION and activates it. 236 (unwind-protect
240 (ad-add-advice 237 (setq result (list (apply body args)))
241 function 238 (unless inhibit-trace
242 (trace-make-advice function (or buffer trace-buffer) background) 239 (let ((ctx (funcall context)))
243 'around 'last) 240 (with-current-buffer trace-buffer
244 (ad-activate function nil)) 241 (unless background (display-buffer trace-buffer))
242 (goto-char (point-max))
243 (insert
244 (trace-exit-message
245 function
246 trace-level
247 (if result (car result) '\!non-local\ exit\!)
248 ctx))))))
249 (car result)))))
250
251(defun trace-function-internal (function buffer background context)
252 "Add trace advice for FUNCTION."
253 (advice-add
254 function :around
255 (trace-make-advice function (or buffer trace-buffer) background
256 (or context (lambda () "")))
257 `((name . ,trace-advice-name))))
245 258
246(defun trace-is-traced (function) 259(defun trace-is-traced (function)
247 (ad-find-advice function 'around trace-advice-name)) 260 (advice-member-p trace-advice-name function))
261
262(defun trace--read-args (prompt)
263 (cons
264 (intern (completing-read prompt obarray 'fboundp t))
265 (when current-prefix-arg
266 (list
267 (read-buffer "Output to buffer: " trace-buffer)
268 (let ((exp
269 (let ((minibuffer-completing-symbol t))
270 (read-from-minibuffer "Context expression: "
271 nil read-expression-map t
272 'read-expression-history))))
273 `(lambda ()
274 (let ((print-circle t))
275 (concat " [" (prin1-to-string ,exp) "]"))))))))
248 276
249;;;###autoload 277;;;###autoload
250(defun trace-function (function &optional buffer) 278(defun trace-function-foreground (function &optional buffer context)
251 "Traces FUNCTION with trace output going to BUFFER. 279 "Traces FUNCTION with trace output going to BUFFER.
252For every call of FUNCTION Lisp-style trace messages that display argument 280For every call of FUNCTION Lisp-style trace messages that display argument
253and return values will be inserted into BUFFER. This function generates the 281and return values will be inserted into BUFFER. This function generates the
@@ -255,14 +283,11 @@ trace advice for FUNCTION and activates it together with any other advice
255there might be!! The trace BUFFER will popup whenever FUNCTION is called. 283there might be!! The trace BUFFER will popup whenever FUNCTION is called.
256Do not use this to trace functions that switch buffers or do any other 284Do not use this to trace functions that switch buffers or do any other
257display oriented stuff, use `trace-function-background' instead." 285display oriented stuff, use `trace-function-background' instead."
258 (interactive 286 (interactive (trace--read-args "Trace function: "))
259 (list 287 (trace-function-internal function buffer nil context))
260 (intern (completing-read "Trace function: " obarray 'fboundp t))
261 (read-buffer "Output to buffer: " trace-buffer)))
262 (trace-function-internal function buffer nil))
263 288
264;;;###autoload 289;;;###autoload
265(defun trace-function-background (function &optional buffer) 290(defun trace-function-background (function &optional buffer context)
266 "Traces FUNCTION with trace output going quietly to BUFFER. 291 "Traces FUNCTION with trace output going quietly to BUFFER.
267When this tracing is enabled, every call to FUNCTION writes 292When this tracing is enabled, every call to FUNCTION writes
268a Lisp-style trace message (showing the arguments and return value) 293a Lisp-style trace message (showing the arguments and return value)
@@ -272,12 +297,11 @@ The trace output goes to BUFFER quietly, without changing
272the window or buffer configuration. 297the window or buffer configuration.
273 298
274BUFFER defaults to `trace-buffer'." 299BUFFER defaults to `trace-buffer'."
275 (interactive 300 (interactive (trace--read-args "Trace function in background: "))
276 (list 301 (trace-function-internal function buffer t context))
277 (intern 302
278 (completing-read "Trace function in background: " obarray 'fboundp t)) 303;;;###autoload
279 (read-buffer "Output to buffer: " trace-buffer))) 304(defalias 'trace-function 'trace-function-foreground)
280 (trace-function-internal function buffer t))
281 305
282(defun untrace-function (function) 306(defun untrace-function (function)
283 "Untraces FUNCTION and possibly activates all remaining advice. 307 "Untraces FUNCTION and possibly activates all remaining advice.
@@ -285,16 +309,14 @@ Activation is performed with `ad-update', hence remaining advice will get
285activated only if the advice of FUNCTION is currently active. If FUNCTION 309activated only if the advice of FUNCTION is currently active. If FUNCTION
286was not traced this is a noop." 310was not traced this is a noop."
287 (interactive 311 (interactive
288 (list (ad-read-advised-function "Untrace function" 'trace-is-traced))) 312 (list (intern (completing-read "Untrace function: "
289 (when (trace-is-traced function) 313 obarray #'trace-is-traced t))))
290 (ad-remove-advice function 'around trace-advice-name) 314 (advice-remove function trace-advice-name))
291 (ad-update function)))
292 315
293(defun untrace-all () 316(defun untrace-all ()
294 "Untraces all currently traced functions." 317 "Untraces all currently traced functions."
295 (interactive) 318 (interactive)
296 (ad-do-advised-functions (function) 319 (mapatoms #'untrace-function))
297 (untrace-function function)))
298 320
299(provide 'trace) 321(provide 'trace)
300 322
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index e0a88461dc9..847b995997c 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,36 @@
12012-11-30 Glenn Morris <rgm@gnu.org>
2
3 * erc.el (erc-accidental-paste-threshold-seconds): Add :version.
4
52012-11-30 Eric Hanchrow <eric.hanchrow@gmail.com>
6
7 * erc.el (erc-last-input-time): New variable.
8 (erc-accidental-paste-threshold-seconds): New option to avoid
9 sending accidentally-pasted text to the server (Bug#11592).
10 (erc-send-current-line): Use it.
11
122012-11-30 Chong Yidong <cyd@gnu.org>
13
14 * erc.el (erc-lurker-cleanup, erc-lurker-p): Use float-time.
15
162012-11-23 Stefan Monnier <monnier@iro.umontreal.ca>
17
18 * erc-backend.el: Fix last change that missed calls to `second'
19 (bug#12970).
20
212012-11-19 Stefan Monnier <monnier@iro.umontreal.ca>
22
23 Use cl-lib instead of cl, and interactive-p => called-interactively-p.
24 * erc-track.el, erc-networks.el, erc-netsplit.el, erc-dcc.el:
25 * erc-backend.el: Use cl-lib, nth, pcase, and called-interactively-p
26 instead of cl.
27 * erc-speedbar.el, erc-services.el, erc-pcomplete.el, erc-notify.el:
28 * erc-match.el, erc-log.el, erc-join.el, erc-ezbounce.el:
29 * erc-capab.el: Don't require cl since we don't use it.
30 * erc.el: Use cl-lib, nth, pcase, and called-interactively-p i.s.o cl.
31 (erc-lurker-ignore-chars, erc-common-server-suffixes):
32 Move before first use.
33
12012-11-16 Glenn Morris <rgm@gnu.org> 342012-11-16 Glenn Morris <rgm@gnu.org>
2 35
3 * erc.el (erc-modules): Add "notifications". Tweak "hecomplete" doc. 36 * erc.el (erc-modules): Add "notifications". Tweak "hecomplete" doc.
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 90b96d7c763..9b28916623b 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -98,7 +98,7 @@
98;;; Code: 98;;; Code:
99 99
100(require 'erc-compat) 100(require 'erc-compat)
101(eval-when-compile (require 'cl)) 101(eval-when-compile (require 'cl-lib))
102;; There's a fairly strong mutual dependency between erc.el and erc-backend.el. 102;; There's a fairly strong mutual dependency between erc.el and erc-backend.el.
103;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the 103;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the
104;; reverse is true: 104;; reverse is true:
@@ -109,7 +109,7 @@
109(defvar erc-server-responses (make-hash-table :test #'equal) 109(defvar erc-server-responses (make-hash-table :test #'equal)
110 "Hashtable mapping server responses to their handler hooks.") 110 "Hashtable mapping server responses to their handler hooks.")
111 111
112(defstruct (erc-response (:conc-name erc-response.)) 112(cl-defstruct (erc-response (:conc-name erc-response.))
113 (unparsed "" :type string) 113 (unparsed "" :type string)
114 (sender "" :type string) 114 (sender "" :type string)
115 (command "" :type string) 115 (command "" :type string)
@@ -950,7 +950,7 @@ PROCs `process-buffer' is `current-buffer' when this function is called."
950 (push str (erc-response.command-args msg)))) 950 (push str (erc-response.command-args msg))))
951 951
952 (setf (erc-response.contents msg) 952 (setf (erc-response.contents msg)
953 (first (erc-response.command-args msg))) 953 (car (erc-response.command-args msg)))
954 954
955 (setf (erc-response.command-args msg) 955 (setf (erc-response.command-args msg)
956 (nreverse (erc-response.command-args msg))) 956 (nreverse (erc-response.command-args msg)))
@@ -1045,7 +1045,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
1045 (name &rest name) 1045 (name &rest name)
1046 &optional sexp sexp def-body)) 1046 &optional sexp sexp def-body))
1047 1047
1048(defmacro* define-erc-response-handler ((name &rest aliases) 1048(cl-defmacro define-erc-response-handler ((name &rest aliases)
1049 &optional extra-fn-doc extra-var-doc 1049 &optional extra-fn-doc extra-var-doc
1050 &rest fn-body) 1050 &rest fn-body)
1051 "Define an ERC handler hook/function pair. 1051 "Define an ERC handler hook/function pair.
@@ -1154,11 +1154,11 @@ add things to `%s' instead."
1154 "") 1154 "")
1155 name hook-name)) 1155 name hook-name))
1156 (fn-alternates 1156 (fn-alternates
1157 (loop for alias in aliases 1157 (cl-loop for alias in aliases
1158 collect (intern (format "erc-server-%s" alias)))) 1158 collect (intern (format "erc-server-%s" alias))))
1159 (var-alternates 1159 (var-alternates
1160 (loop for alias in aliases 1160 (cl-loop for alias in aliases
1161 collect (intern (format "erc-server-%s-functions" alias))))) 1161 collect (intern (format "erc-server-%s-functions" alias)))))
1162 `(prog2 1162 `(prog2
1163 ;; Normal hook variable. 1163 ;; Normal hook variable.
1164 (defvar ,hook-name ',fn-name ,(format hook-doc name)) 1164 (defvar ,hook-name ',fn-name ,(format hook-doc name))
@@ -1172,19 +1172,19 @@ add things to `%s' instead."
1172 (put ',hook-name 'definition-name ',name) 1172 (put ',hook-name 'definition-name ',name)
1173 1173
1174 ;; Hashtable map of responses to hook variables 1174 ;; Hashtable map of responses to hook variables
1175 ,@(loop for response in (cons name aliases) 1175 ,@(cl-loop for response in (cons name aliases)
1176 for var in (cons hook-name var-alternates) 1176 for var in (cons hook-name var-alternates)
1177 collect `(puthash ,(format "%s" response) ',var 1177 collect `(puthash ,(format "%s" response) ',var
1178 erc-server-responses)) 1178 erc-server-responses))
1179 ;; Alternates. 1179 ;; Alternates.
1180 ;; Functions are defaliased, hook variables are defvared so we 1180 ;; Functions are defaliased, hook variables are defvared so we
1181 ;; can add hooks to one alias, but not another. 1181 ;; can add hooks to one alias, but not another.
1182 ,@(loop for fn in fn-alternates 1182 ,@(cl-loop for fn in fn-alternates
1183 for var in var-alternates 1183 for var in var-alternates
1184 for a in aliases 1184 for a in aliases
1185 nconc (list `(defalias ',fn ',fn-name) 1185 nconc (list `(defalias ',fn ',fn-name)
1186 `(defvar ,var ',fn-name ,(format hook-doc a)) 1186 `(defvar ,var ',fn-name ,(format hook-doc a))
1187 `(put ',var 'definition-name ',hook-name)))))) 1187 `(put ',var 'definition-name ',hook-name))))))
1188 1188
1189(define-erc-response-handler (ERROR) 1189(define-erc-response-handler (ERROR)
1190 "Handle an ERROR command from the server." nil 1190 "Handle an ERROR command from the server." nil
@@ -1196,10 +1196,10 @@ add things to `%s' instead."
1196(define-erc-response-handler (INVITE) 1196(define-erc-response-handler (INVITE)
1197 "Handle invitation messages." 1197 "Handle invitation messages."
1198 nil 1198 nil
1199 (let ((target (first (erc-response.command-args parsed))) 1199 (let ((target (car (erc-response.command-args parsed)))
1200 (chnl (erc-response.contents parsed))) 1200 (chnl (erc-response.contents parsed)))
1201 (multiple-value-bind (nick login host) 1201 (pcase-let ((`(,nick ,login ,host)
1202 (values-list (erc-parse-user (erc-response.sender parsed))) 1202 (erc-parse-user (erc-response.sender parsed))))
1203 (setq erc-invitation chnl) 1203 (setq erc-invitation chnl)
1204 (when (string= target (erc-current-nick)) 1204 (when (string= target (erc-current-nick))
1205 (erc-display-message 1205 (erc-display-message
@@ -1212,8 +1212,8 @@ add things to `%s' instead."
1212 nil 1212 nil
1213 (let ((chnl (erc-response.contents parsed)) 1213 (let ((chnl (erc-response.contents parsed))
1214 (buffer nil)) 1214 (buffer nil))
1215 (multiple-value-bind (nick login host) 1215 (pcase-let ((`(,nick ,login ,host)
1216 (values-list (erc-parse-user (erc-response.sender parsed))) 1216 (erc-parse-user (erc-response.sender parsed))))
1217 ;; strip the stupid combined JOIN facility (IRC 2.9) 1217 ;; strip the stupid combined JOIN facility (IRC 2.9)
1218 (if (string-match "^\\(.*\\)?\^g.*$" chnl) 1218 (if (string-match "^\\(.*\\)?\^g.*$" chnl)
1219 (setq chnl (match-string 1 chnl))) 1219 (setq chnl (match-string 1 chnl)))
@@ -1249,12 +1249,12 @@ add things to `%s' instead."
1249 1249
1250(define-erc-response-handler (KICK) 1250(define-erc-response-handler (KICK)
1251 "Handle kick messages received from the server." nil 1251 "Handle kick messages received from the server." nil
1252 (let* ((ch (first (erc-response.command-args parsed))) 1252 (let* ((ch (nth 0 (erc-response.command-args parsed)))
1253 (tgt (second (erc-response.command-args parsed))) 1253 (tgt (nth 1 (erc-response.command-args parsed)))
1254 (reason (erc-trim-string (erc-response.contents parsed))) 1254 (reason (erc-trim-string (erc-response.contents parsed)))
1255 (buffer (erc-get-buffer ch proc))) 1255 (buffer (erc-get-buffer ch proc)))
1256 (multiple-value-bind (nick login host) 1256 (pcase-let ((`(,nick ,login ,host)
1257 (values-list (erc-parse-user (erc-response.sender parsed))) 1257 (erc-parse-user (erc-response.sender parsed))))
1258 (erc-remove-channel-member buffer tgt) 1258 (erc-remove-channel-member buffer tgt)
1259 (cond 1259 (cond
1260 ((string= tgt (erc-current-nick)) 1260 ((string= tgt (erc-current-nick))
@@ -1277,11 +1277,11 @@ add things to `%s' instead."
1277 1277
1278(define-erc-response-handler (MODE) 1278(define-erc-response-handler (MODE)
1279 "Handle server mode changes." nil 1279 "Handle server mode changes." nil
1280 (let ((tgt (first (erc-response.command-args parsed))) 1280 (let ((tgt (car (erc-response.command-args parsed)))
1281 (mode (mapconcat 'identity (cdr (erc-response.command-args parsed)) 1281 (mode (mapconcat 'identity (cdr (erc-response.command-args parsed))
1282 " "))) 1282 " ")))
1283 (multiple-value-bind (nick login host) 1283 (pcase-let ((`(,nick ,login ,host)
1284 (values-list (erc-parse-user (erc-response.sender parsed))) 1284 (erc-parse-user (erc-response.sender parsed))))
1285 (erc-log (format "MODE: %s -> %s: %s" nick tgt mode)) 1285 (erc-log (format "MODE: %s -> %s: %s" nick tgt mode))
1286 ;; dirty hack 1286 ;; dirty hack
1287 (let ((buf (cond ((erc-channel-p tgt) 1287 (let ((buf (cond ((erc-channel-p tgt)
@@ -1305,8 +1305,8 @@ add things to `%s' instead."
1305 "Handle nick change messages." nil 1305 "Handle nick change messages." nil
1306 (let ((nn (erc-response.contents parsed)) 1306 (let ((nn (erc-response.contents parsed))
1307 bufs) 1307 bufs)
1308 (multiple-value-bind (nick login host) 1308 (pcase-let ((`(,nick ,login ,host)
1309 (values-list (erc-parse-user (erc-response.sender parsed))) 1309 (erc-parse-user (erc-response.sender parsed))))
1310 (setq bufs (erc-buffer-list-with-nick nick proc)) 1310 (setq bufs (erc-buffer-list-with-nick nick proc))
1311 (erc-log (format "NICK: %s -> %s" nick nn)) 1311 (erc-log (format "NICK: %s -> %s" nick nn))
1312 ;; if we had a query with this user, make sure future messages will be 1312 ;; if we had a query with this user, make sure future messages will be
@@ -1340,11 +1340,11 @@ add things to `%s' instead."
1340 1340
1341(define-erc-response-handler (PART) 1341(define-erc-response-handler (PART)
1342 "Handle part messages." nil 1342 "Handle part messages." nil
1343 (let* ((chnl (first (erc-response.command-args parsed))) 1343 (let* ((chnl (car (erc-response.command-args parsed)))
1344 (reason (erc-trim-string (erc-response.contents parsed))) 1344 (reason (erc-trim-string (erc-response.contents parsed)))
1345 (buffer (erc-get-buffer chnl proc))) 1345 (buffer (erc-get-buffer chnl proc)))
1346 (multiple-value-bind (nick login host) 1346 (pcase-let ((`(,nick ,login ,host)
1347 (values-list (erc-parse-user (erc-response.sender parsed))) 1347 (erc-parse-user (erc-response.sender parsed))))
1348 (erc-remove-channel-member buffer nick) 1348 (erc-remove-channel-member buffer nick)
1349 (erc-display-message parsed 'notice buffer 1349 (erc-display-message parsed 'notice buffer
1350 'PART ?n nick ?u login 1350 'PART ?n nick ?u login
@@ -1361,7 +1361,7 @@ add things to `%s' instead."
1361 1361
1362(define-erc-response-handler (PING) 1362(define-erc-response-handler (PING)
1363 "Handle ping messages." nil 1363 "Handle ping messages." nil
1364 (let ((pinger (first (erc-response.command-args parsed)))) 1364 (let ((pinger (car (erc-response.command-args parsed))))
1365 (erc-log (format "PING: %s" pinger)) 1365 (erc-log (format "PING: %s" pinger))
1366 ;; ping response to the server MUST be forced, or you can lose big 1366 ;; ping response to the server MUST be forced, or you can lose big
1367 (erc-server-send (format "PONG :%s" pinger) t) 1367 (erc-server-send (format "PONG :%s" pinger) t)
@@ -1379,7 +1379,7 @@ add things to `%s' instead."
1379 (when erc-verbose-server-ping 1379 (when erc-verbose-server-ping
1380 (erc-display-message 1380 (erc-display-message
1381 parsed 'notice proc 'PONG 1381 parsed 'notice proc 'PONG
1382 ?h (first (erc-response.command-args parsed)) ?i erc-server-lag 1382 ?h (car (erc-response.command-args parsed)) ?i erc-server-lag
1383 ?s (if (/= erc-server-lag 1) "s" ""))) 1383 ?s (if (/= erc-server-lag 1) "s" "")))
1384 (erc-update-mode-line)))) 1384 (erc-update-mode-line))))
1385 1385
@@ -1451,8 +1451,8 @@ add things to `%s' instead."
1451 "Another user has quit IRC." nil 1451 "Another user has quit IRC." nil
1452 (let ((reason (erc-response.contents parsed)) 1452 (let ((reason (erc-response.contents parsed))
1453 bufs) 1453 bufs)
1454 (multiple-value-bind (nick login host) 1454 (pcase-let ((`(,nick ,login ,host)
1455 (values-list (erc-parse-user (erc-response.sender parsed))) 1455 (erc-parse-user (erc-response.sender parsed))))
1456 (setq bufs (erc-buffer-list-with-nick nick proc)) 1456 (setq bufs (erc-buffer-list-with-nick nick proc))
1457 (erc-remove-user nick) 1457 (erc-remove-user nick)
1458 (setq reason (erc-wash-quit-reason reason nick login host)) 1458 (setq reason (erc-wash-quit-reason reason nick login host))
@@ -1462,12 +1462,12 @@ add things to `%s' instead."
1462 1462
1463(define-erc-response-handler (TOPIC) 1463(define-erc-response-handler (TOPIC)
1464 "The channel topic has changed." nil 1464 "The channel topic has changed." nil
1465 (let* ((ch (first (erc-response.command-args parsed))) 1465 (let* ((ch (car (erc-response.command-args parsed)))
1466 (topic (erc-trim-string (erc-response.contents parsed))) 1466 (topic (erc-trim-string (erc-response.contents parsed)))
1467 (time (format-time-string erc-server-timestamp-format 1467 (time (format-time-string erc-server-timestamp-format
1468 (current-time)))) 1468 (current-time))))
1469 (multiple-value-bind (nick login host) 1469 (pcase-let ((`(,nick ,login ,host)
1470 (values-list (erc-parse-user (erc-response.sender parsed))) 1470 (erc-parse-user (erc-response.sender parsed))))
1471 (erc-update-channel-member ch nick nick nil nil nil host login) 1471 (erc-update-channel-member ch nick nick nil nil nil host login)
1472 (erc-update-channel-topic ch (format "%s\C-o (%s, %s)" topic nick time)) 1472 (erc-update-channel-topic ch (format "%s\C-o (%s, %s)" topic nick time))
1473 (erc-display-message parsed 'notice (erc-get-buffer ch proc) 1473 (erc-display-message parsed 'notice (erc-get-buffer ch proc)
@@ -1477,8 +1477,8 @@ add things to `%s' instead."
1477(define-erc-response-handler (WALLOPS) 1477(define-erc-response-handler (WALLOPS)
1478 "Display a WALLOPS message." nil 1478 "Display a WALLOPS message." nil
1479 (let ((message (erc-response.contents parsed))) 1479 (let ((message (erc-response.contents parsed)))
1480 (multiple-value-bind (nick login host) 1480 (pcase-let ((`(,nick ,login ,host)
1481 (values-list (erc-parse-user (erc-response.sender parsed))) 1481 (erc-parse-user (erc-response.sender parsed))))
1482 (erc-display-message 1482 (erc-display-message
1483 parsed 'notice nil 1483 parsed 'notice nil
1484 'WALLOPS ?n nick ?m message)))) 1484 'WALLOPS ?n nick ?m message))))
@@ -1486,7 +1486,7 @@ add things to `%s' instead."
1486(define-erc-response-handler (001) 1486(define-erc-response-handler (001)
1487 "Set `erc-server-current-nick' to reflect server settings and display the welcome message." 1487 "Set `erc-server-current-nick' to reflect server settings and display the welcome message."
1488 nil 1488 nil
1489 (erc-set-current-nick (first (erc-response.command-args parsed))) 1489 (erc-set-current-nick (car (erc-response.command-args parsed)))
1490 (erc-update-mode-line) ; needed here? 1490 (erc-update-mode-line) ; needed here?
1491 (setq erc-nick-change-attempt-count 0) 1491 (setq erc-nick-change-attempt-count 0)
1492 (setq erc-default-nicks (if (consp erc-nick) erc-nick (list erc-nick))) 1492 (setq erc-default-nicks (if (consp erc-nick) erc-nick (list erc-nick)))
@@ -1507,16 +1507,16 @@ add things to `%s' instead."
1507 1507
1508(define-erc-response-handler (004) 1508(define-erc-response-handler (004)
1509 "Display the server's identification." nil 1509 "Display the server's identification." nil
1510 (multiple-value-bind (server-name server-version) 1510 (pcase-let ((`(,server-name ,server-version)
1511 (values-list (cdr (erc-response.command-args parsed))) 1511 (cdr (erc-response.command-args parsed))))
1512 (setq erc-server-version server-version) 1512 (setq erc-server-version server-version)
1513 (setq erc-server-announced-name server-name) 1513 (setq erc-server-announced-name server-name)
1514 (erc-update-mode-line-buffer (process-buffer proc)) 1514 (erc-update-mode-line-buffer (process-buffer proc))
1515 (erc-display-message 1515 (erc-display-message
1516 parsed 'notice proc 1516 parsed 'notice proc
1517 's004 ?s server-name ?v server-version 1517 's004 ?s server-name ?v server-version
1518 ?U (fourth (erc-response.command-args parsed)) 1518 ?U (nth 3 (erc-response.command-args parsed))
1519 ?C (fifth (erc-response.command-args parsed))))) 1519 ?C (nth 4 (erc-response.command-args parsed)))))
1520 1520
1521(define-erc-response-handler (005) 1521(define-erc-response-handler (005)
1522 "Set the variable `erc-server-parameters' and display the received message. 1522 "Set the variable `erc-server-parameters' and display the received message.
@@ -1547,7 +1547,7 @@ A server may send more than one 005 message."
1547 1547
1548(define-erc-response-handler (221) 1548(define-erc-response-handler (221)
1549 "Display the current user modes." nil 1549 "Display the current user modes." nil
1550 (let* ((nick (first (erc-response.command-args parsed))) 1550 (let* ((nick (car (erc-response.command-args parsed)))
1551 (modes (mapconcat 'identity 1551 (modes (mapconcat 'identity
1552 (cdr (erc-response.command-args parsed)) " "))) 1552 (cdr (erc-response.command-args parsed)) " ")))
1553 (erc-set-modes nick modes) 1553 (erc-set-modes nick modes)
@@ -1556,17 +1556,17 @@ A server may send more than one 005 message."
1556(define-erc-response-handler (252) 1556(define-erc-response-handler (252)
1557 "Display the number of IRC operators online." nil 1557 "Display the number of IRC operators online." nil
1558 (erc-display-message parsed 'notice 'active 's252 1558 (erc-display-message parsed 'notice 'active 's252
1559 ?i (second (erc-response.command-args parsed)))) 1559 ?i (cadr (erc-response.command-args parsed))))
1560 1560
1561(define-erc-response-handler (253) 1561(define-erc-response-handler (253)
1562 "Display the number of unknown connections." nil 1562 "Display the number of unknown connections." nil
1563 (erc-display-message parsed 'notice 'active 's253 1563 (erc-display-message parsed 'notice 'active 's253
1564 ?i (second (erc-response.command-args parsed)))) 1564 ?i (cadr (erc-response.command-args parsed))))
1565 1565
1566(define-erc-response-handler (254) 1566(define-erc-response-handler (254)
1567 "Display the number of channels formed." nil 1567 "Display the number of channels formed." nil
1568 (erc-display-message parsed 'notice 'active 's254 1568 (erc-display-message parsed 'notice 'active 's254
1569 ?i (second (erc-response.command-args parsed)))) 1569 ?i (cadr (erc-response.command-args parsed))))
1570 1570
1571(define-erc-response-handler (250 251 255 256 257 258 259 265 266 377 378) 1571(define-erc-response-handler (250 251 255 256 257 258 259 265 266 377 378)
1572 "Generic display of server messages as notices. 1572 "Generic display of server messages as notices.
@@ -1576,8 +1576,8 @@ See `erc-display-server-message'." nil
1576 1576
1577(define-erc-response-handler (275) 1577(define-erc-response-handler (275)
1578 "Display secure connection message." nil 1578 "Display secure connection message." nil
1579 (multiple-value-bind (nick user message) 1579 (pcase-let ((`(,nick ,user ,message)
1580 (values-list (cdr (erc-response.command-args parsed))) 1580 (cdr (erc-response.command-args parsed))))
1581 (erc-display-message 1581 (erc-display-message
1582 parsed 'notice 'active 's275 1582 parsed 'notice 'active 's275
1583 ?n nick 1583 ?n nick
@@ -1590,13 +1590,13 @@ See `erc-display-server-message'." nil
1590(define-erc-response-handler (301) 1590(define-erc-response-handler (301)
1591 "AWAY notice." nil 1591 "AWAY notice." nil
1592 (erc-display-message parsed 'notice 'active 's301 1592 (erc-display-message parsed 'notice 'active 's301
1593 ?n (second (erc-response.command-args parsed)) 1593 ?n (cadr (erc-response.command-args parsed))
1594 ?r (erc-response.contents parsed))) 1594 ?r (erc-response.contents parsed)))
1595 1595
1596(define-erc-response-handler (303) 1596(define-erc-response-handler (303)
1597 "ISON reply" nil 1597 "ISON reply" nil
1598 (erc-display-message parsed 'notice 'active 's303 1598 (erc-display-message parsed 'notice 'active 's303
1599 ?n (second (erc-response.command-args parsed)))) 1599 ?n (cadr (erc-response.command-args parsed))))
1600 1600
1601(define-erc-response-handler (305) 1601(define-erc-response-handler (305)
1602 "Return from AWAYness." nil 1602 "Return from AWAYness." nil
@@ -1612,8 +1612,8 @@ See `erc-display-server-message'." nil
1612 1612
1613(define-erc-response-handler (307) 1613(define-erc-response-handler (307)
1614 "Display nick-identified message." nil 1614 "Display nick-identified message." nil
1615 (multiple-value-bind (nick user message) 1615 (pcase-let ((`(,nick ,user ,message)
1616 (values-list (cdr (erc-response.command-args parsed))) 1616 (cdr (erc-response.command-args parsed))))
1617 (erc-display-message 1617 (erc-display-message
1618 parsed 'notice 'active 's307 1618 parsed 'notice 'active 's307
1619 ?n nick 1619 ?n nick
@@ -1624,8 +1624,8 @@ See `erc-display-server-message'." nil
1624 "WHOIS/WHOWAS notices." nil 1624 "WHOIS/WHOWAS notices." nil
1625 (let ((fname (erc-response.contents parsed)) 1625 (let ((fname (erc-response.contents parsed))
1626 (catalog-entry (intern (format "s%s" (erc-response.command parsed))))) 1626 (catalog-entry (intern (format "s%s" (erc-response.command parsed)))))
1627 (multiple-value-bind (nick user host) 1627 (pcase-let ((`(,nick ,user ,host)
1628 (values-list (cdr (erc-response.command-args parsed))) 1628 (cdr (erc-response.command-args parsed))))
1629 (erc-update-user-nick nick nick host nil fname user) 1629 (erc-update-user-nick nick nick host nil fname user)
1630 (erc-display-message 1630 (erc-display-message
1631 parsed 'notice 'active catalog-entry 1631 parsed 'notice 'active catalog-entry
@@ -1633,8 +1633,8 @@ See `erc-display-server-message'." nil
1633 1633
1634(define-erc-response-handler (312) 1634(define-erc-response-handler (312)
1635 "Server name response in WHOIS." nil 1635 "Server name response in WHOIS." nil
1636 (multiple-value-bind (nick server-host) 1636 (pcase-let ((`(,nick ,server-host))
1637 (values-list (cdr (erc-response.command-args parsed))) 1637 (cdr (erc-response.command-args parsed)))
1638 (erc-display-message 1638 (erc-display-message
1639 parsed 'notice 'active 's312 1639 parsed 'notice 'active 's312
1640 ?n nick ?s server-host ?c (erc-response.contents parsed)))) 1640 ?n nick ?s server-host ?c (erc-response.contents parsed))))
@@ -1643,7 +1643,7 @@ See `erc-display-server-message'." nil
1643 "IRC Operator response in WHOIS." nil 1643 "IRC Operator response in WHOIS." nil
1644 (erc-display-message 1644 (erc-display-message
1645 parsed 'notice 'active 's313 1645 parsed 'notice 'active 's313
1646 ?n (second (erc-response.command-args parsed)))) 1646 ?n (cadr (erc-response.command-args parsed))))
1647 1647
1648(define-erc-response-handler (315 318 323 369) 1648(define-erc-response-handler (315 318 323 369)
1649 ;; 315 - End of WHO 1649 ;; 315 - End of WHO
@@ -1655,8 +1655,8 @@ See `erc-display-server-message'." nil
1655 1655
1656(define-erc-response-handler (317) 1656(define-erc-response-handler (317)
1657 "IDLE notice." nil 1657 "IDLE notice." nil
1658 (multiple-value-bind (nick seconds-idle on-since time) 1658 (pcase-let ((`(,nick ,seconds-idle ,on-since ,time)
1659 (values-list (cdr (erc-response.command-args parsed))) 1659 (cdr (erc-response.command-args parsed))))
1660 (setq time (when on-since 1660 (setq time (when on-since
1661 (format-time-string erc-server-timestamp-format 1661 (format-time-string erc-server-timestamp-format
1662 (erc-string-to-emacs-time on-since)))) 1662 (erc-string-to-emacs-time on-since))))
@@ -1674,14 +1674,14 @@ See `erc-display-server-message'." nil
1674 "Channel names in WHOIS response." nil 1674 "Channel names in WHOIS response." nil
1675 (erc-display-message 1675 (erc-display-message
1676 parsed 'notice 'active 's319 1676 parsed 'notice 'active 's319
1677 ?n (second (erc-response.command-args parsed)) 1677 ?n (cadr (erc-response.command-args parsed))
1678 ?c (erc-response.contents parsed))) 1678 ?c (erc-response.contents parsed)))
1679 1679
1680(define-erc-response-handler (320) 1680(define-erc-response-handler (320)
1681 "Identified user in WHOIS." nil 1681 "Identified user in WHOIS." nil
1682 (erc-display-message 1682 (erc-display-message
1683 parsed 'notice 'active 's320 1683 parsed 'notice 'active 's320
1684 ?n (second (erc-response.command-args parsed)))) 1684 ?n (cadr (erc-response.command-args parsed))))
1685 1685
1686(define-erc-response-handler (321) 1686(define-erc-response-handler (321)
1687 "LIST header." nil 1687 "LIST header." nil
@@ -1696,16 +1696,16 @@ See `erc-display-server-message'." nil
1696(define-erc-response-handler (322) 1696(define-erc-response-handler (322)
1697 "LIST notice." nil 1697 "LIST notice." nil
1698 (let ((topic (erc-response.contents parsed))) 1698 (let ((topic (erc-response.contents parsed)))
1699 (multiple-value-bind (channel num-users) 1699 (pcase-let ((`(,channel ,num-users)
1700 (values-list (cdr (erc-response.command-args parsed))) 1700 (cdr (erc-response.command-args parsed))))
1701 (add-to-list 'erc-channel-list (list channel)) 1701 (add-to-list 'erc-channel-list (list channel))
1702 (erc-update-channel-topic channel topic)))) 1702 (erc-update-channel-topic channel topic))))
1703 1703
1704(defun erc-server-322-message (proc parsed) 1704(defun erc-server-322-message (proc parsed)
1705 "Display a message for the 322 event." 1705 "Display a message for the 322 event."
1706 (let ((topic (erc-response.contents parsed))) 1706 (let ((topic (erc-response.contents parsed)))
1707 (multiple-value-bind (channel num-users) 1707 (pcase-let ((`(,channel ,num-users)
1708 (values-list (cdr (erc-response.command-args parsed))) 1708 (cdr (erc-response.command-args parsed))))
1709 (erc-display-message 1709 (erc-display-message
1710 parsed 'notice proc 's322 1710 parsed 'notice proc 's322
1711 ?c channel ?u num-users ?t (or topic ""))))) 1711 ?c channel ?u num-users ?t (or topic "")))))
@@ -1713,7 +1713,7 @@ See `erc-display-server-message'." nil
1713 1713
1714(define-erc-response-handler (324) 1714(define-erc-response-handler (324)
1715 "Channel or nick modes." nil 1715 "Channel or nick modes." nil
1716 (let ((channel (second (erc-response.command-args parsed))) 1716 (let ((channel (cadr (erc-response.command-args parsed)))
1717 (modes (mapconcat 'identity (cddr (erc-response.command-args parsed)) 1717 (modes (mapconcat 'identity (cddr (erc-response.command-args parsed))
1718 " "))) 1718 " ")))
1719 (erc-set-modes channel modes) 1719 (erc-set-modes channel modes)
@@ -1723,16 +1723,16 @@ See `erc-display-server-message'." nil
1723 1723
1724(define-erc-response-handler (328) 1724(define-erc-response-handler (328)
1725 "Channel URL (on freenode network)." nil 1725 "Channel URL (on freenode network)." nil
1726 (let ((channel (second (erc-response.command-args parsed))) 1726 (let ((channel (cadr (erc-response.command-args parsed)))
1727 (url (erc-response.contents parsed))) 1727 (url (erc-response.contents parsed)))
1728 (erc-display-message parsed 'notice (erc-get-buffer channel proc) 1728 (erc-display-message parsed 'notice (erc-get-buffer channel proc)
1729 's328 ?c channel ?u url))) 1729 's328 ?c channel ?u url)))
1730 1730
1731(define-erc-response-handler (329) 1731(define-erc-response-handler (329)
1732 "Channel creation date." nil 1732 "Channel creation date." nil
1733 (let ((channel (second (erc-response.command-args parsed))) 1733 (let ((channel (cadr (erc-response.command-args parsed)))
1734 (time (erc-string-to-emacs-time 1734 (time (erc-string-to-emacs-time
1735 (third (erc-response.command-args parsed))))) 1735 (nth 2 (erc-response.command-args parsed)))))
1736 (erc-display-message 1736 (erc-display-message
1737 parsed 'notice (erc-get-buffer channel proc) 1737 parsed 'notice (erc-get-buffer channel proc)
1738 's329 ?c channel ?t (format-time-string erc-server-timestamp-format 1738 's329 ?c channel ?t (format-time-string erc-server-timestamp-format
@@ -1748,22 +1748,22 @@ See `erc-display-server-message'." nil
1748 ;; authaccount == (aref parsed 4) 1748 ;; authaccount == (aref parsed 4)
1749 ;; authmsg == (aref parsed 5) 1749 ;; authmsg == (aref parsed 5)
1750 ;; The guesses below are, well, just that. -- Lawrence 2004/05/10 1750 ;; The guesses below are, well, just that. -- Lawrence 2004/05/10
1751 (let ((nick (second (erc-response.command-args parsed))) 1751 (let ((nick (cadr (erc-response.command-args parsed)))
1752 (authaccount (third (erc-response.command-args parsed))) 1752 (authaccount (nth 2 (erc-response.command-args parsed)))
1753 (authmsg (erc-response.contents parsed))) 1753 (authmsg (erc-response.contents parsed)))
1754 (erc-display-message parsed 'notice 'active 's330 1754 (erc-display-message parsed 'notice 'active 's330
1755 ?n nick ?a authmsg ?i authaccount))) 1755 ?n nick ?a authmsg ?i authaccount)))
1756 1756
1757(define-erc-response-handler (331) 1757(define-erc-response-handler (331)
1758 "No topic set for channel." nil 1758 "No topic set for channel." nil
1759 (let ((channel (second (erc-response.command-args parsed))) 1759 (let ((channel (cadr (erc-response.command-args parsed)))
1760 (topic (erc-response.contents parsed))) 1760 (topic (erc-response.contents parsed)))
1761 (erc-display-message parsed 'notice (erc-get-buffer channel proc) 1761 (erc-display-message parsed 'notice (erc-get-buffer channel proc)
1762 's331 ?c channel))) 1762 's331 ?c channel)))
1763 1763
1764(define-erc-response-handler (332) 1764(define-erc-response-handler (332)
1765 "TOPIC notice." nil 1765 "TOPIC notice." nil
1766 (let ((channel (second (erc-response.command-args parsed))) 1766 (let ((channel (cadr (erc-response.command-args parsed)))
1767 (topic (erc-response.contents parsed))) 1767 (topic (erc-response.contents parsed)))
1768 (erc-update-channel-topic channel topic) 1768 (erc-update-channel-topic channel topic)
1769 (erc-display-message parsed 'notice (erc-get-buffer channel proc) 1769 (erc-display-message parsed 'notice (erc-get-buffer channel proc)
@@ -1771,8 +1771,8 @@ See `erc-display-server-message'." nil
1771 1771
1772(define-erc-response-handler (333) 1772(define-erc-response-handler (333)
1773 "Who set the topic, and when." nil 1773 "Who set the topic, and when." nil
1774 (multiple-value-bind (channel nick time) 1774 (pcase-let ((`(,channel ,nick ,time)
1775 (values-list (cdr (erc-response.command-args parsed))) 1775 (cdr (erc-response.command-args parsed))))
1776 (setq time (format-time-string erc-server-timestamp-format 1776 (setq time (format-time-string erc-server-timestamp-format
1777 (erc-string-to-emacs-time time))) 1777 (erc-string-to-emacs-time time)))
1778 (erc-update-channel-topic channel 1778 (erc-update-channel-topic channel
@@ -1784,15 +1784,15 @@ See `erc-display-server-message'." nil
1784(define-erc-response-handler (341) 1784(define-erc-response-handler (341)
1785 "Let user know when an INVITE attempt has been sent successfully." 1785 "Let user know when an INVITE attempt has been sent successfully."
1786 nil 1786 nil
1787 (multiple-value-bind (nick channel) 1787 (pcase-let ((`(,nick ,channel)
1788 (values-list (cdr (erc-response.command-args parsed))) 1788 (cdr (erc-response.command-args parsed))))
1789 (erc-display-message parsed 'notice (erc-get-buffer channel proc) 1789 (erc-display-message parsed 'notice (erc-get-buffer channel proc)
1790 's341 ?n nick ?c channel))) 1790 's341 ?n nick ?c channel)))
1791 1791
1792(define-erc-response-handler (352) 1792(define-erc-response-handler (352)
1793 "WHO notice." nil 1793 "WHO notice." nil
1794 (multiple-value-bind (channel user host server nick away-flag) 1794 (pcase-let ((`(,channel ,user ,host ,server ,nick ,away-flag)
1795 (values-list (cdr (erc-response.command-args parsed))) 1795 (cdr (erc-response.command-args parsed))))
1796 (let ((full-name (erc-response.contents parsed)) 1796 (let ((full-name (erc-response.contents parsed))
1797 hopcount) 1797 hopcount)
1798 (when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name) 1798 (when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name)
@@ -1806,7 +1806,7 @@ See `erc-display-server-message'." nil
1806 1806
1807(define-erc-response-handler (353) 1807(define-erc-response-handler (353)
1808 "NAMES notice." nil 1808 "NAMES notice." nil
1809 (let ((channel (third (erc-response.command-args parsed))) 1809 (let ((channel (nth 2 (erc-response.command-args parsed)))
1810 (users (erc-response.contents parsed))) 1810 (users (erc-response.contents parsed)))
1811 (erc-display-message parsed 'notice (or (erc-get-buffer channel proc) 1811 (erc-display-message parsed 'notice (or (erc-get-buffer channel proc)
1812 'active) 1812 'active)
@@ -1816,13 +1816,13 @@ See `erc-display-server-message'." nil
1816 1816
1817(define-erc-response-handler (366) 1817(define-erc-response-handler (366)
1818 "End of NAMES." nil 1818 "End of NAMES." nil
1819 (erc-with-buffer ((second (erc-response.command-args parsed)) proc) 1819 (erc-with-buffer ((cadr (erc-response.command-args parsed)) proc)
1820 (erc-channel-end-receiving-names))) 1820 (erc-channel-end-receiving-names)))
1821 1821
1822(define-erc-response-handler (367) 1822(define-erc-response-handler (367)
1823 "Channel ban list entries." nil 1823 "Channel ban list entries." nil
1824 (multiple-value-bind (channel banmask setter time) 1824 (pcase-let ((`(,channel ,banmask ,setter ,time)
1825 (values-list (cdr (erc-response.command-args parsed))) 1825 (cdr (erc-response.command-args parsed))))
1826 ;; setter and time are not standard 1826 ;; setter and time are not standard
1827 (if setter 1827 (if setter
1828 (erc-display-message parsed 'notice 'active 's367-set-by 1828 (erc-display-message parsed 'notice 'active 's367-set-by
@@ -1836,7 +1836,7 @@ See `erc-display-server-message'." nil
1836 1836
1837(define-erc-response-handler (368) 1837(define-erc-response-handler (368)
1838 "End of channel ban list." nil 1838 "End of channel ban list." nil
1839 (let ((channel (second (erc-response.command-args parsed)))) 1839 (let ((channel (cadr (erc-response.command-args parsed))))
1840 (erc-display-message parsed 'notice 'active 's368 1840 (erc-display-message parsed 'notice 'active 's368
1841 ?c channel))) 1841 ?c channel)))
1842 1842
@@ -1845,8 +1845,8 @@ See `erc-display-server-message'." nil
1845 ;; FIXME: Yet more magic numbers in original code, I'm guessing this 1845 ;; FIXME: Yet more magic numbers in original code, I'm guessing this
1846 ;; command takes two arguments, and doesn't have any "contents". -- 1846 ;; command takes two arguments, and doesn't have any "contents". --
1847 ;; Lawrence 2004/05/10 1847 ;; Lawrence 2004/05/10
1848 (multiple-value-bind (from to) 1848 (pcase-let ((`(,from ,to)
1849 (values-list (cdr (erc-response.command-args parsed))) 1849 (cdr (erc-response.command-args parsed))))
1850 (erc-display-message parsed 'notice 'active 1850 (erc-display-message parsed 'notice 'active
1851 's379 ?c from ?f to))) 1851 's379 ?c from ?f to)))
1852 1852
@@ -1854,12 +1854,12 @@ See `erc-display-server-message'." nil
1854 "Server's time string." nil 1854 "Server's time string." nil
1855 (erc-display-message 1855 (erc-display-message
1856 parsed 'notice 'active 1856 parsed 'notice 'active
1857 's391 ?s (second (erc-response.command-args parsed)) 1857 's391 ?s (cadr (erc-response.command-args parsed))
1858 ?t (third (erc-response.command-args parsed)))) 1858 ?t (nth 2 (erc-response.command-args parsed))))
1859 1859
1860(define-erc-response-handler (401) 1860(define-erc-response-handler (401)
1861 "No such nick/channel." nil 1861 "No such nick/channel." nil
1862 (let ((nick/channel (second (erc-response.command-args parsed)))) 1862 (let ((nick/channel (cadr (erc-response.command-args parsed))))
1863 (when erc-whowas-on-nosuchnick 1863 (when erc-whowas-on-nosuchnick
1864 (erc-log (format "cmd: WHOWAS: %s" nick/channel)) 1864 (erc-log (format "cmd: WHOWAS: %s" nick/channel))
1865 (erc-server-send (format "WHOWAS %s 1" nick/channel))) 1865 (erc-server-send (format "WHOWAS %s 1" nick/channel)))
@@ -1869,23 +1869,23 @@ See `erc-display-server-message'." nil
1869(define-erc-response-handler (403) 1869(define-erc-response-handler (403)
1870 "No such channel." nil 1870 "No such channel." nil
1871 (erc-display-message parsed '(notice error) 'active 1871 (erc-display-message parsed '(notice error) 'active
1872 's403 ?c (second (erc-response.command-args parsed)))) 1872 's403 ?c (cadr (erc-response.command-args parsed))))
1873 1873
1874(define-erc-response-handler (404) 1874(define-erc-response-handler (404)
1875 "Cannot send to channel." nil 1875 "Cannot send to channel." nil
1876 (erc-display-message parsed '(notice error) 'active 1876 (erc-display-message parsed '(notice error) 'active
1877 's404 ?c (second (erc-response.command-args parsed)))) 1877 's404 ?c (cadr (erc-response.command-args parsed))))
1878 1878
1879 1879
1880(define-erc-response-handler (405) 1880(define-erc-response-handler (405)
1881 "Can't join that many channels." nil 1881 "Can't join that many channels." nil
1882 (erc-display-message parsed '(notice error) 'active 1882 (erc-display-message parsed '(notice error) 'active
1883 's405 ?c (second (erc-response.command-args parsed)))) 1883 's405 ?c (cadr (erc-response.command-args parsed))))
1884 1884
1885(define-erc-response-handler (406) 1885(define-erc-response-handler (406)
1886 "No such nick." nil 1886 "No such nick." nil
1887 (erc-display-message parsed '(notice error) 'active 1887 (erc-display-message parsed '(notice error) 'active
1888 's406 ?n (second (erc-response.command-args parsed)))) 1888 's406 ?n (cadr (erc-response.command-args parsed))))
1889 1889
1890(define-erc-response-handler (412) 1890(define-erc-response-handler (412)
1891 "No text to send." nil 1891 "No text to send." nil
@@ -1894,33 +1894,33 @@ See `erc-display-server-message'." nil
1894(define-erc-response-handler (421) 1894(define-erc-response-handler (421)
1895 "Unknown command." nil 1895 "Unknown command." nil
1896 (erc-display-message parsed '(notice error) 'active 's421 1896 (erc-display-message parsed '(notice error) 'active 's421
1897 ?c (second (erc-response.command-args parsed)))) 1897 ?c (cadr (erc-response.command-args parsed))))
1898 1898
1899(define-erc-response-handler (432) 1899(define-erc-response-handler (432)
1900 "Bad nick." nil 1900 "Bad nick." nil
1901 (erc-display-message parsed '(notice error) 'active 's432 1901 (erc-display-message parsed '(notice error) 'active 's432
1902 ?n (second (erc-response.command-args parsed)))) 1902 ?n (cadr (erc-response.command-args parsed))))
1903 1903
1904(define-erc-response-handler (433) 1904(define-erc-response-handler (433)
1905 "Login-time \"nick in use\"." nil 1905 "Login-time \"nick in use\"." nil
1906 (erc-nickname-in-use (second (erc-response.command-args parsed)) 1906 (erc-nickname-in-use (cadr (erc-response.command-args parsed))
1907 "already in use")) 1907 "already in use"))
1908 1908
1909(define-erc-response-handler (437) 1909(define-erc-response-handler (437)
1910 "Nick temporarily unavailable (on IRCnet)." nil 1910 "Nick temporarily unavailable (on IRCnet)." nil
1911 (let ((nick/channel (second (erc-response.command-args parsed)))) 1911 (let ((nick/channel (cadr (erc-response.command-args parsed))))
1912 (unless (erc-channel-p nick/channel) 1912 (unless (erc-channel-p nick/channel)
1913 (erc-nickname-in-use nick/channel "temporarily unavailable")))) 1913 (erc-nickname-in-use nick/channel "temporarily unavailable"))))
1914 1914
1915(define-erc-response-handler (442) 1915(define-erc-response-handler (442)
1916 "Not on channel." nil 1916 "Not on channel." nil
1917 (erc-display-message parsed '(notice error) 'active 's442 1917 (erc-display-message parsed '(notice error) 'active 's442
1918 ?c (second (erc-response.command-args parsed)))) 1918 ?c (cadr (erc-response.command-args parsed))))
1919 1919
1920(define-erc-response-handler (461) 1920(define-erc-response-handler (461)
1921 "Not enough parameters for command." nil 1921 "Not enough parameters for command." nil
1922 (erc-display-message parsed '(notice error) 'active 's461 1922 (erc-display-message parsed '(notice error) 'active 's461
1923 ?c (second (erc-response.command-args parsed)) 1923 ?c (cadr (erc-response.command-args parsed))
1924 ?m (erc-response.contents parsed))) 1924 ?m (erc-response.contents parsed)))
1925 1925
1926(define-erc-response-handler (465) 1926(define-erc-response-handler (465)
@@ -1936,37 +1936,37 @@ See `erc-display-server-message'." nil
1936 (erc-display-message parsed '(notice error) nil 1936 (erc-display-message parsed '(notice error) nil
1937 (intern (format "s%s" 1937 (intern (format "s%s"
1938 (erc-response.command parsed))) 1938 (erc-response.command parsed)))
1939 ?c (second (erc-response.command-args parsed)))) 1939 ?c (cadr (erc-response.command-args parsed))))
1940 1940
1941(define-erc-response-handler (475) 1941(define-erc-response-handler (475)
1942 "Channel key needed." nil 1942 "Channel key needed." nil
1943 (erc-display-message parsed '(notice error) nil 's475 1943 (erc-display-message parsed '(notice error) nil 's475
1944 ?c (second (erc-response.command-args parsed))) 1944 ?c (cadr (erc-response.command-args parsed)))
1945 (when erc-prompt-for-channel-key 1945 (when erc-prompt-for-channel-key
1946 (let ((channel (second (erc-response.command-args parsed))) 1946 (let ((channel (cadr (erc-response.command-args parsed)))
1947 (key (read-from-minibuffer 1947 (key (read-from-minibuffer
1948 (format "Channel %s is mode +k. Enter key (RET to cancel): " 1948 (format "Channel %s is mode +k. Enter key (RET to cancel): "
1949 (second (erc-response.command-args parsed)))))) 1949 (cadr (erc-response.command-args parsed))))))
1950 (when (and key (> (length key) 0)) 1950 (when (and key (> (length key) 0))
1951 (erc-cmd-JOIN channel key))))) 1951 (erc-cmd-JOIN channel key)))))
1952 1952
1953(define-erc-response-handler (477) 1953(define-erc-response-handler (477)
1954 "Channel doesn't support modes." nil 1954 "Channel doesn't support modes." nil
1955 (let ((channel (second (erc-response.command-args parsed))) 1955 (let ((channel (cadr (erc-response.command-args parsed)))
1956 (message (erc-response.contents parsed))) 1956 (message (erc-response.contents parsed)))
1957 (erc-display-message parsed 'notice (erc-get-buffer channel proc) 1957 (erc-display-message parsed 'notice (erc-get-buffer channel proc)
1958 (format "%s: %s" channel message)))) 1958 (format "%s: %s" channel message))))
1959 1959
1960(define-erc-response-handler (482) 1960(define-erc-response-handler (482)
1961 "You need to be a channel operator to do that." nil 1961 "You need to be a channel operator to do that." nil
1962 (let ((channel (second (erc-response.command-args parsed))) 1962 (let ((channel (cadr (erc-response.command-args parsed)))
1963 (message (erc-response.contents parsed))) 1963 (message (erc-response.contents parsed)))
1964 (erc-display-message parsed '(error notice) 'active 's482 1964 (erc-display-message parsed '(error notice) 'active 's482
1965 ?c channel ?m message))) 1965 ?c channel ?m message)))
1966 1966
1967(define-erc-response-handler (671) 1967(define-erc-response-handler (671)
1968 "Secure connection response in WHOIS." nil 1968 "Secure connection response in WHOIS." nil
1969 (let ((nick (second (erc-response.command-args parsed))) 1969 (let ((nick (cadr (erc-response.command-args parsed)))
1970 (securemsg (erc-response.contents parsed))) 1970 (securemsg (erc-response.contents parsed)))
1971 (erc-display-message parsed 'notice 'active 's671 1971 (erc-display-message parsed 'notice 'active 's671
1972 ?n nick ?a securemsg))) 1972 ?n nick ?a securemsg)))
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 08b9c67f6c0..e8201f2ea43 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -68,7 +68,6 @@
68;;; Code: 68;;; Code:
69 69
70(require 'erc) 70(require 'erc)
71(eval-when-compile (require 'cl))
72 71
73;;; Customization: 72;;; Customization:
74 73
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index ed8440315eb..e31416f0e1a 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -54,9 +54,7 @@
54;;; Code: 54;;; Code:
55 55
56(require 'erc) 56(require 'erc)
57(eval-when-compile 57(eval-when-compile (require 'pcomplete))
58 (require 'cl)
59 (require 'pcomplete))
60 58
61;;;###autoload (autoload 'erc-dcc-mode "erc-dcc") 59;;;###autoload (autoload 'erc-dcc-mode "erc-dcc")
62(define-erc-module dcc nil 60(define-erc-module dcc nil
@@ -277,7 +275,7 @@ Argument IP is the address as a string. The result is also a string."
277 (* (nth 1 ips) 65536.0) 275 (* (nth 1 ips) 65536.0)
278 (* (nth 2 ips) 256.0) 276 (* (nth 2 ips) 256.0)
279 (nth 3 ips)))) 277 (nth 3 ips))))
280 (if (interactive-p) 278 (if (called-interactively-p 'interactive)
281 (message "%s is %.0f" ip res) 279 (message "%s is %.0f" ip res)
282 (format "%.0f" res))))) 280 (format "%.0f" res)))))
283 281
@@ -380,8 +378,8 @@ created subprocess, or nil."
380 (with-no-warnings ; obsolete since 23.1 378 (with-no-warnings ; obsolete since 23.1
381 (set-process-filter-multibyte process nil))))) 379 (set-process-filter-multibyte process nil)))))
382 (file-error 380 (file-error
383 (unless (and (string= "Cannot bind server socket" (cadr err)) 381 (unless (and (string= "Cannot bind server socket" (nth 1 err))
384 (string= "address already in use" (caddr err))) 382 (string= "address already in use" (nth 2 err)))
385 (signal (car err) (cdr err))) 383 (signal (car err) (cdr err)))
386 (setq port (1+ port)) 384 (setq port (1+ port))
387 (unless (< port upper) 385 (unless (< port upper)
@@ -434,38 +432,38 @@ where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc."
434 (pcomplete-here (append '("chat" "close" "get" "list") 432 (pcomplete-here (append '("chat" "close" "get" "list")
435 (when (fboundp 'make-network-process) '("send")))) 433 (when (fboundp 'make-network-process) '("send"))))
436 (pcomplete-here 434 (pcomplete-here
437 (case (intern (downcase (pcomplete-arg 1))) 435 (pcase (intern (downcase (pcomplete-arg 1)))
438 (chat (mapcar (lambda (elt) (plist-get elt :nick)) 436 (`chat (mapcar (lambda (elt) (plist-get elt :nick))
437 (erc-remove-if-not
438 #'(lambda (elt)
439 (eq (plist-get elt :type) 'CHAT))
440 erc-dcc-list)))
441 (`close (erc-delete-dups
442 (mapcar (lambda (elt) (symbol-name (plist-get elt :type)))
443 erc-dcc-list)))
444 (`get (mapcar #'erc-dcc-nick
439 (erc-remove-if-not 445 (erc-remove-if-not
440 #'(lambda (elt) 446 #'(lambda (elt)
441 (eq (plist-get elt :type) 'CHAT)) 447 (eq (plist-get elt :type) 'GET))
442 erc-dcc-list))) 448 erc-dcc-list)))
443 (close (erc-delete-dups 449 (`send (pcomplete-erc-all-nicks))))
444 (mapcar (lambda (elt) (symbol-name (plist-get elt :type)))
445 erc-dcc-list)))
446 (get (mapcar #'erc-dcc-nick
447 (erc-remove-if-not
448 #'(lambda (elt)
449 (eq (plist-get elt :type) 'GET))
450 erc-dcc-list)))
451 (send (pcomplete-erc-all-nicks))))
452 (pcomplete-here 450 (pcomplete-here
453 (case (intern (downcase (pcomplete-arg 2))) 451 (pcase (intern (downcase (pcomplete-arg 2)))
454 (get (mapcar (lambda (elt) (plist-get elt :file)) 452 (`get (mapcar (lambda (elt) (plist-get elt :file))
455 (erc-remove-if-not 453 (erc-remove-if-not
456 #'(lambda (elt) 454 #'(lambda (elt)
457 (and (eq (plist-get elt :type) 'GET) 455 (and (eq (plist-get elt :type) 'GET)
458 (erc-nick-equal-p (erc-extract-nick 456 (erc-nick-equal-p (erc-extract-nick
459 (plist-get elt :nick)) 457 (plist-get elt :nick))
460 (pcomplete-arg 1)))) 458 (pcomplete-arg 1))))
461 erc-dcc-list))) 459 erc-dcc-list)))
462 (close (mapcar #'erc-dcc-nick 460 (`close (mapcar #'erc-dcc-nick
463 (erc-remove-if-not 461 (erc-remove-if-not
464 #'(lambda (elt) 462 #'(lambda (elt)
465 (eq (plist-get elt :type) 463 (eq (plist-get elt :type)
466 (intern (upcase (pcomplete-arg 1))))) 464 (intern (upcase (pcomplete-arg 1)))))
467 erc-dcc-list))) 465 erc-dcc-list)))
468 (send (pcomplete-entries))))) 466 (`send (pcomplete-entries)))))
469 467
470(defun erc-dcc-do-CHAT-command (proc &optional nick) 468(defun erc-dcc-do-CHAT-command (proc &optional nick)
471 (when nick 469 (when nick
@@ -1248,7 +1246,7 @@ other client."
1248 1246
1249(defun erc-dcc-no-such-nick (proc parsed) 1247(defun erc-dcc-no-such-nick (proc parsed)
1250 "Detect and handle no-such-nick replies from the IRC server." 1248 "Detect and handle no-such-nick replies from the IRC server."
1251 (let* ((elt (erc-dcc-member :nick (second (erc-response.command-args parsed)) 1249 (let* ((elt (erc-dcc-member :nick (nth 1 (erc-response.command-args parsed))
1252 :parent proc)) 1250 :parent proc))
1253 (peer (plist-get elt :peer))) 1251 (peer (plist-get elt :peer)))
1254 (when (or (and (processp peer) (not (eq (process-status peer) 'open))) 1252 (when (or (and (processp peer) (not (eq (process-status peer) 'open)))
diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el
index 5e5d6c2c188..6bcc17e4bc0 100644
--- a/lisp/erc/erc-ezbounce.el
+++ b/lisp/erc/erc-ezbounce.el
@@ -26,7 +26,6 @@
26;;; Code: 26;;; Code:
27 27
28(require 'erc) 28(require 'erc)
29(eval-when-compile (require 'cl))
30 29
31(defgroup erc-ezbounce nil 30(defgroup erc-ezbounce nil
32 "Interface to the EZBounce IRC bouncer (a virtual IRC server)" 31 "Interface to the EZBounce IRC bouncer (a virtual IRC server)"
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index ac6b311a0c4..e285cfb4ec5 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -34,7 +34,6 @@
34 34
35(require 'erc) 35(require 'erc)
36(require 'auth-source) 36(require 'auth-source)
37(eval-when-compile (require 'cl))
38 37
39(defgroup erc-autojoin nil 38(defgroup erc-autojoin nil
40 "Enable autojoining." 39 "Enable autojoining."
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index b3f3f5865a1..1ff2951e09e 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -93,9 +93,7 @@
93;;; Code: 93;;; Code:
94 94
95(require 'erc) 95(require 'erc)
96(eval-when-compile 96(eval-when-compile (require 'erc-networks))
97 (require 'erc-networks)
98 (require 'cl))
99 97
100(defgroup erc-log nil 98(defgroup erc-log nil
101 "Logging facilities for ERC." 99 "Logging facilities for ERC."
@@ -429,7 +427,8 @@ You can save every individual message by putting this function on
429 file t 'nomessage)))) 427 file t 'nomessage))))
430 (let ((coding-system-for-write coding-system)) 428 (let ((coding-system-for-write coding-system))
431 (write-region start end file t 'nomessage)))) 429 (write-region start end file t 'nomessage))))
432 (if (and erc-truncate-buffer-on-save (interactive-p)) 430 (if (and erc-truncate-buffer-on-save
431 (called-interactively-p 'interactive))
433 (progn 432 (progn
434 (let ((inhibit-read-only t)) (erase-buffer)) 433 (let ((inhibit-read-only t)) (erase-buffer))
435 (move-marker erc-last-saved-position (point-max)) 434 (move-marker erc-last-saved-position (point-max))
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 8dcdcb9e2e6..f1219427360 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -35,7 +35,6 @@
35;;; Code: 35;;; Code:
36 36
37(require 'erc) 37(require 'erc)
38(eval-when-compile (require 'cl))
39 38
40;; Customization: 39;; Customization:
41 40
diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el
index fc4aeb10c84..cbaf62b1a61 100644
--- a/lisp/erc/erc-netsplit.el
+++ b/lisp/erc/erc-netsplit.el
@@ -31,7 +31,6 @@
31;;; Code: 31;;; Code:
32 32
33(require 'erc) 33(require 'erc)
34(eval-when-compile (require 'cl))
35 34
36(defgroup erc-netsplit nil 35(defgroup erc-netsplit nil
37 "Netsplit detection tries to automatically figure when a 36 "Netsplit detection tries to automatically figure when a
@@ -107,7 +106,7 @@ join from that split has been detected or not.")
107 (dolist (elt erc-netsplit-list) 106 (dolist (elt erc-netsplit-list)
108 (if (member nick (nthcdr 3 elt)) 107 (if (member nick (nthcdr 3 elt))
109 (progn 108 (progn
110 (if (not (caddr elt)) 109 (if (not (nth 2 elt))
111 (progn 110 (progn
112 (erc-display-message 111 (erc-display-message
113 parsed 'notice (process-buffer proc) 112 parsed 'notice (process-buffer proc)
@@ -149,7 +148,7 @@ join from that split has been detected or not.")
149 ;; element for this netsplit exists already 148 ;; element for this netsplit exists already
150 (progn 149 (progn
151 (setcdr (nthcdr 2 ass) (cons nick (nthcdr 3 ass))) 150 (setcdr (nthcdr 2 ass) (cons nick (nthcdr 3 ass)))
152 (when (caddr ass) 151 (when (nth 2 ass)
153 ;; There was already a netjoin for this netsplit, it 152 ;; There was already a netjoin for this netsplit, it
154 ;; seems like the old one didn't get finished... 153 ;; seems like the old one didn't get finished...
155 (erc-display-message 154 (erc-display-message
@@ -194,7 +193,7 @@ join from that split has been detected or not.")
194 nil 'notice 'active 193 nil 'notice 'active
195 'netsplit-wholeft ?s (car elt) 194 'netsplit-wholeft ?s (car elt)
196 ?n (mapconcat 'erc-extract-nick (nthcdr 3 elt) " ") 195 ?n (mapconcat 'erc-extract-nick (nthcdr 3 elt) " ")
197 ?t (if (caddr elt) 196 ?t (if (nth 2 elt)
198 "(joining)" 197 "(joining)"
199 ""))))) 198 "")))))
200 t) 199 t)
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 89372555ccc..5089ff6b4ba 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -40,7 +40,7 @@
40;;; Code: 40;;; Code:
41 41
42(require 'erc) 42(require 'erc)
43(eval-when-compile (require 'cl)) 43(eval-when-compile (require 'cl-lib))
44 44
45;; Variables 45;; Variables
46 46
@@ -729,10 +729,10 @@ search for a match in `erc-networks-alist'."
729 (or 729 (or
730 ;; Loop through `erc-networks-alist' looking for a match. 730 ;; Loop through `erc-networks-alist' looking for a match.
731 (let ((server (or erc-server-announced-name erc-session-server))) 731 (let ((server (or erc-server-announced-name erc-session-server)))
732 (loop for (name matcher) in erc-networks-alist 732 (cl-loop for (name matcher) in erc-networks-alist
733 when (and matcher 733 when (and matcher
734 (string-match (concat matcher "\\'") server)) 734 (string-match (concat matcher "\\'") server))
735 do (return name))) 735 do (cl-return name)))
736 'Unknown))) 736 'Unknown)))
737 737
738(defun erc-network () 738(defun erc-network ()
@@ -789,8 +789,8 @@ As an example:
789 (cond ((numberp p) 789 (cond ((numberp p)
790 (push p result)) 790 (push p result))
791 ((listp p) 791 ((listp p)
792 (setq result (nconc (loop for i from (cadr p) downto (car p) 792 (setq result (nconc (cl-loop for i from (cadr p) downto (car p)
793 collect i) 793 collect i)
794 result))))) 794 result)))))
795 (nreverse result))) 795 (nreverse result)))
796 796
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index 0b5e99180d6..b9d7ff78cd8 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -30,9 +30,7 @@
30 30
31(require 'erc) 31(require 'erc)
32(require 'erc-networks) 32(require 'erc-networks)
33(eval-when-compile 33(eval-when-compile (require 'pcomplete))
34 (require 'cl)
35 (require 'pcomplete))
36 34
37;;;; Customizable variables 35;;;; Customizable variables
38 36
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index bb30fd90066..d6bb8019b15 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -43,7 +43,6 @@
43(require 'erc) 43(require 'erc)
44(require 'erc-compat) 44(require 'erc-compat)
45(require 'time-date) 45(require 'time-date)
46(eval-when-compile (require 'cl))
47 46
48(defgroup erc-pcomplete nil 47(defgroup erc-pcomplete nil
49 "Programmable completion for ERC" 48 "Programmable completion for ERC"
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index b3b80a5f851..b75ad8e9517 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -62,7 +62,7 @@
62 62
63(require 'erc) 63(require 'erc)
64(require 'erc-networks) 64(require 'erc-networks)
65(eval-when-compile (require 'cl)) 65(eval-when-compile (require 'cl-lib))
66 66
67;; Customization: 67;; Customization:
68 68
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 4b98cf173be..22053945159 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -38,7 +38,6 @@
38(require 'erc) 38(require 'erc)
39(require 'speedbar) 39(require 'speedbar)
40(condition-case nil (require 'dframe) (error nil)) 40(condition-case nil (require 'dframe) (error nil))
41(eval-when-compile (require 'cl))
42 41
43;;; Customization: 42;;; Customization:
44 43
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index a204584b400..976d2a21030 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -34,7 +34,7 @@
34;; * Add extensibility so that custom functions can track 34;; * Add extensibility so that custom functions can track
35;; custom modification types. 35;; custom modification types.
36 36
37(eval-when-compile (require 'cl)) 37(eval-when-compile (require 'cl-lib))
38(require 'erc) 38(require 'erc)
39(require 'erc-compat) 39(require 'erc-compat)
40(require 'erc-match) 40(require 'erc-match)
@@ -484,7 +484,7 @@ START is the minimum length of the name used."
484 484
485;;; Test: 485;;; Test:
486 486
487(assert 487(cl-assert
488 (and 488 (and
489 ;; verify examples from the doc strings 489 ;; verify examples from the doc strings
490 (equal (let ((erc-track-shorten-aggressively nil)) 490 (equal (let ((erc-track-shorten-aggressively nil))
@@ -869,7 +869,7 @@ Use `erc-make-mode-line-buffer-name' to create buttons."
869 (setq erc-modified-channels-alist 869 (setq erc-modified-channels-alist
870 (delete (assq buffer erc-modified-channels-alist) 870 (delete (assq buffer erc-modified-channels-alist)
871 erc-modified-channels-alist)) 871 erc-modified-channels-alist))
872 (when (interactive-p) 872 (when (called-interactively-p 'interactive)
873 (erc-modified-channels-display))) 873 (erc-modified-channels-display)))
874 874
875(defun erc-track-find-face (faces) 875(defun erc-track-find-face (faces)
@@ -980,7 +980,7 @@ is in `erc-mode'."
980 (add-to-list 'faces cur))) 980 (add-to-list 'faces cur)))
981 faces)) 981 faces))
982 982
983(assert 983(cl-assert
984 (let ((str "is bold")) 984 (let ((str "is bold"))
985 (put-text-property 3 (length str) 985 (put-text-property 3 (length str)
986 'face '(bold erc-current-nick-face) 986 'face '(bold erc-current-nick-face)
@@ -1030,17 +1030,17 @@ relative to `erc-track-switch-direction'"
1030 (let ((dir erc-track-switch-direction) 1030 (let ((dir erc-track-switch-direction)
1031 offset) 1031 offset)
1032 (when (< arg 0) 1032 (when (< arg 0)
1033 (setq dir (case dir 1033 (setq dir (pcase dir
1034 (oldest 'newest) 1034 (`oldest 'newest)
1035 (newest 'oldest) 1035 (`newest 'oldest)
1036 (mostactive 'leastactive) 1036 (`mostactive 'leastactive)
1037 (leastactive 'mostactive) 1037 (`leastactive 'mostactive)
1038 (importance 'oldest))) 1038 (`importance 'oldest)))
1039 (setq arg (- arg))) 1039 (setq arg (- arg)))
1040 (setq offset (case dir 1040 (setq offset (pcase dir
1041 ((oldest leastactive) 1041 ((or `oldest `leastactive)
1042 (- (length erc-modified-channels-alist) arg)) 1042 (- (length erc-modified-channels-alist) arg))
1043 (t (1- arg)))) 1043 (_ (1- arg))))
1044 ;; normalize out of range user input 1044 ;; normalize out of range user input
1045 (cond ((>= offset (length erc-modified-channels-alist)) 1045 (cond ((>= offset (length erc-modified-channels-alist))
1046 (setq offset (1- (length erc-modified-channels-alist)))) 1046 (setq offset (1- (length erc-modified-channels-alist))))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 7cb6fbb595b..bead7759e13 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -67,7 +67,7 @@
67(defconst erc-version-string "Version 5.3" 67(defconst erc-version-string "Version 5.3"
68 "ERC version. This is used by function `erc-version'.") 68 "ERC version. This is used by function `erc-version'.")
69 69
70(eval-when-compile (require 'cl)) 70(eval-when-compile (require 'cl-lib))
71(require 'font-lock) 71(require 'font-lock)
72(require 'pp) 72(require 'pp)
73(require 'thingatpt) 73(require 'thingatpt)
@@ -369,7 +369,7 @@ If no server buffer exists, return nil."
369 (with-current-buffer ,buffer 369 (with-current-buffer ,buffer
370 ,@body))))) 370 ,@body)))))
371 371
372(defstruct (erc-server-user (:type vector) :named) 372(cl-defstruct (erc-server-user (:type vector) :named)
373 ;; User data 373 ;; User data
374 nickname host login full-name info 374 nickname host login full-name info
375 ;; Buffers 375 ;; Buffers
@@ -379,7 +379,7 @@ If no server buffer exists, return nil."
379 (buffers nil) 379 (buffers nil)
380 ) 380 )
381 381
382(defstruct (erc-channel-user (:type vector) :named) 382(cl-defstruct (erc-channel-user (:type vector) :named)
383 op voice 383 op voice
384 ;; Last message time (in the form of the return value of 384 ;; Last message time (in the form of the return value of
385 ;; (current-time) 385 ;; (current-time)
@@ -1386,7 +1386,7 @@ If BUFFER is nil, the current buffer is used."
1386 t)) 1386 t))
1387 (erc-server-send (format "ISON %s" nick)) 1387 (erc-server-send (format "ISON %s" nick))
1388 (while (eq erc-online-p 'unknown) (accept-process-output)) 1388 (while (eq erc-online-p 'unknown) (accept-process-output))
1389 (if (interactive-p) 1389 (if (called-interactively-p 'interactive)
1390 (message "%s is %sonline" 1390 (message "%s is %sonline"
1391 (or erc-online-p nick) 1391 (or erc-online-p nick)
1392 (if erc-online-p "" "not ")) 1392 (if erc-online-p "" "not "))
@@ -2157,11 +2157,11 @@ functions in here get called with the parameters SERVER and NICK."
2157 (list :server server :port port :nick nick :password passwd))) 2157 (list :server server :port port :nick nick :password passwd)))
2158 2158
2159;;;###autoload 2159;;;###autoload
2160(defun* erc (&key (server (erc-compute-server)) 2160(cl-defun erc (&key (server (erc-compute-server))
2161 (port (erc-compute-port)) 2161 (port (erc-compute-port))
2162 (nick (erc-compute-nick)) 2162 (nick (erc-compute-nick))
2163 password 2163 password
2164 (full-name (erc-compute-full-name))) 2164 (full-name (erc-compute-full-name)))
2165 "ERC is a powerful, modular, and extensible IRC client. 2165 "ERC is a powerful, modular, and extensible IRC client.
2166This function is the main entry point for ERC. 2166This function is the main entry point for ERC.
2167 2167
@@ -2383,24 +2383,24 @@ If STRING is nil, the function does nothing."
2383 (while list 2383 (while list
2384 (setq elt (car list)) 2384 (setq elt (car list))
2385 (cond ((integerp elt) ; POSITION 2385 (cond ((integerp elt) ; POSITION
2386 (incf (car list) shift)) 2386 (cl-incf (car list) shift))
2387 ((or (atom elt) ; nil, EXTENT 2387 ((or (atom elt) ; nil, EXTENT
2388 ;; (eq t (car elt)) ; (t . TIME) 2388 ;; (eq t (car elt)) ; (t . TIME)
2389 (markerp (car elt))) ; (MARKER . DISTANCE) 2389 (markerp (car elt))) ; (MARKER . DISTANCE)
2390 nil) 2390 nil)
2391 ((integerp (car elt)) ; (BEGIN . END) 2391 ((integerp (car elt)) ; (BEGIN . END)
2392 (incf (car elt) shift) 2392 (cl-incf (car elt) shift)
2393 (incf (cdr elt) shift)) 2393 (cl-incf (cdr elt) shift))
2394 ((stringp (car elt)) ; (TEXT . POSITION) 2394 ((stringp (car elt)) ; (TEXT . POSITION)
2395 (incf (cdr elt) (* (if (natnump (cdr elt)) 1 -1) shift))) 2395 (cl-incf (cdr elt) (* (if (natnump (cdr elt)) 1 -1) shift)))
2396 ((null (car elt)) ; (nil PROPERTY VALUE BEG . END) 2396 ((null (car elt)) ; (nil PROPERTY VALUE BEG . END)
2397 (let ((cons (nthcdr 3 elt))) 2397 (let ((cons (nthcdr 3 elt)))
2398 (incf (car cons) shift) 2398 (cl-incf (car cons) shift)
2399 (incf (cdr cons) shift))) 2399 (cl-incf (cdr cons) shift)))
2400 ((and (featurep 'xemacs) 2400 ((and (featurep 'xemacs)
2401 (extentp (car elt))) ; (EXTENT START END) 2401 (extentp (car elt))) ; (EXTENT START END)
2402 (incf (nth 1 elt) shift) 2402 (cl-incf (nth 1 elt) shift)
2403 (incf (nth 2 elt) shift))) 2403 (cl-incf (nth 2 elt) shift)))
2404 (setq list (cdr list)))))) 2404 (setq list (cdr list))))))
2405 2405
2406(defvar erc-valid-nick-regexp "[]a-zA-Z^[;\\`_{}|][]^[;\\`_{}|a-zA-Z0-9-]*" 2406(defvar erc-valid-nick-regexp "[]a-zA-Z^[;\\`_{}|][]^[;\\`_{}|a-zA-Z0-9-]*"
@@ -2477,6 +2477,13 @@ purposes."
2477 :group 'erc-lurker 2477 :group 'erc-lurker
2478 :type 'boolean) 2478 :type 'boolean)
2479 2479
2480(defcustom erc-lurker-ignore-chars "`_"
2481 "Characters at the end of a nick to strip for activity tracking purposes.
2482
2483See also `erc-lurker-trim-nicks'."
2484 :group 'erc-lurker
2485 :type 'string)
2486
2480(defun erc-lurker-maybe-trim (nick) 2487(defun erc-lurker-maybe-trim (nick)
2481 "Maybe trim trailing `erc-lurker-ignore-chars' from NICK. 2488 "Maybe trim trailing `erc-lurker-ignore-chars' from NICK.
2482 2489
@@ -2491,13 +2498,6 @@ non-nil."
2491 "" nick) 2498 "" nick)
2492 nick)) 2499 nick))
2493 2500
2494(defcustom erc-lurker-ignore-chars "`_"
2495 "Characters at the end of a nick to strip for activity tracking purposes.
2496
2497See also `erc-lurker-trim-nicks'."
2498 :group 'erc-lurker
2499 :type 'string)
2500
2501(defcustom erc-lurker-hide-list nil 2501(defcustom erc-lurker-hide-list nil
2502 "List of IRC type messages to hide when sent by lurkers. 2502 "List of IRC type messages to hide when sent by lurkers.
2503 2503
@@ -2534,9 +2534,9 @@ consumption for long-lived IRC or Emacs sessions."
2534 (maphash 2534 (maphash
2535 (lambda (nick last-PRIVMSG-time) 2535 (lambda (nick last-PRIVMSG-time)
2536 (when 2536 (when
2537 (> (time-to-seconds (time-subtract 2537 (> (float-time (time-subtract
2538 (current-time) 2538 (current-time)
2539 last-PRIVMSG-time)) 2539 last-PRIVMSG-time))
2540 erc-lurker-threshold-time) 2540 erc-lurker-threshold-time)
2541 (remhash nick hash))) 2541 (remhash nick hash)))
2542 hash) 2542 hash)
@@ -2580,7 +2580,8 @@ updates of `erc-lurker-state'."
2580 (server 2580 (server
2581 (erc-canonicalize-server-name erc-server-announced-name))) 2581 (erc-canonicalize-server-name erc-server-announced-name)))
2582 (when (equal command "PRIVMSG") 2582 (when (equal command "PRIVMSG")
2583 (when (>= (incf erc-lurker-cleanup-count) erc-lurker-cleanup-interval) 2583 (when (>= (cl-incf erc-lurker-cleanup-count)
2584 erc-lurker-cleanup-interval)
2584 (setq erc-lurker-cleanup-count 0) 2585 (setq erc-lurker-cleanup-count 0)
2585 (erc-lurker-cleanup)) 2586 (erc-lurker-cleanup))
2586 (unless (gethash server erc-lurker-state) 2587 (unless (gethash server erc-lurker-state)
@@ -2601,10 +2602,21 @@ server within `erc-lurker-threshold-time'. See also
2601 (gethash (erc-lurker-maybe-trim nick) 2602 (gethash (erc-lurker-maybe-trim nick)
2602 (gethash server erc-lurker-state (make-hash-table))))) 2603 (gethash server erc-lurker-state (make-hash-table)))))
2603 (or (null last-PRIVMSG-time) 2604 (or (null last-PRIVMSG-time)
2604 (> (time-to-seconds 2605 (> (float-time
2605 (time-subtract (current-time) last-PRIVMSG-time)) 2606 (time-subtract (current-time) last-PRIVMSG-time))
2606 erc-lurker-threshold-time)))) 2607 erc-lurker-threshold-time))))
2607 2608
2609(defcustom erc-common-server-suffixes
2610 '(("openprojects.net$" . "OPN")
2611 ("freenode.net$" . "freenode")
2612 ("oftc.net$" . "OFTC"))
2613 "Alist of common server name suffixes.
2614This variable is used in mode-line display to save screen
2615real estate. Set it to nil if you want to avoid changing
2616displayed hostnames."
2617 :group 'erc-mode-line-and-header
2618 :type 'alist)
2619
2608(defun erc-canonicalize-server-name (server) 2620(defun erc-canonicalize-server-name (server)
2609 "Returns the canonical network name for SERVER if any, 2621 "Returns the canonical network name for SERVER if any,
2610otherwise `erc-server-announced-name'. SERVER is matched against 2622otherwise `erc-server-announced-name'. SERVER is matched against
@@ -3115,37 +3127,37 @@ If SERVER is non-nil, use that, rather than the current server."
3115 (add-to-list 'symlist 3127 (add-to-list 'symlist
3116 (cons (erc-once-with-server-event 3128 (cons (erc-once-with-server-event
3117 311 `(string= ,nick 3129 311 `(string= ,nick
3118 (second 3130 (nth 1
3119 (erc-response.command-args parsed)))) 3131 (erc-response.command-args parsed))))
3120 'erc-server-311-functions)) 3132 'erc-server-311-functions))
3121 (add-to-list 'symlist 3133 (add-to-list 'symlist
3122 (cons (erc-once-with-server-event 3134 (cons (erc-once-with-server-event
3123 312 `(string= ,nick 3135 312 `(string= ,nick
3124 (second 3136 (nth 1
3125 (erc-response.command-args parsed)))) 3137 (erc-response.command-args parsed))))
3126 'erc-server-312-functions)) 3138 'erc-server-312-functions))
3127 (add-to-list 'symlist 3139 (add-to-list 'symlist
3128 (cons (erc-once-with-server-event 3140 (cons (erc-once-with-server-event
3129 318 `(string= ,nick 3141 318 `(string= ,nick
3130 (second 3142 (nth 1
3131 (erc-response.command-args parsed)))) 3143 (erc-response.command-args parsed))))
3132 'erc-server-318-functions)) 3144 'erc-server-318-functions))
3133 (add-to-list 'symlist 3145 (add-to-list 'symlist
3134 (cons (erc-once-with-server-event 3146 (cons (erc-once-with-server-event
3135 319 `(string= ,nick 3147 319 `(string= ,nick
3136 (second 3148 (nth 1
3137 (erc-response.command-args parsed)))) 3149 (erc-response.command-args parsed))))
3138 'erc-server-319-functions)) 3150 'erc-server-319-functions))
3139 (add-to-list 'symlist 3151 (add-to-list 'symlist
3140 (cons (erc-once-with-server-event 3152 (cons (erc-once-with-server-event
3141 320 `(string= ,nick 3153 320 `(string= ,nick
3142 (second 3154 (nth 1
3143 (erc-response.command-args parsed)))) 3155 (erc-response.command-args parsed))))
3144 'erc-server-320-functions)) 3156 'erc-server-320-functions))
3145 (add-to-list 'symlist 3157 (add-to-list 'symlist
3146 (cons (erc-once-with-server-event 3158 (cons (erc-once-with-server-event
3147 330 `(string= ,nick 3159 330 `(string= ,nick
3148 (second 3160 (nth 1
3149 (erc-response.command-args parsed)))) 3161 (erc-response.command-args parsed))))
3150 'erc-server-330-functions)) 3162 'erc-server-330-functions))
3151 (add-to-list 'symlist 3163 (add-to-list 'symlist
@@ -4328,8 +4340,8 @@ See also: `erc-echo-notice-in-user-buffers',
4328 4340
4329(defun erc-banlist-store (proc parsed) 4341(defun erc-banlist-store (proc parsed)
4330 "Record ban entries for a channel." 4342 "Record ban entries for a channel."
4331 (multiple-value-bind (channel mask whoset) 4343 (pcase-let ((`(,channel ,mask ,whoset)
4332 (values-list (cdr (erc-response.command-args parsed))) 4344 (cdr (erc-response.command-args parsed))))
4333 ;; Determine to which buffer the message corresponds 4345 ;; Determine to which buffer the message corresponds
4334 (let ((buffer (erc-get-buffer channel proc))) 4346 (let ((buffer (erc-get-buffer channel proc)))
4335 (with-current-buffer buffer 4347 (with-current-buffer buffer
@@ -4340,7 +4352,7 @@ See also: `erc-echo-notice-in-user-buffers',
4340 4352
4341(defun erc-banlist-finished (proc parsed) 4353(defun erc-banlist-finished (proc parsed)
4342 "Record that we have received the banlist." 4354 "Record that we have received the banlist."
4343 (let* ((channel (second (erc-response.command-args parsed))) 4355 (let* ((channel (nth 1 (erc-response.command-args parsed)))
4344 (buffer (erc-get-buffer channel proc))) 4356 (buffer (erc-get-buffer channel proc)))
4345 (with-current-buffer buffer 4357 (with-current-buffer buffer
4346 (put 'erc-channel-banlist 'received-from-server t))) 4358 (put 'erc-channel-banlist 'received-from-server t)))
@@ -4349,7 +4361,7 @@ See also: `erc-echo-notice-in-user-buffers',
4349(defun erc-banlist-update (proc parsed) 4361(defun erc-banlist-update (proc parsed)
4350 "Check MODE commands for bans and update the banlist appropriately." 4362 "Check MODE commands for bans and update the banlist appropriately."
4351 ;; FIXME: Possibly incorrect. -- Lawrence 2004-05-11 4363 ;; FIXME: Possibly incorrect. -- Lawrence 2004-05-11
4352 (let* ((tgt (first (erc-response.command-args parsed))) 4364 (let* ((tgt (car (erc-response.command-args parsed)))
4353 (mode (erc-response.contents parsed)) 4365 (mode (erc-response.contents parsed))
4354 (whoset (erc-response.sender parsed)) 4366 (whoset (erc-response.sender parsed))
4355 (buffer (erc-get-buffer tgt proc))) 4367 (buffer (erc-get-buffer tgt proc)))
@@ -5203,42 +5215,66 @@ Specifically, return the position of `erc-insert-marker'."
5203 "Return the value of `point' at the end of the input line." 5215 "Return the value of `point' at the end of the input line."
5204 (point-max)) 5216 (point-max))
5205 5217
5218(defvar erc-last-input-time 0
5219 "Time of last call to `erc-send-current-line'.
5220If that function has never been called, the value is 0.")
5221
5222(defcustom erc-accidental-paste-threshold-seconds nil
5223 "Minimum time, in seconds, before sending new lines via IRC.
5224If the value is a number, `erc-send-current-line' signals an
5225error if its previous invocation was less than this much time
5226ago. This is useful so that if you accidentally enter large
5227amounts of text into the ERC buffer, that text is not sent to the
5228IRC server.
5229
5230If the value is nil, `erc-send-current-line' always considers any
5231submitted line to be intentional."
5232 :group 'erc
5233 :version "24.4"
5234 :type '(choice number (other :tag "disabled" nil)))
5235
5206(defun erc-send-current-line () 5236(defun erc-send-current-line ()
5207 "Parse current line and send it to IRC." 5237 "Parse current line and send it to IRC."
5208 (interactive) 5238 (interactive)
5209 (save-restriction 5239 (let ((now (float-time)))
5210 (widen) 5240 (if (or (not erc-accidental-paste-threshold-seconds)
5211 (if (< (point) (erc-beg-of-input-line)) 5241 (< erc-accidental-paste-threshold-seconds
5212 (erc-error "Point is not in the input area") 5242 (- now erc-last-input-time)))
5213 (let ((inhibit-read-only t) 5243 (save-restriction
5214 (str (erc-user-input)) 5244 (widen)
5215 (old-buf (current-buffer))) 5245 (if (< (point) (erc-beg-of-input-line))
5216 (if (and (not (erc-server-buffer-live-p)) 5246 (erc-error "Point is not in the input area")
5217 (not (erc-command-no-process-p str))) 5247 (let ((inhibit-read-only t)
5218 (erc-error "ERC: No process running") 5248 (str (erc-user-input))
5219 (erc-set-active-buffer (current-buffer)) 5249 (old-buf (current-buffer)))
5220 5250 (if (and (not (erc-server-buffer-live-p))
5221 ;; Kill the input and the prompt 5251 (not (erc-command-no-process-p str)))
5222 (delete-region (erc-beg-of-input-line) 5252 (erc-error "ERC: No process running")
5223 (erc-end-of-input-line)) 5253 (erc-set-active-buffer (current-buffer))
5224 5254 ;; Kill the input and the prompt
5225 (unwind-protect 5255 (delete-region (erc-beg-of-input-line)
5226 (erc-send-input str) 5256 (erc-end-of-input-line))
5227 ;; Fix the buffer if the command didn't kill it 5257 (unwind-protect
5228 (when (buffer-live-p old-buf) 5258 (erc-send-input str)
5229 (with-current-buffer old-buf 5259 ;; Fix the buffer if the command didn't kill it
5230 (save-restriction 5260 (when (buffer-live-p old-buf)
5231 (widen) 5261 (with-current-buffer old-buf
5232 (goto-char (point-max)) 5262 (save-restriction
5233 (when (processp erc-server-process) 5263 (widen)
5234 (set-marker (process-mark erc-server-process) (point))) 5264 (goto-char (point-max))
5235 (set-marker erc-insert-marker (point)) 5265 (when (processp erc-server-process)
5236 (let ((buffer-modified (buffer-modified-p))) 5266 (set-marker (process-mark erc-server-process) (point)))
5237 (erc-display-prompt) 5267 (set-marker erc-insert-marker (point))
5238 (set-buffer-modified-p buffer-modified)))))) 5268 (let ((buffer-modified (buffer-modified-p)))
5239 5269 (erc-display-prompt)
5240 ;; Only when last hook has been run... 5270 (set-buffer-modified-p buffer-modified))))))
5241 (run-hook-with-args 'erc-send-completed-hook str)))))) 5271
5272 ;; Only when last hook has been run...
5273 (run-hook-with-args 'erc-send-completed-hook str))))
5274 (setq erc-last-input-time now))
5275 (switch-to-buffer "*ERC Accidental Paste Overflow*")
5276 (lwarn 'erc :warning
5277 "You seem to have accidentally pasted some text!"))))
5242 5278
5243(defun erc-user-input () 5279(defun erc-user-input ()
5244 "Return the input of the user in the current buffer." 5280 "Return the input of the user in the current buffer."
@@ -6000,7 +6036,7 @@ entry of `channel-members'."
6000 (if cuser 6036 (if cuser
6001 (setq op (erc-channel-user-op cuser) 6037 (setq op (erc-channel-user-op cuser)
6002 voice (erc-channel-user-voice cuser))) 6038 voice (erc-channel-user-voice cuser)))
6003 (if (interactive-p) 6039 (if (called-interactively-p 'interactive)
6004 (message "%s is %s@%s%s%s" 6040 (message "%s is %s@%s%s%s"
6005 nick login host 6041 nick login host
6006 (if full-name (format " (%s)" full-name) "") 6042 (if full-name (format " (%s)" full-name) "")
@@ -6088,17 +6124,6 @@ Otherwise, use the `erc-header-line' face."
6088 :group 'erc-paranoia 6124 :group 'erc-paranoia
6089 :type 'boolean) 6125 :type 'boolean)
6090 6126
6091(defcustom erc-common-server-suffixes
6092 '(("openprojects.net$" . "OPN")
6093 ("freenode.net$" . "freenode")
6094 ("oftc.net$" . "OFTC"))
6095 "Alist of common server name suffixes.
6096This variable is used in mode-line display to save screen
6097real estate. Set it to nil if you want to avoid changing
6098displayed hostnames."
6099 :group 'erc-mode-line-and-header
6100 :type 'alist)
6101
6102(defcustom erc-mode-line-away-status-format 6127(defcustom erc-mode-line-away-status-format
6103 "(AWAY since %a %b %d %H:%M) " 6128 "(AWAY since %a %b %d %H:%M) "
6104 "When you're away on a server, this is shown in the mode line. 6129 "When you're away on a server, this is shown in the mode line.
@@ -6302,7 +6327,7 @@ If optional argument HERE is non-nil, insert version number at point."
6302 (format "ERC %s (GNU Emacs %s)" erc-version-string emacs-version))) 6327 (format "ERC %s (GNU Emacs %s)" erc-version-string emacs-version)))
6303 (if here 6328 (if here
6304 (insert version-string) 6329 (insert version-string)
6305 (if (interactive-p) 6330 (if (called-interactively-p 'interactive)
6306 (message "%s" version-string) 6331 (message "%s" version-string)
6307 version-string)))) 6332 version-string))))
6308 6333
@@ -6322,7 +6347,7 @@ If optional argument HERE is non-nil, insert version number at point."
6322 ", "))) 6347 ", ")))
6323 (if here 6348 (if here
6324 (insert string) 6349 (insert string)
6325 (if (interactive-p) 6350 (if (called-interactively-p 'interactive)
6326 (message "%s" string) 6351 (message "%s" string)
6327 string)))) 6352 string))))
6328 6353
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index aa8aae2d245..b4c86e39e86 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -297,6 +297,8 @@ to writing a completion function."
297 (define-key eshell-command-map [? ] 'pcomplete-expand) 297 (define-key eshell-command-map [? ] 'pcomplete-expand)
298 (define-key eshell-mode-map [tab] 'eshell-pcomplete) 298 (define-key eshell-mode-map [tab] 'eshell-pcomplete)
299 (define-key eshell-mode-map [(control ?i)] 'eshell-pcomplete) 299 (define-key eshell-mode-map [(control ?i)] 'eshell-pcomplete)
300 (add-hook 'completion-at-point-functions
301 #'pcomplete-completions-at-point nil t)
300 ;; jww (1999-10-19): Will this work on anything but X? 302 ;; jww (1999-10-19): Will this work on anything but X?
301 (if (featurep 'xemacs) 303 (if (featurep 'xemacs)
302 (define-key eshell-mode-map [iso-left-tab] 'pcomplete-reverse) 304 (define-key eshell-mode-map [iso-left-tab] 'pcomplete-reverse)
@@ -452,9 +454,9 @@ to writing a completion function."
452(defun eshell-pcomplete () 454(defun eshell-pcomplete ()
453 "Eshell wrapper for `pcomplete'." 455 "Eshell wrapper for `pcomplete'."
454 (interactive) 456 (interactive)
455 (if eshell-cmpl-ignore-case 457 (condition-case nil
456 (pcomplete-expand-and-complete) ; hack workaround for bug#12838 458 (pcomplete)
457 (pcomplete))) 459 (text-read-only (completion-at-point)))) ; Workaround for bug#12838.
458 460
459(provide 'em-cmpl) 461(provide 'em-cmpl)
460 462
diff --git a/lisp/faces.el b/lisp/faces.el
index 9e0ca962499..280d85c34e9 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -487,44 +487,44 @@ with the `default' face (which is always completely specified)."
487(defalias 'face-background-pixmap 'face-stipple) 487(defalias 'face-background-pixmap 'face-stipple)
488 488
489 489
490;; FIXME all of these -p functions ignore inheritance (cf face-stipple). 490(defun face-underline-p (face &optional frame inherit)
491;; Ie, a face that inherits from an underlined face but does not
492;; specify :underline will return nil.
493;; So these functions don't actually tell you anything about how the
494;; face will _appear_. So not very useful IMO.
495(defun face-underline-p (face &optional frame)
496 "Return non-nil if FACE specifies a non-nil underlining. 491 "Return non-nil if FACE specifies a non-nil underlining.
497If the optional argument FRAME is given, report on face FACE in that frame. 492If the optional argument FRAME is given, report on face FACE in that frame.
498If FRAME is t, report on the defaults for face FACE (for new frames). 493If FRAME is t, report on the defaults for face FACE (for new frames).
499If FRAME is omitted or nil, use the selected frame." 494If FRAME is omitted or nil, use the selected frame.
500 (face-attribute-specified-or (face-attribute face :underline frame) nil)) 495Optional argument INHERIT is passed to `face-attribute'."
496 (face-attribute-specified-or
497 (face-attribute face :underline frame inherit) nil))
501 498
502 499
503(defun face-inverse-video-p (face &optional frame) 500(defun face-inverse-video-p (face &optional frame inherit)
504 "Return non-nil if FACE specifies a non-nil inverse-video. 501 "Return non-nil if FACE specifies a non-nil inverse-video.
505If the optional argument FRAME is given, report on face FACE in that frame. 502If the optional argument FRAME is given, report on face FACE in that frame.
506If FRAME is t, report on the defaults for face FACE (for new frames). 503If FRAME is t, report on the defaults for face FACE (for new frames).
507If FRAME is omitted or nil, use the selected frame." 504If FRAME is omitted or nil, use the selected frame.
508 (eq (face-attribute face :inverse-video frame) t)) 505Optional argument INHERIT is passed to `face-attribute'."
506 (eq (face-attribute face :inverse-video frame inherit) t))
509 507
510 508
511(defun face-bold-p (face &optional frame) 509(defun face-bold-p (face &optional frame inherit)
512 "Return non-nil if the font of FACE is bold on FRAME. 510 "Return non-nil if the font of FACE is bold on FRAME.
513If the optional argument FRAME is given, report on face FACE in that frame. 511If the optional argument FRAME is given, report on face FACE in that frame.
514If FRAME is t, report on the defaults for face FACE (for new frames). 512If FRAME is t, report on the defaults for face FACE (for new frames).
515If FRAME is omitted or nil, use the selected frame. 513If FRAME is omitted or nil, use the selected frame.
514Optional argument INHERIT is passed to `face-attribute'.
516Use `face-attribute' for finer control." 515Use `face-attribute' for finer control."
517 (let ((bold (face-attribute face :weight frame))) 516 (let ((bold (face-attribute face :weight frame inherit)))
518 (memq bold '(semi-bold bold extra-bold ultra-bold)))) 517 (memq bold '(semi-bold bold extra-bold ultra-bold))))
519 518
520 519
521(defun face-italic-p (face &optional frame) 520(defun face-italic-p (face &optional frame inherit)
522 "Return non-nil if the font of FACE is italic on FRAME. 521 "Return non-nil if the font of FACE is italic on FRAME.
523If the optional argument FRAME is given, report on face FACE in that frame. 522If the optional argument FRAME is given, report on face FACE in that frame.
524If FRAME is t, report on the defaults for face FACE (for new frames). 523If FRAME is t, report on the defaults for face FACE (for new frames).
525If FRAME is omitted or nil, use the selected frame. 524If FRAME is omitted or nil, use the selected frame.
525Optional argument INHERIT is passed to `face-attribute'.
526Use `face-attribute' for finer control." 526Use `face-attribute' for finer control."
527 (let ((italic (face-attribute face :slant frame))) 527 (let ((italic (face-attribute face :slant frame inherit)))
528 (memq italic '(italic oblique)))) 528 (memq italic '(italic oblique))))
529 529
530 530
@@ -862,7 +862,7 @@ Use `set-face-attribute' to ``unspecify'' underlining."
862 'set-face-underline "24.3") 862 'set-face-underline "24.3")
863 863
864 864
865(defun set-face-inverse-video-p (face inverse-video-p &optional frame) 865(defun set-face-inverse-video (face inverse-video-p &optional frame)
866 "Specify whether face FACE is in inverse video. 866 "Specify whether face FACE is in inverse video.
867INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video. 867INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video.
868INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video. 868INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video.
@@ -870,14 +870,13 @@ FRAME nil or not specified means change face on all frames.
870Use `set-face-attribute' to ``unspecify'' the inverse video attribute." 870Use `set-face-attribute' to ``unspecify'' the inverse video attribute."
871 (interactive 871 (interactive
872 (let ((list (read-face-and-attribute :inverse-video))) 872 (let ((list (read-face-and-attribute :inverse-video)))
873 (list (car list) (eq (car (cdr list)) t)))) 873 (list (car list) (if (cadr list) t))))
874 (set-face-attribute face frame :inverse-video inverse-video-p)) 874 (set-face-attribute face frame :inverse-video inverse-video-p))
875 875
876(define-obsolete-function-alias 'set-face-inverse-video-p
877 'set-face-inverse-video "24.4")
876 878
877;; The -p suffix is a hostage to fortune. What if we want to extend 879(defun set-face-bold (face bold-p &optional frame)
878;; this to allow more than boolean options? Exactly this happened
879;; to set-face-underline-p.
880(defun set-face-bold-p (face bold-p &optional frame)
881 "Specify whether face FACE is bold. 880 "Specify whether face FACE is bold.
882BOLD-P non-nil means FACE should explicitly display bold. 881BOLD-P non-nil means FACE should explicitly display bold.
883BOLD-P nil means FACE should explicitly display non-bold. 882BOLD-P nil means FACE should explicitly display non-bold.
@@ -887,8 +886,10 @@ Use `set-face-attribute' or `modify-face' for finer control."
887 (make-face-unbold face frame) 886 (make-face-unbold face frame)
888 (make-face-bold face frame))) 887 (make-face-bold face frame)))
889 888
889(define-obsolete-function-alias 'set-face-bold-p 'set-face-bold "24.4")
890
890 891
891(defun set-face-italic-p (face italic-p &optional frame) 892(defun set-face-italic (face italic-p &optional frame)
892 "Specify whether face FACE is italic. 893 "Specify whether face FACE is italic.
893ITALIC-P non-nil means FACE should explicitly display italic. 894ITALIC-P non-nil means FACE should explicitly display italic.
894ITALIC-P nil means FACE should explicitly display non-italic. 895ITALIC-P nil means FACE should explicitly display non-italic.
@@ -898,6 +899,8 @@ Use `set-face-attribute' or `modify-face' for finer control."
898 (make-face-unitalic face frame) 899 (make-face-unitalic face frame)
899 (make-face-italic face frame))) 900 (make-face-italic face frame)))
900 901
902(define-obsolete-function-alias 'set-face-italic-p 'set-face-italic "24.4")
903
901 904
902(defalias 'set-face-background-pixmap 'set-face-stipple) 905(defalias 'set-face-background-pixmap 'set-face-stipple)
903 906
@@ -926,13 +929,25 @@ of the default face. Value is FACE."
926;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 929;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
927 930
928(defun read-face-name (prompt &optional default multiple) 931(defun read-face-name (prompt &optional default multiple)
929 "Read a face, defaulting to the face or faces on the char after point. 932 "Read a face, defaulting to the face or faces at point.
930If it has the property `read-face-name', that overrides the `face' property. 933If the text at point has the property `read-face-name', that
931PROMPT should be a string that describes what the caller will do with the face; 934overrides the `face' property for determining the default.
932it should not end in a space. 935
936PROMPT should be a string that describes what the caller will do
937with the face; it should not end in a space.
938
939
940This function uses `completing-read-multiple' with \",\" as the
941separator character, i.e.
942
943
944
945
946
933The optional argument DEFAULT provides the value to display in the 947The optional argument DEFAULT provides the value to display in the
934minibuffer prompt that is returned if the user just types RET 948minibuffer prompt that is returned if the user just types RET
935unless DEFAULT is a string (in which case nil is returned). 949unless DEFAULT is a string (in which case nil is returned).
950
936If MULTIPLE is non-nil, return a list of faces (possibly only one). 951If MULTIPLE is non-nil, return a list of faces (possibly only one).
937Otherwise, return a single face." 952Otherwise, return a single face."
938 (let ((faceprop (or (get-char-property (point) 'read-face-name) 953 (let ((faceprop (or (get-char-property (point) 'read-face-name)
@@ -1572,44 +1587,79 @@ If SPEC is nil, return nil."
1572 (mapcar (lambda (x) (list (car x) 'unspecified)) 1587 (mapcar (lambda (x) (list (car x) 'unspecified))
1573 face-attribute-name-alist))))) 1588 face-attribute-name-alist)))))
1574 1589
1575(defun face-spec-set (face spec &optional for-defface) 1590(defun face-spec-set (face spec &optional spec-type)
1576 "Set and apply the face spec for FACE. 1591 "Set the face spec SPEC for FACE.
1577If the optional argument FOR-DEFFACE is omitted or nil, set the 1592See `defface' for the format of SPEC.
1578overriding spec to SPEC, recording it in the `face-override-spec' 1593
1579property of FACE. See `defface' for the format of SPEC. 1594The appearance of each face is controlled by its spec, and by the
1580 1595internal face attributes (which can be frame-specific and can be
1581If FOR-DEFFACE is non-nil, set the base spec (the one set by 1596set via `set-face-attribute').
1582`defface' and Custom). In this case, SPEC is ignored; the caller 1597
1583is responsible for putting the face spec in the `saved-face', 1598The argument SPEC-TYPE determines which spec to set:
1584`customized-face', or `face-defface-spec', as appropriate. 1599 nil or `face-override-spec' means the override spec (which is
1585 1600 usually what you want if calling this function outside of
1586The appearance of FACE is controlled by the base spec, by any 1601 Custom code);
1587custom theme specs on top of that, and by the overriding spec on 1602 `customized-face' or `saved-face' means the customized spec or
1588top of all the rest." 1603 the saved custom spec;
1589 (if for-defface 1604 `face-defface-spec' means the default spec
1590 ;; When we reset the face based on its custom spec, then it is 1605 (usually set only via `defface');
1591 ;; unmodified as far as Custom is concerned. 1606 `reset' means to ignore SPEC, but clear the `customized-face'
1592 (put (or (get face 'face-alias) face) 'face-modified nil) 1607 and `face-override-spec' specs;
1593 ;; When we change a face based on a spec from outside custom, 1608Any other value means not to set any spec, but to run the
1594 ;; record it for future frames. 1609function for its other effects.
1595 (put (or (get face 'face-alias) face) 'face-override-spec spec)) 1610
1596 ;; Reset each frame according to the rules implied by all its specs. 1611In addition to setting the face spec, this function defines FACE
1597 (dolist (frame (frame-list)) 1612as a valid face name if it is not already one, and (re)calculates
1598 (face-spec-recalc face frame))) 1613the face's attributes on existing frames."
1614 (if (get face 'face-alias)
1615 (setq face (get face 'face-alias)))
1616 ;; Save SPEC to the relevant symbol property.
1617 (unless spec-type
1618 (setq spec-type 'face-override-spec))
1619 (if (memq spec-type '(face-defface-spec face-override-spec
1620 customized-face saved-face))
1621 (put face spec-type spec))
1622 (if (memq spec-type '(reset saved-face))
1623 (put face 'customized-face nil))
1624 ;; Setting the face spec via Custom empties out any override spec,
1625 ;; similar to how setting a variable via Custom changes its values.
1626 (if (memq spec-type '(customized-face saved-face reset))
1627 (put face 'face-override-spec nil))
1628 ;; If we reset the face based on its custom spec, it is unmodified
1629 ;; as far as Custom is concerned.
1630 (unless (eq face 'face-override-spec)
1631 (put face 'face-modified nil))
1632 (if (facep face)
1633 ;; If the face already exists, recalculate it.
1634 (dolist (frame (frame-list))
1635 (face-spec-recalc face frame))
1636 ;; Otherwise, initialize it on all frames.
1637 (make-empty-face face)
1638 (let ((value (face-user-default-spec face))
1639 (have-window-system (memq initial-window-system '(x w32 ns))))
1640 (dolist (frame (frame-list))
1641 (face-spec-set-2 face frame value)
1642 (when (memq (window-system frame) '(x w32 ns))
1643 (setq have-window-system t)))
1644 (if have-window-system
1645 (make-face-x-resource-internal face)))))
1599 1646
1600(defun face-spec-recalc (face frame) 1647(defun face-spec-recalc (face frame)
1601 "Reset the face attributes of FACE on FRAME according to its specs. 1648 "Reset the face attributes of FACE on FRAME according to its specs.
1602This applies the defface/custom spec first, then the custom theme specs, 1649This applies the defface/custom spec first, then the custom theme specs,
1603then the override spec." 1650then the override spec."
1651 (while (get face 'face-alias)
1652 (setq face (get face 'face-alias)))
1604 (face-spec-reset-face face frame) 1653 (face-spec-reset-face face frame)
1605 (let ((face-sym (or (get face 'face-alias) face))) 1654 ;; If FACE is customized or themed, set the custom spec from
1606 (or (get face 'customized-face) 1655 ;; `theme-face' records, which completely replace the defface spec
1607 (get face 'saved-face) 1656 ;; rather than inheriting from it.
1608 (face-spec-set-2 face frame (face-default-spec face))) 1657 (let ((theme-faces (get face 'theme-face)))
1609 (let ((theme-faces (reverse (get face-sym 'theme-face)))) 1658 (if theme-faces
1610 (dolist (spec theme-faces) 1659 (dolist (spec (reverse theme-faces))
1611 (face-spec-set-2 face frame (cadr spec)))) 1660 (face-spec-set-2 face frame (cadr spec)))
1612 (face-spec-set-2 face frame (get face-sym 'face-override-spec)))) 1661 (face-spec-set-2 face frame (face-default-spec face))))
1662 (face-spec-set-2 face frame (get face 'face-override-spec)))
1613 1663
1614(defun face-spec-set-2 (face frame spec) 1664(defun face-spec-set-2 (face frame spec)
1615 "Set the face attributes of FACE on FRAME according to SPEC." 1665 "Set the face attributes of FACE on FRAME according to SPEC."
@@ -1689,12 +1739,16 @@ If FRAME is nil, that stands for the selected frame."
1689(declare-function xw-color-defined-p "xfns.c" (color &optional frame)) 1739(declare-function xw-color-defined-p "xfns.c" (color &optional frame))
1690 1740
1691(defun color-defined-p (color &optional frame) 1741(defun color-defined-p (color &optional frame)
1692 "Return non-nil if color COLOR is supported on frame FRAME. 1742 "Return non-nil if COLOR is supported on frame FRAME.
1693If FRAME is omitted or nil, use the selected frame. 1743COLOR should be a string naming a color (e.g. \"white\"), or a
1694If COLOR is the symbol `unspecified' or one of the strings 1744string specifying a color's RGB components (e.g. \"#ff12ec\"), or
1695\"unspecified-fg\" or \"unspecified-bg\", the value is nil." 1745the symbol `unspecified'.
1696 (if (member color '(unspecified "unspecified-bg" "unspecified-fg")) 1746
1697 nil 1747This function returns nil if COLOR is the symbol `unspecified',
1748or one of the strings \"unspecified-fg\" or \"unspecified-bg\".
1749
1750If FRAME is omitted or nil, use the selected frame."
1751 (unless (member color '(unspecified "unspecified-bg" "unspecified-fg"))
1698 (if (member (framep (or frame (selected-frame))) '(x w32 ns)) 1752 (if (member (framep (or frame (selected-frame))) '(x w32 ns))
1699 (xw-color-defined-p color frame) 1753 (xw-color-defined-p color frame)
1700 (numberp (tty-color-translate color frame))))) 1754 (numberp (tty-color-translate color frame)))))
diff --git a/lisp/ffap.el b/lisp/ffap.el
index 4c75609fe01..00be6b91571 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -181,7 +181,7 @@ Note this name may be omitted if it equals the default
181 ;; Could just use `url-nonrelative-link' of w3, if loaded. 181 ;; Could just use `url-nonrelative-link' of w3, if loaded.
182 ;; This regexp is not exhaustive, it just matches common cases. 182 ;; This regexp is not exhaustive, it just matches common cases.
183 (concat 183 (concat
184 "\\`\\(" 184 "\\("
185 "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok 185 "news\\(post\\)?:\\|mailto:\\|file:" ; no host ok
186 "\\|" 186 "\\|"
187 "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host 187 "\\(ftp\\|https?\\|telnet\\|gopher\\|www\\|wais\\)://" ; needs host
@@ -484,7 +484,7 @@ Returned values:
484 "In remote FULLNAME, replace path with NAME. May return nil." 484 "In remote FULLNAME, replace path with NAME. May return nil."
485 ;; Use efs if loaded, but do not load it otherwise. 485 ;; Use efs if loaded, but do not load it otherwise.
486 (if (fboundp 'efs-replace-path-component) 486 (if (fboundp 'efs-replace-path-component)
487 (funcall efs-replace-path-component fullname name) 487 (funcall 'efs-replace-path-component fullname name)
488 (and (stringp fullname) 488 (and (stringp fullname)
489 (stringp name) 489 (stringp name)
490 (concat (file-remote-p fullname) name)))) 490 (concat (file-remote-p fullname) name))))
@@ -606,10 +606,11 @@ Looks at `ffap-ftp-default-user', returns \"\" for \"localhost\"."
606 606
607(defsubst ffap-url-p (string) 607(defsubst ffap-url-p (string)
608 "If STRING looks like an URL, return it (maybe improved), else nil." 608 "If STRING looks like an URL, return it (maybe improved), else nil."
609 (let ((case-fold-search t)) 609 (when (and (stringp string) ffap-url-regexp)
610 (and ffap-url-regexp (string-match ffap-url-regexp string) 610 (let* ((case-fold-search t)
611 ;; I lied, no improvement: 611 (match (string-match ffap-url-regexp string)))
612 string))) 612 (cond ((eq match 0) string)
613 (match (substring string match))))))
613 614
614;; Broke these out of ffap-fixup-url, for use of ffap-url package. 615;; Broke these out of ffap-fixup-url, for use of ffap-url package.
615(defun ffap-url-unwrap-local (url) 616(defun ffap-url-unwrap-local (url)
@@ -1122,10 +1123,8 @@ Assumes the buffer has not changed."
1122 (equal (ffap-string-around) "<>") 1123 (equal (ffap-string-around) "<>")
1123 ;; (ffap-user-p name): 1124 ;; (ffap-user-p name):
1124 (not (string-match "~" (expand-file-name (concat "~" name))))) 1125 (not (string-match "~" (expand-file-name (concat "~" name)))))
1125 (setq name (concat "mailto:" name)))) 1126 (setq name (concat "mailto:" name)))
1126 1127 ((ffap-url-p name)))))))
1127 (if (ffap-url-p name)
1128 name)))))
1129 1128
1130(defvar ffap-gopher-regexp 1129(defvar ffap-gopher-regexp
1131 "^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$" 1130 "^.*\\<\\(Type\\|Name\\|Path\\|Host\\|Port\\) *= *\\(.*\\) *$"
@@ -1297,13 +1296,11 @@ which may actually result in an URL rather than a filename."
1297 (let (dir) 1296 (let (dir)
1298 ;; Tricky: guess may have or be a local directory, like "w3/w3.elc" 1297 ;; Tricky: guess may have or be a local directory, like "w3/w3.elc"
1299 ;; or "w3/" or "../el/ffap.el" or "../../../" 1298 ;; or "w3/" or "../el/ffap.el" or "../../../"
1300 (or (ffap-url-p guess) 1299 (unless (ffap-url-p guess)
1301 (progn 1300 (unless (ffap-file-remote-p guess)
1302 (or (ffap-file-remote-p guess) 1301 (setq guess
1303 (setq guess 1302 (abbreviate-file-name (expand-file-name guess))))
1304 (abbreviate-file-name (expand-file-name guess)) 1303 (setq dir (file-name-directory guess)))
1305 ))
1306 (setq dir (file-name-directory guess))))
1307 (let ((minibuffer-completing-file-name t) 1304 (let ((minibuffer-completing-file-name t)
1308 (completion-ignore-case read-file-name-completion-ignore-case) 1305 (completion-ignore-case read-file-name-completion-ignore-case)
1309 (fnh-elem (cons ffap-url-regexp 'url-file-handler))) 1306 (fnh-elem (cons ffap-url-regexp 'url-file-handler)))
@@ -1327,11 +1324,8 @@ which may actually result in an URL rather than a filename."
1327 ;; other modifications to be lost (e.g. when Tramp gets loaded 1324 ;; other modifications to be lost (e.g. when Tramp gets loaded
1328 ;; during the completing-read call). 1325 ;; during the completing-read call).
1329 (setq file-name-handler-alist (delq fnh-elem file-name-handler-alist)))) 1326 (setq file-name-handler-alist (delq fnh-elem file-name-handler-alist))))
1330 ;; Do file substitution like (interactive "F"), suggested by MCOOK. 1327 (or (ffap-url-p guess)
1331 (or (ffap-url-p guess) (setq guess (substitute-in-file-name guess))) 1328 (substitute-in-file-name guess))))
1332 ;; Should not do it on url's, where $ is a common (VMS?) character.
1333 ;; Note: upcoming url.el package ought to handle this automatically.
1334 guess))
1335 1329
1336(defun ffap-read-url-internal (string pred action) 1330(defun ffap-read-url-internal (string pred action)
1337 "Complete URLs from history, treating given string as valid." 1331 "Complete URLs from history, treating given string as valid."
@@ -1346,11 +1340,10 @@ which may actually result in an URL rather than a filename."
1346 (t t)))) 1340 (t t))))
1347 1341
1348(defun ffap-read-file-or-url-internal (string pred action) 1342(defun ffap-read-file-or-url-internal (string pred action)
1349 (unless string ;Why would this ever happen? 1343 (let ((url (ffap-url-p string)))
1350 (setq string default-directory)) 1344 (if url
1351 (if (ffap-url-p string) 1345 (ffap-read-url-internal url pred action)
1352 (ffap-read-url-internal string pred action) 1346 (read-file-name-internal (or string default-directory) pred action))))
1353 (read-file-name-internal string pred action)))
1354 1347
1355;; The rest of this page is just to work with package complete.el. 1348;; The rest of this page is just to work with package complete.el.
1356;; This code assumes that you load ffap.el after complete.el. 1349;; This code assumes that you load ffap.el after complete.el.
@@ -1441,30 +1434,31 @@ and the functions `ffap-file-at-point' and `ffap-url-at-point'."
1441 (let (current-prefix-arg) ; we already interpreted it 1434 (let (current-prefix-arg) ; we already interpreted it
1442 (call-interactively ffap-file-finder)) 1435 (call-interactively ffap-file-finder))
1443 (or filename (setq filename (ffap-prompter))) 1436 (or filename (setq filename (ffap-prompter)))
1444 (cond 1437 (let ((url (ffap-url-p filename)))
1445 ((ffap-url-p filename) 1438 (cond
1446 (let (current-prefix-arg) ; w3 2.3.25 bug, reported by KPC 1439 (url
1447 (funcall ffap-url-fetcher filename))) 1440 (let (current-prefix-arg)
1448 ((and ffap-pass-wildcards-to-dired 1441 (funcall ffap-url-fetcher url)))
1449 ffap-dired-wildcards 1442 ((and ffap-pass-wildcards-to-dired
1450 (string-match ffap-dired-wildcards filename)) 1443 ffap-dired-wildcards
1451 (funcall ffap-directory-finder filename)) 1444 (string-match ffap-dired-wildcards filename))
1452 ((and ffap-dired-wildcards 1445 (funcall ffap-directory-finder filename))
1453 (string-match ffap-dired-wildcards filename) 1446 ((and ffap-dired-wildcards
1454 find-file-wildcards 1447 (string-match ffap-dired-wildcards filename)
1455 ;; Check if it's find-file that supports wildcards arg 1448 find-file-wildcards
1456 (memq ffap-file-finder '(find-file find-alternate-file))) 1449 ;; Check if it's find-file that supports wildcards arg
1457 (funcall ffap-file-finder (expand-file-name filename) t)) 1450 (memq ffap-file-finder '(find-file find-alternate-file)))
1458 ((or (not ffap-newfile-prompt) 1451 (funcall ffap-file-finder (expand-file-name filename) t))
1459 (file-exists-p filename) 1452 ((or (not ffap-newfile-prompt)
1460 (y-or-n-p "File does not exist, create buffer? ")) 1453 (file-exists-p filename)
1461 (funcall ffap-file-finder 1454 (y-or-n-p "File does not exist, create buffer? "))
1462 ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR. 1455 (funcall ffap-file-finder
1463 (expand-file-name filename))) 1456 ;; expand-file-name fixes "~/~/.emacs" bug sent by CHUCKR.
1464 ;; User does not want to find a non-existent file: 1457 (expand-file-name filename)))
1465 ((signal 'file-error (list "Opening file buffer" 1458 ;; User does not want to find a non-existent file:
1466 "no such file or directory" 1459 ((signal 'file-error (list "Opening file buffer"
1467 filename)))))) 1460 "no such file or directory"
1461 filename)))))))
1468 1462
1469;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}. 1463;; Shortcut: allow {M-x ffap} rather than {M-x find-file-at-point}.
1470;;;###autoload 1464;;;###autoload
@@ -1820,25 +1814,26 @@ If `dired-at-point-require-prefix' is set, the prefix meaning is reversed."
1820 (let (current-prefix-arg) ; already interpreted 1814 (let (current-prefix-arg) ; already interpreted
1821 (call-interactively ffap-directory-finder)) 1815 (call-interactively ffap-directory-finder))
1822 (or filename (setq filename (dired-at-point-prompter))) 1816 (or filename (setq filename (dired-at-point-prompter)))
1823 (cond 1817 (let ((url (ffap-url-p filename)))
1824 ((ffap-url-p filename) 1818 (cond
1825 (funcall ffap-url-fetcher filename)) 1819 (url
1826 ((and ffap-dired-wildcards 1820 (funcall ffap-url-fetcher url))
1827 (string-match ffap-dired-wildcards filename)) 1821 ((and ffap-dired-wildcards
1828 (funcall ffap-directory-finder filename)) 1822 (string-match ffap-dired-wildcards filename))
1829 ((file-exists-p filename) 1823 (funcall ffap-directory-finder filename))
1830 (if (file-directory-p filename) 1824 ((file-exists-p filename)
1825 (if (file-directory-p filename)
1826 (funcall ffap-directory-finder
1827 (expand-file-name filename))
1831 (funcall ffap-directory-finder 1828 (funcall ffap-directory-finder
1832 (expand-file-name filename)) 1829 (concat (expand-file-name filename) "*"))))
1833 (funcall ffap-directory-finder 1830 ((and (file-writable-p
1834 (concat (expand-file-name filename) "*")))) 1831 (or (file-name-directory (directory-file-name filename))
1835 ((and (file-writable-p 1832 filename))
1836 (or (file-name-directory (directory-file-name filename)) 1833 (y-or-n-p "Directory does not exist, create it? "))
1837 filename)) 1834 (make-directory filename)
1838 (y-or-n-p "Directory does not exist, create it? ")) 1835 (funcall ffap-directory-finder filename))
1839 (make-directory filename) 1836 ((error "No such file or directory `%s'" filename))))))
1840 (funcall ffap-directory-finder filename))
1841 ((error "No such file or directory `%s'" filename)))))
1842 1837
1843(defun dired-at-point-prompter (&optional guess) 1838(defun dired-at-point-prompter (&optional guess)
1844 ;; Does guess and prompt step for find-file-at-point. 1839 ;; Does guess and prompt step for find-file-at-point.
@@ -1851,23 +1846,23 @@ If `dired-at-point-require-prefix' is set, the prefix meaning is reversed."
1851 (ffap-url-regexp "Dired file or URL: ") 1846 (ffap-url-regexp "Dired file or URL: ")
1852 (t "Dired file: ")) 1847 (t "Dired file: "))
1853 (prog1 1848 (prog1
1854 (setq guess (or guess 1849 (setq guess
1855 (let ((guess (ffap-guesser))) 1850 (let ((guess (or guess (ffap-guesser))))
1856 (if (or (not guess) 1851 (cond
1857 (ffap-url-p guess) 1852 ((null guess) nil)
1858 (ffap-file-remote-p guess)) 1853 ((ffap-url-p guess))
1859 guess 1854 ((ffap-file-remote-p guess)
1860 (setq guess (abbreviate-file-name 1855 guess)
1861 (expand-file-name guess))) 1856 ((progn
1862 (cond 1857 (setq guess (abbreviate-file-name
1863 ;; Interpret local directory as a directory. 1858 (expand-file-name guess)))
1864 ((file-directory-p guess) 1859 ;; Interpret local directory as a directory.
1865 (file-name-as-directory guess)) 1860 (file-directory-p guess))
1866 ;; Get directory component from local files. 1861 (file-name-as-directory guess))
1867 ((file-regular-p guess) 1862 ;; Get directory component from local files.
1868 (file-name-directory guess)) 1863 ((file-regular-p guess)
1869 (guess)))) 1864 (file-name-directory guess))
1870 )) 1865 (guess))))
1871 (and guess (ffap-highlight)))) 1866 (and guess (ffap-highlight))))
1872 (ffap-highlight t))) 1867 (ffap-highlight t)))
1873 1868
@@ -1916,22 +1911,17 @@ Only intended for interactive use."
1916(defun ffap-guess-file-name-at-point () 1911(defun ffap-guess-file-name-at-point ()
1917 "Try to get a file name at point. 1912 "Try to get a file name at point.
1918This hook is intended to be put in `file-name-at-point-functions'." 1913This hook is intended to be put in `file-name-at-point-functions'."
1919 (when (fboundp 'ffap-guesser) 1914 (let ((guess (ffap-guesser)))
1920 ;; Logic from `ffap-read-file-or-url' and `dired-at-point-prompter'. 1915 (when (stringp guess)
1921 (let ((guess (ffap-guesser))) 1916 (let ((url (ffap-url-p guess)))
1922 (setq guess 1917 (or url
1923 (if (or (not guess) 1918 (progn
1924 (and (fboundp 'ffap-url-p) 1919 (unless (ffap-file-remote-p guess)
1925 (ffap-url-p guess)) 1920 (setq guess
1926 (and (fboundp 'ffap-file-remote-p) 1921 (abbreviate-file-name (expand-file-name guess))))
1927 (ffap-file-remote-p guess))) 1922 (if (file-directory-p guess)
1928 guess 1923 (file-name-as-directory guess)
1929 (abbreviate-file-name (expand-file-name guess)))) 1924 guess)))))))
1930 (when guess
1931 (if (file-directory-p guess)
1932 (file-name-as-directory guess)
1933 guess)))))
1934
1935 1925
1936;;; Offer default global bindings (`ffap-bindings'): 1926;;; Offer default global bindings (`ffap-bindings'):
1937 1927
diff --git a/lisp/filecache.el b/lisp/filecache.el
index 23246c24c45..bc77c24fe63 100644
--- a/lisp/filecache.el
+++ b/lisp/filecache.el
@@ -267,42 +267,63 @@ files of names DIRNAME1/FILENAME, DIRNAME2/FILENAME, ...")
267;; Functions to add files to the cache 267;; Functions to add files to the cache
268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
269 269
270(defun file-cache--read-list (file op-prompt)
271 (let* ((fun (if file 'read-file-name 'read-directory-name))
272 (type (if file "file" "directory"))
273 (prompt-1 (concat op-prompt " " type ": "))
274 (prompt-2 (concat op-prompt " another " type "?"))
275 (continue t)
276 result)
277 (while continue
278 (push (funcall fun prompt-1 nil nil t) result)
279 (setq continue (y-or-n-p prompt-2)))
280 (nreverse result)))
281
270;;;###autoload 282;;;###autoload
271(defun file-cache-add-directory (directory &optional regexp) 283(defun file-cache-add-directory (directory &optional regexp)
272 "Add DIRECTORY to the file cache. 284 "Add all files in DIRECTORY to the file cache.
273If the optional REGEXP argument is non-nil, only files which match it will 285If called from Lisp with a non-nil REGEXP argument is non-nil,
274be added to the cache." 286only add files whose names match REGEXP."
275 (interactive "DAdd files from directory: ") 287 (interactive (list (read-directory-name "Add files from directory: "
288 nil nil t)
289 nil))
276 ;; Not an error, because otherwise we can't use load-paths that 290 ;; Not an error, because otherwise we can't use load-paths that
277 ;; contain non-existent directories. 291 ;; contain non-existent directories.
278 (if (not (file-accessible-directory-p directory)) 292 (when (file-accessible-directory-p directory)
279 (message "Directory %s does not exist" directory)
280 (let* ((dir (expand-file-name directory)) 293 (let* ((dir (expand-file-name directory))
281 (dir-files (directory-files dir t regexp))) 294 (dir-files (directory-files dir t regexp)))
282 ;; Filter out files we don't want to see 295 ;; Filter out files we don't want to see
283 (dolist (file dir-files) 296 (dolist (file dir-files)
284 (if (file-directory-p file) 297 (if (file-directory-p file)
285 (setq dir-files (delq file dir-files)) 298 (setq dir-files (delq file dir-files))
286 (dolist (regexp file-cache-filter-regexps) 299 (dolist (regexp file-cache-filter-regexps)
287 (if (string-match regexp file) 300 (if (string-match regexp file)
288 (setq dir-files (delq file dir-files)))))) 301 (setq dir-files (delq file dir-files))))))
289 (file-cache-add-file-list dir-files)))) 302 (file-cache-add-file-list dir-files))))
290 303
291;;;###autoload 304;;;###autoload
292(defun file-cache-add-directory-list (directory-list &optional regexp) 305(defun file-cache-add-directory-list (directories &optional regexp)
293 "Add DIRECTORY-LIST (a list of directory names) to the file cache. 306 "Add DIRECTORIES (a list of directory names) to the file cache.
307If called interactively, read the directory names one by one.
294If the optional REGEXP argument is non-nil, only files which match it 308If the optional REGEXP argument is non-nil, only files which match it
295will be added to the cache. Note that the REGEXP is applied to the 309will be added to the cache. Note that the REGEXP is applied to the
296files in each directory, not to the directory list itself." 310files in each directory, not to the directory list itself."
297 (interactive "XAdd files from directory list: ") 311 (interactive (list (file-cache--read-list nil "Add")))
298 (mapcar 312 (dolist (dir directories)
299 (lambda (dir) (file-cache-add-directory dir regexp)) 313 (file-cache-add-directory dir regexp))
300 directory-list)) 314 (let ((n (length directories)))
301 315 (message "Filecache: cached file names from %d director%s."
302(defun file-cache-add-file-list (file-list) 316 n (if (= n 1) "y" "ies"))))
303 "Add FILE-LIST (a list of files names) to the file cache." 317
304 (interactive "XFile List: ") 318(defun file-cache-add-file-list (files)
305 (mapcar 'file-cache-add-file file-list)) 319 "Add FILES (a list of file names) to the file cache.
320If called interactively, read the file names one by one."
321 (interactive (list (file-cache--read-list t "Add")))
322 (dolist (f files)
323 (file-cache-add-file f))
324 (let ((n (length files)))
325 (message "Filecache: cached %d file name%s."
326 n (if (= n 1) "" "s"))))
306 327
307;; Workhorse function 328;; Workhorse function
308 329
@@ -317,15 +338,18 @@ files in each directory, not to the directory list itself."
317 (dir-name (file-name-directory file)) 338 (dir-name (file-name-directory file))
318 (the-entry (assoc-string file-name file-cache-alist 339 (the-entry (assoc-string file-name file-cache-alist
319 file-cache-ignore-case))) 340 file-cache-ignore-case)))
320 ;; Does the entry exist already? 341 (cond ((null the-entry)
321 (if the-entry 342 ;; If the entry wasn't in the cache, add it.
322 (unless (or (and (stringp (cdr the-entry)) 343 (push (list file-name dir-name) file-cache-alist)
323 (string= dir-name (cdr the-entry))) 344 (if (called-interactively-p 'interactive)
324 (and (listp (cdr the-entry)) 345 (message "Filecache: cached file name %s." file)))
325 (member dir-name (cdr the-entry)))) 346 ((not (member dir-name (cdr the-entry)))
326 (setcdr the-entry (cons dir-name (cdr the-entry)))) 347 (setcdr the-entry (cons dir-name (cdr the-entry)))
327 ;; If not, add it to the cache 348 (if (called-interactively-p 'interactive)
328 (push (list file-name dir-name) file-cache-alist)))) 349 (message "Filecache: cached file name %s." file)))
350 (t
351 (if (called-interactively-p 'interactive)
352 (message "Filecache: %s is already cached." file))))))
329 353
330;;;###autoload 354;;;###autoload
331(defun file-cache-add-directory-using-find (directory) 355(defun file-cache-add-directory-using-find (directory)
@@ -411,17 +435,26 @@ or the optional REGEXP argument."
411 435
412;; This clears *all* files with the given name 436;; This clears *all* files with the given name
413(defun file-cache-delete-file (file) 437(defun file-cache-delete-file (file)
414 "Delete FILE from the file cache." 438 "Delete FILE (a relative file name) from the file cache.
439Return nil if FILE was not in the file cache, non-nil otherwise."
415 (interactive 440 (interactive
416 (list (completing-read "Delete file from cache: " file-cache-alist))) 441 (list (completing-read "Delete file from cache: " file-cache-alist)))
417 (setq file-cache-alist 442 (let ((elt (assoc-string file file-cache-alist file-cache-ignore-case)))
418 (delq (assoc-string file file-cache-alist file-cache-ignore-case) 443 (setq file-cache-alist (delq elt file-cache-alist))
419 file-cache-alist))) 444 elt))
420 445
421(defun file-cache-delete-file-list (file-list) 446(defun file-cache-delete-file-list (files &optional message)
422 "Delete FILE-LIST (a list of files) from the file cache." 447 "Delete FILES (a list of files) from the file cache.
423 (interactive "XFile List: ") 448If called interactively, read the file names one by one.
424 (mapcar 'file-cache-delete-file file-list)) 449If MESSAGE is non-nil, or if called interactively, print a
450message reporting the number of file names deleted."
451 (interactive (list (file-cache--read-list t "Uncache") t))
452 (let ((n 0))
453 (dolist (f files)
454 (if (file-cache-delete-file f)
455 (setq n (1+ n))))
456 (message "Filecache: uncached %d file name%s."
457 n (if (= n 1) "" "s"))))
425 458
426(defun file-cache-delete-file-regexp (regexp) 459(defun file-cache-delete-file-regexp (regexp)
427 "Delete files matching REGEXP from the file cache." 460 "Delete files matching REGEXP from the file cache."
@@ -430,21 +463,18 @@ or the optional REGEXP argument."
430 (dolist (elt file-cache-alist) 463 (dolist (elt file-cache-alist)
431 (and (string-match regexp (car elt)) 464 (and (string-match regexp (car elt))
432 (push (car elt) delete-list))) 465 (push (car elt) delete-list)))
433 (file-cache-delete-file-list delete-list) 466 (file-cache-delete-file-list delete-list)))
434 (message "Filecache: deleted %d files from file cache"
435 (length delete-list))))
436 467
437(defun file-cache-delete-directory (directory) 468(defun file-cache-delete-directory (directory)
438 "Delete DIRECTORY from the file cache." 469 "Delete DIRECTORY from the file cache."
439 (interactive "DDelete directory from file cache: ") 470 (interactive "DDelete directory from file cache: ")
440 (let ((dir (expand-file-name directory)) 471 (let ((dir (expand-file-name directory))
441 (result 0)) 472 (n 0))
442 (dolist (entry file-cache-alist) 473 (dolist (entry file-cache-alist)
443 (if (file-cache-do-delete-directory dir entry) 474 (if (file-cache-do-delete-directory dir entry)
444 (setq result (1+ result)))) 475 (setq n (1+ n))))
445 (if (zerop result) 476 (message "Filecache: uncached %d file name%s."
446 (error "Filecache: no entries containing %s found in cache" directory) 477 n (if (= n 1) "" "s"))))
447 (message "Filecache: deleted %d entries" result))))
448 478
449(defun file-cache-do-delete-directory (dir entry) 479(defun file-cache-do-delete-directory (dir entry)
450 (let ((directory-list (cdr entry)) 480 (let ((directory-list (cdr entry))
@@ -455,10 +485,12 @@ or the optional REGEXP argument."
455 (delq entry file-cache-alist)) 485 (delq entry file-cache-alist))
456 (setcdr entry (delete directory directory-list)))))) 486 (setcdr entry (delete directory directory-list))))))
457 487
458(defun file-cache-delete-directory-list (directory-list) 488(defun file-cache-delete-directory-list (directories)
459 "Delete DIRECTORY-LIST (a list of directories) from the file cache." 489 "Delete DIRECTORIES (a list of directory names) from the file cache.
460 (interactive "XDirectory List: ") 490If called interactively, read the directory names one by one."
461 (mapcar 'file-cache-delete-directory directory-list)) 491 (interactive (list (file-cache--read-list nil "Uncache")))
492 (dolist (d directories)
493 (file-cache-delete-directory d)))
462 494
463;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
464;; Utility functions 496;; Utility functions
diff --git a/lisp/files.el b/lisp/files.el
index 8e8a178caab..c8a75f67820 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -730,7 +730,7 @@ The path separator is colon in GNU and GNU-like systems."
730 ;; This is a case where .elc makes a lot of sense. 730 ;; This is a case where .elc makes a lot of sense.
731 (interactive (list (let ((completion-ignored-extensions 731 (interactive (list (let ((completion-ignored-extensions
732 (remove ".elc" completion-ignored-extensions))) 732 (remove ".elc" completion-ignored-extensions)))
733 (read-file-name "Load file: ")))) 733 (read-file-name "Load file: " nil nil 'lambda))))
734 (load (expand-file-name file) nil nil t)) 734 (load (expand-file-name file) nil nil t))
735 735
736(defun locate-file (filename path &optional suffixes predicate) 736(defun locate-file (filename path &optional suffixes predicate)
@@ -2502,25 +2502,31 @@ They may happen to contain sequences that look like local variable
2502specifications, but are not really, or they may be containers for 2502specifications, but are not really, or they may be containers for
2503member files with their own local variable sections, which are 2503member files with their own local variable sections, which are
2504not appropriate for the containing file. 2504not appropriate for the containing file.
2505See also `inhibit-local-variables-suffixes'.") 2505The function `inhibit-local-variables-p' uses this.")
2506 2506
2507(define-obsolete-variable-alias 'inhibit-first-line-modes-suffixes 2507(define-obsolete-variable-alias 'inhibit-first-line-modes-suffixes
2508 'inhibit-local-variables-suffixes "24.1") 2508 'inhibit-local-variables-suffixes "24.1")
2509 2509
2510(defvar inhibit-local-variables-suffixes nil 2510(defvar inhibit-local-variables-suffixes nil
2511 "List of regexps matching suffixes to remove from file names. 2511 "List of regexps matching suffixes to remove from file names.
2512When checking `inhibit-local-variables-regexps', we first discard 2512The function `inhibit-local-variables-p' uses this: when checking
2513from the end of the file name anything that matches one of these regexps.") 2513a file name, it first discards from the end of the name anything that
2514matches one of these regexps.")
2515
2516;; Can't think of any situation in which you'd want this to be nil...
2517(defvar inhibit-local-variables-ignore-case t
2518 "Non-nil means `inhibit-local-variables-p' ignores case.")
2514 2519
2515;; TODO explicitly add case-fold-search t?
2516(defun inhibit-local-variables-p () 2520(defun inhibit-local-variables-p ()
2517 "Return non-nil if file local variables should be ignored. 2521 "Return non-nil if file local variables should be ignored.
2518This checks the file (or buffer) name against `inhibit-local-variables-regexps' 2522This checks the file (or buffer) name against `inhibit-local-variables-regexps'
2519and `inhibit-local-variables-suffixes'." 2523and `inhibit-local-variables-suffixes'. If
2524`inhibit-local-variables-ignore-case' is non-nil, this ignores case."
2520 (let ((temp inhibit-local-variables-regexps) 2525 (let ((temp inhibit-local-variables-regexps)
2521 (name (if buffer-file-name 2526 (name (if buffer-file-name
2522 (file-name-sans-versions buffer-file-name) 2527 (file-name-sans-versions buffer-file-name)
2523 (buffer-name)))) 2528 (buffer-name)))
2529 (case-fold-search inhibit-local-variables-ignore-case))
2524 (while (let ((sufs inhibit-local-variables-suffixes)) 2530 (while (let ((sufs inhibit-local-variables-suffixes))
2525 (while (and sufs (not (string-match (car sufs) name))) 2531 (while (and sufs (not (string-match (car sufs) name)))
2526 (setq sufs (cdr sufs))) 2532 (setq sufs (cdr sufs)))
@@ -3433,7 +3439,7 @@ DIR is the name of the directory.
3433CLASS is the name of a variable class (a symbol). 3439CLASS is the name of a variable class (a symbol).
3434MTIME is the recorded modification time of the directory-local 3440MTIME is the recorded modification time of the directory-local
3435variables file associated with this entry. This time is a list 3441variables file associated with this entry. This time is a list
3436of two integers (the same format as `file-attributes'), and is 3442of integers (the same format as `file-attributes'), and is
3437used to test whether the cache entry is still valid. 3443used to test whether the cache entry is still valid.
3438Alternatively, MTIME can be nil, which means the entry is always 3444Alternatively, MTIME can be nil, which means the entry is always
3439considered valid.") 3445considered valid.")
@@ -3634,14 +3640,15 @@ is found. Returns the new class name."
3634 (condition-case err 3640 (condition-case err
3635 (progn 3641 (progn
3636 (insert-file-contents file) 3642 (insert-file-contents file)
3637 (let* ((dir-name (file-name-directory file)) 3643 (unless (zerop (buffer-size))
3638 (class-name (intern dir-name)) 3644 (let* ((dir-name (file-name-directory file))
3639 (variables (let ((read-circle nil)) 3645 (class-name (intern dir-name))
3640 (read (current-buffer))))) 3646 (variables (let ((read-circle nil))
3641 (dir-locals-set-class-variables class-name variables) 3647 (read (current-buffer)))))
3642 (dir-locals-set-directory-class dir-name class-name 3648 (dir-locals-set-class-variables class-name variables)
3643 (nth 5 (file-attributes file))) 3649 (dir-locals-set-directory-class dir-name class-name
3644 class-name)) 3650 (nth 5 (file-attributes file)))
3651 class-name)))
3645 (error (message "Error reading dir-locals: %S" err) nil))))) 3652 (error (message "Error reading dir-locals: %S" err) nil)))))
3646 3653
3647(defcustom enable-remote-dir-locals nil 3654(defcustom enable-remote-dir-locals nil
@@ -3676,10 +3683,13 @@ and `file-local-variables-alist', without applying them."
3676 (dir-locals-get-class-variables class) dir-name nil))) 3683 (dir-locals-get-class-variables class) dir-name nil)))
3677 (when variables 3684 (when variables
3678 (dolist (elt variables) 3685 (dolist (elt variables)
3679 (unless (memq (car elt) '(eval mode)) 3686 (if (eq (car elt) 'coding)
3680 (setq dir-local-variables-alist 3687 (display-warning :warning
3681 (assq-delete-all (car elt) dir-local-variables-alist))) 3688 "Coding cannot be specified by dir-locals")
3682 (push elt dir-local-variables-alist)) 3689 (unless (memq (car elt) '(eval mode))
3690 (setq dir-local-variables-alist
3691 (assq-delete-all (car elt) dir-local-variables-alist)))
3692 (push elt dir-local-variables-alist)))
3683 (hack-local-variables-filter variables dir-name))))))) 3693 (hack-local-variables-filter variables dir-name)))))))
3684 3694
3685(defun hack-dir-local-variables-non-file-buffer () 3695(defun hack-dir-local-variables-non-file-buffer ()
@@ -5408,18 +5418,20 @@ Then you'll be asked about a number of files to recover."
5408 (let ((ls-lisp-support-shell-wildcards t)) 5418 (let ((ls-lisp-support-shell-wildcards t))
5409 (dired (concat auto-save-list-file-prefix "*") 5419 (dired (concat auto-save-list-file-prefix "*")
5410 (concat dired-listing-switches " -t"))) 5420 (concat dired-listing-switches " -t")))
5421 (use-local-map (nconc (make-sparse-keymap) (current-local-map)))
5422 (define-key (current-local-map) "\C-c\C-c" 'recover-session-finish)
5411 (save-excursion 5423 (save-excursion
5412 (goto-char (point-min)) 5424 (goto-char (point-min))
5413 (or (looking-at " Move to the session you want to recover,") 5425 (or (looking-at " Move to the session you want to recover,")
5414 (let ((inhibit-read-only t)) 5426 (let ((inhibit-read-only t))
5415 ;; Each line starts with a space 5427 ;; Each line starts with a space
5416 ;; so that Font Lock mode won't highlight the first character. 5428 ;; so that Font Lock mode won't highlight the first character.
5417 (insert " Move to the session you want to recover,\n" 5429 (insert " To recover a session, move to it and type C-c C-c.\n"
5418 " then type C-c C-c to select it.\n\n" 5430 (substitute-command-keys
5419 " You can also delete some of these files;\n" 5431 " To delete a session file, type \
5420 " type d on a line to mark that file for deletion.\n\n")))) 5432\\[dired-flag-file-deletion] on its line to flag
5421 (use-local-map (nconc (make-sparse-keymap) (current-local-map))) 5433 the file for deletion, then \\[dired-do-flagged-delete] to \
5422 (define-key (current-local-map) "\C-c\C-c" 'recover-session-finish)) 5434delete flagged files.\n\n"))))))
5423 5435
5424(defun recover-session-finish () 5436(defun recover-session-finish ()
5425 "Choose one saved session to recover auto-save files from. 5437 "Choose one saved session to recover auto-save files from.
diff --git a/lisp/find-cmd.el b/lisp/find-cmd.el
index 6589bac0c6a..4cf5b85c81a 100644
--- a/lisp/find-cmd.el
+++ b/lisp/find-cmd.el
@@ -63,6 +63,7 @@
63 (cnewer . (1)) 63 (cnewer . (1))
64 (ctime . (1)) 64 (ctime . (1))
65 (empty . (0)) 65 (empty . (0))
66 (executable . (0))
66 (false . (0)) 67 (false . (0))
67 (fstype . (1)) 68 (fstype . (1))
68 (gid . (1)) 69 (gid . (1))
@@ -70,37 +71,43 @@
70 (ilname . (1)) 71 (ilname . (1))
71 (iname . (1)) 72 (iname . (1))
72 (inum . (1)) 73 (inum . (1))
73 (iwholename . (1)) 74 (ipath . (1))
74 (iregex . (1)) 75 (iregex . (1))
76 (iwholename . (1))
75 (links . (1)) 77 (links . (1))
76 (lname . (1)) 78 (lname . (1))
77 (mmin . (1)) 79 (mmin . (1))
78 (mtime . (1)) 80 (mtime . (1))
79 (name . (1)) 81 (name . (1))
80 (newer . (1)) 82 (newer . (1))
81 (nouser . (0))
82 (nogroup . (0)) 83 (nogroup . (0))
84 (nouser . (0))
83 (path . (1)) 85 (path . (1))
84 (perm . (0)) 86 (perm . (0))
87 (readable . (0))
85 (regex . (1)) 88 (regex . (1))
86 (wholename . (1)) 89 (samefile . (1))
87 (size . (1)) 90 (size . (1))
88 (true . (0)) 91 (true . (0))
89 (type . (1)) 92 (type . (1))
90 (uid . (1)) 93 (uid . (1))
91 (used . (1)) 94 (used . (1))
92 (user . (1)) 95 (user . (1))
96 (wholename . (1))
97 (writable . (0))
93 (xtype . (nil)) 98 (xtype . (nil))
94 99
95 ;; normal options (always true) 100 ;; normal options (always true)
101 (daystart . (0))
96 (depth . (0)) 102 (depth . (0))
97 (maxdepth . (1)) 103 (maxdepth . (1))
98 (mindepth . (1)) 104 (mindepth . (1))
99 (mount . (0)) 105 (mount . (0))
100 (noleaf . (0)) 106 (noleaf . (0))
101 (xdev . (0))
102 (ignore_readdir_race . (0)) 107 (ignore_readdir_race . (0))
103 (noignore_readdir_race . (0)) 108 (noignore_readdir_race . (0))
109 (regextype . (1))
110 (xdev . (0))
104 111
105 ;; actions 112 ;; actions
106 (delete . (0)) 113 (delete . (0))
diff --git a/lisp/generic-x.el b/lisp/generic-x.el
index 878021ec5c5..e2533c1f12b 100644
--- a/lisp/generic-x.el
+++ b/lisp/generic-x.el
@@ -549,6 +549,9 @@ like an INI file. You can add this hook to `find-file-hook'."
549 (concat (w32-shell-name) " -c " (buffer-file-name))))) 549 (concat (w32-shell-name) " -c " (buffer-file-name)))))
550 550
551(eval-when-compile (require 'comint)) 551(eval-when-compile (require 'comint))
552(declare-function comint-mode "comint" ())
553(declare-function comint-exec "comint" (buffer name command startfile switches))
554
552(defun bat-generic-mode-run-as-comint () 555(defun bat-generic-mode-run-as-comint ()
553 "Run the current BAT file in a comint buffer." 556 "Run the current BAT file in a comint buffer."
554 (interactive) 557 (interactive)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index dd493d383a3..2d2d9318bd6 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,95 @@
12012-12-06 Sam Steingold <sds@gnu.org>
2
3 * gnus-start.el (gnus-before-resume-hook): Add.
4 (gnus-1): Run it when Gnus is alive.
5
62012-12-06 Katsumi Yamaoka <yamaoka@jpl.org>
7
8 * gmm-utils.el (gmm-called-interactively-p): Restore as a macro.
9 * gnus-art.el (article-unsplit-urls)
10 * gnus-bookmark.el (gnus-bookmark-bmenu-list)
11 * gnus-registry.el (gnus-registry-get-article-marks)
12 * message.el (message-goto-body): Use it.
13 (message-called-interactively-p): Remove.
14
15 * spam-stat.el (spam-stat-called-interactively-p): New macro.
16 (spam-stat-score-buffer): Use it.
17
18 * spam.el: Silence the warnings against BBDB functions when compiling.
19
20 * gnus-score.el (gnus-score-decode-text-parts):
21 Use append+mapcar instead of the cl function mapcan.
22
23 * gmm-utils.el (gmm-flet): Remove.
24
25 * gnus-sync.el (gnus-sync-lesync-call):
26 Avoid overriding json-alist-p.
27
28 * message.el (message-read-from-minibuffer):
29 Avoid overriding mail-abbrev-in-expansion-header-p.
30
312012-12-05 Sam Steingold <sds@gnu.org>
32
33 * gnus.el (gnus-delete-gnus-frame): Extract from `gnus-other-frame'.
34 (gnus-other-frame): Add `gnus-delete-gnus-frame' to
35 `gnus-suspend-gnus-hook' in addition to `gnus-exit-gnus-hook'.
36
372012-12-05 Katsumi Yamaoka <yamaoka@jpl.org>
38
39 * gmm-utils.el (gmm-called-interactively-p): Revert.
40 This seems to cause Emacs to get stuck!
41 * gnus-art.el (article-unsplit-urls)
42 * gnus-bookmark.el (gnus-bookmark-bmenu-list)
43 * gnus-registry.el (gnus-registry-get-article-marks)
44 * message.el (message-goto-body)
45 (message-called-interactively-p): Revert.
46
47 * gmm-utils.el (gmm-called-interactively-p): New function.
48 * gnus-art.el (article-unsplit-urls)
49 * gnus-bookmark.el (gnus-bookmark-bmenu-list)
50 * gnus-registry.el (gnus-registry-get-article-marks)
51 * message.el (message-goto-body): Use it.
52 (message-called-interactively-p): Remove.
53
54 * gmm-utils.el (gmm-flet): Restore it using cl-letf.
55 * gnus-sync.el (gnus-sync-lesync-call)
56 * message.el (message-read-from-minibuffer): Use it.
57
582012-12-05 Katsumi Yamaoka <yamaoka@jpl.org>
59
60 * gmm-utils.el (gmm-flet): Remove.
61 * gnus-sync.el (gnus-sync-lesync-call)
62 * message.el (message-read-from-minibuffer): Don't use it.
63
642012-12-04 Katsumi Yamaoka <yamaoka@jpl.org>
65
66 * gmm-utils.el (gmm-labels): Use cl-labels if available.
67
682012-12-04 Katsumi Yamaoka <yamaoka@jpl.org>
69
70 * gmm-utils.el (gmm-flet, gmm-labels): New macros.
71
72 * gnus-sync.el (gnus-sync-lesync-call)
73 * message.el (message-read-from-minibuffer): Use gmm-flet.
74
75 * gnus-score.el (gnus-score-decode-text-parts): Use gmm-labels.
76
77 * gnus-util.el (gnus-macroexpand-all): Remove.
78
792012-12-03 Andreas Schwab <schwab@linux-m68k.org>
80
81 * gnus-sum.el (gnus-summary-mode-map): Bind gnus-summary-widget-forward
82 to TAB, not [tab].
83 (gnus-summary-article-map): Likewise.
84
85 * gnus-sync.el (gnus-sync-newsrc-offsets): Restore definition.
86 (gnus-sync-save): Use correct format for gnus-sync-newsrc-loader.
87
882012-11-19 Katsumi Yamaoka <yamaoka@jpl.org>
89
90 * message.el (message-get-reply-headers):
91 Make sure the reply goes to the author if it is a wide reply.
92
12012-11-16 Jan Tatarik <jan.tatarik@gmail.com> 932012-11-16 Jan Tatarik <jan.tatarik@gmail.com>
2 94
3 * gnus-score.el (gnus-score-body): 95 * gnus-score.el (gnus-score-body):
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 975b83370ba..0f03d479534 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -417,6 +417,31 @@ coding-system."
417 (write-region start end filename append visit lockname)) 417 (write-region start end filename append visit lockname))
418 (write-region start end filename append visit lockname mustbenew))) 418 (write-region start end filename append visit lockname mustbenew)))
419 419
420;; `interactive-p' is obsolete since Emacs 23.2.
421(defmacro gmm-called-interactively-p (kind)
422 (condition-case nil
423 (progn
424 (eval '(called-interactively-p 'any))
425 ;; Emacs >=23.2
426 `(called-interactively-p ,kind))
427 ;; Emacs <23.2
428 (wrong-number-of-arguments '(called-interactively-p))
429 ;; XEmacs
430 (void-function '(interactive-p))))
431
432;; `labels' is obsolete since Emacs 24.3.
433(defmacro gmm-labels (bindings &rest body)
434 "Make temporary function bindings.
435The bindings can be recursive and the scoping is lexical, but capturing
436them in closures will only work if `lexical-binding' is in use. But in
437Emacs 24.2 and older, the lexical scoping is handled via `lexical-let'
438rather than relying on `lexical-binding'.
439
440\(fn ((FUNC ARGLIST BODY...) ...) FORM...)"
441 `(,(progn (require 'cl) (if (fboundp 'cl-labels) 'cl-labels 'labels))
442 ,bindings ,@body))
443(put 'gmm-labels 'lisp-indent-function 1)
444
420(provide 'gmm-utils) 445(provide 'gmm-utils)
421 446
422;;; gmm-utils.el ends here 447;;; gmm-utils.el ends here
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index edcd7da2ddd..9dfe119f831 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2718,7 +2718,7 @@ If READ-CHARSET, ask for a coding system."
2718 (while (re-search-forward 2718 (while (re-search-forward
2719 "\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t) 2719 "\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t)
2720 (replace-match "\\1\\3" t))) 2720 (replace-match "\\1\\3" t)))
2721 (when (interactive-p) 2721 (when (gmm-called-interactively-p 'any)
2722 (gnus-treat-article nil)))) 2722 (gnus-treat-article nil))))
2723 2723
2724(defun article-wash-html () 2724(defun article-wash-html ()
diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el
index 9f6654dd12d..e447322777e 100644
--- a/lisp/gnus/gnus-bookmark.el
+++ b/lisp/gnus/gnus-bookmark.el
@@ -367,7 +367,7 @@ The leftmost column displays a D if the bookmark is flagged for
367deletion, or > if it is flagged for displaying." 367deletion, or > if it is flagged for displaying."
368 (interactive) 368 (interactive)
369 (gnus-bookmark-maybe-load-default-file) 369 (gnus-bookmark-maybe-load-default-file)
370 (if (interactive-p) 370 (if (gmm-called-interactively-p 'any)
371 (switch-to-buffer (get-buffer-create "*Gnus Bookmark List*")) 371 (switch-to-buffer (get-buffer-create "*Gnus Bookmark List*"))
372 (set-buffer (get-buffer-create "*Gnus Bookmark List*"))) 372 (set-buffer (get-buffer-create "*Gnus Bookmark List*")))
373 (let ((inhibit-read-only t) 373 (let ((inhibit-read-only t)
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 71e00967548..5e20f5fb706 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -982,7 +982,7 @@ only the last one's marks are returned."
982 (let* ((article (last articles)) 982 (let* ((article (last articles))
983 (id (gnus-registry-fetch-message-id-fast article)) 983 (id (gnus-registry-fetch-message-id-fast article))
984 (marks (when id (gnus-registry-get-id-key id 'mark)))) 984 (marks (when id (gnus-registry-get-id-key id 'mark))))
985 (when (interactive-p) 985 (when (gmm-called-interactively-p 'any)
986 (gnus-message 1 "Marks are %S" marks)) 986 (gnus-message 1 "Marks are %S" marks))
987 marks)) 987 marks))
988 988
diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el
index b7061960839..4a47b738134 100644
--- a/lisp/gnus/gnus-score.el
+++ b/lisp/gnus/gnus-score.el
@@ -33,6 +33,7 @@
33(require 'gnus-win) 33(require 'gnus-win)
34(require 'message) 34(require 'message)
35(require 'score-mode) 35(require 'score-mode)
36(require 'gmm-utils)
36 37
37(defcustom gnus-global-score-files nil 38(defcustom gnus-global-score-files nil
38 "List of global score files and directories. 39 "List of global score files and directories.
@@ -1718,33 +1719,37 @@ score in `gnus-newsgroup-scored' by SCORE."
1718 nil) 1719 nil)
1719 1720
1720(defun gnus-score-decode-text-parts () 1721(defun gnus-score-decode-text-parts ()
1721 (labels ((mm-text-parts (handle) 1722 (gmm-labels
1722 (cond ((stringp (car handle)) 1723 ((mm-text-parts
1723 (let ((parts (mapcan #'mm-text-parts (cdr handle)))) 1724 (handle)
1724 (if (equal "multipart/alternative" (car handle)) 1725 (cond ((stringp (car handle))
1725 ;; pick the first supported alternative 1726 (let ((parts (apply #'append
1726 (list (car parts)) 1727 (mapcar #'mm-text-parts (cdr handle)))))
1727 parts))) 1728 (if (equal "multipart/alternative" (car handle))
1728 1729 ;; pick the first supported alternative
1729 ((bufferp (car handle)) 1730 (list (car parts))
1730 (when (string-match "^text/" (mm-handle-media-type handle)) 1731 parts)))
1731 (list handle))) 1732
1732 1733 ((bufferp (car handle))
1733 (t (mapcan #'mm-text-parts handle)))) 1734 (when (string-match "^text/" (mm-handle-media-type handle))
1734 (my-mm-display-part (handle) 1735 (list handle)))
1735 (when handle 1736
1736 (save-restriction 1737 (t (apply #'append (mapcar #'mm-text-parts handle)))))
1737 (narrow-to-region (point) (point)) 1738 (my-mm-display-part
1738 (mm-display-inline handle) 1739 (handle)
1739 (goto-char (point-max)))))) 1740 (when handle
1741 (save-restriction
1742 (narrow-to-region (point) (point))
1743 (mm-display-inline handle)
1744 (goto-char (point-max))))))
1740 1745
1741 (let (;(mm-text-html-renderer 'w3m-standalone) 1746 (let (;(mm-text-html-renderer 'w3m-standalone)
1742 (handles (mm-dissect-buffer t))) 1747 (handles (mm-dissect-buffer t)))
1743 (save-excursion 1748 (save-excursion
1744 (article-goto-body) 1749 (article-goto-body)
1745 (delete-region (point) (point-max)) 1750 (delete-region (point) (point-max))
1746 (mapc #'my-mm-display-part (mm-text-parts handles)) 1751 (mapc #'my-mm-display-part (mm-text-parts handles))
1747 handles)))) 1752 handles))))
1748 1753
1749(defun gnus-score-body (scores header now expire &optional trace) 1754(defun gnus-score-body (scores header now expire &optional trace)
1750 (if gnus-agent-fetching 1755 (if gnus-agent-fetching
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index eaf17d9e579..a8b6c5b4816 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -395,7 +395,15 @@ This hook is called after Gnus is connected to the NNTP server."
395 395
396(defcustom gnus-before-startup-hook nil 396(defcustom gnus-before-startup-hook nil
397 "A hook called before startup. 397 "A hook called before startup.
398This hook is called as the first thing when Gnus is started." 398This hook is called as the first thing when Gnus is started.
399See also `gnus-before-resume-hook'."
400 :group 'gnus-start
401 :type 'hook)
402
403(defcustom gnus-before-resume-hook nil
404 "A hook called before resuming Gnus after suspend.
405This hook is called as the first thing when Gnus is resumed after a suspend.
406See also `gnus-before-startup-hook'."
399 :group 'gnus-start 407 :group 'gnus-start
400 :type 'hook) 408 :type 'hook)
401 409
@@ -749,6 +757,7 @@ prompt the user for the name of an NNTP server to use."
749 757
750 (if (gnus-alive-p) 758 (if (gnus-alive-p)
751 (progn 759 (progn
760 (gnus-run-hooks 'gnus-before-resume-hook)
752 (switch-to-buffer gnus-group-buffer) 761 (switch-to-buffer gnus-group-buffer)
753 (gnus-group-get-new-news 762 (gnus-group-get-new-news
754 (and (numberp arg) 763 (and (numberp arg)
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index b44b953bec6..1d4f470aea2 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1911,7 +1911,7 @@ increase the score of each group you read."
1911 "a" gnus-summary-post-news 1911 "a" gnus-summary-post-news
1912 "x" gnus-summary-limit-to-unread 1912 "x" gnus-summary-limit-to-unread
1913 "s" gnus-summary-isearch-article 1913 "s" gnus-summary-isearch-article
1914 [tab] gnus-summary-widget-forward 1914 "\t" gnus-summary-widget-forward
1915 [backtab] gnus-summary-widget-backward 1915 [backtab] gnus-summary-widget-backward
1916 "t" gnus-summary-toggle-header 1916 "t" gnus-summary-toggle-header
1917 "g" gnus-summary-show-article 1917 "g" gnus-summary-show-article
@@ -2076,7 +2076,7 @@ increase the score of each group you read."
2076 "W" gnus-warp-to-article 2076 "W" gnus-warp-to-article
2077 "g" gnus-summary-show-article 2077 "g" gnus-summary-show-article
2078 "s" gnus-summary-isearch-article 2078 "s" gnus-summary-isearch-article
2079 [tab] gnus-summary-widget-forward 2079 "\t" gnus-summary-widget-forward
2080 [backtab] gnus-summary-widget-backward 2080 [backtab] gnus-summary-widget-backward
2081 "P" gnus-summary-print-article 2081 "P" gnus-summary-print-article
2082 "S" gnus-sticky-article 2082 "S" gnus-sticky-article
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index b5f8379e367..0ec9fedffe3 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -109,6 +109,13 @@ this setting is harmless until the user chooses a sync backend."
109 :group 'gnus-sync 109 :group 'gnus-sync
110 :type '(repeat regexp)) 110 :type '(repeat regexp))
111 111
112(defcustom gnus-sync-newsrc-offsets '(2 3)
113 "List of per-group data to be synchronized."
114 :group 'gnus-sync
115 :version "24.4"
116 :type '(set (const :tag "Read ranges" 2)
117 (const :tag "Marks" 3)))
118
112(defcustom gnus-sync-global-vars nil 119(defcustom gnus-sync-global-vars nil
113 "List of global variables to be synchronized. 120 "List of global variables to be synchronized.
114You may want to sync `gnus-newsrc-last-checked-date' but pretty 121You may want to sync `gnus-newsrc-last-checked-date' but pretty
@@ -169,16 +176,15 @@ and `gnus-topic-alist'. Also see `gnus-variable-list'."
169(defun gnus-sync-lesync-call (url method headers &optional kvdata) 176(defun gnus-sync-lesync-call (url method headers &optional kvdata)
170 "Make an access request to URL using KVDATA and METHOD. 177 "Make an access request to URL using KVDATA and METHOD.
171KVDATA must be an alist." 178KVDATA must be an alist."
172 (flet ((json-alist-p (list) (gnus-sync-json-alist-p list))) ; temp patch 179 (let ((url-request-method method)
173 (let ((url-request-method method) 180 (url-request-extra-headers headers)
174 (url-request-extra-headers headers) 181 (url-request-data (if kvdata (json-encode kvdata) nil)))
175 (url-request-data (if kvdata (json-encode kvdata) nil))) 182 (with-current-buffer (url-retrieve-synchronously url)
176 (with-current-buffer (url-retrieve-synchronously url) 183 (let ((data (gnus-sync-lesync-parse)))
177 (let ((data (gnus-sync-lesync-parse))) 184 (gnus-message 12 "gnus-sync-lesync-call: %s URL %s sent %S got %S"
178 (gnus-message 12 "gnus-sync-lesync-call: %s URL %s sent %S got %S" 185 method url `((headers . ,headers) (data ,kvdata)) data)
179 method url `((headers . ,headers) (data ,kvdata)) data) 186 (kill-buffer (current-buffer))
180 (kill-buffer (current-buffer)) 187 data))))
181 data)))))
182 188
183(defun gnus-sync-lesync-PUT (url headers &optional data) 189(defun gnus-sync-lesync-PUT (url headers &optional data)
184 (gnus-sync-lesync-call url "PUT" headers data)) 190 (gnus-sync-lesync-call url "PUT" headers data))
@@ -743,7 +749,15 @@ With a prefix, FORCE is set and all groups will be saved."
743 ;; entry in gnus-newsrc-alist whose group matches any of the 749 ;; entry in gnus-newsrc-alist whose group matches any of the
744 ;; gnus-sync-newsrc-groups 750 ;; gnus-sync-newsrc-groups
745 ;; TODO: keep the old contents for groups we don't have! 751 ;; TODO: keep the old contents for groups we don't have!
746 (let ((gnus-sync-newsrc-loader (gnus-sync-newsrc-loader-builder))) 752 (let ((gnus-sync-newsrc-loader
753 (loop for entry in (cdr gnus-newsrc-alist)
754 when (gnus-grep-in-list
755 (car entry) ;the group name
756 gnus-sync-newsrc-groups)
757 collect (cons (car entry)
758 (mapcar (lambda (offset)
759 (cons offset (nth offset entry)))
760 gnus-sync-newsrc-offsets)))))
747 (with-temp-file gnus-sync-backend 761 (with-temp-file gnus-sync-backend
748 (progn 762 (progn
749 (let ((coding-system-for-write gnus-ding-file-coding-system) 763 (let ((coding-system-for-write gnus-ding-file-coding-system)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index f5e1077f8c4..7b1e2b5c792 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -1938,27 +1938,6 @@ to case differences."
1938 (string-equal (downcase str1) (downcase prefix)) 1938 (string-equal (downcase str1) (downcase prefix))
1939 (string-equal str1 prefix)))))) 1939 (string-equal str1 prefix))))))
1940 1940
1941(eval-and-compile
1942 (if (fboundp 'macroexpand-all)
1943 (defalias 'gnus-macroexpand-all 'macroexpand-all)
1944 (defun gnus-macroexpand-all (form &optional environment)
1945 "Return result of expanding macros at all levels in FORM.
1946If no macros are expanded, FORM is returned unchanged.
1947The second optional arg ENVIRONMENT specifies an environment of macro
1948definitions to shadow the loaded ones for use in file byte-compilation."
1949 (if (consp form)
1950 (let ((idx 1)
1951 (len (length (setq form (copy-sequence form))))
1952 expanded)
1953 (while (< idx len)
1954 (setcar (nthcdr idx form) (gnus-macroexpand-all (nth idx form)
1955 environment))
1956 (setq idx (1+ idx)))
1957 (if (eq (setq expanded (macroexpand form environment)) form)
1958 form
1959 (gnus-macroexpand-all expanded environment)))
1960 form))))
1961
1962;; Simple check: can be a macro but this way, although slow, it's really clear. 1941;; Simple check: can be a macro but this way, although slow, it's really clear.
1963;; We don't use `bound-and-true-p' because it's not in XEmacs. 1942;; We don't use `bound-and-true-p' because it's not in XEmacs.
1964(defun gnus-bound-and-true-p (sym) 1943(defun gnus-bound-and-true-p (sym)
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 8fbde5c8ecc..70e7f711f3d 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -4348,6 +4348,14 @@ server."
4348 (interactive "P") 4348 (interactive "P")
4349 (gnus arg nil 'slave)) 4349 (gnus arg nil 'slave))
4350 4350
4351(defun gnus-delete-gnus-frame ()
4352 "Delete gnus frame unless it is the only one.
4353Used for `gnus-exit-gnus-hook' in `gnus-other-frame'."
4354 (when (and (frame-live-p gnus-other-frame-object)
4355 (cdr (frame-list)))
4356 (delete-frame gnus-other-frame-object))
4357 (setq gnus-other-frame-object nil))
4358
4351;;;###autoload 4359;;;###autoload
4352(defun gnus-other-frame (&optional arg display) 4360(defun gnus-other-frame (&optional arg display)
4353 "Pop up a frame to read news. 4361 "Pop up a frame to read news.
@@ -4388,12 +4396,13 @@ current display is used."
4388 (if alive 4396 (if alive
4389 (switch-to-buffer gnus-group-buffer) 4397 (switch-to-buffer gnus-group-buffer)
4390 (funcall gnus-other-frame-function arg) 4398 (funcall gnus-other-frame-function arg)
4391 (add-hook 'gnus-exit-gnus-hook 4399 (add-hook 'gnus-exit-gnus-hook 'gnus-delete-gnus-frame)
4392 (lambda nil 4400 ;; One might argue that `gnus-delete-gnus-frame' should not be called
4393 (when (and (frame-live-p gnus-other-frame-object) 4401 ;; from `gnus-suspend-gnus-hook', but, on the other hand, one might
4394 (cdr (frame-list))) 4402 ;; argue that it should. No matter what you think, for the sake of
4395 (delete-frame gnus-other-frame-object)) 4403 ;; those who want it to be called from it, please keep (defun
4396 (setq gnus-other-frame-object nil))))))) 4404 ;; gnus-delete-gnus-frame) even if you remove the next `add-hook'.
4405 (add-hook 'gnus-suspend-gnus-hook 'gnus-delete-gnus-frame)))))
4397 4406
4398;;;###autoload 4407;;;###autoload
4399(defun gnus (&optional arg dont-connect slave) 4408(defun gnus (&optional arg dont-connect slave)
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 8905acb9d1f..0e2c5debe4d 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -3137,22 +3137,10 @@ M-RET `message-newline-and-reformat' (break the line and reformat)."
3137 (push-mark) 3137 (push-mark)
3138 (message-position-on-field "Summary" "Subject")) 3138 (message-position-on-field "Summary" "Subject"))
3139 3139
3140(eval-when-compile
3141 (defmacro message-called-interactively-p (kind)
3142 (condition-case nil
3143 (progn
3144 (eval '(called-interactively-p 'any))
3145 ;; Emacs >=23.2
3146 `(called-interactively-p ,kind))
3147 ;; Emacs <23.2
3148 (wrong-number-of-arguments '(called-interactively-p))
3149 ;; XEmacs
3150 (void-function '(interactive-p)))))
3151
3152(defun message-goto-body () 3140(defun message-goto-body ()
3153 "Move point to the beginning of the message body." 3141 "Move point to the beginning of the message body."
3154 (interactive) 3142 (interactive)
3155 (when (and (message-called-interactively-p 'any) 3143 (when (and (gmm-called-interactively-p 'any)
3156 (looking-at "[ \t]*\n")) 3144 (looking-at "[ \t]*\n"))
3157 (expand-abbrev)) 3145 (expand-abbrev))
3158 (push-mark) 3146 (push-mark)
@@ -6730,11 +6718,16 @@ The function is called with one parameter, a cons cell ..."
6730 ", ")) 6718 ", "))
6731 mct (message-fetch-field "mail-copies-to") 6719 mct (message-fetch-field "mail-copies-to")
6732 author (or (message-fetch-field "mail-reply-to") 6720 author (or (message-fetch-field "mail-reply-to")
6733 (message-fetch-field "reply-to") 6721 (message-fetch-field "reply-to"))
6734 (message-fetch-field "from")
6735 "")
6736 mft (and message-use-mail-followup-to 6722 mft (and message-use-mail-followup-to
6737 (message-fetch-field "mail-followup-to")))) 6723 (message-fetch-field "mail-followup-to")))
6724 ;; Make sure this message goes to the author if this is a wide
6725 ;; reply, since Reply-To address may be a list address a mailing
6726 ;; list server added.
6727 (when (and wide author)
6728 (setq cc (concat author ", " cc)))
6729 (when (or wide (not author))
6730 (setq author (or (message-fetch-field "from") ""))))
6738 6731
6739 ;; Handle special values of Mail-Copies-To. 6732 ;; Handle special values of Mail-Copies-To.
6740 (when mct 6733 (when mct
@@ -8136,8 +8129,7 @@ regexp VARSTR."
8136 (if (fboundp 'mail-abbrevs-setup) 8129 (if (fboundp 'mail-abbrevs-setup)
8137 (let ((minibuffer-setup-hook 'mail-abbrevs-setup) 8130 (let ((minibuffer-setup-hook 'mail-abbrevs-setup)
8138 (minibuffer-local-map message-minibuffer-local-map)) 8131 (minibuffer-local-map message-minibuffer-local-map))
8139 (flet ((mail-abbrev-in-expansion-header-p nil t)) 8132 (read-from-minibuffer prompt initial-contents))
8140 (read-from-minibuffer prompt initial-contents)))
8141 (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook) 8133 (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)
8142 (minibuffer-local-map message-minibuffer-local-map)) 8134 (minibuffer-local-map message-minibuffer-local-map))
8143 (read-string prompt initial-contents)))) 8135 (read-string prompt initial-contents))))
diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el
index 04f90ee038d..9165e4193de 100644
--- a/lisp/gnus/spam-stat.el
+++ b/lisp/gnus/spam-stat.el
@@ -494,6 +494,18 @@ where DIFF is the difference between SCORE and 0.5."
494 (setcdr (nthcdr 14 result) nil) 494 (setcdr (nthcdr 14 result) nil)
495 result)) 495 result))
496 496
497(eval-when-compile
498 (defmacro spam-stat-called-interactively-p (kind)
499 (condition-case nil
500 (progn
501 (eval '(called-interactively-p 'any))
502 ;; Emacs >=23.2
503 `(called-interactively-p ,kind))
504 ;; Emacs <23.2
505 (wrong-number-of-arguments '(called-interactively-p))
506 ;; XEmacs
507 (void-function '(interactive-p)))))
508
497(defun spam-stat-score-buffer () 509(defun spam-stat-score-buffer ()
498 "Return a score describing the spam-probability for this buffer. 510 "Return a score describing the spam-probability for this buffer.
499Add user supplied modifications if supplied." 511Add user supplied modifications if supplied."
@@ -511,7 +523,7 @@ Add user supplied modifications if supplied."
511 (error nil))) 523 (error nil)))
512 (ans 524 (ans
513 (if score1s (+ score0 score1s) score0))) 525 (if score1s (+ score0 score1s) score0)))
514 (when (interactive-p) 526 (when (spam-stat-called-interactively-p 'any)
515 (message "%S" ans)) 527 (message "%S" ans))
516 ans)) 528 ans))
517 529
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index c3be15adc1a..bacad983c78 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -2092,22 +2092,24 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
2092(declare-function gnus-extract-address-components "gnus-util" (from)) 2092(declare-function gnus-extract-address-components "gnus-util" (from))
2093 2093
2094(eval-and-compile 2094(eval-and-compile
2095 (when (condition-case nil 2095 (condition-case nil
2096 (progn 2096 (progn
2097 (require 'bbdb) 2097 (require 'bbdb)
2098 (require 'bbdb-com)) 2098 (require 'bbdb-com))
2099 (file-error 2099 (file-error
2100 ;; `bbdb-records' should not be bound as an autoload function 2100 ;; `bbdb-records' should not be bound as an autoload function
2101 ;; before loading bbdb because of `bbdb-hashtable-size'. 2101 ;; before loading bbdb because of `bbdb-hashtable-size'.
2102 (defalias 'bbdb-buffer 'ignore) 2102 (defalias 'bbdb-buffer 'ignore)
2103 (defalias 'bbdb-create-internal 'ignore) 2103 (defalias 'bbdb-create-internal 'ignore)
2104 (defalias 'bbdb-records 'ignore) 2104 (defalias 'bbdb-records 'ignore)
2105 (defalias 'spam-BBDB-register-routine 'ignore) 2105 (defalias 'spam-BBDB-register-routine 'ignore)
2106 (defalias 'spam-enter-ham-BBDB 'ignore) 2106 (defalias 'spam-enter-ham-BBDB 'ignore)
2107 (defalias 'spam-exists-in-BBDB-p 'ignore) 2107 (defalias 'spam-exists-in-BBDB-p 'ignore)
2108 (defalias 'bbdb-gethash 'ignore) 2108 (defalias 'bbdb-gethash 'ignore)
2109 nil)) 2109 nil)))
2110 2110
2111(eval-and-compile
2112 (when (featurep 'bbdb-com)
2111 ;; when the BBDB changes, we want to clear out our cache 2113 ;; when the BBDB changes, we want to clear out our cache
2112 (defun spam-clear-cache-BBDB (&rest immaterial) 2114 (defun spam-clear-cache-BBDB (&rest immaterial)
2113 (spam-clear-cache 'spam-use-BBDB)) 2115 (spam-clear-cache 'spam-use-BBDB))
diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el
index 59743124cc5..de875c72593 100644
--- a/lisp/hi-lock.el
+++ b/lisp/hi-lock.el
@@ -1,4 +1,4 @@
1;;; hi-lock.el --- minor mode for interactive automatic highlighting 1;;; hi-lock.el --- minor mode for interactive automatic highlighting -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2000-2012 Free Software Foundation, Inc. 3;; Copyright (C) 2000-2012 Free Software Foundation, Inc.
4 4
@@ -135,6 +135,13 @@ patterns."
135;; It can have a function value. 135;; It can have a function value.
136(put 'hi-lock-file-patterns-policy 'risky-local-variable t) 136(put 'hi-lock-file-patterns-policy 'risky-local-variable t)
137 137
138(defcustom hi-lock-auto-select-face nil
139 "Non-nil if highlighting commands should not prompt for face names.
140When non-nil, each hi-lock command will cycle through faces in
141`hi-lock-face-defaults' without prompting."
142 :type 'boolean
143 :version "24.4")
144
138(defgroup hi-lock-faces nil 145(defgroup hi-lock-faces nil
139 "Faces for hi-lock." 146 "Faces for hi-lock."
140 :group 'hi-lock 147 :group 'hi-lock
@@ -198,11 +205,13 @@ patterns."
198 "Face for hi-lock mode." 205 "Face for hi-lock mode."
199 :group 'hi-lock-faces) 206 :group 'hi-lock-faces)
200 207
201(defvar hi-lock-file-patterns nil 208(defvar-local hi-lock-file-patterns nil
202 "Patterns found in file for hi-lock. Should not be changed.") 209 "Patterns found in file for hi-lock. Should not be changed.")
210(put 'hi-lock-file-patterns 'permanent-local t)
203 211
204(defvar hi-lock-interactive-patterns nil 212(defvar-local hi-lock-interactive-patterns nil
205 "Patterns provided to hi-lock by user. Should not be changed.") 213 "Patterns provided to hi-lock by user. Should not be changed.")
214(put 'hi-lock-interactive-patterns 'permanent-local t)
206 215
207(define-obsolete-variable-alias 'hi-lock-face-history 216(define-obsolete-variable-alias 'hi-lock-face-history
208 'hi-lock-face-defaults "23.1") 217 'hi-lock-face-defaults "23.1")
@@ -211,9 +220,6 @@ patterns."
211 "hi-blue-b" "hi-red-b" "hi-green-b" "hi-black-hb") 220 "hi-blue-b" "hi-red-b" "hi-green-b" "hi-black-hb")
212 "Default faces for hi-lock interactive functions.") 221 "Default faces for hi-lock interactive functions.")
213 222
214;;(dolist (f hi-lock-face-defaults)
215;; (unless (facep f) (error "%s not a face" f)))
216
217(define-obsolete-variable-alias 'hi-lock-regexp-history 223(define-obsolete-variable-alias 'hi-lock-regexp-history
218 'regexp-history 224 'regexp-history
219 "23.1") 225 "23.1")
@@ -232,11 +238,6 @@ that older functionality. This variable avoids multiple reminders.")
232Assumption is made if `hi-lock-mode' used in the *scratch* buffer while 238Assumption is made if `hi-lock-mode' used in the *scratch* buffer while
233a library is being loaded.") 239a library is being loaded.")
234 240
235(make-variable-buffer-local 'hi-lock-interactive-patterns)
236(put 'hi-lock-interactive-patterns 'permanent-local t)
237(make-variable-buffer-local 'hi-lock-file-patterns)
238(put 'hi-lock-file-patterns 'permanent-local t)
239
240(defvar hi-lock-menu 241(defvar hi-lock-menu
241 (let ((map (make-sparse-keymap "Hi Lock"))) 242 (let ((map (make-sparse-keymap "Hi Lock")))
242 (define-key-after map [highlight-regexp] 243 (define-key-after map [highlight-regexp]
@@ -463,56 +464,93 @@ updated as you type."
463 464
464(declare-function x-popup-menu "menu.c" (position menu)) 465(declare-function x-popup-menu "menu.c" (position menu))
465 466
467(defun hi-lock--regexps-at-point ()
468 (let ((regexps '()))
469 ;; When using overlays, there is no ambiguity on the best
470 ;; choice of regexp.
471 (let ((regexp (get-char-property (point) 'hi-lock-overlay-regexp)))
472 (when regexp (push regexp regexps)))
473 ;; With font-locking on, check if the cursor is on an highlighted text.
474 ;; Checking for hi-lock face is a good heuristic. FIXME: use "hi-lock-".
475 (and (string-match "\\`hi-" (face-name (face-at-point)))
476 (let* ((hi-text
477 (buffer-substring-no-properties
478 (previous-single-property-change (point) 'face)
479 (next-single-property-change (point) 'face))))
480 ;; Compute hi-lock patterns that match the
481 ;; highlighted text at point. Use this later in
482 ;; during completing-read.
483 (dolist (hi-lock-pattern hi-lock-interactive-patterns)
484 (let ((regexp (car hi-lock-pattern)))
485 (if (string-match regexp hi-text)
486 (push regexp regexps))))))
487 regexps))
488
489(defvar-local hi-lock--last-face nil)
490
466;;;###autoload 491;;;###autoload
467(defalias 'unhighlight-regexp 'hi-lock-unface-buffer) 492(defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
468;;;###autoload 493;;;###autoload
469(defun hi-lock-unface-buffer (regexp) 494(defun hi-lock-unface-buffer (regexp)
470 "Remove highlighting of each match to REGEXP set by hi-lock. 495 "Remove highlighting of each match to REGEXP set by hi-lock.
471Interactively, prompt for REGEXP, accepting only regexps 496Interactively, prompt for REGEXP, accepting only regexps
472previously inserted by hi-lock interactive functions." 497previously inserted by hi-lock interactive functions.
498If REGEXP is t (or if \\[universal-argument] was specified interactively),
499then remove all hi-lock highlighting."
473 (interactive 500 (interactive
474 (if (and (display-popup-menus-p) 501 (cond
475 (listp last-nonmenu-event) 502 (current-prefix-arg (list t))
476 use-dialog-box) 503 ((and (display-popup-menus-p)
477 (catch 'snafu 504 (listp last-nonmenu-event)
478 (or 505 use-dialog-box)
479 (x-popup-menu 506 (catch 'snafu
480 t 507 (or
481 (cons 508 (x-popup-menu
482 `keymap 509 t
483 (cons "Select Pattern to Unhighlight" 510 (cons
484 (mapcar (lambda (pattern) 511 `keymap
485 (list (car pattern) 512 (cons "Select Pattern to Unhighlight"
486 (format 513 (mapcar (lambda (pattern)
487 "%s (%s)" (car pattern) 514 (list (car pattern)
488 (symbol-name 515 (format
489 (car 516 "%s (%s)" (car pattern)
490 (cdr (car (cdr (car (cdr pattern)))))))) 517 (cadr (cadr (cadr pattern))))
491 (cons nil nil) 518 (cons nil nil)
492 (car pattern))) 519 (car pattern)))
493 hi-lock-interactive-patterns)))) 520 hi-lock-interactive-patterns))))
494 ;; If the user clicks outside the menu, meaning that they 521 ;; If the user clicks outside the menu, meaning that they
495 ;; change their mind, x-popup-menu returns nil, and 522 ;; change their mind, x-popup-menu returns nil, and
496 ;; interactive signals a wrong number of arguments error. 523 ;; interactive signals a wrong number of arguments error.
497 ;; To prevent that, we return an empty string, which will 524 ;; To prevent that, we return an empty string, which will
498 ;; effectively disable the rest of the function. 525 ;; effectively disable the rest of the function.
499 (throw 'snafu '("")))) 526 (throw 'snafu '("")))))
500 (let ((history-list (mapcar (lambda (p) (car p)) 527 (t
501 hi-lock-interactive-patterns))) 528 ;; Un-highlighting triggered via keyboard action.
502 (unless hi-lock-interactive-patterns 529 (unless hi-lock-interactive-patterns
503 (error "No highlighting to remove")) 530 (error "No highlighting to remove"))
531 ;; Infer the regexp to un-highlight based on cursor position.
532 (let* ((defaults (or (hi-lock--regexps-at-point)
533 (mapcar #'car hi-lock-interactive-patterns))))
504 (list 534 (list
505 (completing-read "Regexp to unhighlight: " 535 (completing-read (if (null defaults)
506 hi-lock-interactive-patterns nil t 536 "Regexp to unhighlight: "
507 (car (car hi-lock-interactive-patterns)) 537 (format "Regexp to unhighlight (default %s): "
508 (cons 'history-list 1)))))) 538 (car defaults)))
509 (let ((keyword (assoc regexp hi-lock-interactive-patterns))) 539 hi-lock-interactive-patterns
540 nil t nil nil defaults))))))
541 (dolist (keyword (if (eq regexp t) hi-lock-interactive-patterns
542 (list (assoc regexp hi-lock-interactive-patterns))))
510 (when keyword 543 (when keyword
544 (let ((face (cadr (cadr (cadr keyword)))))
545 ;; Make `face' the next one to use by default.
546 (setq hi-lock--last-face
547 (cadr (member (symbol-name face)
548 (reverse hi-lock-face-defaults)))))
511 (font-lock-remove-keywords nil (list keyword)) 549 (font-lock-remove-keywords nil (list keyword))
512 (setq hi-lock-interactive-patterns 550 (setq hi-lock-interactive-patterns
513 (delq keyword hi-lock-interactive-patterns)) 551 (delq keyword hi-lock-interactive-patterns))
514 (remove-overlays 552 (remove-overlays
515 nil nil 'hi-lock-overlay-regexp (hi-lock-string-serialize regexp)) 553 nil nil 'hi-lock-overlay-regexp (hi-lock--hashcons regexp))
516 (when font-lock-fontified (font-lock-fontify-buffer))))) 554 (when font-lock-fontified (font-lock-fontify-buffer)))))
517 555
518;;;###autoload 556;;;###autoload
@@ -567,23 +605,28 @@ not suitable."
567 regexp)) 605 regexp))
568 606
569(defun hi-lock-read-face-name () 607(defun hi-lock-read-face-name ()
570 "Read face name from minibuffer with completion and history." 608 "Return face for interactive highlighting.
571 (intern (completing-read 609When `hi-lock-auto-select-face' is non-nil, just return the next face.
572 "Highlight using face: " 610Otherwise, read face name from minibuffer with completion and history."
573 obarray 'facep t 611 (let ((default (or (cadr (member hi-lock--last-face hi-lock-face-defaults))
574 (cons (car hi-lock-face-defaults) 612 (car hi-lock-face-defaults))))
575 (let ((prefix 613 (setq hi-lock--last-face
576 (try-completion 614 (if (and hi-lock-auto-select-face (not current-prefix-arg))
577 (substring (car hi-lock-face-defaults) 0 1) 615 default
578 hi-lock-face-defaults))) 616 (completing-read
579 (if (and (stringp prefix) 617 (format "Highlight using face (default %s): " default)
580 (not (equal prefix (car hi-lock-face-defaults)))) 618 obarray 'facep t nil 'face-name-history
581 (length prefix) 0))) 619 (append (member default hi-lock-face-defaults)
582 'face-name-history 620 hi-lock-face-defaults))))
583 (cdr hi-lock-face-defaults)))) 621 (unless (member hi-lock--last-face hi-lock-face-defaults)
622 (setq hi-lock-face-defaults
623 (append hi-lock-face-defaults (list hi-lock--last-face))))
624 (intern hi-lock--last-face)))
584 625
585(defun hi-lock-set-pattern (regexp face) 626(defun hi-lock-set-pattern (regexp face)
586 "Highlight REGEXP with face FACE." 627 "Highlight REGEXP with face FACE."
628 ;; Hashcons the regexp, so it can be passed to remove-overlays later.
629 (setq regexp (hi-lock--hashcons regexp))
587 (let ((pattern (list regexp (list 0 (list 'quote face) t)))) 630 (let ((pattern (list regexp (list 0 (list 'quote face) t))))
588 (unless (member pattern hi-lock-interactive-patterns) 631 (unless (member pattern hi-lock-interactive-patterns)
589 (push pattern hi-lock-interactive-patterns) 632 (push pattern hi-lock-interactive-patterns)
@@ -591,8 +634,7 @@ not suitable."
591 (progn 634 (progn
592 (font-lock-add-keywords nil (list pattern) t) 635 (font-lock-add-keywords nil (list pattern) t)
593 (font-lock-fontify-buffer)) 636 (font-lock-fontify-buffer))
594 (let* ((serial (hi-lock-string-serialize regexp)) 637 (let* ((range-min (- (point) (/ hi-lock-highlight-range 2)))
595 (range-min (- (point) (/ hi-lock-highlight-range 2)))
596 (range-max (+ (point) (/ hi-lock-highlight-range 2))) 638 (range-max (+ (point) (/ hi-lock-highlight-range 2)))
597 (search-start 639 (search-start
598 (max (point-min) 640 (max (point-min)
@@ -605,7 +647,7 @@ not suitable."
605 (while (re-search-forward regexp search-end t) 647 (while (re-search-forward regexp search-end t)
606 (let ((overlay (make-overlay (match-beginning 0) (match-end 0)))) 648 (let ((overlay (make-overlay (match-beginning 0) (match-end 0))))
607 (overlay-put overlay 'hi-lock-overlay t) 649 (overlay-put overlay 'hi-lock-overlay t)
608 (overlay-put overlay 'hi-lock-overlay-regexp serial) 650 (overlay-put overlay 'hi-lock-overlay-regexp regexp)
609 (overlay-put overlay 'face face)) 651 (overlay-put overlay 'face face))
610 (goto-char (match-end 0))))))))) 652 (goto-char (match-end 0)))))))))
611 653
@@ -655,25 +697,14 @@ not suitable."
655 (font-lock-add-keywords nil hi-lock-file-patterns t) 697 (font-lock-add-keywords nil hi-lock-file-patterns t)
656 (font-lock-add-keywords nil hi-lock-interactive-patterns t))) 698 (font-lock-add-keywords nil hi-lock-interactive-patterns t)))
657 699
658(defvar hi-lock-string-serialize-hash 700(defvar hi-lock--hashcons-hash
659 (make-hash-table :test 'equal) 701 (make-hash-table :test 'equal :weakness t)
660 "Hash table used to assign unique numbers to strings.") 702 "Hash table used to hash cons regexps.")
661 703
662(defvar hi-lock-string-serialize-serial 1 704(defun hi-lock--hashcons (string)
663 "Number assigned to last new string in call to `hi-lock-string-serialize'. 705 "Return unique object equal to STRING."
664A string is considered new if it had not previously been used in a call to 706 (or (gethash string hi-lock--hashcons-hash)
665`hi-lock-string-serialize'.") 707 (puthash string string hi-lock--hashcons-hash)))
666
667(defun hi-lock-string-serialize (string)
668 "Return unique serial number for STRING."
669 (interactive)
670 (let ((val (gethash string hi-lock-string-serialize-hash)))
671 (if val val
672 (puthash string
673 (setq hi-lock-string-serialize-serial
674 (1+ hi-lock-string-serialize-serial))
675 hi-lock-string-serialize-hash)
676 hi-lock-string-serialize-serial)))
677 708
678(defun hi-lock-unload-function () 709(defun hi-lock-unload-function ()
679 "Unload the Hi-Lock library." 710 "Unload the Hi-Lock library."
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 0970ece9446..7b5e2b54300 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -569,37 +569,39 @@ This allows you to manually remove highlighting from uninteresting changes."
569 highlight-changes-visible-mode) 569 highlight-changes-visible-mode)
570 (hilit-chg-fixup beg end)) 570 (hilit-chg-fixup beg end))
571 (highlight-save-buffer-state 571 (highlight-save-buffer-state
572 (if (and (= beg end) (> leng-before 0)) 572 (if (and (= beg end) (> leng-before 0))
573 ;; deletion 573 ;; deletion
574 (progn 574 (progn
575 ;; The eolp and bolp tests are a kludge! But they prevent 575 ;; The eolp and bolp tests are a kludge! But they prevent
576 ;; rather nasty looking displays when deleting text at the end 576 ;; rather nasty looking displays when deleting text at the end
577 ;; of line, such as normal corrections as one is typing and 577 ;; of line, such as normal corrections as one is typing and
578 ;; immediately makes a correction, and when deleting first 578 ;; immediately makes a correction, and when deleting first
579 ;; character of a line. 579 ;; character of a line.
580 ;; (if (= leng-before 1) 580 ;; (if (= leng-before 1)
581 ;; (if (eolp) 581 ;; (if (eolp)
582 ;; (setq beg-decr 0 end-incr 0) 582 ;; (setq beg-decr 0 end-incr 0)
583 ;; (if (bolp) 583 ;; (if (bolp)
584 ;; (setq beg-decr 0)))) 584 ;; (setq beg-decr 0))))
585 ;; (setq beg (max (- beg beg-decr) (point-min))) 585 ;; (setq beg (max (- beg beg-decr) (point-min)))
586 (setq end (min (+ end end-incr) (point-max))) 586 (setq end (min (+ end end-incr) (point-max)))
587 (setq type 'hilit-chg-delete)) 587 (setq type 'hilit-chg-delete))
588 ;; Not a deletion. 588 ;; Not a deletion.
589 ;; Most of the time the following is not necessary, but 589 ;; Most of the time the following is not necessary, but
590 ;; if the current text was marked as a deletion then 590 ;; if the current text was marked as a deletion then
591 ;; the old overlay is still in effect, so if we add some 591 ;; the old overlay is still in effect. So if the user adds some
592 ;; text then remove the deletion marking, but set it to 592 ;; text where she earlier deleted text, we have to remove the
593 ;; changed otherwise its highlighting disappears. 593 ;; deletion marking, and replace it explicitly with a `changed'
594 (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete) 594 ;; marking, otherwise its highlighting would disappear.
595 (progn 595 (if (eq (get-text-property end 'hilit-chg) 'hilit-chg-delete)
596 (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg) 596 (save-restriction
597 (if highlight-changes-visible-mode 597 (widen)
598 (hilit-chg-fixup beg (+ end 1)))))) 598 (put-text-property end (+ end 1) 'hilit-chg 'hilit-chg)
599 (unless no-property-change 599 (if highlight-changes-visible-mode
600 (put-text-property beg end 'hilit-chg type)) 600 (hilit-chg-fixup beg (+ end 1))))))
601 (if (or highlight-changes-visible-mode no-property-change) 601 (unless no-property-change
602 (hilit-chg-make-ov type beg end))))))) 602 (put-text-property beg end 'hilit-chg type))
603 (if (or highlight-changes-visible-mode no-property-change)
604 (hilit-chg-make-ov type beg end)))))))
603 605
604(defun hilit-chg-update () 606(defun hilit-chg-update ()
605 "Update a buffer's highlight changes when visibility changed." 607 "Update a buffer's highlight changes when visibility changed."
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el
index 2f0a6e3af59..d2c69c70b75 100644
--- a/lisp/hippie-exp.el
+++ b/lisp/hippie-exp.el
@@ -199,6 +199,8 @@
199 199
200(defvar he-search-window ()) 200(defvar he-search-window ())
201 201
202;;; Autoloaded for historical reasons (bug#12982)
203;;;###autoload
202(defcustom hippie-expand-try-functions-list 204(defcustom hippie-expand-try-functions-list
203 '(try-complete-file-name-partially 205 '(try-complete-file-name-partially
204 try-complete-file-name 206 try-complete-file-name
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index a4e3e339470..08d8c28816f 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -71,6 +71,11 @@
71(make-obsolete-variable 71(make-obsolete-variable
72 'icomplete-prospects-length 'icomplete-prospects-height "23.1") 72 'icomplete-prospects-length 'icomplete-prospects-height "23.1")
73 73
74(defcustom icomplete-separator " | "
75 "String used by icomplete to separate alternatives in the minibuffer."
76 :type 'string
77 :version "24.4")
78
74;;;_* User Customization variables 79;;;_* User Customization variables
75(defcustom icomplete-prospects-height 80(defcustom icomplete-prospects-height
76 ;; 20 is an estimated common size for the prompt + minibuffer content, to 81 ;; 20 is an estimated common size for the prompt + minibuffer content, to
@@ -97,11 +102,6 @@ See `icomplete-delay-completions-threshold'."
97 :type 'integer 102 :type 'integer
98 :group 'icomplete) 103 :group 'icomplete)
99 104
100(defcustom icomplete-show-key-bindings t
101 "If non-nil, show key bindings as well as completion for sole matches."
102 :type 'boolean
103 :group 'icomplete)
104
105(defcustom icomplete-minibuffer-setup-hook nil 105(defcustom icomplete-minibuffer-setup-hook nil
106 "Icomplete-specific customization of minibuffer setup. 106 "Icomplete-specific customization of minibuffer setup.
107 107
@@ -145,23 +145,6 @@ Use `icomplete-mode' function to set it up properly for incremental
145minibuffer completion.") 145minibuffer completion.")
146(add-hook 'icomplete-post-command-hook 'icomplete-exhibit) 146(add-hook 'icomplete-post-command-hook 'icomplete-exhibit)
147 147
148(defun icomplete-get-keys (func-name)
149 "Return strings naming keys bound to FUNC-NAME, or nil if none.
150Examines the prior, not current, buffer, presuming that current buffer
151is minibuffer."
152 (when (commandp func-name)
153 (save-excursion
154 (let* ((sym (intern func-name))
155 (buf (other-buffer nil t))
156 (keys (with-current-buffer buf (where-is-internal sym))))
157 (when keys
158 (concat "<"
159 (mapconcat 'key-description
160 (sort keys
161 #'(lambda (x y)
162 (< (length x) (length y))))
163 ", ")
164 ">"))))))
165;;;_ = icomplete-with-completion-tables 148;;;_ = icomplete-with-completion-tables
166(defvar icomplete-with-completion-tables '(internal-complete-buffer) 149(defvar icomplete-with-completion-tables '(internal-complete-buffer)
167 "Specialized completion tables with which icomplete should operate. 150 "Specialized completion tables with which icomplete should operate.
@@ -169,6 +152,37 @@ is minibuffer."
169Icomplete does not operate with any specialized completion tables 152Icomplete does not operate with any specialized completion tables
170except those on this list.") 153except those on this list.")
171 154
155(defvar icomplete-minibuffer-map
156 (let ((map (make-sparse-keymap)))
157 (define-key map [?\M-\t] 'minibuffer-force-complete)
158 (define-key map [?\C-j] 'minibuffer-force-complete-and-exit)
159 (define-key map [?\C-s] 'icomplete-forward-completions)
160 (define-key map [?\C-r] 'icomplete-backward-completions)
161 map))
162
163(defun icomplete-forward-completions ()
164 "Step forward completions by one entry.
165Second entry becomes the first and can be selected with
166`minibuffer-force-complete-and-exit'."
167 (interactive)
168 (let* ((comps (completion-all-sorted-completions))
169 (last (last comps)))
170 (setcdr last (cons (car comps) (cdr last)))
171 (completion--cache-all-sorted-completions (cdr comps))))
172
173(defun icomplete-backward-completions ()
174 "Step backward completions by one entry.
175Last entry becomes the first and can be selected with
176`minibuffer-force-complete-and-exit'."
177 (interactive)
178 (let* ((comps (completion-all-sorted-completions))
179 (last-but-one (last comps 2))
180 (last (cdr last-but-one)))
181 (when last
182 (setcdr last-but-one (cdr last))
183 (push (car last) comps)
184 (completion--cache-all-sorted-completions comps))))
185
172;;;_ > icomplete-mode (&optional prefix) 186;;;_ > icomplete-mode (&optional prefix)
173;;;###autoload 187;;;###autoload
174(define-minor-mode icomplete-mode 188(define-minor-mode icomplete-mode
@@ -208,6 +222,8 @@ Conditions are:
208Usually run by inclusion in `minibuffer-setup-hook'." 222Usually run by inclusion in `minibuffer-setup-hook'."
209 (when (and icomplete-mode (icomplete-simple-completing-p)) 223 (when (and icomplete-mode (icomplete-simple-completing-p))
210 (set (make-local-variable 'completion-show-inline-help) nil) 224 (set (make-local-variable 'completion-show-inline-help) nil)
225 (use-local-map (make-composed-keymap icomplete-minibuffer-map
226 (current-local-map)))
211 (add-hook 'pre-command-hook 227 (add-hook 'pre-command-hook
212 (lambda () (let ((non-essential t)) 228 (lambda () (let ((non-essential t))
213 (run-hooks 'icomplete-pre-command-hook))) 229 (run-hooks 'icomplete-pre-command-hook)))
@@ -239,27 +255,29 @@ and `minibuffer-setup-hook'."
239 (goto-char (point-max)) 255 (goto-char (point-max))
240 ; Insert the match-status information: 256 ; Insert the match-status information:
241 (if (and (> (point-max) (minibuffer-prompt-end)) 257 (if (and (> (point-max) (minibuffer-prompt-end))
242 buffer-undo-list ; Wait for some user input. 258 buffer-undo-list ; Wait for some user input.
243 (or 259 (or
244 ;; Don't bother with delay after certain number of chars: 260 ;; Don't bother with delay after certain number of chars:
245 (> (- (point) (field-beginning)) icomplete-max-delay-chars) 261 (> (- (point) (field-beginning)) icomplete-max-delay-chars)
246 ;; Don't delay if alternatives number is small enough: 262 ;; Don't delay if the completions are known.
247 (and (sequencep minibuffer-completion-table) 263 completion-all-sorted-completions
248 (< (length minibuffer-completion-table) 264 ;; Don't delay if alternatives number is small enough:
249 icomplete-delay-completions-threshold)) 265 (and (sequencep minibuffer-completion-table)
250 ;; Delay - give some grace time for next keystroke, before 266 (< (length minibuffer-completion-table)
267 icomplete-delay-completions-threshold))
268 ;; Delay - give some grace time for next keystroke, before
251 ;; embarking on computing completions: 269 ;; embarking on computing completions:
252 (sit-for icomplete-compute-delay))) 270 (sit-for icomplete-compute-delay)))
253 (let ((text (while-no-input 271 (let ((text (while-no-input
254 (icomplete-completions 272 (icomplete-completions
255 (field-string) 273 (field-string)
256 minibuffer-completion-table 274 minibuffer-completion-table
257 minibuffer-completion-predicate 275 minibuffer-completion-predicate
258 (not minibuffer-completion-confirm)))) 276 (not minibuffer-completion-confirm))))
259 (buffer-undo-list t) 277 (buffer-undo-list t)
260 deactivate-mark) 278 deactivate-mark)
261 ;; Do nothing if while-no-input was aborted. 279 ;; Do nothing if while-no-input was aborted.
262 (when (stringp text) 280 (when (stringp text)
263 (move-overlay icomplete-overlay (point) (point) (current-buffer)) 281 (move-overlay icomplete-overlay (point) (point) (current-buffer))
264 ;; The current C cursor code doesn't know to use the overlay's 282 ;; The current C cursor code doesn't know to use the overlay's
265 ;; marker's stickiness to figure out whether to place the cursor 283 ;; marker's stickiness to figure out whether to place the cursor
@@ -365,17 +383,14 @@ are exhibited within the square braces.)"
365 (if prospects 383 (if prospects
366 (concat determ 384 (concat determ
367 "{" 385 "{"
368 (and most-is-exact ",") 386 (and most-is-exact
369 (mapconcat 'identity (nreverse prospects) ",") 387 (substring icomplete-separator
370 (and limit ",...") 388 (string-match "[^ ]" icomplete-separator)))
389 (mapconcat 'identity (nreverse prospects)
390 icomplete-separator)
391 (and limit (concat icomplete-separator "…"))
371 "}") 392 "}")
372 (concat determ 393 (concat determ " [Matched]"))))))
373 " [Matched"
374 (let ((keys (and icomplete-show-key-bindings
375 (commandp (intern-soft most))
376 (icomplete-get-keys most))))
377 (if keys (concat "; " keys) ""))
378 "]"))))))
379 394
380;;_* Local emacs vars. 395;;_* Local emacs vars.
381;;Local variables: 396;;Local variables:
diff --git a/lisp/ido.el b/lisp/ido.el
index f4f9c27c847..7044fa496db 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -2389,7 +2389,10 @@ If cursor is not at the end of the user input, move to end of input."
2389 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file)) 2389 (ido-buffer-internal 'insert 'insert-buffer "Insert buffer: " nil ido-text 'ido-enter-insert-file))
2390 2390
2391 ((eq ido-exit 'dired) 2391 ((eq ido-exit 'dired)
2392 (dired (concat ido-current-directory (or ido-text "")))) 2392 (funcall (cond ((eq method 'other-window) 'dired-other-window)
2393 ((eq method 'other-frame) 'dired-other-frame)
2394 (t 'dired))
2395 (concat ido-current-directory (or ido-text ""))))
2393 2396
2394 ((eq ido-exit 'ffap) 2397 ((eq ido-exit 'ffap)
2395 (find-file-at-point)) 2398 (find-file-at-point))
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 3659894f08d..77c968b21ae 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -2454,6 +2454,8 @@ when using per-directory thumbnail file storage"))
2454(defvar image-dired-widget-list nil 2454(defvar image-dired-widget-list nil
2455 "List to keep track of meta data in edit buffer.") 2455 "List to keep track of meta data in edit buffer.")
2456 2456
2457(declare-function widget-forward "wid-edit" (arg))
2458
2457;;;###autoload 2459;;;###autoload
2458(defun image-dired-dired-edit-comment-and-tags () 2460(defun image-dired-dired-edit-comment-and-tags ()
2459 "Edit comment and tags of current or marked image files. 2461 "Edit comment and tags of current or marked image files.
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 4ac62fbb6fc..0e91567a29a 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -746,8 +746,14 @@ close to a multiple of 90, see `image-transform-right-angle-fudge'."
746 h))))) 746 h)))))
747 747
748(defun image-transform-check-size () 748(defun image-transform-check-size ()
749 "Check that the image exactly fits the width/height of the window." 749 "Check that the image exactly fits the width/height of the window.
750 (unless (numberp image-transform-resize) 750
751Do this for an image of type `imagemagick' to make sure that the
752elisp code matches the way ImageMagick computes the bounding box
753of a rotated image."
754 (when (and (not (numberp image-transform-resize))
755 (boundp 'image-type)
756 (eq image-type 'imagemagick))
751 (let ((size (image-display-size (image-get-display-property) t))) 757 (let ((size (image-display-size (image-get-display-property) t)))
752 (cond ((eq image-transform-resize 'fit-width) 758 (cond ((eq image-transform-resize 'fit-width)
753 (cl-assert (= (car size) 759 (cl-assert (= (car size)
diff --git a/lisp/image.el b/lisp/image.el
index bd2f5c3a3ca..27bbc2c08d6 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -429,7 +429,7 @@ means display it in the right marginal area."
429 "Insert IMAGE into current buffer at point. 429 "Insert IMAGE into current buffer at point.
430IMAGE is displayed by inserting STRING into the current buffer 430IMAGE is displayed by inserting STRING into the current buffer
431with a `display' property whose value is the image. STRING 431with a `display' property whose value is the image. STRING
432defaults to the empty string if you omit it. 432defaults to a single space if you omit it.
433AREA is where to display the image. AREA nil or omitted means 433AREA is where to display the image. AREA nil or omitted means
434display it in the text area, a value of `left-margin' means 434display it in the text area, a value of `left-margin' means
435display it in the left marginal area, a value of `right-margin' 435display it in the left marginal area, a value of `right-margin'
@@ -467,8 +467,8 @@ height of the image; integer values are taken as pixel values."
467(defun insert-sliced-image (image &optional string area rows cols) 467(defun insert-sliced-image (image &optional string area rows cols)
468 "Insert IMAGE into current buffer at point. 468 "Insert IMAGE into current buffer at point.
469IMAGE is displayed by inserting STRING into the current buffer 469IMAGE is displayed by inserting STRING into the current buffer
470with a `display' property whose value is the image. STRING is 470with a `display' property whose value is the image. The default
471defaulted if you omit it. 471STRING is a single space.
472AREA is where to display the image. AREA nil or omitted means 472AREA is where to display the image. AREA nil or omitted means
473display it in the text area, a value of `left-margin' means 473display it in the text area, a value of `left-margin' means
474display it in the left marginal area, a value of `right-margin' 474display it in the left marginal area, a value of `right-margin'
diff --git a/lisp/info.el b/lisp/info.el
index 36ffa806f04..4c7bb981afc 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1668,7 +1668,9 @@ escaped (\\\",\\\\)."
1668 " (" 1668 " ("
1669 (if (stringp Info-current-file) 1669 (if (stringp Info-current-file)
1670 (replace-regexp-in-string 1670 (replace-regexp-in-string
1671 "%" "%%" (file-name-nondirectory Info-current-file)) 1671 "%" "%%"
1672 (file-name-sans-extension
1673 (file-name-nondirectory Info-current-file)))
1672 (format "*%S*" Info-current-file)) 1674 (format "*%S*" Info-current-file))
1673 ") " 1675 ") "
1674 (if Info-current-node 1676 (if Info-current-node
@@ -4032,7 +4034,9 @@ With a zero prefix arg, put the name inside a function call to `info'."
4032 (unless Info-current-node 4034 (unless Info-current-node
4033 (user-error "No current Info node")) 4035 (user-error "No current Info node"))
4034 (let ((node (if (stringp Info-current-file) 4036 (let ((node (if (stringp Info-current-file)
4035 (concat "(" (file-name-nondirectory Info-current-file) ") " 4037 (concat "(" (file-name-sans-extension
4038 (file-name-nondirectory Info-current-file))
4039 ") "
4036 Info-current-node)))) 4040 Info-current-node))))
4037 (if (zerop (prefix-numeric-value arg)) 4041 (if (zerop (prefix-numeric-value arg))
4038 (setq node (concat "(info \"" node "\")"))) 4042 (setq node (concat "(info \"" node "\")")))
@@ -4419,7 +4423,8 @@ first line or header line, and for breadcrumb links.")
4419 (if (not (equal node "Top")) node 4423 (if (not (equal node "Top")) node
4420 (format "(%s)Top" 4424 (format "(%s)Top"
4421 (if (stringp Info-current-file) 4425 (if (stringp Info-current-file)
4422 (file-name-nondirectory Info-current-file) 4426 (file-name-sans-extension
4427 (file-name-nondirectory Info-current-file))
4423 ;; Some legacy code can still use a symbol. 4428 ;; Some legacy code can still use a symbol.
4424 Info-current-file))))) 4429 Info-current-file)))))
4425 (setq line (concat 4430 (setq line (concat
@@ -4531,7 +4536,8 @@ first line or header line, and for breadcrumb links.")
4531 (if (re-search-forward 4536 (if (re-search-forward
4532 (format "File: %s\\([^,\n\t]+\\)," 4537 (format "File: %s\\([^,\n\t]+\\),"
4533 (if (stringp Info-current-file) 4538 (if (stringp Info-current-file)
4534 (file-name-nondirectory Info-current-file) 4539 (file-name-sans-extension
4540 (file-name-nondirectory Info-current-file))
4535 Info-current-file)) 4541 Info-current-file))
4536 header-end t) 4542 header-end t)
4537 (put-text-property (match-beginning 1) (match-end 1) 4543 (put-text-property (match-beginning 1) (match-end 1)
@@ -4826,8 +4832,8 @@ first line or header line, and for breadcrumb links.")
4826 ;; Hide empty lines at the end of the node. 4832 ;; Hide empty lines at the end of the node.
4827 (goto-char (point-max)) 4833 (goto-char (point-max))
4828 (skip-chars-backward "\n") 4834 (skip-chars-backward "\n")
4829 (when (< (1+ (point)) (point-max)) 4835 (when (< (point) (1- (point-max)))
4830 (put-text-property (1+ (point)) (point-max) 'invisible t)) 4836 (put-text-property (point) (1- (point-max)) 'invisible t))
4831 4837
4832 (set-buffer-modified-p nil)))) 4838 (set-buffer-modified-p nil))))
4833 4839
@@ -4836,6 +4842,17 @@ first line or header line, and for breadcrumb links.")
4836;; current Info node. 4842;; current Info node.
4837(eval-when-compile (require 'speedbar)) 4843(eval-when-compile (require 'speedbar))
4838 4844
4845(declare-function speedbar-add-expansion-list "speedbar" (new-list))
4846(declare-function speedbar-center-buffer-smartly "speedbar" ())
4847(declare-function speedbar-change-expand-button-char "speedbar" (char))
4848(declare-function speedbar-change-initial-expansion-list "speedbar" (new-default))
4849(declare-function speedbar-delete-subblock "speedbar" (indent))
4850(declare-function speedbar-make-specialized-keymap "speedbar" ())
4851(declare-function speedbar-make-tag-line "speedbar"
4852 (exp-button-type exp-button-char exp-button-function
4853 exp-button-data tag-button tag-button-function
4854 tag-button-data tag-button-face depth))
4855
4839(defvar Info-speedbar-key-map nil 4856(defvar Info-speedbar-key-map nil
4840 "Keymap used when in the Info display mode.") 4857 "Keymap used when in the Info display mode.")
4841 4858
@@ -5058,7 +5075,8 @@ BUFFER is the buffer speedbar is requesting buttons for."
5058 "This implements the `bookmark-make-record-function' type (which see) 5075 "This implements the `bookmark-make-record-function' type (which see)
5059for Info nodes." 5076for Info nodes."
5060 (let* ((file (and (stringp Info-current-file) 5077 (let* ((file (and (stringp Info-current-file)
5061 (file-name-nondirectory Info-current-file))) 5078 (file-name-sans-extension
5079 (file-name-nondirectory Info-current-file))))
5062 (bookmark-name (if file 5080 (bookmark-name (if file
5063 (concat "(" file ") " Info-current-node) 5081 (concat "(" file ") " Info-current-node)
5064 Info-current-node)) 5082 Info-current-node))
@@ -5086,8 +5104,16 @@ type returned by `Info-bookmark-make-record', which see."
5086 5104
5087;;;###autoload 5105;;;###autoload
5088(defun info-display-manual (manual) 5106(defun info-display-manual (manual)
5089 "Go to Info buffer that displays MANUAL, creating it if none already exists." 5107 "Display an Info buffer displaying MANUAL.
5090 (interactive "sManual name: ") 5108If there is an existing Info buffer for MANUAL, display it.
5109Otherwise, visit the manual in a new Info buffer."
5110 (interactive
5111 (list
5112 (progn
5113 (info-initialize)
5114 (completing-read "Manual name: "
5115 (info--manual-names)
5116 nil t))))
5091 (let ((blist (buffer-list)) 5117 (let ((blist (buffer-list))
5092 (manual-re (concat "\\(/\\|\\`\\)" manual "\\(\\.\\|\\'\\)")) 5118 (manual-re (concat "\\(/\\|\\`\\)" manual "\\(\\.\\|\\'\\)"))
5093 (case-fold-search t) 5119 (case-fold-search t)
@@ -5102,7 +5128,22 @@ type returned by `Info-bookmark-make-record', which see."
5102 (if found 5128 (if found
5103 (switch-to-buffer found) 5129 (switch-to-buffer found)
5104 (info-initialize) 5130 (info-initialize)
5105 (info (Info-find-file manual))))) 5131 (info (Info-find-file manual)
5132 (generate-new-buffer-name "*info*")))))
5133
5134(defun info--manual-names ()
5135 (let (names)
5136 (dolist (buffer (buffer-list))
5137 (with-current-buffer buffer
5138 (and (eq major-mode 'Info-mode)
5139 (stringp Info-current-file)
5140 (push (file-name-sans-extension
5141 (file-name-nondirectory Info-current-file))
5142 names))))
5143 (delete-dups (append (nreverse names)
5144 (apply-partially 'Info-read-node-name-2
5145 Info-directory-list
5146 (mapcar 'car Info-suffix-list))))))
5106 5147
5107(provide 'info) 5148(provide 'info)
5108 5149
diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el
index e4743ada045..75d1bbbad6b 100644
--- a/lisp/jka-cmpr-hook.el
+++ b/lisp/jka-cmpr-hook.el
@@ -109,6 +109,7 @@ Otherwise, it is nil.")
109 "Return information about the compression scheme of FILENAME. 109 "Return information about the compression scheme of FILENAME.
110The determination as to which compression scheme, if any, to use is 110The determination as to which compression scheme, if any, to use is
111based on the filename itself and `jka-compr-compression-info-list'." 111based on the filename itself and `jka-compr-compression-info-list'."
112 (setq filename (file-name-sans-versions filename))
112 (catch 'compression-info 113 (catch 'compression-info
113 (let ((case-fold-search nil)) 114 (let ((case-fold-search nil))
114 (dolist (x jka-compr-compression-info-list) 115 (dolist (x jka-compr-compression-info-list)
@@ -191,19 +192,6 @@ options through Custom does this automatically."
191 192
192;; I have this defined so that .Z files are assumed to be in unix 193;; I have this defined so that .Z files are assumed to be in unix
193;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt. 194;; compress format; and .gz files, in gzip format, and .bz2 files in bzip fmt.
194
195;; FIXME? It seems ugly that one has to add "\\(~\\|\\.~[0-9]+~\\)?" to
196;; all the regexps here, in order to match backup files etc.
197;; It's trivial to modify jka-compr-get-compression-info to match
198;; regexps against file-name-sans-versions, but this regexp is also
199;; used to build a file-name-handler-alist entry.
200;; find-file-name-handler does not use file-name-sans-versions.
201;; Perhaps it should,
202;; http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00812.html,
203;; but it's used all over the place and there are probably other ramifications.
204;; One could modify jka-compr-build-file-regexp to add the backup regexp,
205;; but jka-compr-compression-info-list is a defcustom to which
206;; anything could be added, so it's easiest to leave things as they are.
207(defcustom jka-compr-compression-info-list 195(defcustom jka-compr-compression-info-list
208 ;;[regexp 196 ;;[regexp
209 ;; compr-message compr-prog compr-args 197 ;; compr-message compr-prog compr-args
@@ -310,6 +298,7 @@ variables. Setting this through Custom does that automatically."
310 (boolean :tag "Strip Extension") 298 (boolean :tag "Strip Extension")
311 (string :tag "Magic Bytes"))) 299 (string :tag "Magic Bytes")))
312 :set 'jka-compr-set 300 :set 'jka-compr-set
301 :version "24.1" ; removed version extension piece
313 :group 'jka-compr) 302 :group 'jka-compr)
314 303
315(defcustom jka-compr-mode-alist-additions 304(defcustom jka-compr-mode-alist-additions
diff --git a/lisp/json.el b/lisp/json.el
index 8167bfe93f2..b1ea03120dc 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -51,7 +51,6 @@
51 51
52;;; Code: 52;;; Code:
53 53
54(eval-when-compile (require 'cl))
55 54
56;; Compatibility code 55;; Compatibility code
57 56
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 876402f6fff..095a7229c60 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -5,7 +5,7 @@
5 5
6;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best 6;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
7;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5" 7;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
8;;;;;; "play/5x5.el" (20545 57511 257469 0)) 8;;;;;; "play/5x5.el" (20545 60086 510404 0))
9;;; Generated autoloads from play/5x5.el 9;;; Generated autoloads from play/5x5.el
10 10
11(autoload '5x5 "5x5" "\ 11(autoload '5x5 "5x5" "\
@@ -68,7 +68,7 @@ should return a grid vector array that is the new solution.
68;;;*** 68;;;***
69 69
70;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el" 70;;;### (autoloads (ada-mode ada-add-extensions) "ada-mode" "progmodes/ada-mode.el"
71;;;;;; (20576 42138 697312 0)) 71;;;;;; (20576 17415 279992 225000))
72;;; Generated autoloads from progmodes/ada-mode.el 72;;; Generated autoloads from progmodes/ada-mode.el
73 73
74(autoload 'ada-add-extensions "ada-mode" "\ 74(autoload 'ada-add-extensions "ada-mode" "\
@@ -88,7 +88,7 @@ Ada mode is the major mode for editing Ada code.
88;;;*** 88;;;***
89 89
90;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el" 90;;;### (autoloads (ada-header) "ada-stmt" "progmodes/ada-stmt.el"
91;;;;;; (20355 10021 546955 0)) 91;;;;;; (20533 50312 678915 0))
92;;; Generated autoloads from progmodes/ada-stmt.el 92;;; Generated autoloads from progmodes/ada-stmt.el
93 93
94(autoload 'ada-header "ada-stmt" "\ 94(autoload 'ada-header "ada-stmt" "\
@@ -99,7 +99,7 @@ Insert a descriptive header at the top of the file.
99;;;*** 99;;;***
100 100
101;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el" 101;;;### (autoloads (ada-find-file) "ada-xref" "progmodes/ada-xref.el"
102;;;;;; (20458 56750 651721 0)) 102;;;;;; (20533 50312 678915 0))
103;;; Generated autoloads from progmodes/ada-xref.el 103;;; Generated autoloads from progmodes/ada-xref.el
104 104
105(autoload 'ada-find-file "ada-xref" "\ 105(autoload 'ada-find-file "ada-xref" "\
@@ -114,15 +114,16 @@ Completion is available.
114;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log 114;;;;;; add-change-log-entry-other-window add-change-log-entry find-change-log
115;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name 115;;;;;; prompt-for-change-log-name add-log-mailing-address add-log-full-name
116;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el" 116;;;;;; add-log-current-defun-function) "add-log" "vc/add-log.el"
117;;;;;; (20586 48936 135199 0)) 117;;;;;; (20665 35316 344720 209000))
118;;; Generated autoloads from vc/add-log.el 118;;; Generated autoloads from vc/add-log.el
119 119
120(put 'change-log-default-name 'safe-local-variable 'string-or-null-p) 120(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
121 121
122(defvar add-log-current-defun-function nil "\ 122(defvar add-log-current-defun-function nil "\
123If non-nil, function to guess name of surrounding function. 123If non-nil, function to guess name of surrounding function.
124It is used by `add-log-current-defun' in preference to built-in rules. 124It is called by `add-log-current-defun' with no argument, and
125Returns function's name as a string, or nil if outside a function.") 125should return the function's name as a string, or nil if point is
126outside a function.")
126 127
127(custom-autoload 'add-log-current-defun-function "add-log" t) 128(custom-autoload 'add-log-current-defun-function "add-log" t)
128 129
@@ -213,15 +214,6 @@ Runs `change-log-mode-hook'.
213 214
214\(fn)" t nil) 215\(fn)" t nil)
215 216
216(defvar add-log-lisp-like-modes '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode) "\
217Modes that look like Lisp to `add-log-current-defun'.")
218
219(defvar add-log-c-like-modes '(c-mode c++-mode c++-c-mode objc-mode) "\
220Modes that look like C to `add-log-current-defun'.")
221
222(defvar add-log-tex-like-modes '(TeX-mode plain-TeX-mode LaTeX-mode tex-mode) "\
223Modes that look like TeX to `add-log-current-defun'.")
224
225(autoload 'add-log-current-defun "add-log" "\ 217(autoload 'add-log-current-defun "add-log" "\
226Return name of function definition point is in, or nil. 218Return name of function definition point is in, or nil.
227 219
@@ -253,7 +245,7 @@ old-style time formats for entries are supported.
253 245
254;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice 246;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
255;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action) 247;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action)
256;;;;;; "advice" "emacs-lisp/advice.el" (20618 55210 422086 0)) 248;;;;;; "advice" "emacs-lisp/advice.el" (20660 26176 137583 0))
257;;; Generated autoloads from emacs-lisp/advice.el 249;;; Generated autoloads from emacs-lisp/advice.el
258 250
259(defvar ad-redefinition-action 'warn "\ 251(defvar ad-redefinition-action 'warn "\
@@ -352,7 +344,7 @@ POSITION ::= `first' | `last' | NUMBER. Optional, defaults to `first',
352ARGLIST ::= An optional argument list to be used for the advised function 344ARGLIST ::= An optional argument list to be used for the advised function
353 instead of the argument list of the original. The first one found in 345 instead of the argument list of the original. The first one found in
354 before/around/after-advices will be used. 346 before/around/after-advices will be used.
355FLAG ::= `protect'|`disable'|`activate'|`compile'|`preactivate'|`freeze'. 347FLAG ::= `protect'|`disable'|`activate'|`compile'|`preactivate'.
356 All flags can be specified with unambiguous initial substrings. 348 All flags can be specified with unambiguous initial substrings.
357DOCSTRING ::= Optional documentation for this piece of advice. 349DOCSTRING ::= Optional documentation for this piece of advice.
358INTERACTIVE-FORM ::= Optional interactive form to be used for the advised 350INTERACTIVE-FORM ::= Optional interactive form to be used for the advised
@@ -378,13 +370,6 @@ time. This generates a compiled advised definition according to the current
378advice state that will be used during activation if appropriate. Only use 370advice state that will be used during activation if appropriate. Only use
379this if the `defadvice' gets actually compiled. 371this if the `defadvice' gets actually compiled.
380 372
381`freeze': Expands the `defadvice' into a redefining `defun/defmacro' according
382to this particular single advice. No other advice information will be saved.
383Frozen advices cannot be undone, they behave like a hard redefinition of
384the advised function. `freeze' implies `activate' and `preactivate'. The
385documentation of the advised function can be dumped onto the `DOC' file
386during preloading.
387
388See Info node `(elisp)Advising Functions' for comprehensive documentation. 373See Info node `(elisp)Advising Functions' for comprehensive documentation.
389usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...) 374usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
390 [DOCSTRING] [INTERACTIVE-FORM] 375 [DOCSTRING] [INTERACTIVE-FORM]
@@ -398,7 +383,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
398 383
399;;;### (autoloads (align-newline-and-indent align-unhighlight-rule 384;;;### (autoloads (align-newline-and-indent align-unhighlight-rule
400;;;;;; align-highlight-rule align-current align-entire align-regexp 385;;;;;; align-highlight-rule align-current align-entire align-regexp
401;;;;;; align) "align" "align.el" (20566 63671 243798 0)) 386;;;;;; align) "align" "align.el" (20566 45971 994610 911000))
402;;; Generated autoloads from align.el 387;;; Generated autoloads from align.el
403 388
404(autoload 'align "align" "\ 389(autoload 'align "align" "\
@@ -489,7 +474,7 @@ A replacement function for `newline-and-indent', aligning as it goes.
489 474
490;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation 475;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation
491;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el" 476;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el"
492;;;;;; (20577 33959 40183 0)) 477;;;;;; (20652 52617 313760 0))
493;;; Generated autoloads from allout.el 478;;; Generated autoloads from allout.el
494 479
495(autoload 'allout-auto-activation-helper "allout" "\ 480(autoload 'allout-auto-activation-helper "allout" "\
@@ -850,7 +835,7 @@ for details on preparing Emacs for automatic allout activation.
850 835
851;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation 836;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation
852;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el" 837;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el"
853;;;;;; (20545 57511 257469 0)) 838;;;;;; (20545 60086 510404 0))
854;;; Generated autoloads from allout-widgets.el 839;;; Generated autoloads from allout-widgets.el
855 840
856(let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads)))) 841(let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads))))
@@ -910,7 +895,7 @@ outline hot-spot navigation (see `allout-mode').
910;;;*** 895;;;***
911 896
912;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp" 897;;;### (autoloads (ange-ftp-hook-function ange-ftp-reread-dir) "ange-ftp"
913;;;;;; "net/ange-ftp.el" (20566 63671 243798 0)) 898;;;;;; "net/ange-ftp.el" (20566 46265 242622 534000))
914;;; Generated autoloads from net/ange-ftp.el 899;;; Generated autoloads from net/ange-ftp.el
915 900
916(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) 901(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
@@ -932,7 +917,7 @@ directory, so that Emacs will know its current contents.
932;;;*** 917;;;***
933 918
934;;;### (autoloads (animate-birthday-present animate-sequence animate-string) 919;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
935;;;;;; "animate" "play/animate.el" (20545 57511 257469 0)) 920;;;;;; "animate" "play/animate.el" (20545 60086 510404 0))
936;;; Generated autoloads from play/animate.el 921;;; Generated autoloads from play/animate.el
937 922
938(autoload 'animate-string "animate" "\ 923(autoload 'animate-string "animate" "\
@@ -965,7 +950,7 @@ the buffer *Birthday-Present-for-Name*.
965;;;*** 950;;;***
966 951
967;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) 952;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on)
968;;;;;; "ansi-color" "ansi-color.el" (20577 33959 40183 0)) 953;;;;;; "ansi-color" "ansi-color.el" (20647 7982 429263 0))
969;;; Generated autoloads from ansi-color.el 954;;; Generated autoloads from ansi-color.el
970 955
971(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\ 956(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\
@@ -991,8 +976,8 @@ This is a good function to put in `comint-output-filter-functions'.
991;;;*** 976;;;***
992 977
993;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules) 978;;;### (autoloads (antlr-set-tabs antlr-mode antlr-show-makefile-rules)
994;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 63671 243798 979;;;;;; "antlr-mode" "progmodes/antlr-mode.el" (20566 46627 290641
995;;;;;; 0)) 980;;;;;; 925000))
996;;; Generated autoloads from progmodes/antlr-mode.el 981;;; Generated autoloads from progmodes/antlr-mode.el
997 982
998(autoload 'antlr-show-makefile-rules "antlr-mode" "\ 983(autoload 'antlr-show-makefile-rules "antlr-mode" "\
@@ -1028,7 +1013,7 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'.
1028;;;*** 1013;;;***
1029 1014
1030;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el" 1015;;;### (autoloads (appt-activate appt-add) "appt" "calendar/appt.el"
1031;;;;;; (20355 10021 546955 0)) 1016;;;;;; (20533 50312 678915 0))
1032;;; Generated autoloads from calendar/appt.el 1017;;; Generated autoloads from calendar/appt.el
1033 1018
1034(autoload 'appt-add "appt" "\ 1019(autoload 'appt-add "appt" "\
@@ -1051,8 +1036,8 @@ ARG is positive, otherwise off.
1051 1036
1052;;;### (autoloads (apropos-documentation apropos-value apropos-library 1037;;;### (autoloads (apropos-documentation apropos-value apropos-library
1053;;;;;; apropos apropos-documentation-property apropos-command apropos-variable 1038;;;;;; apropos apropos-documentation-property apropos-command apropos-variable
1054;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 62082 1039;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20533 50312
1055;;;;;; 997685 0)) 1040;;;;;; 678915 0))
1056;;; Generated autoloads from apropos.el 1041;;; Generated autoloads from apropos.el
1057 1042
1058(autoload 'apropos-read-pattern "apropos" "\ 1043(autoload 'apropos-read-pattern "apropos" "\
@@ -1160,8 +1145,8 @@ Returns list of symbols and documentation found.
1160 1145
1161;;;*** 1146;;;***
1162 1147
1163;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20614 1148;;;### (autoloads (archive-mode) "arc-mode" "arc-mode.el" (20647
1164;;;;;; 54428 654267 0)) 1149;;;;;; 7982 429263 0))
1165;;; Generated autoloads from arc-mode.el 1150;;; Generated autoloads from arc-mode.el
1166 1151
1167(autoload 'archive-mode "arc-mode" "\ 1152(autoload 'archive-mode "arc-mode" "\
@@ -1181,7 +1166,7 @@ archive.
1181 1166
1182;;;*** 1167;;;***
1183 1168
1184;;;### (autoloads (array-mode) "array" "array.el" (20355 10021 546955 1169;;;### (autoloads (array-mode) "array" "array.el" (20533 50312 678915
1185;;;;;; 0)) 1170;;;;;; 0))
1186;;; Generated autoloads from array.el 1171;;; Generated autoloads from array.el
1187 1172
@@ -1253,8 +1238,8 @@ Entering array mode calls the function `array-mode-hook'.
1253 1238
1254;;;*** 1239;;;***
1255 1240
1256;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20513 1241;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20533
1257;;;;;; 18948 537867 0)) 1242;;;;;; 50312 678915 0))
1258;;; Generated autoloads from textmodes/artist.el 1243;;; Generated autoloads from textmodes/artist.el
1259 1244
1260(autoload 'artist-mode "artist" "\ 1245(autoload 'artist-mode "artist" "\
@@ -1459,8 +1444,8 @@ Keymap summary
1459 1444
1460;;;*** 1445;;;***
1461 1446
1462;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20355 1447;;;### (autoloads (asm-mode) "asm-mode" "progmodes/asm-mode.el" (20533
1463;;;;;; 10021 546955 0)) 1448;;;;;; 50312 678915 0))
1464;;; Generated autoloads from progmodes/asm-mode.el 1449;;; Generated autoloads from progmodes/asm-mode.el
1465 1450
1466(autoload 'asm-mode "asm-mode" "\ 1451(autoload 'asm-mode "asm-mode" "\
@@ -1488,7 +1473,7 @@ Special commands:
1488;;;*** 1473;;;***
1489 1474
1490;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el" 1475;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el"
1491;;;;;; (20544 36659 880486 0)) 1476;;;;;; (20545 60086 510404 0))
1492;;; Generated autoloads from gnus/auth-source.el 1477;;; Generated autoloads from gnus/auth-source.el
1493 1478
1494(defvar auth-source-cache-expiry 7200 "\ 1479(defvar auth-source-cache-expiry 7200 "\
@@ -1501,7 +1486,7 @@ let-binding.")
1501;;;*** 1486;;;***
1502 1487
1503;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el" 1488;;;### (autoloads (autoarg-kp-mode autoarg-mode) "autoarg" "autoarg.el"
1504;;;;;; (20355 10021 546955 0)) 1489;;;;;; (20533 50312 678915 0))
1505;;; Generated autoloads from autoarg.el 1490;;; Generated autoloads from autoarg.el
1506 1491
1507(defvar autoarg-mode nil "\ 1492(defvar autoarg-mode nil "\
@@ -1562,7 +1547,7 @@ This is similar to `autoarg-mode' but rebinds the keypad keys
1562;;;*** 1547;;;***
1563 1548
1564;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" 1549;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
1565;;;;;; (20513 18948 537867 0)) 1550;;;;;; (20665 31909 588757 472000))
1566;;; Generated autoloads from progmodes/autoconf.el 1551;;; Generated autoloads from progmodes/autoconf.el
1567 1552
1568(autoload 'autoconf-mode "autoconf" "\ 1553(autoload 'autoconf-mode "autoconf" "\
@@ -1573,7 +1558,7 @@ Major mode for editing Autoconf configure.ac files.
1573;;;*** 1558;;;***
1574 1559
1575;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert) 1560;;;### (autoloads (auto-insert-mode define-auto-insert auto-insert)
1576;;;;;; "autoinsert" "autoinsert.el" (20566 63671 243798 0)) 1561;;;;;; "autoinsert" "autoinsert.el" (20566 45969 322610 468000))
1577;;; Generated autoloads from autoinsert.el 1562;;; Generated autoloads from autoinsert.el
1578 1563
1579(autoload 'auto-insert "autoinsert" "\ 1564(autoload 'auto-insert "autoinsert" "\
@@ -1613,7 +1598,7 @@ insert a template for the file depending on the mode of the buffer.
1613 1598
1614;;;### (autoloads (batch-update-autoloads update-directory-autoloads 1599;;;### (autoloads (batch-update-autoloads update-directory-autoloads
1615;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" 1600;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
1616;;;;;; (20594 43050 277913 0)) 1601;;;;;; (20594 14884 858174 0))
1617;;; Generated autoloads from emacs-lisp/autoload.el 1602;;; Generated autoloads from emacs-lisp/autoload.el
1618 1603
1619(put 'generated-autoload-file 'safe-local-variable 'stringp) 1604(put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1664,7 +1649,7 @@ should be non-nil).
1664 1649
1665;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode 1650;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
1666;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode) 1651;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
1667;;;;;; "autorevert" "autorevert.el" (20476 31768 298871 0)) 1652;;;;;; "autorevert" "autorevert.el" (20629 14541 236054 412000))
1668;;; Generated autoloads from autorevert.el 1653;;; Generated autoloads from autorevert.el
1669 1654
1670(autoload 'auto-revert-mode "autorevert" "\ 1655(autoload 'auto-revert-mode "autorevert" "\
@@ -1753,7 +1738,7 @@ specifies in the mode line.
1753;;;*** 1738;;;***
1754 1739
1755;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid" 1740;;;### (autoloads (mouse-avoidance-mode mouse-avoidance-mode) "avoid"
1756;;;;;; "avoid.el" (20593 22184 581574 0)) 1741;;;;;; "avoid.el" (20594 14884 858174 0))
1757;;; Generated autoloads from avoid.el 1742;;; Generated autoloads from avoid.el
1758 1743
1759(defvar mouse-avoidance-mode nil "\ 1744(defvar mouse-avoidance-mode nil "\
@@ -1794,7 +1779,7 @@ definition of \"random distance\".)
1794;;;*** 1779;;;***
1795 1780
1796;;;### (autoloads (display-battery-mode battery) "battery" "battery.el" 1781;;;### (autoloads (display-battery-mode battery) "battery" "battery.el"
1797;;;;;; (20594 43050 277913 0)) 1782;;;;;; (20595 33984 147078 0))
1798;;; Generated autoloads from battery.el 1783;;; Generated autoloads from battery.el
1799 (put 'battery-mode-line-string 'risky-local-variable t) 1784 (put 'battery-mode-line-string 'risky-local-variable t)
1800 1785
@@ -1830,7 +1815,7 @@ seconds.
1830;;;*** 1815;;;***
1831 1816
1832;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run) 1817;;;### (autoloads (benchmark benchmark-run-compiled benchmark-run)
1833;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 48712 315579 1818;;;;;; "benchmark" "emacs-lisp/benchmark.el" (20557 23173 326608
1834;;;;;; 0)) 1819;;;;;; 0))
1835;;; Generated autoloads from emacs-lisp/benchmark.el 1820;;; Generated autoloads from emacs-lisp/benchmark.el
1836 1821
@@ -1868,7 +1853,7 @@ For non-interactive use see also `benchmark-run' and
1868;;;*** 1853;;;***
1869 1854
1870;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize) 1855;;;### (autoloads (bibtex-search-entry bibtex-mode bibtex-initialize)
1871;;;;;; "bibtex" "textmodes/bibtex.el" (20576 13095 881042 0)) 1856;;;;;; "bibtex" "textmodes/bibtex.el" (20575 51581 109735 0))
1872;;; Generated autoloads from textmodes/bibtex.el 1857;;; Generated autoloads from textmodes/bibtex.el
1873 1858
1874(autoload 'bibtex-initialize "bibtex" "\ 1859(autoload 'bibtex-initialize "bibtex" "\
@@ -1957,7 +1942,7 @@ A prefix arg negates the value of `bibtex-search-entry-globally'.
1957;;;*** 1942;;;***
1958 1943
1959;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el" 1944;;;### (autoloads (bibtex-style-mode) "bibtex-style" "textmodes/bibtex-style.el"
1960;;;;;; (20355 10021 546955 0)) 1945;;;;;; (20533 50312 678915 0))
1961;;; Generated autoloads from textmodes/bibtex-style.el 1946;;; Generated autoloads from textmodes/bibtex-style.el
1962 1947
1963(autoload 'bibtex-style-mode "bibtex-style" "\ 1948(autoload 'bibtex-style-mode "bibtex-style" "\
@@ -1969,7 +1954,7 @@ Major mode for editing BibTeX style files.
1969 1954
1970;;;### (autoloads (binhex-decode-region binhex-decode-region-external 1955;;;### (autoloads (binhex-decode-region binhex-decode-region-external
1971;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el" 1956;;;;;; binhex-decode-region-internal) "binhex" "mail/binhex.el"
1972;;;;;; (20355 10021 546955 0)) 1957;;;;;; (20533 50312 678915 0))
1973;;; Generated autoloads from mail/binhex.el 1958;;; Generated autoloads from mail/binhex.el
1974 1959
1975(defconst binhex-begin-line "^:...............................................................$" "\ 1960(defconst binhex-begin-line "^:...............................................................$" "\
@@ -1993,8 +1978,8 @@ Binhex decode region between START and END.
1993 1978
1994;;;*** 1979;;;***
1995 1980
1996;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20551 1981;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20552
1997;;;;;; 9899 283417 0)) 1982;;;;;; 25066 479417 0))
1998;;; Generated autoloads from play/blackbox.el 1983;;; Generated autoloads from play/blackbox.el
1999 1984
2000(autoload 'blackbox "blackbox" "\ 1985(autoload 'blackbox "blackbox" "\
@@ -2117,7 +2102,7 @@ a reflection.
2117;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert 2102;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert
2118;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate 2103;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate
2119;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark" 2104;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark"
2120;;;;;; "bookmark.el" (20618 55210 422086 0)) 2105;;;;;; "bookmark.el" (20629 57223 201983 433000))
2121;;; Generated autoloads from bookmark.el 2106;;; Generated autoloads from bookmark.el
2122 (define-key ctl-x-r-map "b" 'bookmark-jump) 2107 (define-key ctl-x-r-map "b" 'bookmark-jump)
2123 (define-key ctl-x-r-map "m" 'bookmark-set) 2108 (define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2318,7 +2303,7 @@ Incremental search of bookmarks, hiding the non-matches as we go.
2318;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point 2303;;;;;; browse-url-xdg-open browse-url-at-mouse browse-url-at-point
2319;;;;;; browse-url browse-url-of-region browse-url-of-dired-file 2304;;;;;; browse-url browse-url-of-region browse-url-of-dired-file
2320;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function) 2305;;;;;; browse-url-of-buffer browse-url-of-file browse-url-browser-function)
2321;;;;;; "browse-url" "net/browse-url.el" (20566 63671 243798 0)) 2306;;;;;; "browse-url" "net/browse-url.el" (20566 46699 734641 18000))
2322;;; Generated autoloads from net/browse-url.el 2307;;; Generated autoloads from net/browse-url.el
2323 2308
2324(defvar browse-url-browser-function 'browse-url-default-browser "\ 2309(defvar browse-url-browser-function 'browse-url-default-browser "\
@@ -2634,7 +2619,7 @@ from `browse-url-elinks-wrapper'.
2634;;;*** 2619;;;***
2635 2620
2636;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) 2621;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
2637;;;;;; "bs" "bs.el" (20576 13095 881042 0)) 2622;;;;;; "bs" "bs.el" (20574 57829 481502 235000))
2638;;; Generated autoloads from bs.el 2623;;; Generated autoloads from bs.el
2639 2624
2640(autoload 'bs-cycle-next "bs" "\ 2625(autoload 'bs-cycle-next "bs" "\
@@ -2674,8 +2659,8 @@ name of buffer configuration.
2674 2659
2675;;;*** 2660;;;***
2676 2661
2677;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 63671 2662;;;### (autoloads (bubbles) "bubbles" "play/bubbles.el" (20566 46646
2678;;;;;; 243798 0)) 2663;;;;;; 562639 12000))
2679;;; Generated autoloads from play/bubbles.el 2664;;; Generated autoloads from play/bubbles.el
2680 2665
2681(autoload 'bubbles "bubbles" "\ 2666(autoload 'bubbles "bubbles" "\
@@ -2697,7 +2682,7 @@ columns on its right towards the left.
2697;;;*** 2682;;;***
2698 2683
2699;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference" 2684;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference"
2700;;;;;; "progmodes/bug-reference.el" (20593 22184 581574 0)) 2685;;;;;; "progmodes/bug-reference.el" (20594 14884 858174 0))
2701;;; Generated autoloads from progmodes/bug-reference.el 2686;;; Generated autoloads from progmodes/bug-reference.el
2702 2687
2703(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) 2688(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2721,7 +2706,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
2721;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile 2706;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
2722;;;;;; compile-defun byte-compile-file byte-recompile-directory 2707;;;;;; compile-defun byte-compile-file byte-recompile-directory
2723;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) 2708;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning)
2724;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20599 27513 576550 0)) 2709;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20656 14460 296991 0))
2725;;; Generated autoloads from emacs-lisp/bytecomp.el 2710;;; Generated autoloads from emacs-lisp/bytecomp.el
2726(put 'byte-compile-dynamic 'safe-local-variable 'booleanp) 2711(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
2727(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) 2712(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2841,8 +2826,8 @@ and corresponding effects.
2841 2826
2842;;;*** 2827;;;***
2843 2828
2844;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20355 2829;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (20533
2845;;;;;; 10021 546955 0)) 2830;;;;;; 50312 678915 0))
2846;;; Generated autoloads from calendar/cal-china.el 2831;;; Generated autoloads from calendar/cal-china.el
2847 2832
2848(put 'calendar-chinese-time-zone 'risky-local-variable t) 2833(put 'calendar-chinese-time-zone 'risky-local-variable t)
@@ -2851,8 +2836,8 @@ and corresponding effects.
2851 2836
2852;;;*** 2837;;;***
2853 2838
2854;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20461 32935 2839;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (20533 50312
2855;;;;;; 300400 0)) 2840;;;;;; 678915 0))
2856;;; Generated autoloads from calendar/cal-dst.el 2841;;; Generated autoloads from calendar/cal-dst.el
2857 2842
2858(put 'calendar-daylight-savings-starts 'risky-local-variable t) 2843(put 'calendar-daylight-savings-starts 'risky-local-variable t)
@@ -2864,7 +2849,7 @@ and corresponding effects.
2864;;;*** 2849;;;***
2865 2850
2866;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el" 2851;;;### (autoloads (calendar-hebrew-list-yahrzeits) "cal-hebrew" "calendar/cal-hebrew.el"
2867;;;;;; (20355 10021 546955 0)) 2852;;;;;; (20533 50312 678915 0))
2868;;; Generated autoloads from calendar/cal-hebrew.el 2853;;; Generated autoloads from calendar/cal-hebrew.el
2869 2854
2870(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\ 2855(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
@@ -2880,8 +2865,8 @@ from the cursor position.
2880 2865
2881;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle 2866;;;### (autoloads (defmath calc-embedded-activate calc-embedded calc-grab-rectangle
2882;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc 2867;;;;;; calc-grab-region full-calc-keypad calc-keypad calc-eval quick-calc
2883;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20593 2868;;;;;; full-calc calc calc-dispatch) "calc" "calc/calc.el" (20655
2884;;;;;; 22184 581574 0)) 2869;;;;;; 4702 996292 0))
2885;;; Generated autoloads from calc/calc.el 2870;;; Generated autoloads from calc/calc.el
2886 (define-key ctl-x-map "*" 'calc-dispatch) 2871 (define-key ctl-x-map "*" 'calc-dispatch)
2887 2872
@@ -2965,8 +2950,8 @@ See Info node `(calc)Defining Functions'.
2965 2950
2966;;;*** 2951;;;***
2967 2952
2968;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20355 2953;;;### (autoloads (calc-undo) "calc-undo" "calc/calc-undo.el" (20533
2969;;;;;; 10021 546955 0)) 2954;;;;;; 50312 678915 0))
2970;;; Generated autoloads from calc/calc-undo.el 2955;;; Generated autoloads from calc/calc-undo.el
2971 2956
2972(autoload 'calc-undo "calc-undo" "\ 2957(autoload 'calc-undo "calc-undo" "\
@@ -2976,8 +2961,8 @@ See Info node `(calc)Defining Functions'.
2976 2961
2977;;;*** 2962;;;***
2978 2963
2979;;;### (autoloads (calculator) "calculator" "calculator.el" (20476 2964;;;### (autoloads (calculator) "calculator" "calculator.el" (20533
2980;;;;;; 31768 298871 0)) 2965;;;;;; 50312 678915 0))
2981;;; Generated autoloads from calculator.el 2966;;; Generated autoloads from calculator.el
2982 2967
2983(autoload 'calculator "calculator" "\ 2968(autoload 'calculator "calculator" "\
@@ -2988,8 +2973,8 @@ See the documentation for `calculator-mode' for more information.
2988 2973
2989;;;*** 2974;;;***
2990 2975
2991;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20594 2976;;;### (autoloads (calendar) "calendar" "calendar/calendar.el" (20595
2992;;;;;; 43050 277913 0)) 2977;;;;;; 33984 147078 0))
2993;;; Generated autoloads from calendar/calendar.el 2978;;; Generated autoloads from calendar/calendar.el
2994 2979
2995(autoload 'calendar "calendar" "\ 2980(autoload 'calendar "calendar" "\
@@ -3033,7 +3018,7 @@ This function is suitable for execution in an init file.
3033;;;*** 3018;;;***
3034 3019
3035;;;### (autoloads (canlock-verify canlock-insert-header) "canlock" 3020;;;### (autoloads (canlock-verify canlock-insert-header) "canlock"
3036;;;;;; "gnus/canlock.el" (20355 10021 546955 0)) 3021;;;;;; "gnus/canlock.el" (20533 50312 678915 0))
3037;;; Generated autoloads from gnus/canlock.el 3022;;; Generated autoloads from gnus/canlock.el
3038 3023
3039(autoload 'canlock-insert-header "canlock" "\ 3024(autoload 'canlock-insert-header "canlock" "\
@@ -3051,7 +3036,7 @@ it fails.
3051;;;*** 3036;;;***
3052 3037
3053;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el" 3038;;;### (autoloads (capitalized-words-mode) "cap-words" "progmodes/cap-words.el"
3054;;;;;; (20355 10021 546955 0)) 3039;;;;;; (20533 50312 678915 0))
3055;;; Generated autoloads from progmodes/cap-words.el 3040;;; Generated autoloads from progmodes/cap-words.el
3056 3041
3057(autoload 'capitalized-words-mode "cap-words" "\ 3042(autoload 'capitalized-words-mode "cap-words" "\
@@ -3090,15 +3075,15 @@ Obsoletes `c-forward-into-nomenclature'.
3090 3075
3091;;;*** 3076;;;***
3092 3077
3093;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20355 3078;;;### (autoloads nil "cc-compat" "progmodes/cc-compat.el" (20533
3094;;;;;; 10021 546955 0)) 3079;;;;;; 50312 678915 0))
3095;;; Generated autoloads from progmodes/cc-compat.el 3080;;; Generated autoloads from progmodes/cc-compat.el
3096(put 'c-indent-level 'safe-local-variable 'integerp) 3081(put 'c-indent-level 'safe-local-variable 'integerp)
3097 3082
3098;;;*** 3083;;;***
3099 3084
3100;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el" 3085;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
3101;;;;;; (20557 48712 315579 0)) 3086;;;;;; (20656 14460 296991 0))
3102;;; Generated autoloads from progmodes/cc-engine.el 3087;;; Generated autoloads from progmodes/cc-engine.el
3103 3088
3104(autoload 'c-guess-basic-syntax "cc-engine" "\ 3089(autoload 'c-guess-basic-syntax "cc-engine" "\
@@ -3110,8 +3095,8 @@ Return the syntactic context of the current line.
3110 3095
3111;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region 3096;;;### (autoloads (c-guess-install c-guess-region-no-install c-guess-region
3112;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install 3097;;;;;; c-guess-buffer-no-install c-guess-buffer c-guess-no-install
3113;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20355 10021 3098;;;;;; c-guess) "cc-guess" "progmodes/cc-guess.el" (20533 50312
3114;;;;;; 546955 0)) 3099;;;;;; 678915 0))
3115;;; Generated autoloads from progmodes/cc-guess.el 3100;;; Generated autoloads from progmodes/cc-guess.el
3116 3101
3117(defvar c-guess-guessed-offsets-alist nil "\ 3102(defvar c-guess-guessed-offsets-alist nil "\
@@ -3211,7 +3196,7 @@ the absolute file name of the file if STYLE-NAME is nil.
3211 3196
3212;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode 3197;;;### (autoloads (awk-mode pike-mode idl-mode java-mode objc-mode
3213;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el" 3198;;;;;; c++-mode c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
3214;;;;;; (20614 54428 654267 0)) 3199;;;;;; (20665 35573 592719 966000))
3215;;; Generated autoloads from progmodes/cc-mode.el 3200;;; Generated autoloads from progmodes/cc-mode.el
3216 3201
3217(autoload 'c-initialize-cc-mode "cc-mode" "\ 3202(autoload 'c-initialize-cc-mode "cc-mode" "\
@@ -3388,7 +3373,7 @@ Key bindings:
3388;;;*** 3373;;;***
3389 3374
3390;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles" 3375;;;### (autoloads (c-set-offset c-add-style c-set-style) "cc-styles"
3391;;;;;; "progmodes/cc-styles.el" (20566 63671 243798 0)) 3376;;;;;; "progmodes/cc-styles.el" (20566 46620 114637 614000))
3392;;; Generated autoloads from progmodes/cc-styles.el 3377;;; Generated autoloads from progmodes/cc-styles.el
3393 3378
3394(autoload 'c-set-style "cc-styles" "\ 3379(autoload 'c-set-style "cc-styles" "\
@@ -3439,8 +3424,8 @@ and exists only for compatibility reasons.
3439 3424
3440;;;*** 3425;;;***
3441 3426
3442;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20595 63909 3427;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (20596 57817
3443;;;;;; 923329 0)) 3428;;;;;; 368875 0))
3444;;; Generated autoloads from progmodes/cc-vars.el 3429;;; Generated autoloads from progmodes/cc-vars.el
3445(put 'c-basic-offset 'safe-local-variable 'integerp) 3430(put 'c-basic-offset 'safe-local-variable 'integerp)
3446(put 'c-backslash-column 'safe-local-variable 'integerp) 3431(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -3450,7 +3435,7 @@ and exists only for compatibility reasons.
3450 3435
3451;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program 3436;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program
3452;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el" 3437;;;;;; declare-ccl-program ccl-dump ccl-compile) "ccl" "international/ccl.el"
3453;;;;;; (20355 10021 546955 0)) 3438;;;;;; (20533 50312 678915 0))
3454;;; Generated autoloads from international/ccl.el 3439;;; Generated autoloads from international/ccl.el
3455 3440
3456(autoload 'ccl-compile "ccl" "\ 3441(autoload 'ccl-compile "ccl" "\
@@ -3711,7 +3696,7 @@ See the documentation of `define-ccl-program' for the detail of CCL program.
3711;;;*** 3696;;;***
3712 3697
3713;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el" 3698;;;### (autoloads (cconv-closure-convert) "cconv" "emacs-lisp/cconv.el"
3714;;;;;; (20453 5437 764254 0)) 3699;;;;;; (20533 50312 678915 0))
3715;;; Generated autoloads from emacs-lisp/cconv.el 3700;;; Generated autoloads from emacs-lisp/cconv.el
3716 3701
3717(autoload 'cconv-closure-convert "cconv" "\ 3702(autoload 'cconv-closure-convert "cconv" "\
@@ -3726,7 +3711,7 @@ Returns a form where all lambdas don't have any free variables.
3726;;;*** 3711;;;***
3727 3712
3728;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode) 3713;;;### (autoloads (cfengine-auto-mode cfengine2-mode cfengine3-mode)
3729;;;;;; "cfengine" "progmodes/cfengine.el" (20355 10021 546955 0)) 3714;;;;;; "cfengine" "progmodes/cfengine.el" (20533 50312 678915 0))
3730;;; Generated autoloads from progmodes/cfengine.el 3715;;; Generated autoloads from progmodes/cfengine.el
3731 3716
3732(autoload 'cfengine3-mode "cfengine" "\ 3717(autoload 'cfengine3-mode "cfengine" "\
@@ -3756,7 +3741,7 @@ on the buffer contents
3756;;;*** 3741;;;***
3757 3742
3758;;;### (autoloads (check-declare-directory check-declare-file) "check-declare" 3743;;;### (autoloads (check-declare-directory check-declare-file) "check-declare"
3759;;;;;; "emacs-lisp/check-declare.el" (20378 29222 722320 0)) 3744;;;;;; "emacs-lisp/check-declare.el" (20533 50312 678915 0))
3760;;; Generated autoloads from emacs-lisp/check-declare.el 3745;;; Generated autoloads from emacs-lisp/check-declare.el
3761 3746
3762(autoload 'check-declare-file "check-declare" "\ 3747(autoload 'check-declare-file "check-declare" "\
@@ -3781,7 +3766,7 @@ Returns non-nil if any false statements are found.
3781;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer 3766;;;;;; checkdoc-comments checkdoc-continue checkdoc-start checkdoc-current-buffer
3782;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive 3767;;;;;; checkdoc-eval-current-buffer checkdoc-message-interactive
3783;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p) 3768;;;;;; checkdoc-interactive checkdoc checkdoc-list-of-strings-p)
3784;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20614 54428 654267 0)) 3769;;;;;; "checkdoc" "emacs-lisp/checkdoc.el" (20647 7982 429263 0))
3785;;; Generated autoloads from emacs-lisp/checkdoc.el 3770;;; Generated autoloads from emacs-lisp/checkdoc.el
3786(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp) 3771(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
3787(put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp) 3772(put 'checkdoc-force-history-flag 'safe-local-variable 'booleanp)
@@ -3977,7 +3962,7 @@ checking of documentation strings.
3977 3962
3978;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer 3963;;;### (autoloads (pre-write-encode-hz post-read-decode-hz encode-hz-buffer
3979;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util" 3964;;;;;; encode-hz-region decode-hz-buffer decode-hz-region) "china-util"
3980;;;;;; "language/china-util.el" (20355 10021 546955 0)) 3965;;;;;; "language/china-util.el" (20533 50312 678915 0))
3981;;; Generated autoloads from language/china-util.el 3966;;; Generated autoloads from language/china-util.el
3982 3967
3983(autoload 'decode-hz-region "china-util" "\ 3968(autoload 'decode-hz-region "china-util" "\
@@ -4015,7 +4000,7 @@ Encode the text in the current buffer to HZ.
4015;;;*** 4000;;;***
4016 4001
4017;;;### (autoloads (command-history list-command-history repeat-matching-complex-command) 4002;;;### (autoloads (command-history list-command-history repeat-matching-complex-command)
4018;;;;;; "chistory" "chistory.el" (20355 10021 546955 0)) 4003;;;;;; "chistory" "chistory.el" (20533 50312 678915 0))
4019;;; Generated autoloads from chistory.el 4004;;; Generated autoloads from chistory.el
4020 4005
4021(autoload 'repeat-matching-complex-command "chistory" "\ 4006(autoload 'repeat-matching-complex-command "chistory" "\
@@ -4055,7 +4040,7 @@ and runs the normal hook `command-history-hook'.
4055;;;*** 4040;;;***
4056 4041
4057;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el" 4042;;;### (autoloads (common-lisp-indent-function) "cl-indent" "emacs-lisp/cl-indent.el"
4058;;;;;; (20355 10021 546955 0)) 4043;;;;;; (20533 50312 678915 0))
4059;;; Generated autoloads from emacs-lisp/cl-indent.el 4044;;; Generated autoloads from emacs-lisp/cl-indent.el
4060 4045
4061(autoload 'common-lisp-indent-function "cl-indent" "\ 4046(autoload 'common-lisp-indent-function "cl-indent" "\
@@ -4133,8 +4118,8 @@ For example, the function `case' has an indent property
4133 4118
4134;;;*** 4119;;;***
4135 4120
4136;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20599 27513 4121;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20648 29678
4137;;;;;; 576550 0)) 4122;;;;;; 511980 0))
4138;;; Generated autoloads from emacs-lisp/cl-lib.el 4123;;; Generated autoloads from emacs-lisp/cl-lib.el
4139 4124
4140(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3") 4125(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3")
@@ -4162,7 +4147,7 @@ a future Emacs interpreter will be able to use it.")
4162;;;*** 4147;;;***
4163 4148
4164;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el" 4149;;;### (autoloads (c-macro-expand) "cmacexp" "progmodes/cmacexp.el"
4165;;;;;; (20566 63671 243798 0)) 4150;;;;;; (20566 46193 922619 203000))
4166;;; Generated autoloads from progmodes/cmacexp.el 4151;;; Generated autoloads from progmodes/cmacexp.el
4167 4152
4168(autoload 'c-macro-expand "cmacexp" "\ 4153(autoload 'c-macro-expand "cmacexp" "\
@@ -4182,8 +4167,8 @@ For use inside Lisp programs, see also `c-macro-expansion'.
4182 4167
4183;;;*** 4168;;;***
4184 4169
4185;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20355 4170;;;### (autoloads (run-scheme) "cmuscheme" "cmuscheme.el" (20533
4186;;;;;; 10021 546955 0)) 4171;;;;;; 50312 678915 0))
4187;;; Generated autoloads from cmuscheme.el 4172;;; Generated autoloads from cmuscheme.el
4188 4173
4189(autoload 'run-scheme "cmuscheme" "\ 4174(autoload 'run-scheme "cmuscheme" "\
@@ -4203,8 +4188,8 @@ is run).
4203 4188
4204;;;*** 4189;;;***
4205 4190
4206;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20592 1317 4191;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20650 61396
4207;;;;;; 691761 0)) 4192;;;;;; 673885 0))
4208;;; Generated autoloads from color.el 4193;;; Generated autoloads from color.el
4209 4194
4210(autoload 'color-name-to-rgb "color" "\ 4195(autoload 'color-name-to-rgb "color" "\
@@ -4226,7 +4211,7 @@ If FRAME cannot display COLOR, return nil.
4226;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list 4211;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
4227;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command 4212;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
4228;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" 4213;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
4229;;;;;; (20594 43050 277913 0)) 4214;;;;;; (20594 14884 858174 0))
4230;;; Generated autoloads from comint.el 4215;;; Generated autoloads from comint.el
4231 4216
4232(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ 4217(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4326,7 +4311,7 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
4326;;;*** 4311;;;***
4327 4312
4328;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el" 4313;;;### (autoloads (compare-windows) "compare-w" "vc/compare-w.el"
4329;;;;;; (20355 10021 546955 0)) 4314;;;;;; (20533 50312 678915 0))
4330;;; Generated autoloads from vc/compare-w.el 4315;;; Generated autoloads from vc/compare-w.el
4331 4316
4332(autoload 'compare-windows "compare-w" "\ 4317(autoload 'compare-windows "compare-w" "\
@@ -4363,8 +4348,8 @@ on third call it again advances points to the next difference and so on.
4363;;;;;; compilation-shell-minor-mode compilation-mode compilation-start 4348;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
4364;;;;;; compile compilation-disable-input compile-command compilation-search-path 4349;;;;;; compile compilation-disable-input compile-command compilation-search-path
4365;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook 4350;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook
4366;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20615 4351;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20666
4367;;;;;; 49194 141673 0)) 4352;;;;;; 61709 220674 0))
4368;;; Generated autoloads from progmodes/compile.el 4353;;; Generated autoloads from progmodes/compile.el
4369 4354
4370(defvar compilation-mode-hook nil "\ 4355(defvar compilation-mode-hook nil "\
@@ -4546,7 +4531,7 @@ This is the value of `next-error-function' in Compilation buffers.
4546;;;*** 4531;;;***
4547 4532
4548;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el" 4533;;;### (autoloads (dynamic-completion-mode) "completion" "completion.el"
4549;;;;;; (20495 51111 757560 0)) 4534;;;;;; (20533 50312 678915 0))
4550;;; Generated autoloads from completion.el 4535;;; Generated autoloads from completion.el
4551 4536
4552(defvar dynamic-completion-mode nil "\ 4537(defvar dynamic-completion-mode nil "\
@@ -4571,7 +4556,7 @@ if ARG is omitted or nil.
4571;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode 4556;;;### (autoloads (conf-xdefaults-mode conf-ppd-mode conf-colon-mode
4572;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode 4557;;;;;; conf-space-keywords conf-space-mode conf-javaprop-mode conf-windows-mode
4573;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el" 4558;;;;;; conf-unix-mode conf-mode) "conf-mode" "textmodes/conf-mode.el"
4574;;;;;; (20355 10021 546955 0)) 4559;;;;;; (20533 50312 678915 0))
4575;;; Generated autoloads from textmodes/conf-mode.el 4560;;; Generated autoloads from textmodes/conf-mode.el
4576 4561
4577(autoload 'conf-mode "conf-mode" "\ 4562(autoload 'conf-mode "conf-mode" "\
@@ -4727,7 +4712,7 @@ For details see `conf-mode'. Example:
4727;;;*** 4712;;;***
4728 4713
4729;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) 4714;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
4730;;;;;; "cookie1" "play/cookie1.el" (20545 57511 257469 0)) 4715;;;;;; "cookie1" "play/cookie1.el" (20545 60086 510404 0))
4731;;; Generated autoloads from play/cookie1.el 4716;;; Generated autoloads from play/cookie1.el
4732 4717
4733(autoload 'cookie "cookie1" "\ 4718(autoload 'cookie "cookie1" "\
@@ -4759,8 +4744,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
4759;;;*** 4744;;;***
4760 4745
4761;;;### (autoloads (copyright-update-directory copyright copyright-fix-years 4746;;;### (autoloads (copyright-update-directory copyright copyright-fix-years
4762;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20518 4747;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20533
4763;;;;;; 12580 46478 0)) 4748;;;;;; 50312 678915 0))
4764;;; Generated autoloads from emacs-lisp/copyright.el 4749;;; Generated autoloads from emacs-lisp/copyright.el
4765(put 'copyright-at-end-flag 'safe-local-variable 'booleanp) 4750(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
4766(put 'copyright-names-regexp 'safe-local-variable 'stringp) 4751(put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4799,8 +4784,8 @@ If FIX is non-nil, run `copyright-fix-years' instead.
4799;;;*** 4784;;;***
4800 4785
4801;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) 4786;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
4802;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20512 60198 306109 4787;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20665 37088 368703
4803;;;;;; 0)) 4788;;;;;; 981000))
4804;;; Generated autoloads from progmodes/cperl-mode.el 4789;;; Generated autoloads from progmodes/cperl-mode.el
4805(put 'cperl-indent-level 'safe-local-variable 'integerp) 4790(put 'cperl-indent-level 'safe-local-variable 'integerp)
4806(put 'cperl-brace-offset 'safe-local-variable 'integerp) 4791(put 'cperl-brace-offset 'safe-local-variable 'integerp)
@@ -4999,7 +4984,7 @@ Run a `perldoc' on the word around point.
4999;;;*** 4984;;;***
5000 4985
5001;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el" 4986;;;### (autoloads (cpp-parse-edit cpp-highlight-buffer) "cpp" "progmodes/cpp.el"
5002;;;;;; (20355 10021 546955 0)) 4987;;;;;; (20533 50312 678915 0))
5003;;; Generated autoloads from progmodes/cpp.el 4988;;; Generated autoloads from progmodes/cpp.el
5004 4989
5005(autoload 'cpp-highlight-buffer "cpp" "\ 4990(autoload 'cpp-highlight-buffer "cpp" "\
@@ -5018,7 +5003,7 @@ Edit display information for cpp conditionals.
5018;;;*** 5003;;;***
5019 5004
5020;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" 5005;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
5021;;;;;; (20593 22184 581574 0)) 5006;;;;;; (20594 14884 858174 0))
5022;;; Generated autoloads from emulation/crisp.el 5007;;; Generated autoloads from emulation/crisp.el
5023 5008
5024(defvar crisp-mode nil "\ 5009(defvar crisp-mode nil "\
@@ -5044,7 +5029,7 @@ if ARG is omitted or nil.
5044;;;*** 5029;;;***
5045 5030
5046;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el" 5031;;;### (autoloads (completing-read-multiple) "crm" "emacs-lisp/crm.el"
5047;;;;;; (20355 10021 546955 0)) 5032;;;;;; (20533 50312 678915 0))
5048;;; Generated autoloads from emacs-lisp/crm.el 5033;;; Generated autoloads from emacs-lisp/crm.el
5049 5034
5050(autoload 'completing-read-multiple "crm" "\ 5035(autoload 'completing-read-multiple "crm" "\
@@ -5079,8 +5064,8 @@ INHERIT-INPUT-METHOD.
5079 5064
5080;;;*** 5065;;;***
5081 5066
5082;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20478 5067;;;### (autoloads (css-mode) "css-mode" "textmodes/css-mode.el" (20665
5083;;;;;; 3673 653810 0)) 5068;;;;;; 38640 856688 172000))
5084;;; Generated autoloads from textmodes/css-mode.el 5069;;; Generated autoloads from textmodes/css-mode.el
5085 5070
5086(autoload 'css-mode "css-mode" "\ 5071(autoload 'css-mode "css-mode" "\
@@ -5091,7 +5076,7 @@ Major mode to edit Cascading Style Sheets.
5091;;;*** 5076;;;***
5092 5077
5093;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el" 5078;;;### (autoloads (cua-selection-mode cua-mode) "cua-base" "emulation/cua-base.el"
5094;;;;;; (20434 17809 692608 0)) 5079;;;;;; (20533 50312 678915 0))
5095;;; Generated autoloads from emulation/cua-base.el 5080;;; Generated autoloads from emulation/cua-base.el
5096 5081
5097(defvar cua-mode nil "\ 5082(defvar cua-mode nil "\
@@ -5151,7 +5136,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
5151;;;;;; customize-mode customize customize-push-and-save customize-save-variable 5136;;;;;; customize-mode customize customize-push-and-save customize-save-variable
5152;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically 5137;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically
5153;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically) 5138;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically)
5154;;;;;; "cus-edit" "cus-edit.el" (20577 33959 40183 0)) 5139;;;;;; "cus-edit" "cus-edit.el" (20657 37717 602128 837000))
5155;;; Generated autoloads from cus-edit.el 5140;;; Generated autoloads from cus-edit.el
5156 5141
5157(defvar custom-browse-sort-alphabetically nil "\ 5142(defvar custom-browse-sort-alphabetically nil "\
@@ -5463,8 +5448,8 @@ The format is suitable for use with `easy-menu-define'.
5463;;;*** 5448;;;***
5464 5449
5465;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme 5450;;;### (autoloads (customize-themes describe-theme custom-theme-visit-theme
5466;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20355 5451;;;;;; customize-create-theme) "cus-theme" "cus-theme.el" (20533
5467;;;;;; 10021 546955 0)) 5452;;;;;; 50312 678915 0))
5468;;; Generated autoloads from cus-theme.el 5453;;; Generated autoloads from cus-theme.el
5469 5454
5470(autoload 'customize-create-theme "cus-theme" "\ 5455(autoload 'customize-create-theme "cus-theme" "\
@@ -5498,7 +5483,7 @@ omitted, a buffer named *Custom Themes* is used.
5498;;;*** 5483;;;***
5499 5484
5500;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el" 5485;;;### (autoloads (cvs-status-mode) "cvs-status" "vc/cvs-status.el"
5501;;;;;; (20476 31768 298871 0)) 5486;;;;;; (20533 50312 678915 0))
5502;;; Generated autoloads from vc/cvs-status.el 5487;;; Generated autoloads from vc/cvs-status.el
5503 5488
5504(autoload 'cvs-status-mode "cvs-status" "\ 5489(autoload 'cvs-status-mode "cvs-status" "\
@@ -5509,7 +5494,7 @@ Mode used for cvs status output.
5509;;;*** 5494;;;***
5510 5495
5511;;;### (autoloads (global-cwarn-mode cwarn-mode) "cwarn" "progmodes/cwarn.el" 5496;;;### (autoloads (global-cwarn-mode cwarn-mode) "cwarn" "progmodes/cwarn.el"
5512;;;;;; (20577 33959 40183 0)) 5497;;;;;; (20576 15647 691916 958000))
5513;;; Generated autoloads from progmodes/cwarn.el 5498;;; Generated autoloads from progmodes/cwarn.el
5514 5499
5515(autoload 'cwarn-mode "cwarn" "\ 5500(autoload 'cwarn-mode "cwarn" "\
@@ -5554,7 +5539,7 @@ See `cwarn-mode' for more information on Cwarn mode.
5554 5539
5555;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char 5540;;;### (autoloads (standard-display-cyrillic-translit cyrillic-encode-alternativnyj-char
5556;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el" 5541;;;;;; cyrillic-encode-koi8-r-char) "cyril-util" "language/cyril-util.el"
5557;;;;;; (20355 10021 546955 0)) 5542;;;;;; (20533 50312 678915 0))
5558;;; Generated autoloads from language/cyril-util.el 5543;;; Generated autoloads from language/cyril-util.el
5559 5544
5560(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ 5545(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
@@ -5583,7 +5568,7 @@ If the argument is nil, we return the display table to its standard state.
5583;;;*** 5568;;;***
5584 5569
5585;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el" 5570;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
5586;;;;;; (20397 45851 446679 0)) 5571;;;;;; (20533 50312 678915 0))
5587;;; Generated autoloads from dabbrev.el 5572;;; Generated autoloads from dabbrev.el
5588(put 'dabbrev-case-fold-search 'risky-local-variable t) 5573(put 'dabbrev-case-fold-search 'risky-local-variable t)
5589(put 'dabbrev-case-replace 'risky-local-variable t) 5574(put 'dabbrev-case-replace 'risky-local-variable t)
@@ -5630,7 +5615,7 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion].
5630;;;*** 5615;;;***
5631 5616
5632;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el" 5617;;;### (autoloads (data-debug-new-buffer) "data-debug" "cedet/data-debug.el"
5633;;;;;; (20586 48936 135199 0)) 5618;;;;;; (20585 42247 727488 570000))
5634;;; Generated autoloads from cedet/data-debug.el 5619;;; Generated autoloads from cedet/data-debug.el
5635 5620
5636(autoload 'data-debug-new-buffer "data-debug" "\ 5621(autoload 'data-debug-new-buffer "data-debug" "\
@@ -5640,8 +5625,8 @@ Create a new data-debug buffer with NAME.
5640 5625
5641;;;*** 5626;;;***
5642 5627
5643;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20614 5628;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20615
5644;;;;;; 54428 654267 0)) 5629;;;;;; 22847 537904 0))
5645;;; Generated autoloads from net/dbus.el 5630;;; Generated autoloads from net/dbus.el
5646 5631
5647(autoload 'dbus-handle-event "dbus" "\ 5632(autoload 'dbus-handle-event "dbus" "\
@@ -5654,8 +5639,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message.
5654 5639
5655;;;*** 5640;;;***
5656 5641
5657;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20355 5642;;;### (autoloads (dcl-mode) "dcl-mode" "progmodes/dcl-mode.el" (20533
5658;;;;;; 10021 546955 0)) 5643;;;;;; 50312 678915 0))
5659;;; Generated autoloads from progmodes/dcl-mode.el 5644;;; Generated autoloads from progmodes/dcl-mode.el
5660 5645
5661(autoload 'dcl-mode "dcl-mode" "\ 5646(autoload 'dcl-mode "dcl-mode" "\
@@ -5782,7 +5767,7 @@ There is some minimal font-lock support (see vars
5782;;;*** 5767;;;***
5783 5768
5784;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug" 5769;;;### (autoloads (cancel-debug-on-entry debug-on-entry debug) "debug"
5785;;;;;; "emacs-lisp/debug.el" (20609 10405 476026 0)) 5770;;;;;; "emacs-lisp/debug.el" (20647 7982 429263 0))
5786;;; Generated autoloads from emacs-lisp/debug.el 5771;;; Generated autoloads from emacs-lisp/debug.el
5787 5772
5788(setq debugger 'debug) 5773(setq debugger 'debug)
@@ -5796,7 +5781,7 @@ You may call with no args, or you may pass nil as the first arg and
5796any other args you like. In that case, the list of args after the 5781any other args you like. In that case, the list of args after the
5797first will be printed into the backtrace buffer. 5782first will be printed into the backtrace buffer.
5798 5783
5799\(fn &rest DEBUGGER-ARGS)" t nil) 5784\(fn &rest ARGS)" t nil)
5800 5785
5801(autoload 'debug-on-entry "debug" "\ 5786(autoload 'debug-on-entry "debug" "\
5802Request FUNCTION to invoke debugger each time it is called. 5787Request FUNCTION to invoke debugger each time it is called.
@@ -5826,7 +5811,7 @@ To specify a nil argument interactively, exit with an empty minibuffer.
5826;;;*** 5811;;;***
5827 5812
5828;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el" 5813;;;### (autoloads (decipher-mode decipher) "decipher" "play/decipher.el"
5829;;;;;; (20566 63671 243798 0)) 5814;;;;;; (20566 45330 762583 402000))
5830;;; Generated autoloads from play/decipher.el 5815;;; Generated autoloads from play/decipher.el
5831 5816
5832(autoload 'decipher "decipher" "\ 5817(autoload 'decipher "decipher" "\
@@ -5855,8 +5840,8 @@ The most useful commands are:
5855;;;*** 5840;;;***
5856 5841
5857;;;### (autoloads (delimit-columns-rectangle delimit-columns-region 5842;;;### (autoloads (delimit-columns-rectangle delimit-columns-region
5858;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20355 5843;;;;;; delimit-columns-customize) "delim-col" "delim-col.el" (20533
5859;;;;;; 10021 546955 0)) 5844;;;;;; 50312 678915 0))
5860;;; Generated autoloads from delim-col.el 5845;;; Generated autoloads from delim-col.el
5861 5846
5862(autoload 'delimit-columns-customize "delim-col" "\ 5847(autoload 'delimit-columns-customize "delim-col" "\
@@ -5880,8 +5865,8 @@ START and END delimits the corners of text rectangle.
5880 5865
5881;;;*** 5866;;;***
5882 5867
5883;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20355 5868;;;### (autoloads (delphi-mode) "delphi" "progmodes/delphi.el" (20533
5884;;;;;; 10021 546955 0)) 5869;;;;;; 50312 678915 0))
5885;;; Generated autoloads from progmodes/delphi.el 5870;;; Generated autoloads from progmodes/delphi.el
5886 5871
5887(autoload 'delphi-mode "delphi" "\ 5872(autoload 'delphi-mode "delphi" "\
@@ -5933,7 +5918,7 @@ with no args, if that value is non-nil.
5933;;;*** 5918;;;***
5934 5919
5935;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20613 5920;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20613
5936;;;;;; 49078 764749 0)) 5921;;;;;; 39767 44650 0))
5937;;; Generated autoloads from delsel.el 5922;;; Generated autoloads from delsel.el
5938 5923
5939(defalias 'pending-delete-mode 'delete-selection-mode) 5924(defalias 'pending-delete-mode 'delete-selection-mode)
@@ -5963,7 +5948,7 @@ any selection.
5963;;;*** 5948;;;***
5964 5949
5965;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode) 5950;;;### (autoloads (derived-mode-init-mode-variables define-derived-mode)
5966;;;;;; "derived" "emacs-lisp/derived.el" (20577 33959 40183 0)) 5951;;;;;; "derived" "emacs-lisp/derived.el" (20661 34503 396141 0))
5967;;; Generated autoloads from emacs-lisp/derived.el 5952;;; Generated autoloads from emacs-lisp/derived.el
5968 5953
5969(autoload 'define-derived-mode "derived" "\ 5954(autoload 'define-derived-mode "derived" "\
@@ -6030,7 +6015,7 @@ the first time the mode is used.
6030;;;*** 6015;;;***
6031 6016
6032;;;### (autoloads (describe-char describe-text-properties) "descr-text" 6017;;;### (autoloads (describe-char describe-text-properties) "descr-text"
6033;;;;;; "descr-text.el" (20530 32114 546307 0)) 6018;;;;;; "descr-text.el" (20660 26176 137583 0))
6034;;; Generated autoloads from descr-text.el 6019;;; Generated autoloads from descr-text.el
6035 6020
6036(autoload 'describe-text-properties "descr-text" "\ 6021(autoload 'describe-text-properties "descr-text" "\
@@ -6067,7 +6052,7 @@ relevant to POS.
6067;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir 6052;;;### (autoloads (desktop-revert desktop-save-in-desktop-dir desktop-change-dir
6068;;;;;; desktop-load-default desktop-read desktop-remove desktop-save 6053;;;;;; desktop-load-default desktop-read desktop-remove desktop-save
6069;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop" 6054;;;;;; desktop-clear desktop-locals-to-save desktop-save-mode) "desktop"
6070;;;;;; "desktop.el" (20577 33959 40183 0)) 6055;;;;;; "desktop.el" (20664 5610 38100 0))
6071;;; Generated autoloads from desktop.el 6056;;; Generated autoloads from desktop.el
6072 6057
6073(defvar desktop-save-mode nil "\ 6058(defvar desktop-save-mode nil "\
@@ -6256,7 +6241,7 @@ Revert to the last loaded desktop.
6256 6241
6257;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article 6242;;;### (autoloads (gnus-article-outlook-deuglify-article gnus-outlook-deuglify-article
6258;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines) 6243;;;;;; gnus-article-outlook-repair-attribution gnus-article-outlook-unwrap-lines)
6259;;;;;; "deuglify" "gnus/deuglify.el" (20355 10021 546955 0)) 6244;;;;;; "deuglify" "gnus/deuglify.el" (20533 50312 678915 0))
6260;;; Generated autoloads from gnus/deuglify.el 6245;;; Generated autoloads from gnus/deuglify.el
6261 6246
6262(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\ 6247(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
@@ -6289,7 +6274,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
6289;;;*** 6274;;;***
6290 6275
6291;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" 6276;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
6292;;;;;; "calendar/diary-lib.el" (20576 42138 697312 0)) 6277;;;;;; "calendar/diary-lib.el" (20668 15033 902481 0))
6293;;; Generated autoloads from calendar/diary-lib.el 6278;;; Generated autoloads from calendar/diary-lib.el
6294 6279
6295(autoload 'diary "diary-lib" "\ 6280(autoload 'diary "diary-lib" "\
@@ -6333,7 +6318,7 @@ Major mode for editing the diary file.
6333 6318
6334;;;### (autoloads (diff-buffer-with-file diff-latest-backup-file 6319;;;### (autoloads (diff-buffer-with-file diff-latest-backup-file
6335;;;;;; diff-backup diff diff-command diff-switches) "diff" "vc/diff.el" 6320;;;;;; diff-backup diff diff-command diff-switches) "diff" "vc/diff.el"
6336;;;;;; (20570 60708 993668 0)) 6321;;;;;; (20570 39802 408146 846000))
6337;;; Generated autoloads from vc/diff.el 6322;;; Generated autoloads from vc/diff.el
6338 6323
6339(defvar diff-switches (purecopy "-c") "\ 6324(defvar diff-switches (purecopy "-c") "\
@@ -6382,7 +6367,7 @@ This requires the external program `diff' to be in your `exec-path'.
6382;;;*** 6367;;;***
6383 6368
6384;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el" 6369;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el"
6385;;;;;; (20623 43301 870757 0)) 6370;;;;;; (20650 61396 673885 0))
6386;;; Generated autoloads from vc/diff-mode.el 6371;;; Generated autoloads from vc/diff-mode.el
6387 6372
6388(autoload 'diff-mode "diff-mode" "\ 6373(autoload 'diff-mode "diff-mode" "\
@@ -6414,7 +6399,7 @@ the mode if ARG is omitted or nil.
6414 6399
6415;;;*** 6400;;;***
6416 6401
6417;;;### (autoloads (dig) "dig" "net/dig.el" (20355 10021 546955 0)) 6402;;;### (autoloads (dig) "dig" "net/dig.el" (20533 50312 678915 0))
6418;;; Generated autoloads from net/dig.el 6403;;; Generated autoloads from net/dig.el
6419 6404
6420(autoload 'dig "dig" "\ 6405(autoload 'dig "dig" "\
@@ -6426,8 +6411,8 @@ Optional arguments are passed to `dig-invoke'.
6426;;;*** 6411;;;***
6427 6412
6428;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window 6413;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window
6429;;;;;; dired dired-listing-switches) "dired" "dired.el" (20619 46245 6414;;;;;; dired dired-listing-switches) "dired" "dired.el" (20656 14460
6430;;;;;; 806932 0)) 6415;;;;;; 296991 0))
6431;;; Generated autoloads from dired.el 6416;;; Generated autoloads from dired.el
6432 6417
6433(defvar dired-listing-switches (purecopy "-al") "\ 6418(defvar dired-listing-switches (purecopy "-al") "\
@@ -6548,7 +6533,7 @@ Keybindings:
6548;;;*** 6533;;;***
6549 6534
6550;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el" 6535;;;### (autoloads (dirtrack dirtrack-mode) "dirtrack" "dirtrack.el"
6551;;;;;; (20399 35365 4050 0)) 6536;;;;;; (20648 29678 511980 0))
6552;;; Generated autoloads from dirtrack.el 6537;;; Generated autoloads from dirtrack.el
6553 6538
6554(autoload 'dirtrack-mode "dirtrack" "\ 6539(autoload 'dirtrack-mode "dirtrack" "\
@@ -6578,8 +6563,8 @@ from `default-directory'.
6578 6563
6579;;;*** 6564;;;***
6580 6565
6581;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20497 6566;;;### (autoloads (disassemble) "disass" "emacs-lisp/disass.el" (20533
6582;;;;;; 6436 957082 0)) 6567;;;;;; 50312 678915 0))
6583;;; Generated autoloads from emacs-lisp/disass.el 6568;;; Generated autoloads from emacs-lisp/disass.el
6584 6569
6585(autoload 'disassemble "disass" "\ 6570(autoload 'disassemble "disass" "\
@@ -6598,7 +6583,7 @@ redefine OBJECT if it is a symbol.
6598;;;;;; standard-display-g1 standard-display-ascii standard-display-default 6583;;;;;; standard-display-g1 standard-display-ascii standard-display-default
6599;;;;;; standard-display-8bit describe-current-display-table describe-display-table 6584;;;;;; standard-display-8bit describe-current-display-table describe-display-table
6600;;;;;; set-display-table-slot display-table-slot make-display-table) 6585;;;;;; set-display-table-slot display-table-slot make-display-table)
6601;;;;;; "disp-table" "disp-table.el" (20355 10021 546955 0)) 6586;;;;;; "disp-table" "disp-table.el" (20533 50312 678915 0))
6602;;; Generated autoloads from disp-table.el 6587;;; Generated autoloads from disp-table.el
6603 6588
6604(autoload 'make-display-table "disp-table" "\ 6589(autoload 'make-display-table "disp-table" "\
@@ -6720,7 +6705,7 @@ in `.emacs'.
6720;;;*** 6705;;;***
6721 6706
6722;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" 6707;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
6723;;;;;; (20545 57511 257469 0)) 6708;;;;;; (20545 60086 510404 0))
6724;;; Generated autoloads from play/dissociate.el 6709;;; Generated autoloads from play/dissociate.el
6725 6710
6726(autoload 'dissociated-press "dissociate" "\ 6711(autoload 'dissociated-press "dissociate" "\
@@ -6736,8 +6721,8 @@ Default is 2.
6736 6721
6737;;;*** 6722;;;***
6738 6723
6739;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20355 10021 6724;;;### (autoloads (dnd-protocol-alist) "dnd" "dnd.el" (20533 50312
6740;;;;;; 546955 0)) 6725;;;;;; 678915 0))
6741;;; Generated autoloads from dnd.el 6726;;; Generated autoloads from dnd.el
6742 6727
6743(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\ 6728(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
@@ -6758,7 +6743,7 @@ if some action was made, or nil if the URL is ignored.")
6758;;;*** 6743;;;***
6759 6744
6760;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode" 6745;;;### (autoloads (dns-mode-soa-increment-serial dns-mode) "dns-mode"
6761;;;;;; "textmodes/dns-mode.el" (20355 10021 546955 0)) 6746;;;;;; "textmodes/dns-mode.el" (20533 50312 678915 0))
6762;;; Generated autoloads from textmodes/dns-mode.el 6747;;; Generated autoloads from textmodes/dns-mode.el
6763 6748
6764(autoload 'dns-mode "dns-mode" "\ 6749(autoload 'dns-mode "dns-mode" "\
@@ -6782,8 +6767,8 @@ Locate SOA record and increment the serial field.
6782;;;*** 6767;;;***
6783 6768
6784;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe 6769;;;### (autoloads (doc-view-bookmark-jump doc-view-minor-mode doc-view-mode-maybe
6785;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20581 6770;;;;;; doc-view-mode doc-view-mode-p) "doc-view" "doc-view.el" (20584
6786;;;;;; 31014 234484 0)) 6771;;;;;; 355 183605 0))
6787;;; Generated autoloads from doc-view.el 6772;;; Generated autoloads from doc-view.el
6788 6773
6789(autoload 'doc-view-mode-p "doc-view" "\ 6774(autoload 'doc-view-mode-p "doc-view" "\
@@ -6829,8 +6814,8 @@ See the command `doc-view-mode' for more information on this mode.
6829 6814
6830;;;*** 6815;;;***
6831 6816
6832;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 57511 6817;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 60086
6833;;;;;; 257469 0)) 6818;;;;;; 510404 0))
6834;;; Generated autoloads from play/doctor.el 6819;;; Generated autoloads from play/doctor.el
6835 6820
6836(autoload 'doctor "doctor" "\ 6821(autoload 'doctor "doctor" "\
@@ -6840,8 +6825,8 @@ Switch to *doctor* buffer and start giving psychotherapy.
6840 6825
6841;;;*** 6826;;;***
6842 6827
6843;;;### (autoloads (double-mode) "double" "double.el" (20355 10021 6828;;;### (autoloads (double-mode) "double" "double.el" (20533 50312
6844;;;;;; 546955 0)) 6829;;;;;; 678915 0))
6845;;; Generated autoloads from double.el 6830;;; Generated autoloads from double.el
6846 6831
6847(autoload 'double-mode "double" "\ 6832(autoload 'double-mode "double" "\
@@ -6857,8 +6842,8 @@ strings when pressed twice. See `double-map' for details.
6857 6842
6858;;;*** 6843;;;***
6859 6844
6860;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 57511 6845;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 60086
6861;;;;;; 257469 0)) 6846;;;;;; 510404 0))
6862;;; Generated autoloads from play/dunnet.el 6847;;; Generated autoloads from play/dunnet.el
6863 6848
6864(autoload 'dunnet "dunnet" "\ 6849(autoload 'dunnet "dunnet" "\
@@ -6870,7 +6855,7 @@ Switch to *dungeon* buffer and start game.
6870 6855
6871;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap 6856;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
6872;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode" 6857;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
6873;;;;;; "emacs-lisp/easy-mmode.el" (20574 57775 217760 0)) 6858;;;;;; "emacs-lisp/easy-mmode.el" (20573 55237 806451 754000))
6874;;; Generated autoloads from emacs-lisp/easy-mmode.el 6859;;; Generated autoloads from emacs-lisp/easy-mmode.el
6875 6860
6876(defalias 'easy-mmode-define-minor-mode 'define-minor-mode) 6861(defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
@@ -7006,7 +6991,7 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
7006 6991
7007;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define 6992;;;### (autoloads (easy-menu-change easy-menu-create-menu easy-menu-do-define
7008;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20615 6993;;;;;; easy-menu-define) "easymenu" "emacs-lisp/easymenu.el" (20615
7009;;;;;; 49194 141673 0)) 6994;;;;;; 25856 794590 959000))
7010;;; Generated autoloads from emacs-lisp/easymenu.el 6995;;; Generated autoloads from emacs-lisp/easymenu.el
7011 6996
7012(autoload 'easy-menu-define "easymenu" "\ 6997(autoload 'easy-menu-define "easymenu" "\
@@ -7151,7 +7136,7 @@ To implement dynamic menus, either call this from
7151;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer 7136;;;;;; ebnf-eps-file ebnf-eps-directory ebnf-spool-region ebnf-spool-buffer
7152;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer 7137;;;;;; ebnf-spool-file ebnf-spool-directory ebnf-print-region ebnf-print-buffer
7153;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps" 7138;;;;;; ebnf-print-file ebnf-print-directory ebnf-customize) "ebnf2ps"
7154;;;;;; "progmodes/ebnf2ps.el" (20566 63671 243798 0)) 7139;;;;;; "progmodes/ebnf2ps.el" (20566 46586 454636 778000))
7155;;; Generated autoloads from progmodes/ebnf2ps.el 7140;;; Generated autoloads from progmodes/ebnf2ps.el
7156 7141
7157(autoload 'ebnf-customize "ebnf2ps" "\ 7142(autoload 'ebnf-customize "ebnf2ps" "\
@@ -7425,8 +7410,8 @@ See `ebnf-style-database' documentation.
7425;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition 7410;;;;;; ebrowse-tags-find-declaration-other-window ebrowse-tags-find-definition
7426;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration 7411;;;;;; ebrowse-tags-view-definition ebrowse-tags-find-declaration
7427;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree 7412;;;;;; ebrowse-tags-view-declaration ebrowse-member-mode ebrowse-electric-choose-tree
7428;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20561 7413;;;;;; ebrowse-tree-mode) "ebrowse" "progmodes/ebrowse.el" (20562
7429;;;;;; 18280 338092 0)) 7414;;;;;; 52650 563777 0))
7430;;; Generated autoloads from progmodes/ebrowse.el 7415;;; Generated autoloads from progmodes/ebrowse.el
7431 7416
7432(autoload 'ebrowse-tree-mode "ebrowse" "\ 7417(autoload 'ebrowse-tree-mode "ebrowse" "\
@@ -7575,7 +7560,7 @@ Display statistics for a class tree.
7575;;;*** 7560;;;***
7576 7561
7577;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" 7562;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
7578;;;;;; (20523 62082 997685 0)) 7563;;;;;; (20533 50312 678915 0))
7579;;; Generated autoloads from ebuff-menu.el 7564;;; Generated autoloads from ebuff-menu.el
7580 7565
7581(autoload 'electric-buffer-list "ebuff-menu" "\ 7566(autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7608,7 +7593,7 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry.
7608;;;*** 7593;;;***
7609 7594
7610;;;### (autoloads (Electric-command-history-redo-expression) "echistory" 7595;;;### (autoloads (Electric-command-history-redo-expression) "echistory"
7611;;;;;; "echistory.el" (20355 10021 546955 0)) 7596;;;;;; "echistory.el" (20533 50312 678915 0))
7612;;; Generated autoloads from echistory.el 7597;;; Generated autoloads from echistory.el
7613 7598
7614(autoload 'Electric-command-history-redo-expression "echistory" "\ 7599(autoload 'Electric-command-history-redo-expression "echistory" "\
@@ -7620,7 +7605,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
7620;;;*** 7605;;;***
7621 7606
7622;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el" 7607;;;### (autoloads (ecomplete-setup) "ecomplete" "gnus/ecomplete.el"
7623;;;;;; (20355 10021 546955 0)) 7608;;;;;; (20533 50312 678915 0))
7624;;; Generated autoloads from gnus/ecomplete.el 7609;;; Generated autoloads from gnus/ecomplete.el
7625 7610
7626(autoload 'ecomplete-setup "ecomplete" "\ 7611(autoload 'ecomplete-setup "ecomplete" "\
@@ -7630,8 +7615,8 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
7630 7615
7631;;;*** 7616;;;***
7632 7617
7633;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 45996 7618;;;### (autoloads (global-ede-mode) "ede" "cedet/ede.el" (20590 37036
7634;;;;;; 129575 0)) 7619;;;;;; 437844 0))
7635;;; Generated autoloads from cedet/ede.el 7620;;; Generated autoloads from cedet/ede.el
7636 7621
7637(defvar global-ede-mode nil "\ 7622(defvar global-ede-mode nil "\
@@ -7658,7 +7643,7 @@ an EDE controlled project.
7658 7643
7659;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form 7644;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
7660;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" 7645;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
7661;;;;;; "emacs-lisp/edebug.el" (20594 43050 277913 0)) 7646;;;;;; "emacs-lisp/edebug.el" (20652 52617 313760 0))
7662;;; Generated autoloads from emacs-lisp/edebug.el 7647;;; Generated autoloads from emacs-lisp/edebug.el
7663 7648
7664(defvar edebug-all-defs nil "\ 7649(defvar edebug-all-defs nil "\
@@ -7731,8 +7716,8 @@ Toggle edebugging of all forms.
7731;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories 7716;;;;;; ediff-merge-directories-with-ancestor ediff-merge-directories
7732;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories 7717;;;;;; ediff-directories3 ediff-directory-revisions ediff-directories
7733;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file 7718;;;;;; ediff-buffers3 ediff-buffers ediff-backup ediff-current-file
7734;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20495 51111 7719;;;;;; ediff-files3 ediff-files) "ediff" "vc/ediff.el" (20533 50312
7735;;;;;; 757560 0)) 7720;;;;;; 678915 0))
7736;;; Generated autoloads from vc/ediff.el 7721;;; Generated autoloads from vc/ediff.el
7737 7722
7738(autoload 'ediff-files "ediff" "\ 7723(autoload 'ediff-files "ediff" "\
@@ -7964,7 +7949,7 @@ With optional NODE, goes to that node.
7964;;;*** 7949;;;***
7965 7950
7966;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el" 7951;;;### (autoloads (ediff-customize) "ediff-help" "vc/ediff-help.el"
7967;;;;;; (20355 10021 546955 0)) 7952;;;;;; (20533 50312 678915 0))
7968;;; Generated autoloads from vc/ediff-help.el 7953;;; Generated autoloads from vc/ediff-help.el
7969 7954
7970(autoload 'ediff-customize "ediff-help" "\ 7955(autoload 'ediff-customize "ediff-help" "\
@@ -7975,7 +7960,7 @@ With optional NODE, goes to that node.
7975;;;*** 7960;;;***
7976 7961
7977;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el" 7962;;;### (autoloads (ediff-show-registry) "ediff-mult" "vc/ediff-mult.el"
7978;;;;;; (20614 54428 654267 0)) 7963;;;;;; (20615 22847 537904 0))
7979;;; Generated autoloads from vc/ediff-mult.el 7964;;; Generated autoloads from vc/ediff-mult.el
7980 7965
7981(autoload 'ediff-show-registry "ediff-mult" "\ 7966(autoload 'ediff-show-registry "ediff-mult" "\
@@ -7988,7 +7973,7 @@ Display Ediff's registry.
7988;;;*** 7973;;;***
7989 7974
7990;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe) 7975;;;### (autoloads (ediff-toggle-use-toolbar ediff-toggle-multiframe)
7991;;;;;; "ediff-util" "vc/ediff-util.el" (20584 7212 455152 0)) 7976;;;;;; "ediff-util" "vc/ediff-util.el" (20584 355 183605 0))
7992;;; Generated autoloads from vc/ediff-util.el 7977;;; Generated autoloads from vc/ediff-util.el
7993 7978
7994(autoload 'ediff-toggle-multiframe "ediff-util" "\ 7979(autoload 'ediff-toggle-multiframe "ediff-util" "\
@@ -8009,7 +7994,7 @@ To change the default, set the variable `ediff-use-toolbar-p', which see.
8009 7994
8010;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro 7995;;;### (autoloads (format-kbd-macro read-kbd-macro edit-named-kbd-macro
8011;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el" 7996;;;;;; edit-last-kbd-macro edit-kbd-macro) "edmacro" "edmacro.el"
8012;;;;;; (20476 31768 298871 0)) 7997;;;;;; (20533 50312 678915 0))
8013;;; Generated autoloads from edmacro.el 7998;;; Generated autoloads from edmacro.el
8014 7999
8015(autoload 'edit-kbd-macro "edmacro" "\ 8000(autoload 'edit-kbd-macro "edmacro" "\
@@ -8058,7 +8043,7 @@ or nil, use a compact 80-column format.
8058;;;*** 8043;;;***
8059 8044
8060;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt" 8045;;;### (autoloads (edt-emulation-on edt-set-scroll-margins) "edt"
8061;;;;;; "emulation/edt.el" (20566 63671 243798 0)) 8046;;;;;; "emulation/edt.el" (20566 46383 798627 826000))
8062;;; Generated autoloads from emulation/edt.el 8047;;; Generated autoloads from emulation/edt.el
8063 8048
8064(autoload 'edt-set-scroll-margins "edt" "\ 8049(autoload 'edt-set-scroll-margins "edt" "\
@@ -8076,7 +8061,7 @@ Turn on EDT Emulation.
8076;;;*** 8061;;;***
8077 8062
8078;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el" 8063;;;### (autoloads (electric-helpify with-electric-help) "ehelp" "ehelp.el"
8079;;;;;; (20593 22184 581574 0)) 8064;;;;;; (20594 14884 858174 0))
8080;;; Generated autoloads from ehelp.el 8065;;; Generated autoloads from ehelp.el
8081 8066
8082(autoload 'with-electric-help "ehelp" "\ 8067(autoload 'with-electric-help "ehelp" "\
@@ -8113,7 +8098,7 @@ BUFFER is put back into its original major mode.
8113;;;*** 8098;;;***
8114 8099
8115;;;### (autoloads (customize-object) "eieio-custom" "emacs-lisp/eieio-custom.el" 8100;;;### (autoloads (customize-object) "eieio-custom" "emacs-lisp/eieio-custom.el"
8116;;;;;; (20586 48936 135199 0)) 8101;;;;;; (20585 42108 911494 670000))
8117;;; Generated autoloads from emacs-lisp/eieio-custom.el 8102;;; Generated autoloads from emacs-lisp/eieio-custom.el
8118 8103
8119(autoload 'customize-object "eieio-custom" "\ 8104(autoload 'customize-object "eieio-custom" "\
@@ -8126,7 +8111,7 @@ Optional argument GROUP is the sub-group of slots to display.
8126 8111
8127;;;### (autoloads (eieio-describe-generic eieio-describe-constructor 8112;;;### (autoloads (eieio-describe-generic eieio-describe-constructor
8128;;;;;; eieio-describe-class eieio-browse) "eieio-opt" "emacs-lisp/eieio-opt.el" 8113;;;;;; eieio-describe-class eieio-browse) "eieio-opt" "emacs-lisp/eieio-opt.el"
8129;;;;;; (20617 41641 89638 0)) 8114;;;;;; (20619 27099 673959 0))
8130;;; Generated autoloads from emacs-lisp/eieio-opt.el 8115;;; Generated autoloads from emacs-lisp/eieio-opt.el
8131 8116
8132(autoload 'eieio-browse "eieio-opt" "\ 8117(autoload 'eieio-browse "eieio-opt" "\
@@ -8160,7 +8145,7 @@ Also extracts information about all methods specific to this generic.
8160;;;*** 8145;;;***
8161 8146
8162;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string) 8147;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
8163;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20355 10021 546955 0)) 8148;;;;;; "eldoc" "emacs-lisp/eldoc.el" (20533 50312 678915 0))
8164;;; Generated autoloads from emacs-lisp/eldoc.el 8149;;; Generated autoloads from emacs-lisp/eldoc.el
8165 8150
8166(defvar eldoc-minor-mode-string (purecopy " ElDoc") "\ 8151(defvar eldoc-minor-mode-string (purecopy " ElDoc") "\
@@ -8207,7 +8192,7 @@ Emacs Lisp mode) that support ElDoc.")
8207;;;*** 8192;;;***
8208 8193
8209;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode) 8194;;;### (autoloads (electric-layout-mode electric-pair-mode electric-indent-mode)
8210;;;;;; "electric" "electric.el" (20613 49078 764749 0)) 8195;;;;;; "electric" "electric.el" (20613 39767 44650 0))
8211;;; Generated autoloads from electric.el 8196;;; Generated autoloads from electric.el
8212 8197
8213(defvar electric-indent-chars '(10) "\ 8198(defvar electric-indent-chars '(10) "\
@@ -8277,8 +8262,8 @@ The variable `electric-layout-rules' says when and how to insert newlines.
8277 8262
8278;;;*** 8263;;;***
8279 8264
8280;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20355 8265;;;### (autoloads (elide-head) "elide-head" "elide-head.el" (20533
8281;;;;;; 10021 546955 0)) 8266;;;;;; 50312 678915 0))
8282;;; Generated autoloads from elide-head.el 8267;;; Generated autoloads from elide-head.el
8283 8268
8284(autoload 'elide-head "elide-head" "\ 8269(autoload 'elide-head "elide-head" "\
@@ -8295,7 +8280,7 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks.
8295 8280
8296;;;### (autoloads (elint-initialize elint-defun elint-current-buffer 8281;;;### (autoloads (elint-initialize elint-defun elint-current-buffer
8297;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el" 8282;;;;;; elint-directory elint-file) "elint" "emacs-lisp/elint.el"
8298;;;;;; (20486 36135 22104 0)) 8283;;;;;; (20533 50312 678915 0))
8299;;; Generated autoloads from emacs-lisp/elint.el 8284;;; Generated autoloads from emacs-lisp/elint.el
8300 8285
8301(autoload 'elint-file "elint" "\ 8286(autoload 'elint-file "elint" "\
@@ -8331,8 +8316,8 @@ optional prefix argument REINIT is non-nil.
8331;;;*** 8316;;;***
8332 8317
8333;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list 8318;;;### (autoloads (elp-results elp-instrument-package elp-instrument-list
8334;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20497 8319;;;;;; elp-instrument-function) "elp" "emacs-lisp/elp.el" (20647
8335;;;;;; 6436 957082 0)) 8320;;;;;; 7982 429263 0))
8336;;; Generated autoloads from emacs-lisp/elp.el 8321;;; Generated autoloads from emacs-lisp/elp.el
8337 8322
8338(autoload 'elp-instrument-function "elp" "\ 8323(autoload 'elp-instrument-function "elp" "\
@@ -8367,7 +8352,7 @@ displayed.
8367;;;*** 8352;;;***
8368 8353
8369;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el" 8354;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el"
8370;;;;;; (20577 33959 40183 0)) 8355;;;;;; (20574 60091 377598 17000))
8371;;; Generated autoloads from emacs-lock.el 8356;;; Generated autoloads from emacs-lock.el
8372 8357
8373(autoload 'emacs-lock-mode "emacs-lock" "\ 8358(autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8394,8 +8379,8 @@ Other values are interpreted as usual.
8394 8379
8395;;;*** 8380;;;***
8396 8381
8397;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug) 8382;;;### (autoloads (report-emacs-bug) "emacsbug" "mail/emacsbug.el"
8398;;;;;; "emacsbug" "mail/emacsbug.el" (20576 13095 881042 0)) 8383;;;;;; (20647 7982 429263 0))
8399;;; Generated autoloads from mail/emacsbug.el 8384;;; Generated autoloads from mail/emacsbug.el
8400 8385
8401(autoload 'report-emacs-bug "emacsbug" "\ 8386(autoload 'report-emacs-bug "emacsbug" "\
@@ -8404,19 +8389,13 @@ Prompts for bug subject. Leaves you in a mail buffer.
8404 8389
8405\(fn TOPIC &optional RECENT-KEYS)" t nil) 8390\(fn TOPIC &optional RECENT-KEYS)" t nil)
8406 8391
8407(autoload 'report-emacs-bug-query-existing-bugs "emacsbug" "\
8408Query for KEYWORDS at `report-emacs-bug-tracker-url', and return the result.
8409The result is an alist with items of the form (URL SUBJECT NO).
8410
8411\(fn KEYWORDS)" t nil)
8412
8413;;;*** 8392;;;***
8414 8393
8415;;;### (autoloads (emerge-merge-directories emerge-revisions-with-ancestor 8394;;;### (autoloads (emerge-merge-directories emerge-revisions-with-ancestor
8416;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote 8395;;;;;; emerge-revisions emerge-files-with-ancestor-remote emerge-files-remote
8417;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor 8396;;;;;; emerge-files-with-ancestor-command emerge-files-command emerge-buffers-with-ancestor
8418;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge" 8397;;;;;; emerge-buffers emerge-files-with-ancestor emerge-files) "emerge"
8419;;;;;; "vc/emerge.el" (20576 42138 697312 0)) 8398;;;;;; "vc/emerge.el" (20576 20472 112114 850000))
8420;;; Generated autoloads from vc/emerge.el 8399;;; Generated autoloads from vc/emerge.el
8421 8400
8422(autoload 'emerge-files "emerge" "\ 8401(autoload 'emerge-files "emerge" "\
@@ -8477,7 +8456,7 @@ Emerge two RCS revisions of a file, with another revision as ancestor.
8477;;;*** 8456;;;***
8478 8457
8479;;;### (autoloads (enriched-decode enriched-encode enriched-mode) 8458;;;### (autoloads (enriched-decode enriched-encode enriched-mode)
8480;;;;;; "enriched" "textmodes/enriched.el" (20461 32935 300400 0)) 8459;;;;;; "enriched" "textmodes/enriched.el" (20533 50312 678915 0))
8481;;; Generated autoloads from textmodes/enriched.el 8460;;; Generated autoloads from textmodes/enriched.el
8482 8461
8483(autoload 'enriched-mode "enriched" "\ 8462(autoload 'enriched-mode "enriched" "\
@@ -8518,7 +8497,7 @@ Commands:
8518;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file 8497;;;;;; epa-decrypt-armor-in-region epa-decrypt-region epa-encrypt-file
8519;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys 8498;;;;;; epa-sign-file epa-verify-file epa-decrypt-file epa-select-keys
8520;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20577 8499;;;;;; epa-list-secret-keys epa-list-keys) "epa" "epa.el" (20577
8521;;;;;; 33959 40183 0)) 8500;;;;;; 6050 709767 255000))
8522;;; Generated autoloads from epa.el 8501;;; Generated autoloads from epa.el
8523 8502
8524(autoload 'epa-list-keys "epa" "\ 8503(autoload 'epa-list-keys "epa" "\
@@ -8696,8 +8675,8 @@ Insert selected KEYS after the point.
8696;;;*** 8675;;;***
8697 8676
8698;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify 8677;;;### (autoloads (epa-dired-do-encrypt epa-dired-do-sign epa-dired-do-verify
8699;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20355 10021 8678;;;;;; epa-dired-do-decrypt) "epa-dired" "epa-dired.el" (20533 50312
8700;;;;;; 546955 0)) 8679;;;;;; 678915 0))
8701;;; Generated autoloads from epa-dired.el 8680;;; Generated autoloads from epa-dired.el
8702 8681
8703(autoload 'epa-dired-do-decrypt "epa-dired" "\ 8682(autoload 'epa-dired-do-decrypt "epa-dired" "\
@@ -8723,7 +8702,7 @@ Encrypt marked files.
8723;;;*** 8702;;;***
8724 8703
8725;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler) 8704;;;### (autoloads (epa-file-disable epa-file-enable epa-file-handler)
8726;;;;;; "epa-file" "epa-file.el" (20355 10021 546955 0)) 8705;;;;;; "epa-file" "epa-file.el" (20533 50312 678915 0))
8727;;; Generated autoloads from epa-file.el 8706;;; Generated autoloads from epa-file.el
8728 8707
8729(autoload 'epa-file-handler "epa-file" "\ 8708(autoload 'epa-file-handler "epa-file" "\
@@ -8745,7 +8724,7 @@ Encrypt marked files.
8745 8724
8746;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt 8725;;;### (autoloads (epa-global-mail-mode epa-mail-import-keys epa-mail-encrypt
8747;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode) 8726;;;;;; epa-mail-sign epa-mail-verify epa-mail-decrypt epa-mail-mode)
8748;;;;;; "epa-mail" "epa-mail.el" (20566 63671 243798 0)) 8727;;;;;; "epa-mail" "epa-mail.el" (20567 14136 702359 0))
8749;;; Generated autoloads from epa-mail.el 8728;;; Generated autoloads from epa-mail.el
8750 8729
8751(autoload 'epa-mail-mode "epa-mail" "\ 8730(autoload 'epa-mail-mode "epa-mail" "\
@@ -8815,8 +8794,8 @@ if ARG is omitted or nil.
8815 8794
8816;;;*** 8795;;;***
8817 8796
8818;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 33959 8797;;;### (autoloads (epg-make-context) "epg" "epg.el" (20577 6315 457768
8819;;;;;; 40183 0)) 8798;;;;;; 40000))
8820;;; Generated autoloads from epg.el 8799;;; Generated autoloads from epg.el
8821 8800
8822(autoload 'epg-make-context "epg" "\ 8801(autoload 'epg-make-context "epg" "\
@@ -8827,7 +8806,7 @@ Return a context object.
8827;;;*** 8806;;;***
8828 8807
8829;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration) 8808;;;### (autoloads (epg-expand-group epg-check-configuration epg-configuration)
8830;;;;;; "epg-config" "epg-config.el" (20373 11301 906925 0)) 8809;;;;;; "epg-config" "epg-config.el" (20533 50312 678915 0))
8831;;; Generated autoloads from epg-config.el 8810;;; Generated autoloads from epg-config.el
8832 8811
8833(autoload 'epg-configuration "epg-config" "\ 8812(autoload 'epg-configuration "epg-config" "\
@@ -8848,7 +8827,7 @@ Look at CONFIG and try to expand GROUP.
8848;;;*** 8827;;;***
8849 8828
8850;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) 8829;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args)
8851;;;;;; "erc" "erc/erc.el" (20604 29767 397763 0)) 8830;;;;;; "erc" "erc/erc.el" (20666 889 186471 0))
8852;;; Generated autoloads from erc/erc.el 8831;;; Generated autoloads from erc/erc.el
8853 8832
8854(autoload 'erc-select-read-args "erc" "\ 8833(autoload 'erc-select-read-args "erc" "\
@@ -8896,36 +8875,36 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
8896 8875
8897;;;*** 8876;;;***
8898 8877
8899;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20591 8878;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (20592
8900;;;;;; 33616 626144 310000)) 8879;;;;;; 4085 721682 0))
8901;;; Generated autoloads from erc/erc-autoaway.el 8880;;; Generated autoloads from erc/erc-autoaway.el
8902 (autoload 'erc-autoaway-mode "erc-autoaway") 8881 (autoload 'erc-autoaway-mode "erc-autoaway")
8903 8882
8904;;;*** 8883;;;***
8905 8884
8906;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20593 22184 8885;;;### (autoloads nil "erc-button" "erc/erc-button.el" (20594 14884
8907;;;;;; 581574 0)) 8886;;;;;; 858174 0))
8908;;; Generated autoloads from erc/erc-button.el 8887;;; Generated autoloads from erc/erc-button.el
8909 (autoload 'erc-button-mode "erc-button" nil t) 8888 (autoload 'erc-button-mode "erc-button" nil t)
8910 8889
8911;;;*** 8890;;;***
8912 8891
8913;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20591 33616 8892;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (20650 61396
8914;;;;;; 706147 283000)) 8893;;;;;; 673885 0))
8915;;; Generated autoloads from erc/erc-capab.el 8894;;; Generated autoloads from erc/erc-capab.el
8916 (autoload 'erc-capab-identify-mode "erc-capab" nil t) 8895 (autoload 'erc-capab-identify-mode "erc-capab" nil t)
8917 8896
8918;;;*** 8897;;;***
8919 8898
8920;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20591 33616 8899;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (20592 4085
8921;;;;;; 736174 412000)) 8900;;;;;; 721682 0))
8922;;; Generated autoloads from erc/erc-compat.el 8901;;; Generated autoloads from erc/erc-compat.el
8923 (autoload 'erc-define-minor-mode "erc-compat") 8902 (autoload 'erc-define-minor-mode "erc-compat")
8924 8903
8925;;;*** 8904;;;***
8926 8905
8927;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) 8906;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
8928;;;;;; "erc-dcc" "erc/erc-dcc.el" (20591 33616 756180 926000)) 8907;;;;;; "erc-dcc" "erc/erc-dcc.el" (20650 61396 673885 0))
8929;;; Generated autoloads from erc/erc-dcc.el 8908;;; Generated autoloads from erc/erc-dcc.el
8930 (autoload 'erc-dcc-mode "erc-dcc") 8909 (autoload 'erc-dcc-mode "erc-dcc")
8931 8910
@@ -8955,7 +8934,7 @@ that subcommand.
8955;;;*** 8934;;;***
8956 8935
8957;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el" 8936;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el"
8958;;;;;; (20593 22184 581574 0)) 8937;;;;;; (20594 14884 858174 0))
8959;;; Generated autoloads from erc/erc-desktop-notifications.el 8938;;; Generated autoloads from erc/erc-desktop-notifications.el
8960(autoload 'erc-notifications-mode "erc-desktop-notifications" "" t) 8939(autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
8961 8940
@@ -8965,7 +8944,7 @@ that subcommand.
8965;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list 8944;;;;;; erc-ezb-add-session erc-ezb-end-of-session-list erc-ezb-init-session-list
8966;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action 8945;;;;;; erc-ezb-identify erc-ezb-notice-autodetect erc-ezb-lookup-action
8967;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el" 8946;;;;;; erc-ezb-get-login erc-cmd-ezb) "erc-ezbounce" "erc/erc-ezbounce.el"
8968;;;;;; (20591 33616 766161 665000)) 8947;;;;;; (20650 61396 673885 0))
8969;;; Generated autoloads from erc/erc-ezbounce.el 8948;;; Generated autoloads from erc/erc-ezbounce.el
8970 8949
8971(autoload 'erc-cmd-ezb "erc-ezbounce" "\ 8950(autoload 'erc-cmd-ezb "erc-ezbounce" "\
@@ -9027,8 +9006,8 @@ Add EZBouncer convenience functions to ERC.
9027 9006
9028;;;*** 9007;;;***
9029 9008
9030;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20591 9009;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (20592
9031;;;;;; 33616 776163 920000)) 9010;;;;;; 4085 721682 0))
9032;;; Generated autoloads from erc/erc-fill.el 9011;;; Generated autoloads from erc/erc-fill.el
9033 (autoload 'erc-fill-mode "erc-fill" nil t) 9012 (autoload 'erc-fill-mode "erc-fill" nil t)
9034 9013
@@ -9041,7 +9020,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
9041;;;*** 9020;;;***
9042 9021
9043;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd" 9022;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
9044;;;;;; "erc/erc-identd.el" (20591 33616 794740 81000)) 9023;;;;;; "erc/erc-identd.el" (20592 4085 721682 0))
9045;;; Generated autoloads from erc/erc-identd.el 9024;;; Generated autoloads from erc/erc-identd.el
9046 (autoload 'erc-identd-mode "erc-identd") 9025 (autoload 'erc-identd-mode "erc-identd")
9047 9026
@@ -9063,7 +9042,7 @@ system.
9063;;;*** 9042;;;***
9064 9043
9065;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el" 9044;;;### (autoloads (erc-create-imenu-index) "erc-imenu" "erc/erc-imenu.el"
9066;;;;;; (20591 33616 794740 81000)) 9045;;;;;; (20592 4085 721682 0))
9067;;; Generated autoloads from erc/erc-imenu.el 9046;;; Generated autoloads from erc/erc-imenu.el
9068 9047
9069(autoload 'erc-create-imenu-index "erc-imenu" "\ 9048(autoload 'erc-create-imenu-index "erc-imenu" "\
@@ -9073,22 +9052,22 @@ system.
9073 9052
9074;;;*** 9053;;;***
9075 9054
9076;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20591 33616 804732 9055;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20650 61396 673885
9077;;;;;; 878000)) 9056;;;;;; 0))
9078;;; Generated autoloads from erc/erc-join.el 9057;;; Generated autoloads from erc/erc-join.el
9079 (autoload 'erc-autojoin-mode "erc-join" nil t) 9058 (autoload 'erc-autojoin-mode "erc-join" nil t)
9080 9059
9081;;;*** 9060;;;***
9082 9061
9083;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20591 33616 824757 9062;;;### (autoloads nil "erc-list" "erc/erc-list.el" (20592 4085 721682
9084;;;;;; 867000)) 9063;;;;;; 0))
9085;;; Generated autoloads from erc/erc-list.el 9064;;; Generated autoloads from erc/erc-list.el
9086 (autoload 'erc-list-mode "erc-list") 9065 (autoload 'erc-list-mode "erc-list")
9087 9066
9088;;;*** 9067;;;***
9089 9068
9090;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log" 9069;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
9091;;;;;; "erc/erc-log.el" (20593 22184 581574 0)) 9070;;;;;; "erc/erc-log.el" (20650 61396 673885 0))
9092;;; Generated autoloads from erc/erc-log.el 9071;;; Generated autoloads from erc/erc-log.el
9093 (autoload 'erc-log-mode "erc-log" nil t) 9072 (autoload 'erc-log-mode "erc-log" nil t)
9094 9073
@@ -9120,7 +9099,7 @@ You can save every individual message by putting this function on
9120;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host 9099;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
9121;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool 9100;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
9122;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" 9101;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
9123;;;;;; (20591 33616 834740 676000)) 9102;;;;;; (20650 61396 673885 0))
9124;;; Generated autoloads from erc/erc-match.el 9103;;; Generated autoloads from erc/erc-match.el
9125 (autoload 'erc-match-mode "erc-match") 9104 (autoload 'erc-match-mode "erc-match")
9126 9105
@@ -9166,15 +9145,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
9166 9145
9167;;;*** 9146;;;***
9168 9147
9169;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20591 33616 844710 9148;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (20592 4085 721682
9170;;;;;; 904000)) 9149;;;;;; 0))
9171;;; Generated autoloads from erc/erc-menu.el 9150;;; Generated autoloads from erc/erc-menu.el
9172 (autoload 'erc-menu-mode "erc-menu" nil t) 9151 (autoload 'erc-menu-mode "erc-menu" nil t)
9173 9152
9174;;;*** 9153;;;***
9175 9154
9176;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el" 9155;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
9177;;;;;; (20591 33616 854733 799000)) 9156;;;;;; (20650 61396 673885 0))
9178;;; Generated autoloads from erc/erc-netsplit.el 9157;;; Generated autoloads from erc/erc-netsplit.el
9179 (autoload 'erc-netsplit-mode "erc-netsplit") 9158 (autoload 'erc-netsplit-mode "erc-netsplit")
9180 9159
@@ -9186,7 +9165,7 @@ Show who's gone.
9186;;;*** 9165;;;***
9187 9166
9188;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks" 9167;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
9189;;;;;; "erc/erc-networks.el" (20591 33616 854733 799000)) 9168;;;;;; "erc/erc-networks.el" (20650 61396 673885 0))
9190;;; Generated autoloads from erc/erc-networks.el 9169;;; Generated autoloads from erc/erc-networks.el
9191 9170
9192(autoload 'erc-determine-network "erc-networks" "\ 9171(autoload 'erc-determine-network "erc-networks" "\
@@ -9204,7 +9183,7 @@ Interactively select a server to connect to using `erc-server-alist'.
9204;;;*** 9183;;;***
9205 9184
9206;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify" 9185;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
9207;;;;;; "erc/erc-notify.el" (20591 33616 864734 46000)) 9186;;;;;; "erc/erc-notify.el" (20650 61396 673885 0))
9208;;; Generated autoloads from erc/erc-notify.el 9187;;; Generated autoloads from erc/erc-notify.el
9209 (autoload 'erc-notify-mode "erc-notify" nil t) 9188 (autoload 'erc-notify-mode "erc-notify" nil t)
9210 9189
@@ -9222,37 +9201,37 @@ with args, toggle notify status of people.
9222 9201
9223;;;*** 9202;;;***
9224 9203
9225;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20591 33616 864734 9204;;;### (autoloads nil "erc-page" "erc/erc-page.el" (20592 4085 721682
9226;;;;;; 46000)) 9205;;;;;; 0))
9227;;; Generated autoloads from erc/erc-page.el 9206;;; Generated autoloads from erc/erc-page.el
9228 (autoload 'erc-page-mode "erc-page") 9207 (autoload 'erc-page-mode "erc-page")
9229 9208
9230;;;*** 9209;;;***
9231 9210
9232;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20591 9211;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (20650
9233;;;;;; 33616 874723 983000)) 9212;;;;;; 61396 673885 0))
9234;;; Generated autoloads from erc/erc-pcomplete.el 9213;;; Generated autoloads from erc/erc-pcomplete.el
9235 (autoload 'erc-completion-mode "erc-pcomplete" nil t) 9214 (autoload 'erc-completion-mode "erc-pcomplete" nil t)
9236 9215
9237;;;*** 9216;;;***
9238 9217
9239;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20591 33616 9218;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (20592 4085
9240;;;;;; 874723 983000)) 9219;;;;;; 721682 0))
9241;;; Generated autoloads from erc/erc-replace.el 9220;;; Generated autoloads from erc/erc-replace.el
9242 (autoload 'erc-replace-mode "erc-replace") 9221 (autoload 'erc-replace-mode "erc-replace")
9243 9222
9244;;;*** 9223;;;***
9245 9224
9246;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20591 33616 884730 9225;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (20592 4085 721682
9247;;;;;; 605000)) 9226;;;;;; 0))
9248;;; Generated autoloads from erc/erc-ring.el 9227;;; Generated autoloads from erc/erc-ring.el
9249 (autoload 'erc-ring-mode "erc-ring" nil t) 9228 (autoload 'erc-ring-mode "erc-ring" nil t)
9250 9229
9251;;;*** 9230;;;***
9252 9231
9253;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode) 9232;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
9254;;;;;; "erc-services" "erc/erc-services.el" (20591 33616 894723 9233;;;;;; "erc-services" "erc/erc-services.el" (20650 61396 673885
9255;;;;;; 303000)) 9234;;;;;; 0))
9256;;; Generated autoloads from erc/erc-services.el 9235;;; Generated autoloads from erc/erc-services.el
9257 (autoload 'erc-services-mode "erc-services" nil t) 9236 (autoload 'erc-services-mode "erc-services" nil t)
9258 9237
@@ -9269,15 +9248,15 @@ When called interactively, read the password using `read-passwd'.
9269 9248
9270;;;*** 9249;;;***
9271 9250
9272;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20591 33616 9251;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (20592 4085
9273;;;;;; 894723 303000)) 9252;;;;;; 721682 0))
9274;;; Generated autoloads from erc/erc-sound.el 9253;;; Generated autoloads from erc/erc-sound.el
9275 (autoload 'erc-sound-mode "erc-sound") 9254 (autoload 'erc-sound-mode "erc-sound")
9276 9255
9277;;;*** 9256;;;***
9278 9257
9279;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el" 9258;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
9280;;;;;; (20591 33616 894723 303000)) 9259;;;;;; (20650 61396 673885 0))
9281;;; Generated autoloads from erc/erc-speedbar.el 9260;;; Generated autoloads from erc/erc-speedbar.el
9282 9261
9283(autoload 'erc-speedbar-browser "erc-speedbar" "\ 9262(autoload 'erc-speedbar-browser "erc-speedbar" "\
@@ -9288,22 +9267,22 @@ This will add a speedbar major display mode.
9288 9267
9289;;;*** 9268;;;***
9290 9269
9291;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20591 9270;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (20592
9292;;;;;; 33616 904733 437000)) 9271;;;;;; 4085 721682 0))
9293;;; Generated autoloads from erc/erc-spelling.el 9272;;; Generated autoloads from erc/erc-spelling.el
9294 (autoload 'erc-spelling-mode "erc-spelling" nil t) 9273 (autoload 'erc-spelling-mode "erc-spelling" nil t)
9295 9274
9296;;;*** 9275;;;***
9297 9276
9298;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20593 22184 9277;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (20594 14884
9299;;;;;; 581574 0)) 9278;;;;;; 858174 0))
9300;;; Generated autoloads from erc/erc-stamp.el 9279;;; Generated autoloads from erc/erc-stamp.el
9301 (autoload 'erc-timestamp-mode "erc-stamp" nil t) 9280 (autoload 'erc-timestamp-mode "erc-stamp" nil t)
9302 9281
9303;;;*** 9282;;;***
9304 9283
9305;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el" 9284;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
9306;;;;;; (20591 33616 924730 373000)) 9285;;;;;; (20650 61396 673885 0))
9307;;; Generated autoloads from erc/erc-track.el 9286;;; Generated autoloads from erc/erc-track.el
9308 9287
9309(defvar erc-track-minor-mode nil "\ 9288(defvar erc-track-minor-mode nil "\
@@ -9329,8 +9308,7 @@ keybindings will not do anything useful.
9329;;;*** 9308;;;***
9330 9309
9331;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size) 9310;;;### (autoloads (erc-truncate-buffer erc-truncate-buffer-to-size)
9332;;;;;; "erc-truncate" "erc/erc-truncate.el" (20591 33616 934716 9311;;;;;; "erc-truncate" "erc/erc-truncate.el" (20592 4085 721682 0))
9333;;;;;; 526000))
9334;;; Generated autoloads from erc/erc-truncate.el 9312;;; Generated autoloads from erc/erc-truncate.el
9335 (autoload 'erc-truncate-mode "erc-truncate" nil t) 9313 (autoload 'erc-truncate-mode "erc-truncate" nil t)
9336 9314
@@ -9350,7 +9328,7 @@ Meant to be used in hooks, like `erc-insert-post-hook'.
9350;;;*** 9328;;;***
9351 9329
9352;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el" 9330;;;### (autoloads (erc-xdcc-add-file) "erc-xdcc" "erc/erc-xdcc.el"
9353;;;;;; (20591 33616 934716 526000)) 9331;;;;;; (20592 4085 721682 0))
9354;;; Generated autoloads from erc/erc-xdcc.el 9332;;; Generated autoloads from erc/erc-xdcc.el
9355 (autoload 'erc-xdcc-mode "erc-xdcc") 9333 (autoload 'erc-xdcc-mode "erc-xdcc")
9356 9334
@@ -9363,7 +9341,7 @@ Add a file to `erc-xdcc-files'.
9363 9341
9364;;;### (autoloads (ert-describe-test ert-run-tests-interactively 9342;;;### (autoloads (ert-describe-test ert-run-tests-interactively
9365;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest) 9343;;;;;; ert-run-tests-batch-and-exit ert-run-tests-batch ert-deftest)
9366;;;;;; "ert" "emacs-lisp/ert.el" (20576 42138 697312 0)) 9344;;;;;; "ert" "emacs-lisp/ert.el" (20655 4702 996292 0))
9367;;; Generated autoloads from emacs-lisp/ert.el 9345;;; Generated autoloads from emacs-lisp/ert.el
9368 9346
9369(autoload 'ert-deftest "ert" "\ 9347(autoload 'ert-deftest "ert" "\
@@ -9429,7 +9407,7 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test).
9429;;;*** 9407;;;***
9430 9408
9431;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el" 9409;;;### (autoloads (ert-kill-all-test-buffers) "ert-x" "emacs-lisp/ert-x.el"
9432;;;;;; (20576 42138 697312 0)) 9410;;;;;; (20655 4702 996292 0))
9433;;; Generated autoloads from emacs-lisp/ert-x.el 9411;;; Generated autoloads from emacs-lisp/ert-x.el
9434 9412
9435(put 'ert-with-test-buffer 'lisp-indent-function 1) 9413(put 'ert-with-test-buffer 'lisp-indent-function 1)
@@ -9441,8 +9419,8 @@ Kill all test buffers that are still live.
9441 9419
9442;;;*** 9420;;;***
9443 9421
9444;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20593 9422;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20594
9445;;;;;; 22184 581574 0)) 9423;;;;;; 14884 858174 0))
9446;;; Generated autoloads from eshell/esh-mode.el 9424;;; Generated autoloads from eshell/esh-mode.el
9447 9425
9448(autoload 'eshell-mode "esh-mode" "\ 9426(autoload 'eshell-mode "esh-mode" "\
@@ -9455,7 +9433,7 @@ Emacs shell interactive mode.
9455;;;*** 9433;;;***
9456 9434
9457;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell" 9435;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell"
9458;;;;;; "eshell/eshell.el" (20577 33959 40183 0)) 9436;;;;;; "eshell/eshell.el" (20576 16566 11955 847000))
9459;;; Generated autoloads from eshell/eshell.el 9437;;; Generated autoloads from eshell/eshell.el
9460 9438
9461(autoload 'eshell "eshell" "\ 9439(autoload 'eshell "eshell" "\
@@ -9496,7 +9474,7 @@ corresponding to a successful execution.
9496;;;;;; visit-tags-table tags-table-mode find-tag-default-function 9474;;;;;; visit-tags-table tags-table-mode find-tag-default-function
9497;;;;;; find-tag-hook tags-add-tables tags-compression-info-list 9475;;;;;; find-tag-hook tags-add-tables tags-compression-info-list
9498;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el" 9476;;;;;; tags-table-list tags-case-fold-search) "etags" "progmodes/etags.el"
9499;;;;;; (20478 3673 653810 0)) 9477;;;;;; (20664 5610 38100 0))
9500;;; Generated autoloads from progmodes/etags.el 9478;;; Generated autoloads from progmodes/etags.el
9501 9479
9502(defvar tags-file-name nil "\ 9480(defvar tags-file-name nil "\
@@ -9814,7 +9792,7 @@ for \\[find-tag] (which see).
9814;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer 9792;;;;;; ethio-fidel-to-sera-marker ethio-fidel-to-sera-region ethio-fidel-to-sera-buffer
9815;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer 9793;;;;;; ethio-sera-to-fidel-marker ethio-sera-to-fidel-region ethio-sera-to-fidel-buffer
9816;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el" 9794;;;;;; setup-ethiopic-environment-internal) "ethio-util" "language/ethio-util.el"
9817;;;;;; (20355 10021 546955 0)) 9795;;;;;; (20533 50312 678915 0))
9818;;; Generated autoloads from language/ethio-util.el 9796;;; Generated autoloads from language/ethio-util.el
9819 9797
9820(autoload 'setup-ethiopic-environment-internal "ethio-util" "\ 9798(autoload 'setup-ethiopic-environment-internal "ethio-util" "\
@@ -9984,7 +9962,7 @@ With ARG, insert that many delimiters.
9984 9962
9985;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline 9963;;;### (autoloads (eudc-load-eudc eudc-query-form eudc-expand-inline
9986;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el" 9964;;;;;; eudc-get-phone eudc-get-email eudc-set-server) "eudc" "net/eudc.el"
9987;;;;;; (20478 3673 653810 0)) 9965;;;;;; (20533 50312 678915 0))
9988;;; Generated autoloads from net/eudc.el 9966;;; Generated autoloads from net/eudc.el
9989 9967
9990(autoload 'eudc-set-server "eudc" "\ 9968(autoload 'eudc-set-server "eudc" "\
@@ -10040,7 +10018,7 @@ This does nothing except loading eudc by autoload side-effect.
10040 10018
10041;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline 10019;;;### (autoloads (eudc-display-jpeg-as-button eudc-display-jpeg-inline
10042;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary) 10020;;;;;; eudc-display-sound eudc-display-mail eudc-display-url eudc-display-generic-binary)
10043;;;;;; "eudc-bob" "net/eudc-bob.el" (20355 10021 546955 0)) 10021;;;;;; "eudc-bob" "net/eudc-bob.el" (20533 50312 678915 0))
10044;;; Generated autoloads from net/eudc-bob.el 10022;;; Generated autoloads from net/eudc-bob.el
10045 10023
10046(autoload 'eudc-display-generic-binary "eudc-bob" "\ 10024(autoload 'eudc-display-generic-binary "eudc-bob" "\
@@ -10076,7 +10054,7 @@ Display a button for the JPEG DATA.
10076;;;*** 10054;;;***
10077 10055
10078;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb) 10056;;;### (autoloads (eudc-try-bbdb-insert eudc-insert-record-at-point-into-bbdb)
10079;;;;;; "eudc-export" "net/eudc-export.el" (20355 10021 546955 0)) 10057;;;;;; "eudc-export" "net/eudc-export.el" (20533 50312 678915 0))
10080;;; Generated autoloads from net/eudc-export.el 10058;;; Generated autoloads from net/eudc-export.el
10081 10059
10082(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\ 10060(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
@@ -10093,7 +10071,7 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record.
10093;;;*** 10071;;;***
10094 10072
10095;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el" 10073;;;### (autoloads (eudc-edit-hotlist) "eudc-hotlist" "net/eudc-hotlist.el"
10096;;;;;; (20355 10021 546955 0)) 10074;;;;;; (20533 50312 678915 0))
10097;;; Generated autoloads from net/eudc-hotlist.el 10075;;; Generated autoloads from net/eudc-hotlist.el
10098 10076
10099(autoload 'eudc-edit-hotlist "eudc-hotlist" "\ 10077(autoload 'eudc-edit-hotlist "eudc-hotlist" "\
@@ -10103,8 +10081,8 @@ Edit the hotlist of directory servers in a specialized buffer.
10103 10081
10104;;;*** 10082;;;***
10105 10083
10106;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20453 10084;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (20533
10107;;;;;; 5437 764254 0)) 10085;;;;;; 50312 678915 0))
10108;;; Generated autoloads from emacs-lisp/ewoc.el 10086;;; Generated autoloads from emacs-lisp/ewoc.el
10109 10087
10110(autoload 'ewoc-create "ewoc" "\ 10088(autoload 'ewoc-create "ewoc" "\
@@ -10133,7 +10111,7 @@ fourth arg NOSEP non-nil inhibits this.
10133;;;### (autoloads (executable-make-buffer-file-executable-if-script-p 10111;;;### (autoloads (executable-make-buffer-file-executable-if-script-p
10134;;;;;; executable-self-display executable-set-magic executable-interpret 10112;;;;;; executable-self-display executable-set-magic executable-interpret
10135;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" 10113;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el"
10136;;;;;; (20533 6181 437016 717000)) 10114;;;;;; (20533 50312 678915 0))
10137;;; Generated autoloads from progmodes/executable.el 10115;;; Generated autoloads from progmodes/executable.el
10138 10116
10139(autoload 'executable-command-find-posix-p "executable" "\ 10117(autoload 'executable-command-find-posix-p "executable" "\
@@ -10176,7 +10154,7 @@ file modes.
10176 10154
10177;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot 10155;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
10178;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el" 10156;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
10179;;;;;; (20355 10021 546955 0)) 10157;;;;;; (20533 50312 678915 0))
10180;;; Generated autoloads from expand.el 10158;;; Generated autoloads from expand.el
10181 10159
10182(autoload 'expand-add-abbrevs "expand" "\ 10160(autoload 'expand-add-abbrevs "expand" "\
@@ -10225,8 +10203,8 @@ This is used only in conjunction with `expand-add-abbrevs'.
10225 10203
10226;;;*** 10204;;;***
10227 10205
10228;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20566 63671 10206;;;### (autoloads (f90-mode) "f90" "progmodes/f90.el" (20566 46184
10229;;;;;; 243798 0)) 10207;;;;;; 706620 234000))
10230;;; Generated autoloads from progmodes/f90.el 10208;;; Generated autoloads from progmodes/f90.el
10231 10209
10232(autoload 'f90-mode "f90" "\ 10210(autoload 'f90-mode "f90" "\
@@ -10297,7 +10275,7 @@ with no args, if that value is non-nil.
10297;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase 10275;;;;;; buffer-face-mode text-scale-adjust text-scale-decrease text-scale-increase
10298;;;;;; text-scale-set face-remap-set-base face-remap-reset-base 10276;;;;;; text-scale-set face-remap-set-base face-remap-reset-base
10299;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20622 10277;;;;;; face-remap-add-relative) "face-remap" "face-remap.el" (20622
10300;;;;;; 22438 32851 0)) 10278;;;;;; 21008 480608 570000))
10301;;; Generated autoloads from face-remap.el 10279;;; Generated autoloads from face-remap.el
10302 10280
10303(autoload 'face-remap-add-relative "face-remap" "\ 10281(autoload 'face-remap-add-relative "face-remap" "\
@@ -10460,8 +10438,8 @@ Besides the choice of face, it is the same as `buffer-face-mode'.
10460 10438
10461;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue 10439;;;### (autoloads (feedmail-queue-reminder feedmail-run-the-queue
10462;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts 10440;;;;;; feedmail-run-the-queue-global-prompt feedmail-run-the-queue-no-prompts
10463;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 63671 10441;;;;;; feedmail-send-it) "feedmail" "mail/feedmail.el" (20566 46719
10464;;;;;; 243798 0)) 10442;;;;;; 378637 198000))
10465;;; Generated autoloads from mail/feedmail.el 10443;;; Generated autoloads from mail/feedmail.el
10466 10444
10467(autoload 'feedmail-send-it "feedmail" "\ 10445(autoload 'feedmail-send-it "feedmail" "\
@@ -10516,7 +10494,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
10516 10494
10517;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point 10495;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point
10518;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap" 10496;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap"
10519;;;;;; "ffap.el" (20595 63909 923329 0)) 10497;;;;;; "ffap.el" (20595 33984 147078 0))
10520;;; Generated autoloads from ffap.el 10498;;; Generated autoloads from ffap.el
10521 10499
10522(autoload 'ffap-next "ffap" "\ 10500(autoload 'ffap-next "ffap" "\
@@ -10582,23 +10560,24 @@ Evaluate the forms in variable `ffap-bindings'.
10582;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively 10560;;;### (autoloads (file-cache-minibuffer-complete file-cache-add-directory-recursively
10583;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find 10561;;;;;; file-cache-add-directory-using-locate file-cache-add-directory-using-find
10584;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory) 10562;;;;;; file-cache-add-file file-cache-add-directory-list file-cache-add-directory)
10585;;;;;; "filecache" "filecache.el" (20355 10021 546955 0)) 10563;;;;;; "filecache" "filecache.el" (20648 29733 701119 761000))
10586;;; Generated autoloads from filecache.el 10564;;; Generated autoloads from filecache.el
10587 10565
10588(autoload 'file-cache-add-directory "filecache" "\ 10566(autoload 'file-cache-add-directory "filecache" "\
10589Add DIRECTORY to the file cache. 10567Add all files in DIRECTORY to the file cache.
10590If the optional REGEXP argument is non-nil, only files which match it will 10568If called from Lisp with a non-nil REGEXP argument is non-nil,
10591be added to the cache. 10569only add files whose names match REGEXP.
10592 10570
10593\(fn DIRECTORY &optional REGEXP)" t nil) 10571\(fn DIRECTORY &optional REGEXP)" t nil)
10594 10572
10595(autoload 'file-cache-add-directory-list "filecache" "\ 10573(autoload 'file-cache-add-directory-list "filecache" "\
10596Add DIRECTORY-LIST (a list of directory names) to the file cache. 10574Add DIRECTORIES (a list of directory names) to the file cache.
10575If called interactively, read the directory names one by one.
10597If the optional REGEXP argument is non-nil, only files which match it 10576If the optional REGEXP argument is non-nil, only files which match it
10598will be added to the cache. Note that the REGEXP is applied to the 10577will be added to the cache. Note that the REGEXP is applied to the
10599files in each directory, not to the directory list itself. 10578files in each directory, not to the directory list itself.
10600 10579
10601\(fn DIRECTORY-LIST &optional REGEXP)" t nil) 10580\(fn DIRECTORIES &optional REGEXP)" t nil)
10602 10581
10603(autoload 'file-cache-add-file "filecache" "\ 10582(autoload 'file-cache-add-file "filecache" "\
10604Add FILE to the file cache. 10583Add FILE to the file cache.
@@ -10642,8 +10621,8 @@ the name is considered already unique; only the second substitution
10642;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable 10621;;;;;; copy-file-locals-to-dir-locals delete-dir-local-variable
10643;;;;;; add-dir-local-variable delete-file-local-variable-prop-line 10622;;;;;; add-dir-local-variable delete-file-local-variable-prop-line
10644;;;;;; add-file-local-variable-prop-line delete-file-local-variable 10623;;;;;; add-file-local-variable-prop-line delete-file-local-variable
10645;;;;;; add-file-local-variable) "files-x" "files-x.el" (20355 10021 10624;;;;;; add-file-local-variable) "files-x" "files-x.el" (20533 50312
10646;;;;;; 546955 0)) 10625;;;;;; 678915 0))
10647;;; Generated autoloads from files-x.el 10626;;; Generated autoloads from files-x.el
10648 10627
10649(autoload 'add-file-local-variable "files-x" "\ 10628(autoload 'add-file-local-variable "files-x" "\
@@ -10708,8 +10687,8 @@ Copy directory-local variables to the -*- line.
10708 10687
10709;;;*** 10688;;;***
10710 10689
10711;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20614 10690;;;### (autoloads (filesets-init) "filesets" "filesets.el" (20615
10712;;;;;; 54428 654267 0)) 10691;;;;;; 22847 537904 0))
10713;;; Generated autoloads from filesets.el 10692;;; Generated autoloads from filesets.el
10714 10693
10715(autoload 'filesets-init "filesets" "\ 10694(autoload 'filesets-init "filesets" "\
@@ -10720,8 +10699,8 @@ Set up hooks, load the cache file -- if existing -- and build the menu.
10720 10699
10721;;;*** 10700;;;***
10722 10701
10723;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20355 10021 10702;;;### (autoloads (find-cmd) "find-cmd" "find-cmd.el" (20655 12114
10724;;;;;; 546955 0)) 10703;;;;;; 463008 671000))
10725;;; Generated autoloads from find-cmd.el 10704;;; Generated autoloads from find-cmd.el
10726 10705
10727(autoload 'find-cmd "find-cmd" "\ 10706(autoload 'find-cmd "find-cmd" "\
@@ -10741,7 +10720,7 @@ result is a string that should be ready for the command line.
10741;;;*** 10720;;;***
10742 10721
10743;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired" 10722;;;### (autoloads (find-grep-dired find-name-dired find-dired) "find-dired"
10744;;;;;; "find-dired.el" (20355 10021 546955 0)) 10723;;;;;; "find-dired.el" (20533 50312 678915 0))
10745;;; Generated autoloads from find-dired.el 10724;;; Generated autoloads from find-dired.el
10746 10725
10747(autoload 'find-dired "find-dired" "\ 10726(autoload 'find-dired "find-dired" "\
@@ -10781,7 +10760,7 @@ use in place of \"-ls\" as the final argument.
10781 10760
10782;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file 10761;;;### (autoloads (ff-mouse-find-other-file-other-window ff-mouse-find-other-file
10783;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs) 10762;;;;;; ff-find-other-file ff-get-other-file ff-special-constructs)
10784;;;;;; "find-file" "find-file.el" (20387 44199 24128 0)) 10763;;;;;; "find-file" "find-file.el" (20533 50312 678915 0))
10785;;; Generated autoloads from find-file.el 10764;;; Generated autoloads from find-file.el
10786 10765
10787(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\ 10766(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\
@@ -10877,7 +10856,7 @@ Visit the file you click on in another window.
10877;;;;;; find-variable find-variable-noselect find-function-other-frame 10856;;;;;; find-variable find-variable-noselect find-function-other-frame
10878;;;;;; find-function-other-window find-function find-function-noselect 10857;;;;;; find-function-other-window find-function find-function-noselect
10879;;;;;; find-function-search-for-symbol find-library) "find-func" 10858;;;;;; find-function-search-for-symbol find-library) "find-func"
10880;;;;;; "emacs-lisp/find-func.el" (20497 6436 957082 0)) 10859;;;;;; "emacs-lisp/find-func.el" (20533 50312 678915 0))
10881;;; Generated autoloads from emacs-lisp/find-func.el 10860;;; Generated autoloads from emacs-lisp/find-func.el
10882 10861
10883(autoload 'find-library "find-func" "\ 10862(autoload 'find-library "find-func" "\
@@ -11036,8 +11015,8 @@ Define some key bindings for the find-function family of functions.
11036;;;*** 11015;;;***
11037 11016
11038;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories 11017;;;### (autoloads (find-lisp-find-dired-filter find-lisp-find-dired-subdirectories
11039;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20355 10021 11018;;;;;; find-lisp-find-dired) "find-lisp" "find-lisp.el" (20533 50312
11040;;;;;; 546955 0)) 11019;;;;;; 678915 0))
11041;;; Generated autoloads from find-lisp.el 11020;;; Generated autoloads from find-lisp.el
11042 11021
11043(autoload 'find-lisp-find-dired "find-lisp" "\ 11022(autoload 'find-lisp-find-dired "find-lisp" "\
@@ -11058,7 +11037,7 @@ Change the filter on a find-lisp-find-dired buffer to REGEXP.
11058;;;*** 11037;;;***
11059 11038
11060;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords) 11039;;;### (autoloads (finder-by-keyword finder-commentary finder-list-keywords)
11061;;;;;; "finder" "finder.el" (20355 10021 546955 0)) 11040;;;;;; "finder" "finder.el" (20533 50312 678915 0))
11062;;; Generated autoloads from finder.el 11041;;; Generated autoloads from finder.el
11063 11042
11064(autoload 'finder-list-keywords "finder" "\ 11043(autoload 'finder-list-keywords "finder" "\
@@ -11080,7 +11059,7 @@ Find packages matching a given keyword.
11080;;;*** 11059;;;***
11081 11060
11082;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl" 11061;;;### (autoloads (enable-flow-control-on enable-flow-control) "flow-ctrl"
11083;;;;;; "flow-ctrl.el" (20566 63671 243798 0)) 11062;;;;;; "flow-ctrl.el" (20566 45950 38611 876000))
11084;;; Generated autoloads from flow-ctrl.el 11063;;; Generated autoloads from flow-ctrl.el
11085 11064
11086(autoload 'enable-flow-control "flow-ctrl" "\ 11065(autoload 'enable-flow-control "flow-ctrl" "\
@@ -11102,7 +11081,7 @@ to get the effect of a C-q.
11102;;;*** 11081;;;***
11103 11082
11104;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el" 11083;;;### (autoloads (fill-flowed fill-flowed-encode) "flow-fill" "gnus/flow-fill.el"
11105;;;;;; (20355 10021 546955 0)) 11084;;;;;; (20533 50312 678915 0))
11106;;; Generated autoloads from gnus/flow-fill.el 11085;;; Generated autoloads from gnus/flow-fill.el
11107 11086
11108(autoload 'fill-flowed-encode "flow-fill" "\ 11087(autoload 'fill-flowed-encode "flow-fill" "\
@@ -11118,8 +11097,8 @@ to get the effect of a C-q.
11118;;;*** 11097;;;***
11119 11098
11120;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on 11099;;;### (autoloads (flymake-find-file-hook flymake-mode-off flymake-mode-on
11121;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20611 52135 11100;;;;;; flymake-mode) "flymake" "progmodes/flymake.el" (20647 7982
11122;;;;;; 109136 0)) 11101;;;;;; 429263 0))
11123;;; Generated autoloads from progmodes/flymake.el 11102;;; Generated autoloads from progmodes/flymake.el
11124 11103
11125(autoload 'flymake-mode "flymake" "\ 11104(autoload 'flymake-mode "flymake" "\
@@ -11149,7 +11128,7 @@ Turn flymake mode off.
11149 11128
11150;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off 11129;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
11151;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode) 11130;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
11152;;;;;; "flyspell" "textmodes/flyspell.el" (20566 63671 243798 0)) 11131;;;;;; "flyspell" "textmodes/flyspell.el" (20566 46000 842611 651000))
11153;;; Generated autoloads from textmodes/flyspell.el 11132;;; Generated autoloads from textmodes/flyspell.el
11154 11133
11155(autoload 'flyspell-prog-mode "flyspell" "\ 11134(autoload 'flyspell-prog-mode "flyspell" "\
@@ -11221,7 +11200,7 @@ Flyspell whole buffer.
11221 11200
11222;;;### (autoloads (follow-delete-other-windows-and-split follow-mode 11201;;;### (autoloads (follow-delete-other-windows-and-split follow-mode
11223;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el" 11202;;;;;; turn-off-follow-mode turn-on-follow-mode) "follow" "follow.el"
11224;;;;;; (20501 3499 284800 0)) 11203;;;;;; (20533 50312 678915 0))
11225;;; Generated autoloads from follow.el 11204;;; Generated autoloads from follow.el
11226 11205
11227(autoload 'turn-on-follow-mode "follow" "\ 11206(autoload 'turn-on-follow-mode "follow" "\
@@ -11289,8 +11268,8 @@ selected if the original window is the first one in the frame.
11289 11268
11290;;;*** 11269;;;***
11291 11270
11292;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20478 11271;;;### (autoloads (footnote-mode) "footnote" "mail/footnote.el" (20533
11293;;;;;; 3673 653810 0)) 11272;;;;;; 50312 678915 0))
11294;;; Generated autoloads from mail/footnote.el 11273;;; Generated autoloads from mail/footnote.el
11295 11274
11296(autoload 'footnote-mode "footnote" "\ 11275(autoload 'footnote-mode "footnote" "\
@@ -11309,7 +11288,7 @@ play around with the following keys:
11309;;;*** 11288;;;***
11310 11289
11311;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode) 11290;;;### (autoloads (forms-find-file-other-window forms-find-file forms-mode)
11312;;;;;; "forms" "forms.el" (20427 14766 970343 0)) 11291;;;;;; "forms" "forms.el" (20533 50312 678915 0))
11313;;; Generated autoloads from forms.el 11292;;; Generated autoloads from forms.el
11314 11293
11315(autoload 'forms-mode "forms" "\ 11294(autoload 'forms-mode "forms" "\
@@ -11346,7 +11325,7 @@ Visit a file in Forms mode in other window.
11346;;;*** 11325;;;***
11347 11326
11348;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el" 11327;;;### (autoloads (fortran-mode) "fortran" "progmodes/fortran.el"
11349;;;;;; (20438 24024 724594 589000)) 11328;;;;;; (20533 50312 678915 0))
11350;;; Generated autoloads from progmodes/fortran.el 11329;;; Generated autoloads from progmodes/fortran.el
11351 11330
11352(autoload 'fortran-mode "fortran" "\ 11331(autoload 'fortran-mode "fortran" "\
@@ -11424,8 +11403,8 @@ with no args, if that value is non-nil.
11424;;;*** 11403;;;***
11425 11404
11426;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region 11405;;;### (autoloads (fortune fortune-to-signature fortune-compile fortune-from-region
11427;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20355 10021 11406;;;;;; fortune-add-fortune) "fortune" "play/fortune.el" (20533 50312
11428;;;;;; 546955 0)) 11407;;;;;; 678915 0))
11429;;; Generated autoloads from play/fortune.el 11408;;; Generated autoloads from play/fortune.el
11430 11409
11431(autoload 'fortune-add-fortune "fortune" "\ 11410(autoload 'fortune-add-fortune "fortune" "\
@@ -11474,7 +11453,7 @@ and choose the directory as the fortune-file.
11474;;;*** 11453;;;***
11475 11454
11476;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" 11455;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el"
11477;;;;;; (20609 10405 476026 0)) 11456;;;;;; (20608 21217 487940 41000))
11478;;; Generated autoloads from progmodes/gdb-mi.el 11457;;; Generated autoloads from progmodes/gdb-mi.el
11479 11458
11480(defvar gdb-enable-debug nil "\ 11459(defvar gdb-enable-debug nil "\
@@ -11552,8 +11531,8 @@ detailed description of this mode.
11552;;;*** 11531;;;***
11553 11532
11554;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal 11533;;;### (autoloads (generic-make-keywords-list generic-mode generic-mode-internal
11555;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20406 11534;;;;;; define-generic-mode) "generic" "emacs-lisp/generic.el" (20533
11556;;;;;; 8611 875037 0)) 11535;;;;;; 50312 678915 0))
11557;;; Generated autoloads from emacs-lisp/generic.el 11536;;; Generated autoloads from emacs-lisp/generic.el
11558 11537
11559(defvar generic-mode-list nil "\ 11538(defvar generic-mode-list nil "\
@@ -11632,7 +11611,7 @@ regular expression that can be used as an element of
11632;;;*** 11611;;;***
11633 11612
11634;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el" 11613;;;### (autoloads (glasses-mode) "glasses" "progmodes/glasses.el"
11635;;;;;; (20478 3673 653810 0)) 11614;;;;;; (20533 50312 678915 0))
11636;;; Generated autoloads from progmodes/glasses.el 11615;;; Generated autoloads from progmodes/glasses.el
11637 11616
11638(autoload 'glasses-mode "glasses" "\ 11617(autoload 'glasses-mode "glasses" "\
@@ -11648,7 +11627,7 @@ add virtual separators (like underscores) at places they belong to.
11648 11627
11649;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error 11628;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
11650;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el" 11629;;;;;; gmm-message gmm-regexp-concat) "gmm-utils" "gnus/gmm-utils.el"
11651;;;;;; (20355 10021 546955 0)) 11630;;;;;; (20533 50312 678915 0))
11652;;; Generated autoloads from gnus/gmm-utils.el 11631;;; Generated autoloads from gnus/gmm-utils.el
11653 11632
11654(autoload 'gmm-regexp-concat "gmm-utils" "\ 11633(autoload 'gmm-regexp-concat "gmm-utils" "\
@@ -11703,8 +11682,8 @@ DEFAULT-MAP specifies the default key map for ICON-LIST.
11703;;;*** 11682;;;***
11704 11683
11705;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server 11684;;;### (autoloads (gnus gnus-other-frame gnus-slave gnus-no-server
11706;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20552 30761 11685;;;;;; gnus-slave-no-server) "gnus" "gnus/gnus.el" (20552 25066
11707;;;;;; 207103 0)) 11686;;;;;; 479417 0))
11708;;; Generated autoloads from gnus/gnus.el 11687;;; Generated autoloads from gnus/gnus.el
11709(when (fboundp 'custom-autoload) 11688(when (fboundp 'custom-autoload)
11710 (custom-autoload 'gnus-select-method "gnus")) 11689 (custom-autoload 'gnus-select-method "gnus"))
@@ -11757,7 +11736,7 @@ prompt the user for the name of an NNTP server to use.
11757;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group 11736;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group
11758;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize 11737;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize
11759;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" 11738;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent"
11760;;;;;; "gnus/gnus-agent.el" (20518 12580 46478 0)) 11739;;;;;; "gnus/gnus-agent.el" (20533 50312 678915 0))
11761;;; Generated autoloads from gnus/gnus-agent.el 11740;;; Generated autoloads from gnus/gnus-agent.el
11762 11741
11763(autoload 'gnus-unplugged "gnus-agent" "\ 11742(autoload 'gnus-unplugged "gnus-agent" "\
@@ -11848,7 +11827,7 @@ If CLEAN, obsolete (ignore).
11848;;;*** 11827;;;***
11849 11828
11850;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" 11829;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
11851;;;;;; (20578 54821 719276 0)) 11830;;;;;; (20647 7982 429263 0))
11852;;; Generated autoloads from gnus/gnus-art.el 11831;;; Generated autoloads from gnus/gnus-art.el
11853 11832
11854(autoload 'gnus-article-prepare-display "gnus-art" "\ 11833(autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -11859,7 +11838,7 @@ Make the current buffer look like a nice article.
11859;;;*** 11838;;;***
11860 11839
11861;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set) 11840;;;### (autoloads (gnus-bookmark-bmenu-list gnus-bookmark-jump gnus-bookmark-set)
11862;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20355 10021 546955 11841;;;;;; "gnus-bookmark" "gnus/gnus-bookmark.el" (20533 50312 678915
11863;;;;;; 0)) 11842;;;;;; 0))
11864;;; Generated autoloads from gnus/gnus-bookmark.el 11843;;; Generated autoloads from gnus/gnus-bookmark.el
11865 11844
@@ -11885,8 +11864,8 @@ deletion, or > if it is flagged for displaying.
11885 11864
11886;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group 11865;;;### (autoloads (gnus-cache-delete-group gnus-cache-rename-group
11887;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active 11866;;;;;; gnus-cache-generate-nov-databases gnus-cache-generate-active
11888;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20355 11867;;;;;; gnus-jog-cache) "gnus-cache" "gnus/gnus-cache.el" (20533
11889;;;;;; 10021 546955 0)) 11868;;;;;; 50312 678915 0))
11890;;; Generated autoloads from gnus/gnus-cache.el 11869;;; Generated autoloads from gnus/gnus-cache.el
11891 11870
11892(autoload 'gnus-jog-cache "gnus-cache" "\ 11871(autoload 'gnus-jog-cache "gnus-cache" "\
@@ -11928,7 +11907,7 @@ supported.
11928;;;*** 11907;;;***
11929 11908
11930;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article) 11909;;;### (autoloads (gnus-delay-initialize gnus-delay-send-queue gnus-delay-article)
11931;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20355 10021 546955 0)) 11910;;;;;; "gnus-delay" "gnus/gnus-delay.el" (20533 50312 678915 0))
11932;;; Generated autoloads from gnus/gnus-delay.el 11911;;; Generated autoloads from gnus/gnus-delay.el
11933 11912
11934(autoload 'gnus-delay-article "gnus-delay" "\ 11913(autoload 'gnus-delay-article "gnus-delay" "\
@@ -11964,7 +11943,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
11964;;;*** 11943;;;***
11965 11944
11966;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d) 11945;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
11967;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20355 10021 546955 0)) 11946;;;;;; "gnus-diary" "gnus/gnus-diary.el" (20647 7982 429263 0))
11968;;; Generated autoloads from gnus/gnus-diary.el 11947;;; Generated autoloads from gnus/gnus-diary.el
11969 11948
11970(autoload 'gnus-user-format-function-d "gnus-diary" "\ 11949(autoload 'gnus-user-format-function-d "gnus-diary" "\
@@ -11980,7 +11959,7 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil.
11980;;;*** 11959;;;***
11981 11960
11982;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el" 11961;;;### (autoloads (turn-on-gnus-dired-mode) "gnus-dired" "gnus/gnus-dired.el"
11983;;;;;; (20355 10021 546955 0)) 11962;;;;;; (20628 55151 230164 0))
11984;;; Generated autoloads from gnus/gnus-dired.el 11963;;; Generated autoloads from gnus/gnus-dired.el
11985 11964
11986(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\ 11965(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
@@ -11991,7 +11970,7 @@ Convenience method to turn on gnus-dired-mode.
11991;;;*** 11970;;;***
11992 11971
11993;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el" 11972;;;### (autoloads (gnus-draft-reminder) "gnus-draft" "gnus/gnus-draft.el"
11994;;;;;; (20355 10021 546955 0)) 11973;;;;;; (20533 50312 678915 0))
11995;;; Generated autoloads from gnus/gnus-draft.el 11974;;; Generated autoloads from gnus/gnus-draft.el
11996 11975
11997(autoload 'gnus-draft-reminder "gnus-draft" "\ 11976(autoload 'gnus-draft-reminder "gnus-draft" "\
@@ -12004,7 +11983,7 @@ Reminder user if there are unsent drafts.
12004;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png 11983;;;### (autoloads (gnus-convert-png-to-face gnus-convert-face-to-png
12005;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header 11984;;;;;; gnus-face-from-file gnus-x-face-from-file gnus-insert-random-x-face-header
12006;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20549 11985;;;;;; gnus-random-x-face) "gnus-fun" "gnus/gnus-fun.el" (20549
12007;;;;;; 54573 979353 0)) 11986;;;;;; 34104 417881 0))
12008;;; Generated autoloads from gnus/gnus-fun.el 11987;;; Generated autoloads from gnus/gnus-fun.el
12009 11988
12010(autoload 'gnus-random-x-face "gnus-fun" "\ 11989(autoload 'gnus-random-x-face "gnus-fun" "\
@@ -12049,7 +12028,7 @@ FILE should be a PNG file that's 48x48 and smaller than or equal to
12049;;;*** 12028;;;***
12050 12029
12051;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar) 12030;;;### (autoloads (gnus-treat-mail-gravatar gnus-treat-from-gravatar)
12052;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20355 10021 546955 12031;;;;;; "gnus-gravatar" "gnus/gnus-gravatar.el" (20533 50312 678915
12053;;;;;; 0)) 12032;;;;;; 0))
12054;;; Generated autoloads from gnus/gnus-gravatar.el 12033;;; Generated autoloads from gnus/gnus-gravatar.el
12055 12034
@@ -12068,7 +12047,7 @@ If gravatars are already displayed, remove them.
12068;;;*** 12047;;;***
12069 12048
12070;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group) 12049;;;### (autoloads (gnus-fetch-group-other-frame gnus-fetch-group)
12071;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 51627 169867 0)) 12050;;;;;; "gnus-group" "gnus/gnus-group.el" (20553 28953 158351 908000))
12072;;; Generated autoloads from gnus/gnus-group.el 12051;;; Generated autoloads from gnus/gnus-group.el
12073 12052
12074(autoload 'gnus-fetch-group "gnus-group" "\ 12053(autoload 'gnus-fetch-group "gnus-group" "\
@@ -12086,7 +12065,7 @@ Pop up a frame and enter GROUP.
12086;;;*** 12065;;;***
12087 12066
12088;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html" 12067;;;### (autoloads (gnus-html-prefetch-images gnus-article-html) "gnus-html"
12089;;;;;; "gnus/gnus-html.el" (20355 10021 546955 0)) 12068;;;;;; "gnus/gnus-html.el" (20533 50312 678915 0))
12090;;; Generated autoloads from gnus/gnus-html.el 12069;;; Generated autoloads from gnus/gnus-html.el
12091 12070
12092(autoload 'gnus-article-html "gnus-html" "\ 12071(autoload 'gnus-article-html "gnus-html" "\
@@ -12102,7 +12081,7 @@ Pop up a frame and enter GROUP.
12102;;;*** 12081;;;***
12103 12082
12104;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el" 12083;;;### (autoloads (gnus-batch-score) "gnus-kill" "gnus/gnus-kill.el"
12105;;;;;; (20495 51111 757560 0)) 12084;;;;;; (20533 50312 678915 0))
12106;;; Generated autoloads from gnus/gnus-kill.el 12085;;; Generated autoloads from gnus/gnus-kill.el
12107 12086
12108(defalias 'gnus-batch-kill 'gnus-batch-score) 12087(defalias 'gnus-batch-kill 'gnus-batch-score)
@@ -12117,7 +12096,7 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score
12117 12096
12118;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate 12097;;;### (autoloads (gnus-mailing-list-mode gnus-mailing-list-insinuate
12119;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el" 12098;;;;;; turn-on-gnus-mailing-list-mode) "gnus-ml" "gnus/gnus-ml.el"
12120;;;;;; (20355 10021 546955 0)) 12099;;;;;; (20533 50312 678915 0))
12121;;; Generated autoloads from gnus/gnus-ml.el 12100;;; Generated autoloads from gnus/gnus-ml.el
12122 12101
12123(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\ 12102(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
@@ -12142,7 +12121,7 @@ Minor mode for providing mailing-list commands.
12142 12121
12143;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update 12122;;;### (autoloads (gnus-group-split-fancy gnus-group-split gnus-group-split-update
12144;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el" 12123;;;;;; gnus-group-split-setup) "gnus-mlspl" "gnus/gnus-mlspl.el"
12145;;;;;; (20355 10021 546955 0)) 12124;;;;;; (20533 50312 678915 0))
12146;;; Generated autoloads from gnus/gnus-mlspl.el 12125;;; Generated autoloads from gnus/gnus-mlspl.el
12147 12126
12148(autoload 'gnus-group-split-setup "gnus-mlspl" "\ 12127(autoload 'gnus-group-split-setup "gnus-mlspl" "\
@@ -12243,7 +12222,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
12243;;;*** 12222;;;***
12244 12223
12245;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) 12224;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
12246;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20593 22184 581574 0)) 12225;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20594 14884 858174 0))
12247;;; Generated autoloads from gnus/gnus-msg.el 12226;;; Generated autoloads from gnus/gnus-msg.el
12248 12227
12249(autoload 'gnus-msg-mail "gnus-msg" "\ 12228(autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12270,7 +12249,7 @@ Like `message-reply'.
12270;;;*** 12249;;;***
12271 12250
12272;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el" 12251;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el"
12273;;;;;; (20593 22184 581574 0)) 12252;;;;;; (20594 14884 858174 0))
12274;;; Generated autoloads from gnus/gnus-notifications.el 12253;;; Generated autoloads from gnus/gnus-notifications.el
12275 12254
12276(autoload 'gnus-notifications "gnus-notifications" "\ 12255(autoload 'gnus-notifications "gnus-notifications" "\
@@ -12288,7 +12267,7 @@ This is typically a function to add in
12288 12267
12289;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon 12268;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
12290;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" 12269;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
12291;;;;;; (20523 62082 997685 0)) 12270;;;;;; (20533 50312 678915 0))
12292;;; Generated autoloads from gnus/gnus-picon.el 12271;;; Generated autoloads from gnus/gnus-picon.el
12293 12272
12294(autoload 'gnus-treat-from-picon "gnus-picon" "\ 12273(autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12315,7 +12294,7 @@ If picons are already displayed, remove them.
12315;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection 12294;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection
12316;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement 12295;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement
12317;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" 12296;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range"
12318;;;;;; "gnus/gnus-range.el" (20544 36659 880486 0)) 12297;;;;;; "gnus/gnus-range.el" (20545 60086 510404 0))
12319;;; Generated autoloads from gnus/gnus-range.el 12298;;; Generated autoloads from gnus/gnus-range.el
12320 12299
12321(autoload 'gnus-sorted-difference "gnus-range" "\ 12300(autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12383,7 +12362,7 @@ Add NUM into sorted LIST by side effect.
12383;;;*** 12362;;;***
12384 12363
12385;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) 12364;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
12386;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20544 36659 880486 12365;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20545 60086 510404
12387;;;;;; 0)) 12366;;;;;; 0))
12388;;; Generated autoloads from gnus/gnus-registry.el 12367;;; Generated autoloads from gnus/gnus-registry.el
12389 12368
@@ -12400,8 +12379,8 @@ Install the registry hooks.
12400;;;*** 12379;;;***
12401 12380
12402;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate 12381;;;### (autoloads (gnus-sieve-article-add-rule gnus-sieve-generate
12403;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20355 12382;;;;;; gnus-sieve-update) "gnus-sieve" "gnus/gnus-sieve.el" (20533
12404;;;;;; 10021 546955 0)) 12383;;;;;; 50312 678915 0))
12405;;; Generated autoloads from gnus/gnus-sieve.el 12384;;; Generated autoloads from gnus/gnus-sieve.el
12406 12385
12407(autoload 'gnus-sieve-update "gnus-sieve" "\ 12386(autoload 'gnus-sieve-update "gnus-sieve" "\
@@ -12429,7 +12408,7 @@ See the documentation for these variables and functions for details.
12429;;;*** 12408;;;***
12430 12409
12431;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el" 12410;;;### (autoloads (gnus-update-format) "gnus-spec" "gnus/gnus-spec.el"
12432;;;;;; (20458 56750 651721 0)) 12411;;;;;; (20533 50312 678915 0))
12433;;; Generated autoloads from gnus/gnus-spec.el 12412;;; Generated autoloads from gnus/gnus-spec.el
12434 12413
12435(autoload 'gnus-update-format "gnus-spec" "\ 12414(autoload 'gnus-update-format "gnus-spec" "\
@@ -12440,7 +12419,7 @@ Update the format specification near point.
12440;;;*** 12419;;;***
12441 12420
12442;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el" 12421;;;### (autoloads (gnus-declare-backend) "gnus-start" "gnus/gnus-start.el"
12443;;;;;; (20614 54428 654267 0)) 12422;;;;;; (20615 22847 537904 0))
12444;;; Generated autoloads from gnus/gnus-start.el 12423;;; Generated autoloads from gnus/gnus-start.el
12445 12424
12446(autoload 'gnus-declare-backend "gnus-start" "\ 12425(autoload 'gnus-declare-backend "gnus-start" "\
@@ -12451,7 +12430,7 @@ Declare back end NAME with ABILITIES as a Gnus back end.
12451;;;*** 12430;;;***
12452 12431
12453;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" 12432;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el"
12454;;;;;; (20540 39589 424586 0)) 12433;;;;;; (20668 15033 902481 0))
12455;;; Generated autoloads from gnus/gnus-sum.el 12434;;; Generated autoloads from gnus/gnus-sum.el
12456 12435
12457(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ 12436(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12463,7 +12442,7 @@ BOOKMARK is a bookmark name or a bookmark record.
12463;;;*** 12442;;;***
12464 12443
12465;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize) 12444;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize)
12466;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20593 22184 581574 0)) 12445;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20669 24410 534430 0))
12467;;; Generated autoloads from gnus/gnus-sync.el 12446;;; Generated autoloads from gnus/gnus-sync.el
12468 12447
12469(autoload 'gnus-sync-initialize "gnus-sync" "\ 12448(autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12479,7 +12458,7 @@ Install the sync hooks.
12479;;;*** 12458;;;***
12480 12459
12481;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el" 12460;;;### (autoloads (gnus-add-configuration) "gnus-win" "gnus/gnus-win.el"
12482;;;;;; (20447 49522 409090 0)) 12461;;;;;; (20533 50312 678915 0))
12483;;; Generated autoloads from gnus/gnus-win.el 12462;;; Generated autoloads from gnus/gnus-win.el
12484 12463
12485(autoload 'gnus-add-configuration "gnus-win" "\ 12464(autoload 'gnus-add-configuration "gnus-win" "\
@@ -12490,7 +12469,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
12490;;;*** 12469;;;***
12491 12470
12492;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el" 12471;;;### (autoloads (gnutls-min-prime-bits) "gnutls" "net/gnutls.el"
12493;;;;;; (20476 31768 298871 0)) 12472;;;;;; (20533 50312 678915 0))
12494;;; Generated autoloads from net/gnutls.el 12473;;; Generated autoloads from net/gnutls.el
12495 12474
12496(defvar gnutls-min-prime-bits 256 "\ 12475(defvar gnutls-min-prime-bits 256 "\
@@ -12506,8 +12485,8 @@ A value of nil says to use the default GnuTLS value.")
12506 12485
12507;;;*** 12486;;;***
12508 12487
12509;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20626 19492 12488;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20625 56567
12510;;;;;; 855904 0)) 12489;;;;;; 922104 625000))
12511;;; Generated autoloads from play/gomoku.el 12490;;; Generated autoloads from play/gomoku.el
12512 12491
12513(autoload 'gomoku "gomoku" "\ 12492(autoload 'gomoku "gomoku" "\
@@ -12535,7 +12514,7 @@ Use \\[describe-mode] for more info.
12535 12514
12536;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address 12515;;;### (autoloads (goto-address-prog-mode goto-address-mode goto-address
12537;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20566 12516;;;;;; goto-address-at-point) "goto-addr" "net/goto-addr.el" (20566
12538;;;;;; 63671 243798 0)) 12517;;;;;; 46230 958621 550000))
12539;;; Generated autoloads from net/goto-addr.el 12518;;; Generated autoloads from net/goto-addr.el
12540 12519
12541(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1") 12520(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
@@ -12577,7 +12556,7 @@ Like `goto-address-mode', but only for comments and strings.
12577;;;*** 12556;;;***
12578 12557
12579;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve) 12558;;;### (autoloads (gravatar-retrieve-synchronously gravatar-retrieve)
12580;;;;;; "gravatar" "gnus/gravatar.el" (20355 10021 546955 0)) 12559;;;;;; "gravatar" "gnus/gravatar.el" (20533 50312 678915 0))
12581;;; Generated autoloads from gnus/gravatar.el 12560;;; Generated autoloads from gnus/gravatar.el
12582 12561
12583(autoload 'gravatar-retrieve "gravatar" "\ 12562(autoload 'gravatar-retrieve "gravatar" "\
@@ -12595,8 +12574,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it.
12595 12574
12596;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults 12575;;;### (autoloads (zrgrep rgrep lgrep grep-find grep grep-mode grep-compute-defaults
12597;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command 12576;;;;;; grep-process-setup grep-setup-hook grep-find-command grep-command
12598;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20572 16038 12577;;;;;; grep-window-height) "grep" "progmodes/grep.el" (20664 24895
12599;;;;;; 402143 0)) 12578;;;;;; 147100 745000))
12600;;; Generated autoloads from progmodes/grep.el 12579;;; Generated autoloads from progmodes/grep.el
12601 12580
12602(defvar grep-window-height nil "\ 12581(defvar grep-window-height nil "\
@@ -12759,7 +12738,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'.
12759 12738
12760;;;*** 12739;;;***
12761 12740
12762;;;### (autoloads (gs-load-image) "gs" "gs.el" (20355 10021 546955 12741;;;### (autoloads (gs-load-image) "gs" "gs.el" (20533 50312 678915
12763;;;;;; 0)) 12742;;;;;; 0))
12764;;; Generated autoloads from gs.el 12743;;; Generated autoloads from gs.el
12765 12744
@@ -12774,8 +12753,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
12774;;;*** 12753;;;***
12775 12754
12776;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb 12755;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb
12777;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20614 55343 12756;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20615 22847
12778;;;;;; 384716 548000)) 12757;;;;;; 537904 0))
12779;;; Generated autoloads from progmodes/gud.el 12758;;; Generated autoloads from progmodes/gud.el
12780 12759
12781(autoload 'gud-gdb "gud" "\ 12760(autoload 'gud-gdb "gud" "\
@@ -12863,9 +12842,9 @@ it if ARG is omitted or nil.
12863 12842
12864;;;*** 12843;;;***
12865 12844
12866;;;### (autoloads (setf gv-define-simple-setter gv-define-setter 12845;;;### (autoloads (gv-ref setf gv-define-simple-setter gv-define-setter
12867;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get) 12846;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get)
12868;;;;;; "gv" "emacs-lisp/gv.el" (20608 20265 413008 0)) 12847;;;;;; "gv" "emacs-lisp/gv.el" (20647 7982 429263 0))
12869;;; Generated autoloads from emacs-lisp/gv.el 12848;;; Generated autoloads from emacs-lisp/gv.el
12870 12849
12871(autoload 'gv-get "gv" "\ 12850(autoload 'gv-get "gv" "\
@@ -12885,7 +12864,7 @@ Build the code manipulating the generalized variable PLACE.
12885GETTER will be bound to a copyable expression that returns the value 12864GETTER will be bound to a copyable expression that returns the value
12886of PLACE. 12865of PLACE.
12887SETTER will be bound to a function that takes an expression V and returns 12866SETTER will be bound to a function that takes an expression V and returns
12888and new expression that sets PLACE to V. 12867a new expression that sets PLACE to V.
12889BODY should return some Elisp expression E manipulating PLACE via GETTER 12868BODY should return some Elisp expression E manipulating PLACE via GETTER
12890and SETTER. 12869and SETTER.
12891The returned value will then be an Elisp expression that first evaluates 12870The returned value will then be an Elisp expression that first evaluates
@@ -12921,7 +12900,7 @@ well for simple place forms.
12921Assignments of VAL to (NAME ARGS...) are expanded by binding the argument 12900Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
12922forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must 12901forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
12923return a Lisp form that does the assignment. 12902return a Lisp form that does the assignment.
12924The first arg in ARLIST (the one that receives VAL) receives an expression 12903The first arg in ARGLIST (the one that receives VAL) receives an expression
12925which can do arbitrary things, whereas the other arguments are all guaranteed 12904which can do arbitrary things, whereas the other arguments are all guaranteed
12926to be pure and copyable. Example use: 12905to be pure and copyable. Example use:
12927 (gv-define-setter aref (v a i) `(aset ,a ,i ,v)) 12906 (gv-define-setter aref (v a i) `(aset ,a ,i ,v))
@@ -12935,8 +12914,12 @@ Define a simple setter method for generalized variable NAME.
12935This macro is an easy-to-use substitute for `gv-define-expander' that works 12914This macro is an easy-to-use substitute for `gv-define-expander' that works
12936well for simple place forms. Assignments of VAL to (NAME ARGS...) are 12915well for simple place forms. Assignments of VAL to (NAME ARGS...) are
12937turned into calls of the form (SETTER ARGS... VAL). 12916turned into calls of the form (SETTER ARGS... VAL).
12917
12938If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and 12918If FIX-RETURN is non-nil, then SETTER is not assumed to return VAL and
12939instead the assignment is turned into (prog1 VAL (SETTER ARGS... VAL)) 12919instead the assignment is turned into something equivalent to
12920 (let ((temp VAL))
12921 (SETTER ARGS... temp)
12922 temp)
12940so as to preserve the semantics of `setf'. 12923so as to preserve the semantics of `setf'.
12941 12924
12942\(fn NAME SETTER &optional FIX-RETURN)" nil t) 12925\(fn NAME SETTER &optional FIX-RETURN)" nil t)
@@ -12952,10 +12935,16 @@ The return value is the last VAL in the list.
12952 12935
12953(put 'gv-place 'edebug-form-spec 'edebug-match-form) 12936(put 'gv-place 'edebug-form-spec 'edebug-match-form)
12954 12937
12938(autoload 'gv-ref "gv" "\
12939Return a reference to PLACE.
12940This is like the `&' operator of the C language.
12941
12942\(fn PLACE)" nil t)
12943
12955;;;*** 12944;;;***
12956 12945
12957;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20566 12946;;;### (autoloads (handwrite) "handwrite" "play/handwrite.el" (20566
12958;;;;;; 63671 243798 0)) 12947;;;;;; 46640 14637 679000))
12959;;; Generated autoloads from play/handwrite.el 12948;;; Generated autoloads from play/handwrite.el
12960 12949
12961(autoload 'handwrite "handwrite" "\ 12950(autoload 'handwrite "handwrite" "\
@@ -12973,7 +12962,7 @@ Variables: `handwrite-linespace' (default 12)
12973;;;*** 12962;;;***
12974 12963
12975;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el" 12964;;;### (autoloads (hanoi-unix-64 hanoi-unix hanoi) "hanoi" "play/hanoi.el"
12976;;;;;; (20478 3673 653810 0)) 12965;;;;;; (20533 50312 678915 0))
12977;;; Generated autoloads from play/hanoi.el 12966;;; Generated autoloads from play/hanoi.el
12978 12967
12979(autoload 'hanoi "hanoi" "\ 12968(autoload 'hanoi "hanoi" "\
@@ -13002,7 +12991,7 @@ to be updated.
13002 12991
13003;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment 12992;;;### (autoloads (mail-check-payment mail-add-payment-async mail-add-payment
13004;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment) 12993;;;;;; hashcash-verify-payment hashcash-insert-payment-async hashcash-insert-payment)
13005;;;;;; "hashcash" "mail/hashcash.el" (20355 10021 546955 0)) 12994;;;;;; "hashcash" "mail/hashcash.el" (20533 50312 678915 0))
13006;;; Generated autoloads from mail/hashcash.el 12995;;; Generated autoloads from mail/hashcash.el
13007 12996
13008(autoload 'hashcash-insert-payment "hashcash" "\ 12997(autoload 'hashcash-insert-payment "hashcash" "\
@@ -13047,8 +13036,8 @@ Prefix arg sets default accept amount temporarily.
13047;;;### (autoloads (scan-buf-previous-region scan-buf-next-region 13036;;;### (autoloads (scan-buf-previous-region scan-buf-next-region
13048;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer 13037;;;;;; scan-buf-move-to-region help-at-pt-display-when-idle help-at-pt-set-timer
13049;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string 13038;;;;;; help-at-pt-cancel-timer display-local-help help-at-pt-kbd-string
13050;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20355 10021 13039;;;;;; help-at-pt-string) "help-at-pt" "help-at-pt.el" (20533 50312
13051;;;;;; 546955 0)) 13040;;;;;; 678915 0))
13052;;; Generated autoloads from help-at-pt.el 13041;;; Generated autoloads from help-at-pt.el
13053 13042
13054(autoload 'help-at-pt-string "help-at-pt" "\ 13043(autoload 'help-at-pt-string "help-at-pt" "\
@@ -13178,7 +13167,7 @@ different regions. With numeric argument ARG, behaves like
13178;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories 13167;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories
13179;;;;;; describe-syntax describe-variable variable-at-point describe-function-1 13168;;;;;; describe-syntax describe-variable variable-at-point describe-function-1
13180;;;;;; find-lisp-object-file-name help-C-file-name describe-function) 13169;;;;;; find-lisp-object-file-name help-C-file-name describe-function)
13181;;;;;; "help-fns" "help-fns.el" (20601 16294 451653 0)) 13170;;;;;; "help-fns" "help-fns.el" (20600 48649 527386 0))
13182;;; Generated autoloads from help-fns.el 13171;;; Generated autoloads from help-fns.el
13183 13172
13184(autoload 'describe-function "help-fns" "\ 13173(autoload 'describe-function "help-fns" "\
@@ -13258,7 +13247,7 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file.
13258;;;*** 13247;;;***
13259 13248
13260;;;### (autoloads (three-step-help) "help-macro" "help-macro.el" 13249;;;### (autoloads (three-step-help) "help-macro" "help-macro.el"
13261;;;;;; (20589 25124 41923 0)) 13250;;;;;; (20588 61767 630752 0))
13262;;; Generated autoloads from help-macro.el 13251;;; Generated autoloads from help-macro.el
13263 13252
13264(defvar three-step-help nil "\ 13253(defvar three-step-help nil "\
@@ -13275,7 +13264,7 @@ gives the window that lists the options.")
13275;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button 13264;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button
13276;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref 13265;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref
13277;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el" 13266;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el"
13278;;;;;; (20601 16294 451653 0)) 13267;;;;;; (20647 12936 770269 490000))
13279;;; Generated autoloads from help-mode.el 13268;;; Generated autoloads from help-mode.el
13280 13269
13281(autoload 'help-mode "help-mode" "\ 13270(autoload 'help-mode "help-mode" "\
@@ -13375,7 +13364,7 @@ BOOKMARK is a bookmark name or a bookmark record.
13375;;;*** 13364;;;***
13376 13365
13377;;;### (autoloads (Helper-help Helper-describe-bindings) "helper" 13366;;;### (autoloads (Helper-help Helper-describe-bindings) "helper"
13378;;;;;; "emacs-lisp/helper.el" (20355 10021 546955 0)) 13367;;;;;; "emacs-lisp/helper.el" (20533 50312 678915 0))
13379;;; Generated autoloads from emacs-lisp/helper.el 13368;;; Generated autoloads from emacs-lisp/helper.el
13380 13369
13381(autoload 'Helper-describe-bindings "helper" "\ 13370(autoload 'Helper-describe-bindings "helper" "\
@@ -13391,7 +13380,7 @@ Provide help for current mode.
13391;;;*** 13380;;;***
13392 13381
13393;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" 13382;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
13394;;;;;; "hexl.el" (20523 62082 997685 0)) 13383;;;;;; "hexl.el" (20666 60492 791740 0))
13395;;; Generated autoloads from hexl.el 13384;;; Generated autoloads from hexl.el
13396 13385
13397(autoload 'hexl-mode "hexl" "\ 13386(autoload 'hexl-mode "hexl" "\
@@ -13488,7 +13477,7 @@ This discards the buffer's undo information.
13488;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer 13477;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
13489;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer 13478;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
13490;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" 13479;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
13491;;;;;; (20593 22184 581574 0)) 13480;;;;;; (20594 14884 858174 0))
13492;;; Generated autoloads from hi-lock.el 13481;;; Generated autoloads from hi-lock.el
13493 13482
13494(autoload 'hi-lock-mode "hi-lock" "\ 13483(autoload 'hi-lock-mode "hi-lock" "\
@@ -13636,7 +13625,7 @@ be found in variable `hi-lock-interactive-patterns'.
13636;;;*** 13625;;;***
13637 13626
13638;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el" 13627;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el"
13639;;;;;; (20588 4262 531841 0)) 13628;;;;;; (20587 1560 278468 915000))
13640;;; Generated autoloads from progmodes/hideif.el 13629;;; Generated autoloads from progmodes/hideif.el
13641 13630
13642(autoload 'hide-ifdef-mode "hideif" "\ 13631(autoload 'hide-ifdef-mode "hideif" "\
@@ -13680,7 +13669,7 @@ Several variables affect how the hiding is done:
13680;;;*** 13669;;;***
13681 13670
13682;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" 13671;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
13683;;;;;; (20566 63671 243798 0)) 13672;;;;;; (20566 46578 522635 374000))
13684;;; Generated autoloads from progmodes/hideshow.el 13673;;; Generated autoloads from progmodes/hideshow.el
13685 13674
13686(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\ 13675(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
@@ -13746,8 +13735,8 @@ Unconditionally turn off `hs-minor-mode'.
13746;;;;;; highlight-compare-buffers highlight-changes-rotate-faces 13735;;;;;; highlight-compare-buffers highlight-changes-rotate-faces
13747;;;;;; highlight-changes-previous-change highlight-changes-next-change 13736;;;;;; highlight-changes-previous-change highlight-changes-next-change
13748;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode 13737;;;;;; highlight-changes-remove-highlight highlight-changes-visible-mode
13749;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20355 13738;;;;;; highlight-changes-mode) "hilit-chg" "hilit-chg.el" (20533
13750;;;;;; 10021 546955 0)) 13739;;;;;; 50312 678915 0))
13751;;; Generated autoloads from hilit-chg.el 13740;;; Generated autoloads from hilit-chg.el
13752 13741
13753(autoload 'highlight-changes-mode "hilit-chg" "\ 13742(autoload 'highlight-changes-mode "hilit-chg" "\
@@ -13878,10 +13867,17 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode.
13878 13867
13879;;;*** 13868;;;***
13880 13869
13881;;;### (autoloads (make-hippie-expand-function hippie-expand) "hippie-exp" 13870;;;### (autoloads (make-hippie-expand-function hippie-expand hippie-expand-try-functions-list)
13882;;;;;; "hippie-exp.el" (20584 7212 455152 0)) 13871;;;;;; "hippie-exp" "hippie-exp.el" (20660 26176 137583 0))
13883;;; Generated autoloads from hippie-exp.el 13872;;; Generated autoloads from hippie-exp.el
13884 13873
13874(defvar hippie-expand-try-functions-list '(try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol) "\
13875The list of expansion functions tried in order by `hippie-expand'.
13876To change the behavior of `hippie-expand', remove, change the order of,
13877or insert functions in this list.")
13878
13879(custom-autoload 'hippie-expand-try-functions-list "hippie-exp" t)
13880
13885(autoload 'hippie-expand "hippie-exp" "\ 13881(autoload 'hippie-expand "hippie-exp" "\
13886Try to expand text before point, using multiple methods. 13882Try to expand text before point, using multiple methods.
13887The expansion functions in `hippie-expand-try-functions-list' are 13883The expansion functions in `hippie-expand-try-functions-list' are
@@ -13904,7 +13900,7 @@ argument VERBOSE non-nil makes the function verbose.
13904;;;*** 13900;;;***
13905 13901
13906;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el" 13902;;;### (autoloads (global-hl-line-mode hl-line-mode) "hl-line" "hl-line.el"
13907;;;;;; (20355 10021 546955 0)) 13903;;;;;; (20533 50312 678915 0))
13908;;; Generated autoloads from hl-line.el 13904;;; Generated autoloads from hl-line.el
13909 13905
13910(autoload 'hl-line-mode "hl-line" "\ 13906(autoload 'hl-line-mode "hl-line" "\
@@ -13957,7 +13953,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
13957;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays 13953;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays
13958;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays 13954;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays
13959;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays" 13955;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays"
13960;;;;;; "calendar/holidays.el" (20566 63671 243798 0)) 13956;;;;;; "calendar/holidays.el" (20566 46439 838629 747000))
13961;;; Generated autoloads from calendar/holidays.el 13957;;; Generated autoloads from calendar/holidays.el
13962 13958
13963(define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1") 13959(define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1")
@@ -14105,8 +14101,8 @@ The optional LABEL is used to label the buffer created.
14105 14101
14106;;;*** 14102;;;***
14107 14103
14108;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20355 14104;;;### (autoloads (html2text) "html2text" "gnus/html2text.el" (20533
14109;;;;;; 10021 546955 0)) 14105;;;;;; 50312 678915 0))
14110;;; Generated autoloads from gnus/html2text.el 14106;;; Generated autoloads from gnus/html2text.el
14111 14107
14112(autoload 'html2text "html2text" "\ 14108(autoload 'html2text "html2text" "\
@@ -14117,7 +14113,7 @@ Convert HTML to plain text in the current buffer.
14117;;;*** 14113;;;***
14118 14114
14119;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer) 14115;;;### (autoloads (htmlfontify-copy-and-link-dir htmlfontify-buffer)
14120;;;;;; "htmlfontify" "htmlfontify.el" (20614 54428 654267 0)) 14116;;;;;; "htmlfontify" "htmlfontify.el" (20615 22847 537904 0))
14121;;; Generated autoloads from htmlfontify.el 14117;;; Generated autoloads from htmlfontify.el
14122 14118
14123(autoload 'htmlfontify-buffer "htmlfontify" "\ 14119(autoload 'htmlfontify-buffer "htmlfontify" "\
@@ -14150,8 +14146,8 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'.
14150;;;*** 14146;;;***
14151 14147
14152;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter 14148;;;### (autoloads (define-ibuffer-filter define-ibuffer-op define-ibuffer-sorter
14153;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20478 14149;;;;;; define-ibuffer-column) "ibuf-macs" "ibuf-macs.el" (20533
14154;;;;;; 3673 653810 0)) 14150;;;;;; 50312 678915 0))
14155;;; Generated autoloads from ibuf-macs.el 14151;;; Generated autoloads from ibuf-macs.el
14156 14152
14157(autoload 'define-ibuffer-column "ibuf-macs" "\ 14153(autoload 'define-ibuffer-column "ibuf-macs" "\
@@ -14240,7 +14236,7 @@ bound to the current value of the filter.
14240;;;*** 14236;;;***
14241 14237
14242;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) 14238;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
14243;;;;;; "ibuffer" "ibuffer.el" (20576 13312 649004 817000)) 14239;;;;;; "ibuffer" "ibuffer.el" (20647 14483 886336 46000))
14244;;; Generated autoloads from ibuffer.el 14240;;; Generated autoloads from ibuffer.el
14245 14241
14246(autoload 'ibuffer-list-buffers "ibuffer" "\ 14242(autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14281,7 +14277,7 @@ FORMATS is the value to use for `ibuffer-formats'.
14281 14277
14282;;;### (autoloads (icalendar-import-buffer icalendar-import-file 14278;;;### (autoloads (icalendar-import-buffer icalendar-import-file
14283;;;;;; icalendar-export-region icalendar-export-file) "icalendar" 14279;;;;;; icalendar-export-region icalendar-export-file) "icalendar"
14284;;;;;; "calendar/icalendar.el" (20593 22184 581574 0)) 14280;;;;;; "calendar/icalendar.el" (20594 14884 858174 0))
14285;;; Generated autoloads from calendar/icalendar.el 14281;;; Generated autoloads from calendar/icalendar.el
14286 14282
14287(autoload 'icalendar-export-file "icalendar" "\ 14283(autoload 'icalendar-export-file "icalendar" "\
@@ -14333,8 +14329,8 @@ buffer `*icalendar-errors*'.
14333 14329
14334;;;*** 14330;;;***
14335 14331
14336;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20453 14332;;;### (autoloads (icomplete-mode) "icomplete" "icomplete.el" (20665
14337;;;;;; 5437 764254 0)) 14333;;;;;; 22617 826757 0))
14338;;; Generated autoloads from icomplete.el 14334;;; Generated autoloads from icomplete.el
14339 14335
14340(defvar icomplete-mode nil "\ 14336(defvar icomplete-mode nil "\
@@ -14356,8 +14352,8 @@ the mode if ARG is omitted or nil.
14356 14352
14357;;;*** 14353;;;***
14358 14354
14359;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20355 10021 14355;;;### (autoloads (icon-mode) "icon" "progmodes/icon.el" (20533 50312
14360;;;;;; 546955 0)) 14356;;;;;; 678915 0))
14361;;; Generated autoloads from progmodes/icon.el 14357;;; Generated autoloads from progmodes/icon.el
14362 14358
14363(autoload 'icon-mode "icon" "\ 14359(autoload 'icon-mode "icon" "\
@@ -14398,7 +14394,7 @@ with no args, if that value is non-nil.
14398;;;*** 14394;;;***
14399 14395
14400;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el" 14396;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
14401;;;;;; (20572 16038 402143 0)) 14397;;;;;; (20571 55599 814625 0))
14402;;; Generated autoloads from progmodes/idlw-shell.el 14398;;; Generated autoloads from progmodes/idlw-shell.el
14403 14399
14404(autoload 'idlwave-shell "idlw-shell" "\ 14400(autoload 'idlwave-shell "idlw-shell" "\
@@ -14424,7 +14420,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
14424;;;*** 14420;;;***
14425 14421
14426;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el" 14422;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
14427;;;;;; (20576 42138 697312 0)) 14423;;;;;; (20576 17457 279993 463000))
14428;;; Generated autoloads from progmodes/idlwave.el 14424;;; Generated autoloads from progmodes/idlwave.el
14429 14425
14430(autoload 'idlwave-mode "idlwave" "\ 14426(autoload 'idlwave-mode "idlwave" "\
@@ -14558,8 +14554,8 @@ The main features of this mode are
14558;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file 14554;;;;;; ido-find-alternate-file ido-find-file-other-window ido-find-file
14559;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer 14555;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
14560;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window 14556;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
14561;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20590 14557;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (20665
14562;;;;;; 45996 129575 0)) 14558;;;;;; 25107 949632 0))
14563;;; Generated autoloads from ido.el 14559;;; Generated autoloads from ido.el
14564 14560
14565(defvar ido-mode nil "\ 14561(defvar ido-mode nil "\
@@ -14818,7 +14814,7 @@ DEF, if non-nil, is the default value.
14818 14814
14819;;;*** 14815;;;***
14820 14816
14821;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 63671 243798 0)) 14817;;;### (autoloads (ielm) "ielm" "ielm.el" (20566 45191 990577 813000))
14822;;; Generated autoloads from ielm.el 14818;;; Generated autoloads from ielm.el
14823 14819
14824(autoload 'ielm "ielm" "\ 14820(autoload 'ielm "ielm" "\
@@ -14829,8 +14825,8 @@ Switches to the buffer `*ielm*', or creates it if it does not exist.
14829 14825
14830;;;*** 14826;;;***
14831 14827
14832;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20355 10021 14828;;;### (autoloads (iimage-mode) "iimage" "iimage.el" (20533 50312
14833;;;;;; 546955 0)) 14829;;;;;; 678915 0))
14834;;; Generated autoloads from iimage.el 14830;;; Generated autoloads from iimage.el
14835 14831
14836(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1") 14832(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
@@ -14851,7 +14847,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
14851;;;;;; create-image image-type-auto-detected-p image-type-available-p 14847;;;;;; create-image image-type-auto-detected-p image-type-available-p
14852;;;;;; image-type image-type-from-file-name image-type-from-file-header 14848;;;;;; image-type image-type-from-file-name image-type-from-file-header
14853;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el" 14849;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el"
14854;;;;;; (20613 59417 195100 163000)) 14850;;;;;; (20648 29678 511980 0))
14855;;; Generated autoloads from image.el 14851;;; Generated autoloads from image.el
14856 14852
14857(autoload 'image-type-from-data "image" "\ 14853(autoload 'image-type-from-data "image" "\
@@ -14950,7 +14946,7 @@ means display it in the right marginal area.
14950Insert IMAGE into current buffer at point. 14946Insert IMAGE into current buffer at point.
14951IMAGE is displayed by inserting STRING into the current buffer 14947IMAGE is displayed by inserting STRING into the current buffer
14952with a `display' property whose value is the image. STRING 14948with a `display' property whose value is the image. STRING
14953defaults to the empty string if you omit it. 14949defaults to a single space if you omit it.
14954AREA is where to display the image. AREA nil or omitted means 14950AREA is where to display the image. AREA nil or omitted means
14955display it in the text area, a value of `left-margin' means 14951display it in the text area, a value of `left-margin' means
14956display it in the left marginal area, a value of `right-margin' 14952display it in the left marginal area, a value of `right-margin'
@@ -14966,8 +14962,8 @@ height of the image; integer values are taken as pixel values.
14966(autoload 'insert-sliced-image "image" "\ 14962(autoload 'insert-sliced-image "image" "\
14967Insert IMAGE into current buffer at point. 14963Insert IMAGE into current buffer at point.
14968IMAGE is displayed by inserting STRING into the current buffer 14964IMAGE is displayed by inserting STRING into the current buffer
14969with a `display' property whose value is the image. STRING is 14965with a `display' property whose value is the image. The default
14970defaulted if you omit it. 14966STRING is a single space.
14971AREA is where to display the image. AREA nil or omitted means 14967AREA is where to display the image. AREA nil or omitted means
14972display it in the text area, a value of `left-margin' means 14968display it in the text area, a value of `left-margin' means
14973display it in the left marginal area, a value of `right-margin' 14969display it in the left marginal area, a value of `right-margin'
@@ -15051,7 +15047,7 @@ If Emacs is compiled without ImageMagick support, this does nothing.
15051;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag 15047;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
15052;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs 15048;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
15053;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs) 15049;;;;;; image-dired-dired-with-window-configuration image-dired-dired-toggle-marked-thumbs)
15054;;;;;; "image-dired" "image-dired.el" (20478 3673 653810 0)) 15050;;;;;; "image-dired" "image-dired.el" (20648 29678 511980 0))
15055;;; Generated autoloads from image-dired.el 15051;;; Generated autoloads from image-dired.el
15056 15052
15057(autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\ 15053(autoload 'image-dired-dired-toggle-marked-thumbs "image-dired" "\
@@ -15189,7 +15185,7 @@ easy-to-use form.
15189 15185
15190;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp 15186;;;### (autoloads (auto-image-file-mode insert-image-file image-file-name-regexp
15191;;;;;; image-file-name-regexps image-file-name-extensions) "image-file" 15187;;;;;; image-file-name-regexps image-file-name-extensions) "image-file"
15192;;;;;; "image-file.el" (20355 10021 546955 0)) 15188;;;;;; "image-file.el" (20533 50312 678915 0))
15193;;; Generated autoloads from image-file.el 15189;;; Generated autoloads from image-file.el
15194 15190
15195(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\ 15191(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
@@ -15252,7 +15248,7 @@ An image file is one whose name has an extension in
15252;;;*** 15248;;;***
15253 15249
15254;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode 15250;;;### (autoloads (image-bookmark-jump image-mode-as-text image-minor-mode
15255;;;;;; image-mode) "image-mode" "image-mode.el" (20580 10161 446444 15251;;;;;; image-mode) "image-mode" "image-mode.el" (20656 14460 296991
15256;;;;;; 0)) 15252;;;;;; 0))
15257;;; Generated autoloads from image-mode.el 15253;;; Generated autoloads from image-mode.el
15258 15254
@@ -15298,7 +15294,7 @@ on these modes.
15298;;;*** 15294;;;***
15299 15295
15300;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar 15296;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
15301;;;;;; imenu-sort-function) "imenu" "imenu.el" (20622 22438 32851 15297;;;;;; imenu-sort-function) "imenu" "imenu.el" (20647 7982 429263
15302;;;;;; 0)) 15298;;;;;; 0))
15303;;; Generated autoloads from imenu.el 15299;;; Generated autoloads from imenu.el
15304 15300
@@ -15439,7 +15435,7 @@ for more information.
15439 15435
15440;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion 15436;;;### (autoloads (indian-2-column-to-ucs-region in-is13194-pre-write-conversion
15441;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region) 15437;;;;;; in-is13194-post-read-conversion indian-compose-string indian-compose-region)
15442;;;;;; "ind-util" "language/ind-util.el" (20355 10021 546955 0)) 15438;;;;;; "ind-util" "language/ind-util.el" (20533 50312 678915 0))
15443;;; Generated autoloads from language/ind-util.el 15439;;; Generated autoloads from language/ind-util.el
15444 15440
15445(autoload 'indian-compose-region "ind-util" "\ 15441(autoload 'indian-compose-region "ind-util" "\
@@ -15470,7 +15466,7 @@ Convert old Emacs Devanagari characters to UCS.
15470;;;*** 15466;;;***
15471 15467
15472;;;### (autoloads (inferior-lisp) "inf-lisp" "progmodes/inf-lisp.el" 15468;;;### (autoloads (inferior-lisp) "inf-lisp" "progmodes/inf-lisp.el"
15473;;;;;; (20584 7212 455152 0)) 15469;;;;;; (20584 355 183605 0))
15474;;; Generated autoloads from progmodes/inf-lisp.el 15470;;; Generated autoloads from progmodes/inf-lisp.el
15475 15471
15476(autoload 'inferior-lisp "inf-lisp" "\ 15472(autoload 'inferior-lisp "inf-lisp" "\
@@ -15492,8 +15488,8 @@ of `inferior-lisp-program'). Runs the hooks from
15492;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node 15488;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node
15493;;;;;; Info-mode info-finder info-apropos Info-index Info-directory 15489;;;;;; Info-mode info-finder info-apropos Info-index Info-directory
15494;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual 15490;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual
15495;;;;;; info info-other-window) "info" "info.el" (20623 43301 870757 15491;;;;;; info info-other-window) "info" "info.el" (20668 19667 245432
15496;;;;;; 0)) 15492;;;;;; 713000))
15497;;; Generated autoloads from info.el 15493;;; Generated autoloads from info.el
15498 15494
15499(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\ 15495(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
@@ -15695,7 +15691,9 @@ type returned by `Info-bookmark-make-record', which see.
15695\(fn BMK)" nil nil) 15691\(fn BMK)" nil nil)
15696 15692
15697(autoload 'info-display-manual "info" "\ 15693(autoload 'info-display-manual "info" "\
15698Go to Info buffer that displays MANUAL, creating it if none already exists. 15694Display an Info buffer displaying MANUAL.
15695If there is an existing Info buffer for MANUAL, display it.
15696Otherwise, visit the manual in a new Info buffer.
15699 15697
15700\(fn MANUAL)" t nil) 15698\(fn MANUAL)" t nil)
15701 15699
@@ -15703,7 +15701,7 @@ Go to Info buffer that displays MANUAL, creating it if none already exists.
15703 15701
15704;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file 15702;;;### (autoloads (info-complete-file info-complete-symbol info-lookup-file
15705;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el" 15703;;;;;; info-lookup-symbol info-lookup-reset) "info-look" "info-look.el"
15706;;;;;; (20474 44971 970015 0)) 15704;;;;;; (20533 50312 678915 0))
15707;;; Generated autoloads from info-look.el 15705;;; Generated autoloads from info-look.el
15708 15706
15709(autoload 'info-lookup-reset "info-look" "\ 15707(autoload 'info-lookup-reset "info-look" "\
@@ -15752,7 +15750,7 @@ Perform completion on file preceding point.
15752 15750
15753;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom 15751;;;### (autoloads (info-xref-docstrings info-xref-check-all-custom
15754;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el" 15752;;;;;; info-xref-check-all info-xref-check) "info-xref" "info-xref.el"
15755;;;;;; (20476 31768 298871 0)) 15753;;;;;; (20533 50312 678915 0))
15756;;; Generated autoloads from info-xref.el 15754;;; Generated autoloads from info-xref.el
15757 15755
15758(autoload 'info-xref-check "info-xref" "\ 15756(autoload 'info-xref-check "info-xref" "\
@@ -15835,7 +15833,7 @@ the sources handy.
15835;;;*** 15833;;;***
15836 15834
15837;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold 15835;;;### (autoloads (batch-info-validate Info-validate Info-split Info-split-threshold
15838;;;;;; Info-tagify) "informat" "informat.el" (20355 10021 546955 15836;;;;;; Info-tagify) "informat" "informat.el" (20533 50312 678915
15839;;;;;; 0)) 15837;;;;;; 0))
15840;;; Generated autoloads from informat.el 15838;;; Generated autoloads from informat.el
15841 15839
@@ -15882,7 +15880,7 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"
15882;;;*** 15880;;;***
15883 15881
15884;;;### (autoloads (inversion-require-emacs) "inversion" "cedet/inversion.el" 15882;;;### (autoloads (inversion-require-emacs) "inversion" "cedet/inversion.el"
15885;;;;;; (20590 45996 129575 0)) 15883;;;;;; (20590 37036 437844 0))
15886;;; Generated autoloads from cedet/inversion.el 15884;;; Generated autoloads from cedet/inversion.el
15887 15885
15888(autoload 'inversion-require-emacs "inversion" "\ 15886(autoload 'inversion-require-emacs "inversion" "\
@@ -15895,7 +15893,7 @@ Only checks one based on which kind of Emacs is being run.
15895 15893
15896;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method 15894;;;### (autoloads (isearch-process-search-multibyte-characters isearch-toggle-input-method
15897;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el" 15895;;;;;; isearch-toggle-specified-input-method) "isearch-x" "international/isearch-x.el"
15898;;;;;; (20355 10021 546955 0)) 15896;;;;;; (20533 50312 678915 0))
15899;;; Generated autoloads from international/isearch-x.el 15897;;; Generated autoloads from international/isearch-x.el
15900 15898
15901(autoload 'isearch-toggle-specified-input-method "isearch-x" "\ 15899(autoload 'isearch-toggle-specified-input-method "isearch-x" "\
@@ -15915,8 +15913,8 @@ Toggle input method in interactive search.
15915 15913
15916;;;*** 15914;;;***
15917 15915
15918;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20355 15916;;;### (autoloads (isearchb-activate) "isearchb" "isearchb.el" (20533
15919;;;;;; 10021 546955 0)) 15917;;;;;; 50312 678915 0))
15920;;; Generated autoloads from isearchb.el 15918;;; Generated autoloads from isearchb.el
15921 15919
15922(autoload 'isearchb-activate "isearchb" "\ 15920(autoload 'isearchb-activate "isearchb" "\
@@ -15932,7 +15930,7 @@ accessed via isearchb.
15932;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only 15930;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
15933;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso 15931;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
15934;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt" 15932;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
15935;;;;;; "international/iso-cvt.el" (20355 10021 546955 0)) 15933;;;;;; "international/iso-cvt.el" (20533 50312 678915 0))
15936;;; Generated autoloads from international/iso-cvt.el 15934;;; Generated autoloads from international/iso-cvt.el
15937 15935
15938(autoload 'iso-spanish "iso-cvt" "\ 15936(autoload 'iso-spanish "iso-cvt" "\
@@ -16023,7 +16021,7 @@ Add submenus to the File menu, to convert to and from various formats.
16023;;;*** 16021;;;***
16024 16022
16025;;;### (autoloads nil "iso-transl" "international/iso-transl.el" 16023;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
16026;;;;;; (20486 36135 22104 0)) 16024;;;;;; (20533 50312 678915 0))
16027;;; Generated autoloads from international/iso-transl.el 16025;;; Generated autoloads from international/iso-transl.el
16028 (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) 16026 (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
16029 (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap) 16027 (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap)
@@ -16031,10 +16029,11 @@ Add submenus to the File menu, to convert to and from various formats.
16031;;;*** 16029;;;***
16032 16030
16033;;;### (autoloads (ispell-message ispell-minor-mode ispell ispell-complete-word-interior-frag 16031;;;### (autoloads (ispell-message ispell-minor-mode ispell ispell-complete-word-interior-frag
16034;;;;;; ispell-complete-word ispell-continue ispell-buffer ispell-comments-and-strings 16032;;;;;; ispell-complete-word ispell-continue ispell-buffer-with-debug
16035;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell 16033;;;;;; ispell-buffer ispell-comments-and-strings ispell-region ispell-change-dictionary
16036;;;;;; ispell-help ispell-pdict-save ispell-word ispell-personal-dictionary) 16034;;;;;; ispell-kill-ispell ispell-help ispell-pdict-save ispell-word
16037;;;;;; "ispell" "textmodes/ispell.el" (20601 16294 451653 0)) 16035;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
16036;;;;;; (20669 24410 534430 0))
16038;;; Generated autoloads from textmodes/ispell.el 16037;;; Generated autoloads from textmodes/ispell.el
16039 16038
16040(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) 16039(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
@@ -16187,6 +16186,12 @@ Check the current buffer for spelling errors interactively.
16187 16186
16188\(fn)" t nil) 16187\(fn)" t nil)
16189 16188
16189(autoload 'ispell-buffer-with-debug "ispell" "\
16190`ispell-buffer' with some output sent to `ispell-debug-buffer' buffer.
16191Use APPEND to append the info to previous buffer if exists.
16192
16193\(fn &optional APPEND)" t nil)
16194
16190(autoload 'ispell-continue "ispell" "\ 16195(autoload 'ispell-continue "ispell" "\
16191Continue a halted spelling session beginning with the current word. 16196Continue a halted spelling session beginning with the current word.
16192 16197
@@ -16261,8 +16266,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to
16261 16266
16262;;;*** 16267;;;***
16263 16268
16264;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20577 16269;;;### (autoloads (iswitchb-mode) "iswitchb" "iswitchb.el" (20576
16265;;;;;; 33959 40183 0)) 16270;;;;;; 18956 372056 655000))
16266;;; Generated autoloads from iswitchb.el 16271;;; Generated autoloads from iswitchb.el
16267 16272
16268(defvar iswitchb-mode nil "\ 16273(defvar iswitchb-mode nil "\
@@ -16290,7 +16295,7 @@ between buffers using substrings. See `iswitchb' for details.
16290;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region 16295;;;### (autoloads (read-hiragana-string japanese-zenkaku-region japanese-hankaku-region
16291;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku 16296;;;;;; japanese-hiragana-region japanese-katakana-region japanese-zenkaku
16292;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal) 16297;;;;;; japanese-hankaku japanese-hiragana japanese-katakana setup-japanese-environment-internal)
16293;;;;;; "japan-util" "language/japan-util.el" (20355 10021 546955 16298;;;;;; "japan-util" "language/japan-util.el" (20533 50312 678915
16294;;;;;; 0)) 16299;;;;;; 0))
16295;;; Generated autoloads from language/japan-util.el 16300;;; Generated autoloads from language/japan-util.el
16296 16301
@@ -16369,7 +16374,7 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading.
16369;;;*** 16374;;;***
16370 16375
16371;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr" 16376;;;### (autoloads (jka-compr-uninstall jka-compr-handler) "jka-compr"
16372;;;;;; "jka-compr.el" (20355 10021 546955 0)) 16377;;;;;; "jka-compr.el" (20533 50312 678915 0))
16373;;; Generated autoloads from jka-compr.el 16378;;; Generated autoloads from jka-compr.el
16374 16379
16375(defvar jka-compr-inhibit nil "\ 16380(defvar jka-compr-inhibit nil "\
@@ -16392,8 +16397,8 @@ by `jka-compr-installed'.
16392 16397
16393;;;*** 16398;;;***
16394 16399
16395;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20532 45476 981297 16400;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20665 32946 244749
16396;;;;;; 0)) 16401;;;;;; 462000))
16397;;; Generated autoloads from progmodes/js.el 16402;;; Generated autoloads from progmodes/js.el
16398 16403
16399(autoload 'js-mode "js" "\ 16404(autoload 'js-mode "js" "\
@@ -16407,7 +16412,7 @@ Major mode for editing JavaScript.
16407 16412
16408;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup 16413;;;### (autoloads (keypad-setup keypad-numlock-shifted-setup keypad-shifted-setup
16409;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el" 16414;;;;;; keypad-numlock-setup keypad-setup) "keypad" "emulation/keypad.el"
16410;;;;;; (20355 10021 546955 0)) 16415;;;;;; (20533 50312 678915 0))
16411;;; Generated autoloads from emulation/keypad.el 16416;;; Generated autoloads from emulation/keypad.el
16412 16417
16413(defvar keypad-setup nil "\ 16418(defvar keypad-setup nil "\
@@ -16463,7 +16468,7 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.'
16463;;;*** 16468;;;***
16464 16469
16465;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el" 16470;;;### (autoloads (kinsoku) "kinsoku" "international/kinsoku.el"
16466;;;;;; (20355 10021 546955 0)) 16471;;;;;; (20533 50312 678915 0))
16467;;; Generated autoloads from international/kinsoku.el 16472;;; Generated autoloads from international/kinsoku.el
16468 16473
16469(autoload 'kinsoku "kinsoku" "\ 16474(autoload 'kinsoku "kinsoku" "\
@@ -16484,8 +16489,8 @@ the context of text formatting.
16484 16489
16485;;;*** 16490;;;***
16486 16491
16487;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20355 16492;;;### (autoloads (kkc-region) "kkc" "international/kkc.el" (20533
16488;;;;;; 10021 546955 0)) 16493;;;;;; 50312 678915 0))
16489;;; Generated autoloads from international/kkc.el 16494;;; Generated autoloads from international/kkc.el
16490 16495
16491(defvar kkc-after-update-conversion-functions nil "\ 16496(defvar kkc-after-update-conversion-functions nil "\
@@ -16510,7 +16515,7 @@ and the return value is the length of the conversion.
16510;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro 16515;;;### (autoloads (kmacro-end-call-mouse kmacro-end-and-call-macro
16511;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter 16516;;;;;; kmacro-end-or-call-macro kmacro-start-macro-or-insert-counter
16512;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item) 16517;;;;;; kmacro-call-macro kmacro-end-macro kmacro-start-macro kmacro-exec-ring-item)
16513;;;;;; "kmacro" "kmacro.el" (20471 22929 875294 592000)) 16518;;;;;; "kmacro" "kmacro.el" (20533 50312 678915 0))
16514;;; Generated autoloads from kmacro.el 16519;;; Generated autoloads from kmacro.el
16515 (global-set-key "\C-x(" 'kmacro-start-macro) 16520 (global-set-key "\C-x(" 'kmacro-start-macro)
16516 (global-set-key "\C-x)" 'kmacro-end-macro) 16521 (global-set-key "\C-x)" 'kmacro-end-macro)
@@ -16621,7 +16626,7 @@ If kbd macro currently being defined end it before activating it.
16621;;;*** 16626;;;***
16622 16627
16623;;;### (autoloads (setup-korean-environment-internal) "korea-util" 16628;;;### (autoloads (setup-korean-environment-internal) "korea-util"
16624;;;;;; "language/korea-util.el" (20501 3499 284800 0)) 16629;;;;;; "language/korea-util.el" (20533 50312 678915 0))
16625;;; Generated autoloads from language/korea-util.el 16630;;; Generated autoloads from language/korea-util.el
16626 16631
16627(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\ 16632(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
@@ -16636,7 +16641,7 @@ The kind of Korean keyboard for Korean input method.
16636;;;*** 16641;;;***
16637 16642
16638;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el" 16643;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el"
16639;;;;;; (20545 57511 257469 0)) 16644;;;;;; (20545 60086 510404 0))
16640;;; Generated autoloads from play/landmark.el 16645;;; Generated autoloads from play/landmark.el
16641 16646
16642(defalias 'landmark-repeat 'landmark-test-run) 16647(defalias 'landmark-repeat 'landmark-test-run)
@@ -16668,7 +16673,7 @@ Use \\[describe-mode] for more info.
16668 16673
16669;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string 16674;;;### (autoloads (lao-compose-region lao-composition-function lao-transcribe-roman-to-lao-string
16670;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string) 16675;;;;;; lao-transcribe-single-roman-syllable-to-lao lao-compose-string)
16671;;;;;; "lao-util" "language/lao-util.el" (20355 10021 546955 0)) 16676;;;;;; "lao-util" "language/lao-util.el" (20533 50312 678915 0))
16672;;; Generated autoloads from language/lao-util.el 16677;;; Generated autoloads from language/lao-util.el
16673 16678
16674(autoload 'lao-compose-string "lao-util" "\ 16679(autoload 'lao-compose-string "lao-util" "\
@@ -16707,7 +16712,7 @@ Transcribe Romanized Lao string STR to Lao character string.
16707 16712
16708;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc 16713;;;### (autoloads (latexenc-find-file-coding-system latexenc-coding-system-to-inputenc
16709;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist) 16714;;;;;; latexenc-inputenc-to-coding-system latex-inputenc-coding-alist)
16710;;;;;; "latexenc" "international/latexenc.el" (20355 10021 546955 16715;;;;;; "latexenc" "international/latexenc.el" (20533 50312 678915
16711;;;;;; 0)) 16716;;;;;; 0))
16712;;; Generated autoloads from international/latexenc.el 16717;;; Generated autoloads from international/latexenc.el
16713 16718
@@ -16740,8 +16745,8 @@ coding system names is determined from `latex-inputenc-coding-alist'.
16740;;;*** 16745;;;***
16741 16746
16742;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display) 16747;;;### (autoloads (latin1-display-ucs-per-lynx latin1-display latin1-display)
16743;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 33959 16748;;;;;; "latin1-disp" "international/latin1-disp.el" (20577 7722
16744;;;;;; 40183 0)) 16749;;;;;; 729771 155000))
16745;;; Generated autoloads from international/latin1-disp.el 16750;;; Generated autoloads from international/latin1-disp.el
16746 16751
16747(defvar latin1-display nil "\ 16752(defvar latin1-display nil "\
@@ -16783,7 +16788,7 @@ use either \\[customize] or the function `latin1-display'.")
16783;;;*** 16788;;;***
16784 16789
16785;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el" 16790;;;### (autoloads (ld-script-mode) "ld-script" "progmodes/ld-script.el"
16786;;;;;; (20355 10021 546955 0)) 16791;;;;;; (20533 50312 678915 0))
16787;;; Generated autoloads from progmodes/ld-script.el 16792;;; Generated autoloads from progmodes/ld-script.el
16788 16793
16789(autoload 'ld-script-mode "ld-script" "\ 16794(autoload 'ld-script-mode "ld-script" "\
@@ -16793,7 +16798,7 @@ A major mode to edit GNU ld script files
16793 16798
16794;;;*** 16799;;;***
16795 16800
16796;;;### (autoloads (life) "life" "play/life.el" (20545 57511 257469 16801;;;### (autoloads (life) "life" "play/life.el" (20545 60086 510404
16797;;;;;; 0)) 16802;;;;;; 0))
16798;;; Generated autoloads from play/life.el 16803;;; Generated autoloads from play/life.el
16799 16804
@@ -16808,7 +16813,7 @@ generations (this defaults to 1).
16808;;;*** 16813;;;***
16809 16814
16810;;;### (autoloads (global-linum-mode linum-mode) "linum" "linum.el" 16815;;;### (autoloads (global-linum-mode linum-mode) "linum" "linum.el"
16811;;;;;; (20580 10161 446444 0)) 16816;;;;;; (20581 13032 944808 0))
16812;;; Generated autoloads from linum.el 16817;;; Generated autoloads from linum.el
16813 16818
16814(autoload 'linum-mode "linum" "\ 16819(autoload 'linum-mode "linum" "\
@@ -16844,8 +16849,8 @@ See `linum-mode' for more information on Linum mode.
16844 16849
16845;;;*** 16850;;;***
16846 16851
16847;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20476 16852;;;### (autoloads (unload-feature) "loadhist" "loadhist.el" (20533
16848;;;;;; 31768 298871 0)) 16853;;;;;; 50312 678915 0))
16849;;; Generated autoloads from loadhist.el 16854;;; Generated autoloads from loadhist.el
16850 16855
16851(autoload 'unload-feature "loadhist" "\ 16856(autoload 'unload-feature "loadhist" "\
@@ -16877,7 +16882,7 @@ something strange, such as redefining an Emacs function.
16877;;;*** 16882;;;***
16878 16883
16879;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches) 16884;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
16880;;;;;; "locate" "locate.el" (20566 63671 243798 0)) 16885;;;;;; "locate" "locate.el" (20566 45835 254600 494000))
16881;;; Generated autoloads from locate.el 16886;;; Generated autoloads from locate.el
16882 16887
16883(defvar locate-ls-subdir-switches (purecopy "-al") "\ 16888(defvar locate-ls-subdir-switches (purecopy "-al") "\
@@ -16929,8 +16934,8 @@ except that FILTER is not optional.
16929 16934
16930;;;*** 16935;;;***
16931 16936
16932;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 48936 16937;;;### (autoloads (log-edit) "log-edit" "vc/log-edit.el" (20586 27094
16933;;;;;; 135199 0)) 16938;;;;;; 290288 0))
16934;;; Generated autoloads from vc/log-edit.el 16939;;; Generated autoloads from vc/log-edit.el
16935 16940
16936(autoload 'log-edit "log-edit" "\ 16941(autoload 'log-edit "log-edit" "\
@@ -16961,8 +16966,8 @@ done. Otherwise, it uses the current buffer.
16961 16966
16962;;;*** 16967;;;***
16963 16968
16964;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20515 16969;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20533
16965;;;;;; 36389 544939 0)) 16970;;;;;; 50312 678915 0))
16966;;; Generated autoloads from vc/log-view.el 16971;;; Generated autoloads from vc/log-view.el
16967 16972
16968(autoload 'log-view-mode "log-view" "\ 16973(autoload 'log-view-mode "log-view" "\
@@ -16972,35 +16977,9 @@ Major mode for browsing CVS log output.
16972 16977
16973;;;*** 16978;;;***
16974 16979
16975;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (20355
16976;;;;;; 10021 546955 0))
16977;;; Generated autoloads from longlines.el
16978
16979(autoload 'longlines-mode "longlines" "\
16980Toggle Long Lines mode in this buffer.
16981With a prefix argument ARG, enable Long Lines mode if ARG is
16982positive, and disable it otherwise. If called from Lisp, enable
16983the mode if ARG is omitted or nil.
16984
16985When Long Lines mode is enabled, long lines are wrapped if they
16986extend beyond `fill-column'. The soft newlines used for line
16987wrapping will not show up when the text is yanked or saved to
16988disk.
16989
16990If the variable `longlines-auto-wrap' is non-nil, lines are
16991automatically wrapped whenever the buffer is changed. You can
16992always call `fill-paragraph' to fill individual paragraphs.
16993
16994If the variable `longlines-show-hard-newlines' is non-nil, hard
16995newlines are indicated with a symbol.
16996
16997\(fn &optional ARG)" t nil)
16998
16999;;;***
17000
17001;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer 16980;;;### (autoloads (print-region lpr-region print-buffer lpr-buffer
17002;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20476 16981;;;;;; lpr-command lpr-switches printer-name) "lpr" "lpr.el" (20533
17003;;;;;; 31768 298871 0)) 16982;;;;;; 50312 678915 0))
17004;;; Generated autoloads from lpr.el 16983;;; Generated autoloads from lpr.el
17005 16984
17006(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\ 16985(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
@@ -17096,7 +17075,7 @@ for further customization of the printer command.
17096;;;*** 17075;;;***
17097 17076
17098;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el" 17077;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
17099;;;;;; (20355 10021 546955 0)) 17078;;;;;; (20533 50312 678915 0))
17100;;; Generated autoloads from ls-lisp.el 17079;;; Generated autoloads from ls-lisp.el
17101 17080
17102(defvar ls-lisp-support-shell-wildcards t "\ 17081(defvar ls-lisp-support-shell-wildcards t "\
@@ -17108,7 +17087,7 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).")
17108;;;*** 17087;;;***
17109 17088
17110;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20566 17089;;;### (autoloads (lunar-phases) "lunar" "calendar/lunar.el" (20566
17111;;;;;; 63671 243798 0)) 17090;;;;;; 46417 662629 772000))
17112;;; Generated autoloads from calendar/lunar.el 17091;;; Generated autoloads from calendar/lunar.el
17113 17092
17114(autoload 'lunar-phases "lunar" "\ 17093(autoload 'lunar-phases "lunar" "\
@@ -17122,8 +17101,8 @@ This function is suitable for execution in an init file.
17122 17101
17123;;;*** 17102;;;***
17124 17103
17125;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20355 17104;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (20665
17126;;;;;; 10021 546955 0)) 17105;;;;;; 36931 628705 467000))
17127;;; Generated autoloads from progmodes/m4-mode.el 17106;;; Generated autoloads from progmodes/m4-mode.el
17128 17107
17129(autoload 'm4-mode "m4-mode" "\ 17108(autoload 'm4-mode "m4-mode" "\
@@ -17134,7 +17113,7 @@ A major mode to edit m4 macro files.
17134;;;*** 17113;;;***
17135 17114
17136;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro 17115;;;### (autoloads (apply-macro-to-region-lines kbd-macro-query insert-kbd-macro
17137;;;;;; name-last-kbd-macro) "macros" "macros.el" (20355 10021 546955 17116;;;;;; name-last-kbd-macro) "macros" "macros.el" (20533 50312 678915
17138;;;;;; 0)) 17117;;;;;; 0))
17139;;; Generated autoloads from macros.el 17118;;; Generated autoloads from macros.el
17140 17119
@@ -17224,7 +17203,7 @@ and then select the region of un-tablified names and use
17224;;;*** 17203;;;***
17225 17204
17226;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr" 17205;;;### (autoloads (what-domain mail-extract-address-components) "mail-extr"
17227;;;;;; "mail/mail-extr.el" (20355 10021 546955 0)) 17206;;;;;; "mail/mail-extr.el" (20533 50312 678915 0))
17228;;; Generated autoloads from mail/mail-extr.el 17207;;; Generated autoloads from mail/mail-extr.el
17229 17208
17230(autoload 'mail-extract-address-components "mail-extr" "\ 17209(autoload 'mail-extract-address-components "mail-extr" "\
@@ -17256,7 +17235,7 @@ Convert mail domain DOMAIN to the country it corresponds to.
17256 17235
17257;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history 17236;;;### (autoloads (mail-hist-put-headers-into-history mail-hist-keep-history
17258;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el" 17237;;;;;; mail-hist-enable mail-hist-define-keys) "mail-hist" "mail/mail-hist.el"
17259;;;;;; (20566 63671 243798 0)) 17238;;;;;; (20566 46269 462622 211000))
17260;;; Generated autoloads from mail/mail-hist.el 17239;;; Generated autoloads from mail/mail-hist.el
17261 17240
17262(autoload 'mail-hist-define-keys "mail-hist" "\ 17241(autoload 'mail-hist-define-keys "mail-hist" "\
@@ -17288,7 +17267,7 @@ This function normally would be called when the message is sent.
17288;;;### (autoloads (mail-fetch-field mail-unquote-printable-region 17267;;;### (autoloads (mail-fetch-field mail-unquote-printable-region
17289;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable 17268;;;;;; mail-unquote-printable mail-quote-printable-region mail-quote-printable
17290;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822) 17269;;;;;; mail-file-babyl-p mail-dont-reply-to-names mail-use-rfc822)
17291;;;;;; "mail-utils" "mail/mail-utils.el" (20355 10021 546955 0)) 17270;;;;;; "mail-utils" "mail/mail-utils.el" (20533 50312 678915 0))
17292;;; Generated autoloads from mail/mail-utils.el 17271;;; Generated autoloads from mail/mail-utils.el
17293 17272
17294(defvar mail-use-rfc822 nil "\ 17273(defvar mail-use-rfc822 nil "\
@@ -17364,7 +17343,7 @@ matches may be returned from the message body.
17364 17343
17365;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup 17344;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup
17366;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20566 17345;;;;;; mail-abbrevs-mode) "mailabbrev" "mail/mailabbrev.el" (20566
17367;;;;;; 63671 243798 0)) 17346;;;;;; 34890 729127 0))
17368;;; Generated autoloads from mail/mailabbrev.el 17347;;; Generated autoloads from mail/mailabbrev.el
17369 17348
17370(defvar mail-abbrevs-mode nil "\ 17349(defvar mail-abbrevs-mode nil "\
@@ -17415,7 +17394,7 @@ double-quotes.
17415 17394
17416;;;### (autoloads (mail-complete mail-completion-at-point-function 17395;;;### (autoloads (mail-complete mail-completion-at-point-function
17417;;;;;; define-mail-alias expand-mail-aliases mail-complete-style) 17396;;;;;; define-mail-alias expand-mail-aliases mail-complete-style)
17418;;;;;; "mailalias" "mail/mailalias.el" (20577 33959 40183 0)) 17397;;;;;; "mailalias" "mail/mailalias.el" (20576 15960 587930 157000))
17419;;; Generated autoloads from mail/mailalias.el 17398;;; Generated autoloads from mail/mailalias.el
17420 17399
17421(defvar mail-complete-style 'angles "\ 17400(defvar mail-complete-style 'angles "\
@@ -17469,7 +17448,7 @@ current header, calls `mail-complete-function' and passes prefix ARG if any.
17469;;;*** 17448;;;***
17470 17449
17471;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el" 17450;;;### (autoloads (mailclient-send-it) "mailclient" "mail/mailclient.el"
17472;;;;;; (20355 10021 546955 0)) 17451;;;;;; (20533 50312 678915 0))
17473;;; Generated autoloads from mail/mailclient.el 17452;;; Generated autoloads from mail/mailclient.el
17474 17453
17475(autoload 'mailclient-send-it "mailclient" "\ 17454(autoload 'mailclient-send-it "mailclient" "\
@@ -17483,8 +17462,8 @@ The mail client is taken to be the handler of mailto URLs.
17483 17462
17484;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode 17463;;;### (autoloads (makefile-imake-mode makefile-bsdmake-mode makefile-makepp-mode
17485;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode) 17464;;;;;; makefile-gmake-mode makefile-automake-mode makefile-mode)
17486;;;;;; "make-mode" "progmodes/make-mode.el" (20392 30149 675975 17465;;;;;; "make-mode" "progmodes/make-mode.el" (20665 39324 196680
17487;;;;;; 59000)) 17466;;;;;; 404000))
17488;;; Generated autoloads from progmodes/make-mode.el 17467;;; Generated autoloads from progmodes/make-mode.el
17489 17468
17490(autoload 'makefile-mode "make-mode" "\ 17469(autoload 'makefile-mode "make-mode" "\
@@ -17601,8 +17580,8 @@ An adapted `makefile-mode' that knows about imake.
17601 17580
17602;;;*** 17581;;;***
17603 17582
17604;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20355 17583;;;### (autoloads (make-command-summary) "makesum" "makesum.el" (20533
17605;;;;;; 10021 546955 0)) 17584;;;;;; 50312 678915 0))
17606;;; Generated autoloads from makesum.el 17585;;; Generated autoloads from makesum.el
17607 17586
17608(autoload 'make-command-summary "makesum" "\ 17587(autoload 'make-command-summary "makesum" "\
@@ -17614,7 +17593,7 @@ Previous contents of that buffer are killed first.
17614;;;*** 17593;;;***
17615 17594
17616;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el" 17595;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el"
17617;;;;;; (20523 62082 997685 0)) 17596;;;;;; (20533 50312 678915 0))
17618;;; Generated autoloads from man.el 17597;;; Generated autoloads from man.el
17619 17598
17620(defalias 'manual-entry 'man) 17599(defalias 'manual-entry 'man)
@@ -17668,8 +17647,8 @@ Default bookmark handler for Man buffers.
17668 17647
17669;;;*** 17648;;;***
17670 17649
17671;;;### (autoloads (master-mode) "master" "master.el" (20355 10021 17650;;;### (autoloads (master-mode) "master" "master.el" (20533 50312
17672;;;;;; 546955 0)) 17651;;;;;; 678915 0))
17673;;; Generated autoloads from master.el 17652;;; Generated autoloads from master.el
17674 17653
17675(autoload 'master-mode "master" "\ 17654(autoload 'master-mode "master" "\
@@ -17692,7 +17671,7 @@ yourself the value of `master-of' by calling `master-show-slave'.
17692;;;*** 17671;;;***
17693 17672
17694;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el" 17673;;;### (autoloads (minibuffer-depth-indicate-mode) "mb-depth" "mb-depth.el"
17695;;;;;; (20355 10021 546955 0)) 17674;;;;;; (20533 50312 678915 0))
17696;;; Generated autoloads from mb-depth.el 17675;;; Generated autoloads from mb-depth.el
17697 17676
17698(defvar minibuffer-depth-indicate-mode nil "\ 17677(defvar minibuffer-depth-indicate-mode nil "\
@@ -17725,7 +17704,7 @@ recursion depth in the minibuffer prompt. This is only useful if
17725;;;;;; message-forward-make-body message-forward message-recover 17704;;;;;; message-forward-make-body message-forward message-recover
17726;;;;;; message-supersede message-cancel-news message-followup message-wide-reply 17705;;;;;; message-supersede message-cancel-news message-followup message-wide-reply
17727;;;;;; message-reply message-news message-mail message-mode) "message" 17706;;;;;; message-reply message-news message-mail message-mode) "message"
17728;;;;;; "gnus/message.el" (20567 23165 75548 0)) 17707;;;;;; "gnus/message.el" (20650 61396 673885 0))
17729;;; Generated autoloads from gnus/message.el 17708;;; Generated autoloads from gnus/message.el
17730 17709
17731(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) 17710(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -17891,7 +17870,7 @@ which specify the range to operate on.
17891;;;*** 17870;;;***
17892 17871
17893;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el" 17872;;;### (autoloads (metapost-mode metafont-mode) "meta-mode" "progmodes/meta-mode.el"
17894;;;;;; (20399 35365 4050 0)) 17873;;;;;; (20533 50312 678915 0))
17895;;; Generated autoloads from progmodes/meta-mode.el 17874;;; Generated autoloads from progmodes/meta-mode.el
17896 17875
17897(autoload 'metafont-mode "meta-mode" "\ 17876(autoload 'metafont-mode "meta-mode" "\
@@ -17908,7 +17887,7 @@ Major mode for editing MetaPost sources.
17908 17887
17909;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body 17888;;;### (autoloads (metamail-region metamail-buffer metamail-interpret-body
17910;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el" 17889;;;;;; metamail-interpret-header) "metamail" "mail/metamail.el"
17911;;;;;; (20355 10021 546955 0)) 17890;;;;;; (20533 50312 678915 0))
17912;;; Generated autoloads from mail/metamail.el 17891;;; Generated autoloads from mail/metamail.el
17913 17892
17914(autoload 'metamail-interpret-header "metamail" "\ 17893(autoload 'metamail-interpret-header "metamail" "\
@@ -17953,7 +17932,7 @@ redisplayed as output is inserted.
17953 17932
17954;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose 17933;;;### (autoloads (mh-fully-kill-draft mh-send-letter mh-user-agent-compose
17955;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp" 17934;;;;;; mh-smail-batch mh-smail-other-window mh-smail) "mh-comp"
17956;;;;;; "mh-e/mh-comp.el" (20355 10021 546955 0)) 17935;;;;;; "mh-e/mh-comp.el" (20660 26176 137583 0))
17957;;; Generated autoloads from mh-e/mh-comp.el 17936;;; Generated autoloads from mh-e/mh-comp.el
17958 17937
17959(autoload 'mh-smail "mh-comp" "\ 17938(autoload 'mh-smail "mh-comp" "\
@@ -18043,8 +18022,8 @@ delete the draft message.
18043 18022
18044;;;*** 18023;;;***
18045 18024
18046;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20614 54428 18025;;;### (autoloads (mh-version) "mh-e" "mh-e/mh-e.el" (20660 26176
18047;;;;;; 654267 0)) 18026;;;;;; 137583 0))
18048;;; Generated autoloads from mh-e/mh-e.el 18027;;; Generated autoloads from mh-e/mh-e.el
18049 18028
18050(put 'mh-progs 'risky-local-variable t) 18029(put 'mh-progs 'risky-local-variable t)
@@ -18061,7 +18040,7 @@ Display version information about MH-E and the MH mail handling system.
18061;;;*** 18040;;;***
18062 18041
18063;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder" 18042;;;### (autoloads (mh-folder-mode mh-nmail mh-rmail) "mh-folder"
18064;;;;;; "mh-e/mh-folder.el" (20371 55972 331861 0)) 18043;;;;;; "mh-e/mh-folder.el" (20660 26176 137583 0))
18065;;; Generated autoloads from mh-e/mh-folder.el 18044;;; Generated autoloads from mh-e/mh-folder.el
18066 18045
18067(autoload 'mh-rmail "mh-folder" "\ 18046(autoload 'mh-rmail "mh-folder" "\
@@ -18143,7 +18122,7 @@ perform the operation on all messages in that region.
18143;;;*** 18122;;;***
18144 18123
18145;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight" 18124;;;### (autoloads (midnight-delay-set clean-buffer-list) "midnight"
18146;;;;;; "midnight.el" (20478 3673 653810 0)) 18125;;;;;; "midnight.el" (20533 50312 678915 0))
18147;;; Generated autoloads from midnight.el 18126;;; Generated autoloads from midnight.el
18148 18127
18149(autoload 'clean-buffer-list "midnight" "\ 18128(autoload 'clean-buffer-list "midnight" "\
@@ -18170,7 +18149,7 @@ to its second argument TM.
18170;;;*** 18149;;;***
18171 18150
18172;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef" 18151;;;### (autoloads (minibuffer-electric-default-mode) "minibuf-eldef"
18173;;;;;; "minibuf-eldef.el" (20580 10161 446444 0)) 18152;;;;;; "minibuf-eldef.el" (20647 7982 429263 0))
18174;;; Generated autoloads from minibuf-eldef.el 18153;;; Generated autoloads from minibuf-eldef.el
18175 18154
18176(defvar minibuffer-electric-default-mode nil "\ 18155(defvar minibuffer-electric-default-mode nil "\
@@ -18200,7 +18179,7 @@ is modified to remove the default indication.
18200;;;*** 18179;;;***
18201 18180
18202;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el" 18181;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el"
18203;;;;;; (20533 5993 500881 0)) 18182;;;;;; (20533 50312 678915 0))
18204;;; Generated autoloads from misc.el 18183;;; Generated autoloads from misc.el
18205 18184
18206(autoload 'butterfly "misc" "\ 18185(autoload 'butterfly "misc" "\
@@ -18230,7 +18209,7 @@ The return value is always nil.
18230 18209
18231;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files 18210;;;### (autoloads (multi-isearch-files-regexp multi-isearch-files
18232;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup) 18211;;;;;; multi-isearch-buffers-regexp multi-isearch-buffers multi-isearch-setup)
18233;;;;;; "misearch" "misearch.el" (20490 33188 850375 0)) 18212;;;;;; "misearch" "misearch.el" (20533 50312 678915 0))
18234;;; Generated autoloads from misearch.el 18213;;; Generated autoloads from misearch.el
18235 (add-hook 'isearch-mode-hook 'multi-isearch-setup) 18214 (add-hook 'isearch-mode-hook 'multi-isearch-setup)
18236 18215
@@ -18312,7 +18291,7 @@ whose file names match the specified wildcard.
18312;;;*** 18291;;;***
18313 18292
18314;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el" 18293;;;### (autoloads (mixal-mode) "mixal-mode" "progmodes/mixal-mode.el"
18315;;;;;; (20566 63671 243798 0)) 18294;;;;;; (20566 46143 538618 330000))
18316;;; Generated autoloads from progmodes/mixal-mode.el 18295;;; Generated autoloads from progmodes/mixal-mode.el
18317 18296
18318(autoload 'mixal-mode "mixal-mode" "\ 18297(autoload 'mixal-mode "mixal-mode" "\
@@ -18323,7 +18302,7 @@ Major mode for the mixal asm language.
18323;;;*** 18302;;;***
18324 18303
18325;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el" 18304;;;### (autoloads (mm-default-file-encoding) "mm-encode" "gnus/mm-encode.el"
18326;;;;;; (20355 10021 546955 0)) 18305;;;;;; (20533 50312 678915 0))
18327;;; Generated autoloads from gnus/mm-encode.el 18306;;; Generated autoloads from gnus/mm-encode.el
18328 18307
18329(autoload 'mm-default-file-encoding "mm-encode" "\ 18308(autoload 'mm-default-file-encoding "mm-encode" "\
@@ -18334,7 +18313,7 @@ Return a default encoding for FILE.
18334;;;*** 18313;;;***
18335 18314
18336;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents) 18315;;;### (autoloads (mm-inline-external-body mm-extern-cache-contents)
18337;;;;;; "mm-extern" "gnus/mm-extern.el" (20355 10021 546955 0)) 18316;;;;;; "mm-extern" "gnus/mm-extern.el" (20533 50312 678915 0))
18338;;; Generated autoloads from gnus/mm-extern.el 18317;;; Generated autoloads from gnus/mm-extern.el
18339 18318
18340(autoload 'mm-extern-cache-contents "mm-extern" "\ 18319(autoload 'mm-extern-cache-contents "mm-extern" "\
@@ -18353,7 +18332,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
18353;;;*** 18332;;;***
18354 18333
18355;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el" 18334;;;### (autoloads (mm-inline-partial) "mm-partial" "gnus/mm-partial.el"
18356;;;;;; (20355 10021 546955 0)) 18335;;;;;; (20533 50312 678915 0))
18357;;; Generated autoloads from gnus/mm-partial.el 18336;;; Generated autoloads from gnus/mm-partial.el
18358 18337
18359(autoload 'mm-inline-partial "mm-partial" "\ 18338(autoload 'mm-inline-partial "mm-partial" "\
@@ -18367,7 +18346,7 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing.
18367;;;*** 18346;;;***
18368 18347
18369;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents) 18348;;;### (autoloads (mm-url-insert-file-contents-external mm-url-insert-file-contents)
18370;;;;;; "mm-url" "gnus/mm-url.el" (20495 51111 757560 0)) 18349;;;;;; "mm-url" "gnus/mm-url.el" (20533 50312 678915 0))
18371;;; Generated autoloads from gnus/mm-url.el 18350;;; Generated autoloads from gnus/mm-url.el
18372 18351
18373(autoload 'mm-url-insert-file-contents "mm-url" "\ 18352(autoload 'mm-url-insert-file-contents "mm-url" "\
@@ -18384,7 +18363,7 @@ Insert file contents of URL using `mm-url-program'.
18384;;;*** 18363;;;***
18385 18364
18386;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu" 18365;;;### (autoloads (mm-uu-dissect-text-parts mm-uu-dissect) "mm-uu"
18387;;;;;; "gnus/mm-uu.el" (20355 10021 546955 0)) 18366;;;;;; "gnus/mm-uu.el" (20533 50312 678915 0))
18388;;; Generated autoloads from gnus/mm-uu.el 18367;;; Generated autoloads from gnus/mm-uu.el
18389 18368
18390(autoload 'mm-uu-dissect "mm-uu" "\ 18369(autoload 'mm-uu-dissect "mm-uu" "\
@@ -18404,7 +18383,7 @@ Assume text has been decoded if DECODED is non-nil.
18404;;;*** 18383;;;***
18405 18384
18406;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el" 18385;;;### (autoloads (mml-attach-file mml-to-mime) "mml" "gnus/mml.el"
18407;;;;;; (20567 23165 75548 0)) 18386;;;;;; (20567 14136 702359 0))
18408;;; Generated autoloads from gnus/mml.el 18387;;; Generated autoloads from gnus/mml.el
18409 18388
18410(autoload 'mml-to-mime "mml" "\ 18389(autoload 'mml-to-mime "mml" "\
@@ -18430,7 +18409,7 @@ body) or \"attachment\" (separate from the body).
18430;;;*** 18409;;;***
18431 18410
18432;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el" 18411;;;### (autoloads (mml1991-sign mml1991-encrypt) "mml1991" "gnus/mml1991.el"
18433;;;;;; (20355 10021 546955 0)) 18412;;;;;; (20533 50312 678915 0))
18434;;; Generated autoloads from gnus/mml1991.el 18413;;; Generated autoloads from gnus/mml1991.el
18435 18414
18436(autoload 'mml1991-encrypt "mml1991" "\ 18415(autoload 'mml1991-encrypt "mml1991" "\
@@ -18447,7 +18426,7 @@ body) or \"attachment\" (separate from the body).
18447 18426
18448;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt 18427;;;### (autoloads (mml2015-self-encrypt mml2015-sign mml2015-encrypt
18449;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt) 18428;;;;;; mml2015-verify-test mml2015-verify mml2015-decrypt-test mml2015-decrypt)
18450;;;;;; "mml2015" "gnus/mml2015.el" (20355 10021 546955 0)) 18429;;;;;; "mml2015" "gnus/mml2015.el" (20533 50312 678915 0))
18451;;; Generated autoloads from gnus/mml2015.el 18430;;; Generated autoloads from gnus/mml2015.el
18452 18431
18453(autoload 'mml2015-decrypt "mml2015" "\ 18432(autoload 'mml2015-decrypt "mml2015" "\
@@ -18487,16 +18466,16 @@ body) or \"attachment\" (separate from the body).
18487 18466
18488;;;*** 18467;;;***
18489 18468
18490;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20406 8611 18469;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (20585 42247
18491;;;;;; 875037 0)) 18470;;;;;; 723488 573000))
18492;;; Generated autoloads from cedet/mode-local.el 18471;;; Generated autoloads from cedet/mode-local.el
18493 18472
18494(put 'define-overloadable-function 'doc-string-elt 3) 18473(put 'define-overloadable-function 'doc-string-elt 3)
18495 18474
18496;;;*** 18475;;;***
18497 18476
18498;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20355 18477;;;### (autoloads (m2-mode) "modula2" "progmodes/modula2.el" (20533
18499;;;;;; 10021 546955 0)) 18478;;;;;; 50312 678915 0))
18500;;; Generated autoloads from progmodes/modula2.el 18479;;; Generated autoloads from progmodes/modula2.el
18501 18480
18502(defalias 'modula-2-mode 'm2-mode) 18481(defalias 'modula-2-mode 'm2-mode)
@@ -18530,7 +18509,7 @@ followed by the first character of the construct.
18530;;;*** 18509;;;***
18531 18510
18532;;;### (autoloads (denato-region nato-region unmorse-region morse-region) 18511;;;### (autoloads (denato-region nato-region unmorse-region morse-region)
18533;;;;;; "morse" "play/morse.el" (20355 10021 546955 0)) 18512;;;;;; "morse" "play/morse.el" (20533 50312 678915 0))
18534;;; Generated autoloads from play/morse.el 18513;;; Generated autoloads from play/morse.el
18535 18514
18536(autoload 'morse-region "morse" "\ 18515(autoload 'morse-region "morse" "\
@@ -18556,7 +18535,7 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text.
18556;;;*** 18535;;;***
18557 18536
18558;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag" 18537;;;### (autoloads (mouse-drag-drag mouse-drag-throw) "mouse-drag"
18559;;;;;; "mouse-drag.el" (20566 63671 243798 0)) 18538;;;;;; "mouse-drag.el" (20566 45828 866603 595000))
18560;;; Generated autoloads from mouse-drag.el 18539;;; Generated autoloads from mouse-drag.el
18561 18540
18562(autoload 'mouse-drag-throw "mouse-drag" "\ 18541(autoload 'mouse-drag-throw "mouse-drag" "\
@@ -18603,7 +18582,7 @@ To test this function, evaluate:
18603 18582
18604;;;*** 18583;;;***
18605 18584
18606;;;### (autoloads (mpc) "mpc" "mpc.el" (20523 62082 997685 0)) 18585;;;### (autoloads (mpc) "mpc" "mpc.el" (20533 50312 678915 0))
18607;;; Generated autoloads from mpc.el 18586;;; Generated autoloads from mpc.el
18608 18587
18609(autoload 'mpc "mpc" "\ 18588(autoload 'mpc "mpc" "\
@@ -18613,7 +18592,7 @@ Main entry point for MPC.
18613 18592
18614;;;*** 18593;;;***
18615 18594
18616;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 57511 257469 18595;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 60086 510404
18617;;;;;; 0)) 18596;;;;;; 0))
18618;;; Generated autoloads from play/mpuz.el 18597;;; Generated autoloads from play/mpuz.el
18619 18598
@@ -18624,7 +18603,7 @@ Multiplication puzzle with GNU Emacs.
18624 18603
18625;;;*** 18604;;;***
18626 18605
18627;;;### (autoloads (msb-mode) "msb" "msb.el" (20476 31768 298871 0)) 18606;;;### (autoloads (msb-mode) "msb" "msb.el" (20533 50312 678915 0))
18628;;; Generated autoloads from msb.el 18607;;; Generated autoloads from msb.el
18629 18608
18630(defvar msb-mode nil "\ 18609(defvar msb-mode nil "\
@@ -18654,7 +18633,7 @@ different buffer menu using the function `msb'.
18654;;;;;; describe-current-coding-system describe-current-coding-system-briefly 18633;;;;;; describe-current-coding-system describe-current-coding-system-briefly
18655;;;;;; describe-coding-system describe-character-set list-charset-chars 18634;;;;;; describe-coding-system describe-character-set list-charset-chars
18656;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el" 18635;;;;;; read-charset list-character-sets) "mule-diag" "international/mule-diag.el"
18657;;;;;; (20577 33959 40183 0)) 18636;;;;;; (20576 16405 87949 626000))
18658;;; Generated autoloads from international/mule-diag.el 18637;;; Generated autoloads from international/mule-diag.el
18659 18638
18660(autoload 'list-character-sets "mule-diag" "\ 18639(autoload 'list-character-sets "mule-diag" "\
@@ -18791,7 +18770,7 @@ The default is 20. If LIMIT is negative, do not limit the listing.
18791;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion 18770;;;;;; coding-system-translation-table-for-decode coding-system-pre-write-conversion
18792;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist 18771;;;;;; coding-system-post-read-conversion lookup-nested-alist set-nested-alist
18793;;;;;; truncate-string-to-width store-substring) "mule-util" "international/mule-util.el" 18772;;;;;; truncate-string-to-width store-substring) "mule-util" "international/mule-util.el"
18794;;;;;; (20577 33959 40183 0)) 18773;;;;;; (20577 7556 49770 693000))
18795;;; Generated autoloads from international/mule-util.el 18774;;; Generated autoloads from international/mule-util.el
18796 18775
18797(defsubst string-to-list (string) "\ 18776(defsubst string-to-list (string) "\
@@ -18922,11 +18901,88 @@ per-character basis, this may not be accurate.
18922 18901
18923;;;*** 18902;;;***
18924 18903
18904;;;### (autoloads (advice-member-p advice-remove advice-add advice--add-function
18905;;;;;; add-function advice--buffer-local advice--remove-function)
18906;;;;;; "nadvice" "emacs-lisp/nadvice.el" (20652 52617 313760 0))
18907;;; Generated autoloads from emacs-lisp/nadvice.el
18908
18909(autoload 'advice--remove-function "nadvice" "\
18910
18911
18912\(fn FLIST FUNCTION)" nil nil)
18913
18914(autoload 'advice--buffer-local "nadvice" "\
18915Buffer-local value of VAR, presumed to contain a function.
18916
18917\(fn VAR)" nil nil)
18918
18919(autoload 'add-function "nadvice" "\
18920Add a piece of advice on the function stored at PLACE.
18921FUNCTION describes the code to add. WHERE describes where to add it.
18922WHERE can be explained by showing the resulting new function, as the
18923result of combining FUNCTION and the previous value of PLACE, which we
18924call OLDFUN here:
18925`:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
18926`:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))
18927`:around' (lambda (&rest r) (apply FUNCTION OLDFUN r))
18928`:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r)))
18929`:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r)))
18930`:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r)))
18931`:after-until' (lambda (&rest r) (or (apply OLDFUN r) (apply FUNCTION r)))
18932If FUNCTION was already added, do nothing.
18933PROPS is an alist of additional properties, among which the following have
18934a special meaning:
18935- `name': a string or symbol. It can be used to refer to this piece of advice.
18936
18937PLACE cannot be a simple variable. Instead it should either be
18938\(default-value 'VAR) or (local 'VAR) depending on whether FUNCTION
18939should be applied to VAR buffer-locally or globally.
18940
18941If one of FUNCTION or OLDFUN is interactive, then the resulting function
18942is also interactive. There are 3 cases:
18943- FUNCTION is not interactive: the interactive spec of OLDFUN is used.
18944- The interactive spec of FUNCTION is itself a function: it should take one
18945 argument (the interactive spec of OLDFUN, which it can pass to
18946 `advice-eval-interactive-spec') and return the list of arguments to use.
18947- Else, use the interactive spec of FUNCTION and ignore the one of OLDFUN.
18948
18949\(fn WHERE PLACE FUNCTION &optional PROPS)" nil t)
18950
18951(autoload 'advice--add-function "nadvice" "\
18952
18953
18954\(fn WHERE REF FUNCTION PROPS)" nil nil)
18955
18956(autoload 'advice-add "nadvice" "\
18957Like `add-function' but for the function named SYMBOL.
18958Contrary to `add-function', this will properly handle the cases where SYMBOL
18959is defined as a macro, alias, command, ...
18960
18961\(fn SYMBOL WHERE FUNCTION &optional PROPS)" nil nil)
18962
18963(autoload 'advice-remove "nadvice" "\
18964Like `remove-function' but for the function named SYMBOL.
18965Contrary to `remove-function', this will work also when SYMBOL is a macro
18966and it will not signal an error if SYMBOL is not `fboundp'.
18967Instead of the actual function to remove, FUNCTION can also be the `name'
18968of the piece of advice.
18969
18970\(fn SYMBOL FUNCTION)" nil nil)
18971
18972(autoload 'advice-member-p "nadvice" "\
18973Return non-nil if ADVICE has been added to FUNCTION-NAME.
18974Instead of ADVICE being the actual function, it can also be the `name'
18975of the piece of advice.
18976
18977\(fn ADVICE FUNCTION-NAME)" nil nil)
18978
18979;;;***
18980
18925;;;### (autoloads (network-connection network-connection-to-service 18981;;;### (autoloads (network-connection network-connection-to-service
18926;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host 18982;;;;;; whois-reverse-lookup whois finger ftp run-dig dns-lookup-host
18927;;;;;; nslookup nslookup-host ping traceroute route arp netstat 18983;;;;;; nslookup nslookup-host ping traceroute route arp netstat
18928;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20355 18984;;;;;; iwconfig ifconfig) "net-utils" "net/net-utils.el" (20533
18929;;;;;; 10021 546955 0)) 18985;;;;;; 50312 678915 0))
18930;;; Generated autoloads from net/net-utils.el 18986;;; Generated autoloads from net/net-utils.el
18931 18987
18932(autoload 'ifconfig "net-utils" "\ 18988(autoload 'ifconfig "net-utils" "\
@@ -19020,8 +19076,8 @@ Open a network connection to HOST on PORT.
19020 19076
19021;;;*** 19077;;;***
19022 19078
19023;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20495 19079;;;### (autoloads (netrc-credentials) "netrc" "net/netrc.el" (20533
19024;;;;;; 51111 757560 0)) 19080;;;;;; 50312 678915 0))
19025;;; Generated autoloads from net/netrc.el 19081;;; Generated autoloads from net/netrc.el
19026 19082
19027(autoload 'netrc-credentials "netrc" "\ 19083(autoload 'netrc-credentials "netrc" "\
@@ -19034,7 +19090,7 @@ listed in the PORTS list.
19034;;;*** 19090;;;***
19035 19091
19036;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el" 19092;;;### (autoloads (open-network-stream) "network-stream" "net/network-stream.el"
19037;;;;;; (20369 14251 85829 0)) 19093;;;;;; (20533 50312 678915 0))
19038;;; Generated autoloads from net/network-stream.el 19094;;; Generated autoloads from net/network-stream.el
19039 19095
19040(autoload 'open-network-stream "network-stream" "\ 19096(autoload 'open-network-stream "network-stream" "\
@@ -19125,7 +19181,7 @@ STARTTLS upgrades even if Emacs doesn't have built-in TLS functionality.
19125;;;*** 19181;;;***
19126 19182
19127;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend" 19183;;;### (autoloads (newsticker-start newsticker-running-p) "newst-backend"
19128;;;;;; "net/newst-backend.el" (20577 33959 40183 0)) 19184;;;;;; "net/newst-backend.el" (20576 15743 119920 938000))
19129;;; Generated autoloads from net/newst-backend.el 19185;;; Generated autoloads from net/newst-backend.el
19130 19186
19131(autoload 'newsticker-running-p "newst-backend" "\ 19187(autoload 'newsticker-running-p "newst-backend" "\
@@ -19147,7 +19203,7 @@ Run `newsticker-start-hook' if newsticker was not running already.
19147;;;*** 19203;;;***
19148 19204
19149;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el" 19205;;;### (autoloads (newsticker-plainview) "newst-plainview" "net/newst-plainview.el"
19150;;;;;; (20434 17809 692608 0)) 19206;;;;;; (20533 50312 678915 0))
19151;;; Generated autoloads from net/newst-plainview.el 19207;;; Generated autoloads from net/newst-plainview.el
19152 19208
19153(autoload 'newsticker-plainview "newst-plainview" "\ 19209(autoload 'newsticker-plainview "newst-plainview" "\
@@ -19158,7 +19214,7 @@ Start newsticker plainview.
19158;;;*** 19214;;;***
19159 19215
19160;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el" 19216;;;### (autoloads (newsticker-show-news) "newst-reader" "net/newst-reader.el"
19161;;;;;; (20434 17809 692608 0)) 19217;;;;;; (20533 50312 678915 0))
19162;;; Generated autoloads from net/newst-reader.el 19218;;; Generated autoloads from net/newst-reader.el
19163 19219
19164(autoload 'newsticker-show-news "newst-reader" "\ 19220(autoload 'newsticker-show-news "newst-reader" "\
@@ -19169,7 +19225,7 @@ Start reading news. You may want to bind this to a key.
19169;;;*** 19225;;;***
19170 19226
19171;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p) 19227;;;### (autoloads (newsticker-start-ticker newsticker-ticker-running-p)
19172;;;;;; "newst-ticker" "net/newst-ticker.el" (20427 14766 970343 19228;;;;;; "newst-ticker" "net/newst-ticker.el" (20533 50312 678915
19173;;;;;; 0)) 19229;;;;;; 0))
19174;;; Generated autoloads from net/newst-ticker.el 19230;;; Generated autoloads from net/newst-ticker.el
19175 19231
@@ -19191,7 +19247,7 @@ running already.
19191;;;*** 19247;;;***
19192 19248
19193;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el" 19249;;;### (autoloads (newsticker-treeview) "newst-treeview" "net/newst-treeview.el"
19194;;;;;; (20590 45996 129575 0)) 19250;;;;;; (20590 37036 437844 0))
19195;;; Generated autoloads from net/newst-treeview.el 19251;;; Generated autoloads from net/newst-treeview.el
19196 19252
19197(autoload 'newsticker-treeview "newst-treeview" "\ 19253(autoload 'newsticker-treeview "newst-treeview" "\
@@ -19202,7 +19258,7 @@ Start newsticker treeview.
19202;;;*** 19258;;;***
19203 19259
19204;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el" 19260;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
19205;;;;;; (20614 54428 654267 0)) 19261;;;;;; (20615 22847 537904 0))
19206;;; Generated autoloads from gnus/nndiary.el 19262;;; Generated autoloads from gnus/nndiary.el
19207 19263
19208(autoload 'nndiary-generate-nov-databases "nndiary" "\ 19264(autoload 'nndiary-generate-nov-databases "nndiary" "\
@@ -19212,8 +19268,8 @@ Generate NOV databases in all nndiary directories.
19212 19268
19213;;;*** 19269;;;***
19214 19270
19215;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20355 19271;;;### (autoloads (nndoc-add-type) "nndoc" "gnus/nndoc.el" (20533
19216;;;;;; 10021 546955 0)) 19272;;;;;; 50312 678915 0))
19217;;; Generated autoloads from gnus/nndoc.el 19273;;; Generated autoloads from gnus/nndoc.el
19218 19274
19219(autoload 'nndoc-add-type "nndoc" "\ 19275(autoload 'nndoc-add-type "nndoc" "\
@@ -19228,7 +19284,7 @@ symbol in the alist.
19228;;;*** 19284;;;***
19229 19285
19230;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el" 19286;;;### (autoloads (nnfolder-generate-active-file) "nnfolder" "gnus/nnfolder.el"
19231;;;;;; (20458 56750 651721 0)) 19287;;;;;; (20533 50312 678915 0))
19232;;; Generated autoloads from gnus/nnfolder.el 19288;;; Generated autoloads from gnus/nnfolder.el
19233 19289
19234(autoload 'nnfolder-generate-active-file "nnfolder" "\ 19290(autoload 'nnfolder-generate-active-file "nnfolder" "\
@@ -19240,7 +19296,7 @@ This command does not work if you use short group names.
19240;;;*** 19296;;;***
19241 19297
19242;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el" 19298;;;### (autoloads (nnml-generate-nov-databases) "nnml" "gnus/nnml.el"
19243;;;;;; (20458 56750 651721 0)) 19299;;;;;; (20533 50312 678915 0))
19244;;; Generated autoloads from gnus/nnml.el 19300;;; Generated autoloads from gnus/nnml.el
19245 19301
19246(autoload 'nnml-generate-nov-databases "nnml" "\ 19302(autoload 'nnml-generate-nov-databases "nnml" "\
@@ -19251,7 +19307,7 @@ Generate NOV databases in all nnml directories.
19251;;;*** 19307;;;***
19252 19308
19253;;;### (autoloads (disable-command enable-command disabled-command-function) 19309;;;### (autoloads (disable-command enable-command disabled-command-function)
19254;;;;;; "novice" "novice.el" (20566 63671 243798 0)) 19310;;;;;; "novice" "novice.el" (20566 45824 34603 301000))
19255;;; Generated autoloads from novice.el 19311;;; Generated autoloads from novice.el
19256 19312
19257(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1") 19313(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
@@ -19284,7 +19340,7 @@ future sessions.
19284;;;*** 19340;;;***
19285 19341
19286;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el" 19342;;;### (autoloads (nroff-mode) "nroff-mode" "textmodes/nroff-mode.el"
19287;;;;;; (20355 10021 546955 0)) 19343;;;;;; (20533 50312 678915 0))
19288;;; Generated autoloads from textmodes/nroff-mode.el 19344;;; Generated autoloads from textmodes/nroff-mode.el
19289 19345
19290(autoload 'nroff-mode "nroff-mode" "\ 19346(autoload 'nroff-mode "nroff-mode" "\
@@ -19299,7 +19355,7 @@ closing requests for requests that are used in matched pairs.
19299;;;*** 19355;;;***
19300 19356
19301;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el" 19357;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el"
19302;;;;;; (20523 62082 997685 0)) 19358;;;;;; (20533 50312 678915 0))
19303;;; Generated autoloads from nxml/nxml-glyph.el 19359;;; Generated autoloads from nxml/nxml-glyph.el
19304 19360
19305(autoload 'nxml-glyph-display-string "nxml-glyph" "\ 19361(autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -19311,8 +19367,8 @@ Return nil if the face cannot display a glyph for N.
19311 19367
19312;;;*** 19368;;;***
19313 19369
19314;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20478 19370;;;### (autoloads (nxml-mode) "nxml-mode" "nxml/nxml-mode.el" (20533
19315;;;;;; 3673 653810 0)) 19371;;;;;; 50312 678915 0))
19316;;; Generated autoloads from nxml/nxml-mode.el 19372;;; Generated autoloads from nxml/nxml-mode.el
19317 19373
19318(autoload 'nxml-mode "nxml-mode" "\ 19374(autoload 'nxml-mode "nxml-mode" "\
@@ -19374,7 +19430,7 @@ Many aspects this mode can be customized using
19374;;;*** 19430;;;***
19375 19431
19376;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm" 19432;;;### (autoloads (nxml-enable-unicode-char-name-sets) "nxml-uchnm"
19377;;;;;; "nxml/nxml-uchnm.el" (20355 10021 546955 0)) 19433;;;;;; "nxml/nxml-uchnm.el" (20533 50312 678915 0))
19378;;; Generated autoloads from nxml/nxml-uchnm.el 19434;;; Generated autoloads from nxml/nxml-uchnm.el
19379 19435
19380(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\ 19436(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
@@ -19387,7 +19443,7 @@ the variable `nxml-enabled-unicode-blocks'.
19387;;;*** 19443;;;***
19388 19444
19389;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el" 19445;;;### (autoloads (inferior-octave) "octave-inf" "progmodes/octave-inf.el"
19390;;;;;; (20355 10021 546955 0)) 19446;;;;;; (20533 50312 678915 0))
19391;;; Generated autoloads from progmodes/octave-inf.el 19447;;; Generated autoloads from progmodes/octave-inf.el
19392 19448
19393(autoload 'inferior-octave "octave-inf" "\ 19449(autoload 'inferior-octave "octave-inf" "\
@@ -19410,7 +19466,7 @@ startup file, `~/.emacs-octave'.
19410;;;*** 19466;;;***
19411 19467
19412;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el" 19468;;;### (autoloads (octave-mode) "octave-mod" "progmodes/octave-mod.el"
19413;;;;;; (20566 63671 243798 0)) 19469;;;;;; (20566 45245 150579 485000))
19414;;; Generated autoloads from progmodes/octave-mod.el 19470;;; Generated autoloads from progmodes/octave-mod.el
19415 19471
19416(autoload 'octave-mode "octave-mod" "\ 19472(autoload 'octave-mode "octave-mod" "\
@@ -19498,7 +19554,7 @@ including a reproducible test case and send the message.
19498;;;;;; org-run-like-in-org-mode turn-on-orgstruct++ turn-on-orgstruct 19554;;;;;; org-run-like-in-org-mode turn-on-orgstruct++ turn-on-orgstruct
19499;;;;;; orgstruct-mode org-global-cycle org-cycle org-mode org-clock-persistence-insinuate 19555;;;;;; orgstruct-mode org-global-cycle org-cycle org-mode org-clock-persistence-insinuate
19500;;;;;; turn-on-orgtbl org-version org-babel-do-load-languages) "org" 19556;;;;;; turn-on-orgtbl org-version org-babel-do-load-languages) "org"
19501;;;;;; "org/org.el" (20618 55210 422086 0)) 19557;;;;;; "org/org.el" (20619 27099 673959 0))
19502;;; Generated autoloads from org/org.el 19558;;; Generated autoloads from org/org.el
19503 19559
19504(autoload 'org-babel-do-load-languages "org" "\ 19560(autoload 'org-babel-do-load-languages "org" "\
@@ -19724,7 +19780,7 @@ Call the customize function with org as argument.
19724;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views 19780;;;;;; org-search-view org-agenda-list org-batch-store-agenda-views
19725;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda 19781;;;;;; org-store-agenda-views org-batch-agenda-csv org-batch-agenda
19726;;;;;; org-agenda org-toggle-sticky-agenda) "org-agenda" "org/org-agenda.el" 19782;;;;;; org-agenda org-toggle-sticky-agenda) "org-agenda" "org/org-agenda.el"
19727;;;;;; (20618 55210 422086 0)) 19783;;;;;; (20619 27099 673959 0))
19728;;; Generated autoloads from org/org-agenda.el 19784;;; Generated autoloads from org/org-agenda.el
19729 19785
19730(autoload 'org-toggle-sticky-agenda "org-agenda" "\ 19786(autoload 'org-toggle-sticky-agenda "org-agenda" "\
@@ -19981,7 +20037,7 @@ to override `appt-message-warning-time'.
19981;;;*** 20037;;;***
19982 20038
19983;;;### (autoloads (org-beamer-mode org-beamer-sectioning) "org-beamer" 20039;;;### (autoloads (org-beamer-mode org-beamer-sectioning) "org-beamer"
19984;;;;;; "org/org-beamer.el" (20618 55210 422086 0)) 20040;;;;;; "org/org-beamer.el" (20619 27099 673959 0))
19985;;; Generated autoloads from org/org-beamer.el 20041;;; Generated autoloads from org/org-beamer.el
19986 20042
19987(autoload 'org-beamer-sectioning "org-beamer" "\ 20043(autoload 'org-beamer-sectioning "org-beamer" "\
@@ -20003,8 +20059,8 @@ Special support for editing Org-mode files made to export to beamer.
20003;;;*** 20059;;;***
20004 20060
20005;;;### (autoloads (org-capture-import-remember-templates org-capture 20061;;;### (autoloads (org-capture-import-remember-templates org-capture
20006;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20618 20062;;;;;; org-capture-string) "org-capture" "org/org-capture.el" (20619
20007;;;;;; 55210 422086 0)) 20063;;;;;; 27099 673959 0))
20008;;; Generated autoloads from org/org-capture.el 20064;;; Generated autoloads from org/org-capture.el
20009 20065
20010(autoload 'org-capture-string "org-capture" "\ 20066(autoload 'org-capture-string "org-capture" "\
@@ -20045,8 +20101,8 @@ Set org-capture-templates to be similar to `org-remember-templates'.
20045;;;*** 20101;;;***
20046 20102
20047;;;### (autoloads (org-agenda-columns org-insert-columns-dblock org-dblock-write:columnview 20103;;;### (autoloads (org-agenda-columns org-insert-columns-dblock org-dblock-write:columnview
20048;;;;;; org-columns) "org-colview" "org/org-colview.el" (20618 55210 20104;;;;;; org-columns) "org-colview" "org/org-colview.el" (20619 27099
20049;;;;;; 422086 0)) 20105;;;;;; 673959 0))
20050;;; Generated autoloads from org/org-colview.el 20106;;; Generated autoloads from org/org-colview.el
20051 20107
20052(autoload 'org-columns "org-colview" "\ 20108(autoload 'org-columns "org-colview" "\
@@ -20090,7 +20146,7 @@ Turn on or update column view in the agenda.
20090;;;*** 20146;;;***
20091 20147
20092;;;### (autoloads (org-check-version) "org-compat" "org/org-compat.el" 20148;;;### (autoloads (org-check-version) "org-compat" "org/org-compat.el"
20093;;;;;; (20618 55210 422086 0)) 20149;;;;;; (20619 27099 673959 0))
20094;;; Generated autoloads from org/org-compat.el 20150;;; Generated autoloads from org/org-compat.el
20095 20151
20096(autoload 'org-check-version "org-compat" "\ 20152(autoload 'org-check-version "org-compat" "\
@@ -20101,7 +20157,7 @@ Try very hard to provide sensible version strings.
20101;;;*** 20157;;;***
20102 20158
20103;;;### (autoloads (org-git-version org-release) "org-version" "org/org-version.el" 20159;;;### (autoloads (org-git-version org-release) "org-version" "org/org-version.el"
20104;;;;;; (20618 55210 422086 0)) 20160;;;;;; (20619 27099 673959 0))
20105;;; Generated autoloads from org/org-version.el 20161;;; Generated autoloads from org/org-version.el
20106 20162
20107(autoload 'org-release "org-version" "\ 20163(autoload 'org-release "org-version" "\
@@ -20122,7 +20178,7 @@ The location of ODT styles.")
20122;;;*** 20178;;;***
20123 20179
20124;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el" 20180;;;### (autoloads (outline-minor-mode outline-mode) "outline" "outline.el"
20125;;;;;; (20355 10021 546955 0)) 20181;;;;;; (20533 50312 678915 0))
20126;;; Generated autoloads from outline.el 20182;;; Generated autoloads from outline.el
20127(put 'outline-regexp 'safe-local-variable 'stringp) 20183(put 'outline-regexp 'safe-local-variable 'stringp)
20128(put 'outline-heading-end-regexp 'safe-local-variable 'stringp) 20184(put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
@@ -20186,7 +20242,7 @@ See the command `outline-mode' for more information on this mode.
20186;;;### (autoloads (list-packages describe-package package-initialize 20242;;;### (autoloads (list-packages describe-package package-initialize
20187;;;;;; package-refresh-contents package-install-file package-install-from-buffer 20243;;;;;; package-refresh-contents package-install-file package-install-from-buffer
20188;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el" 20244;;;;;; package-install package-enable-at-startup) "package" "emacs-lisp/package.el"
20189;;;;;; (20622 22438 32851 0)) 20245;;;;;; (20622 16646 799433 0))
20190;;; Generated autoloads from emacs-lisp/package.el 20246;;; Generated autoloads from emacs-lisp/package.el
20191 20247
20192(defvar package-enable-at-startup t "\ 20248(defvar package-enable-at-startup t "\
@@ -20256,8 +20312,8 @@ The list is displayed in a buffer named `*Packages*'.
20256 20312
20257;;;*** 20313;;;***
20258 20314
20259;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 50478 20315;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 54621
20260;;;;;; 439878 507000)) 20316;;;;;; 56606 0))
20261;;; Generated autoloads from paren.el 20317;;; Generated autoloads from paren.el
20262 20318
20263(defvar show-paren-mode nil "\ 20319(defvar show-paren-mode nil "\
@@ -20284,7 +20340,7 @@ matching parenthesis is highlighted in `show-paren-style' after
20284;;;*** 20340;;;***
20285 20341
20286;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el" 20342;;;### (autoloads (parse-time-string) "parse-time" "calendar/parse-time.el"
20287;;;;;; (20478 3673 653810 0)) 20343;;;;;; (20533 50312 678915 0))
20288;;; Generated autoloads from calendar/parse-time.el 20344;;; Generated autoloads from calendar/parse-time.el
20289(put 'parse-time-rules 'risky-local-variable t) 20345(put 'parse-time-rules 'risky-local-variable t)
20290 20346
@@ -20297,8 +20353,8 @@ unknown are returned as nil.
20297 20353
20298;;;*** 20354;;;***
20299 20355
20300;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20478 20356;;;### (autoloads (pascal-mode) "pascal" "progmodes/pascal.el" (20533
20301;;;;;; 3673 653810 0)) 20357;;;;;; 50312 678915 0))
20302;;; Generated autoloads from progmodes/pascal.el 20358;;; Generated autoloads from progmodes/pascal.el
20303 20359
20304(autoload 'pascal-mode "pascal" "\ 20360(autoload 'pascal-mode "pascal" "\
@@ -20351,7 +20407,8 @@ no args, if that value is non-nil.
20351;;;*** 20407;;;***
20352 20408
20353;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache) 20409;;;### (autoloads (password-in-cache-p password-cache-expiry password-cache)
20354;;;;;; "password-cache" "password-cache.el" (20577 33959 40183 0)) 20410;;;;;; "password-cache" "password-cache.el" (20576 15327 199903
20411;;;;;; 603000))
20355;;; Generated autoloads from password-cache.el 20412;;; Generated autoloads from password-cache.el
20356 20413
20357(defvar password-cache t "\ 20414(defvar password-cache t "\
@@ -20373,7 +20430,7 @@ Check if KEY is in the cache.
20373;;;*** 20430;;;***
20374 20431
20375;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el" 20432;;;### (autoloads (pcase-let pcase-let* pcase) "pcase" "emacs-lisp/pcase.el"
20376;;;;;; (20582 12914 894781 0)) 20433;;;;;; (20584 355 183605 0))
20377;;; Generated autoloads from emacs-lisp/pcase.el 20434;;; Generated autoloads from emacs-lisp/pcase.el
20378 20435
20379(autoload 'pcase "pcase" "\ 20436(autoload 'pcase "pcase" "\
@@ -20434,8 +20491,8 @@ of the form (UPAT EXP).
20434 20491
20435;;;*** 20492;;;***
20436 20493
20437;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20355 20494;;;### (autoloads (pcomplete/cvs) "pcmpl-cvs" "pcmpl-cvs.el" (20533
20438;;;;;; 10021 546955 0)) 20495;;;;;; 50312 678915 0))
20439;;; Generated autoloads from pcmpl-cvs.el 20496;;; Generated autoloads from pcmpl-cvs.el
20440 20497
20441(autoload 'pcomplete/cvs "pcmpl-cvs" "\ 20498(autoload 'pcomplete/cvs "pcmpl-cvs" "\
@@ -20446,7 +20503,7 @@ Completion rules for the `cvs' command.
20446;;;*** 20503;;;***
20447 20504
20448;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip) 20505;;;### (autoloads (pcomplete/tar pcomplete/make pcomplete/bzip2 pcomplete/gzip)
20449;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20572 16038 402143 0)) 20506;;;;;; "pcmpl-gnu" "pcmpl-gnu.el" (20571 55599 814625 0))
20450;;; Generated autoloads from pcmpl-gnu.el 20507;;; Generated autoloads from pcmpl-gnu.el
20451 20508
20452(autoload 'pcomplete/gzip "pcmpl-gnu" "\ 20509(autoload 'pcomplete/gzip "pcmpl-gnu" "\
@@ -20474,7 +20531,7 @@ Completion for the GNU tar utility.
20474;;;*** 20531;;;***
20475 20532
20476;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill) 20533;;;### (autoloads (pcomplete/mount pcomplete/umount pcomplete/kill)
20477;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20355 10021 546955 0)) 20534;;;;;; "pcmpl-linux" "pcmpl-linux.el" (20533 50312 678915 0))
20478;;; Generated autoloads from pcmpl-linux.el 20535;;; Generated autoloads from pcmpl-linux.el
20479 20536
20480(autoload 'pcomplete/kill "pcmpl-linux" "\ 20537(autoload 'pcomplete/kill "pcmpl-linux" "\
@@ -20494,8 +20551,8 @@ Completion for GNU/Linux `mount'.
20494 20551
20495;;;*** 20552;;;***
20496 20553
20497;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20523 20554;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20533
20498;;;;;; 62082 997685 0)) 20555;;;;;; 50312 678915 0))
20499;;; Generated autoloads from pcmpl-rpm.el 20556;;; Generated autoloads from pcmpl-rpm.el
20500 20557
20501(autoload 'pcomplete/rpm "pcmpl-rpm" "\ 20558(autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -20507,7 +20564,7 @@ Completion for the `rpm' command.
20507 20564
20508;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown 20565;;;### (autoloads (pcomplete/scp pcomplete/ssh pcomplete/chgrp pcomplete/chown
20509;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir 20566;;;;;; pcomplete/which pcomplete/xargs pcomplete/rm pcomplete/rmdir
20510;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20376 40834 914217 20567;;;;;; pcomplete/cd) "pcmpl-unix" "pcmpl-unix.el" (20533 50312 678915
20511;;;;;; 0)) 20568;;;;;; 0))
20512;;; Generated autoloads from pcmpl-unix.el 20569;;; Generated autoloads from pcmpl-unix.el
20513 20570
@@ -20565,8 +20622,8 @@ Includes files as well as host names followed by a colon.
20565 20622
20566;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list 20623;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
20567;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete 20624;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
20568;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20582 20625;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20652
20569;;;;;; 12914 894781 0)) 20626;;;;;; 52617 313760 0))
20570;;; Generated autoloads from pcomplete.el 20627;;; Generated autoloads from pcomplete.el
20571 20628
20572(autoload 'pcomplete "pcomplete" "\ 20629(autoload 'pcomplete "pcomplete" "\
@@ -20625,7 +20682,7 @@ Setup `shell-mode' to use pcomplete.
20625 20682
20626;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status 20683;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
20627;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs" 20684;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
20628;;;;;; "vc/pcvs.el" (20584 7212 455152 0)) 20685;;;;;; "vc/pcvs.el" (20584 355 183605 0))
20629;;; Generated autoloads from vc/pcvs.el 20686;;; Generated autoloads from vc/pcvs.el
20630 20687
20631(autoload 'cvs-checkout "pcvs" "\ 20688(autoload 'cvs-checkout "pcvs" "\
@@ -20700,8 +20757,8 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d
20700 20757
20701;;;*** 20758;;;***
20702 20759
20703;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 42138 20760;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (20576 19280
20704;;;;;; 697312 0)) 20761;;;;;; 28070 497000))
20705;;; Generated autoloads from vc/pcvs-defs.el 20762;;; Generated autoloads from vc/pcvs-defs.el
20706 20763
20707(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\ 20764(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\
@@ -20710,7 +20767,7 @@ Global menu used by PCL-CVS.")
20710;;;*** 20767;;;***
20711 20768
20712;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" 20769;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
20713;;;;;; (20566 63671 243798 0)) 20770;;;;;; (20665 36903 324706 553000))
20714;;; Generated autoloads from progmodes/perl-mode.el 20771;;; Generated autoloads from progmodes/perl-mode.el
20715(put 'perl-indent-level 'safe-local-variable 'integerp) 20772(put 'perl-indent-level 'safe-local-variable 'integerp)
20716(put 'perl-continued-statement-offset 'safe-local-variable 'integerp) 20773(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -20772,7 +20829,7 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'.
20772;;;*** 20829;;;***
20773 20830
20774;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el" 20831;;;### (autoloads (picture-mode) "picture" "textmodes/picture.el"
20775;;;;;; (20551 9899 283417 0)) 20832;;;;;; (20552 25066 479417 0))
20776;;; Generated autoloads from textmodes/picture.el 20833;;; Generated autoloads from textmodes/picture.el
20777 20834
20778(autoload 'picture-mode "picture" "\ 20835(autoload 'picture-mode "picture" "\
@@ -20853,7 +20910,7 @@ they are not by default assigned to keys.
20853;;;*** 20910;;;***
20854 20911
20855;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el" 20912;;;### (autoloads (plstore-mode plstore-open) "plstore" "gnus/plstore.el"
20856;;;;;; (20378 29222 722320 0)) 20913;;;;;; (20533 50312 678915 0))
20857;;; Generated autoloads from gnus/plstore.el 20914;;; Generated autoloads from gnus/plstore.el
20858 20915
20859(autoload 'plstore-open "plstore" "\ 20916(autoload 'plstore-open "plstore" "\
@@ -20869,7 +20926,7 @@ Major mode for editing PLSTORE files.
20869;;;*** 20926;;;***
20870 20927
20871;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el" 20928;;;### (autoloads (po-find-file-coding-system) "po" "textmodes/po.el"
20872;;;;;; (20355 10021 546955 0)) 20929;;;;;; (20533 50312 678915 0))
20873;;; Generated autoloads from textmodes/po.el 20930;;; Generated autoloads from textmodes/po.el
20874 20931
20875(autoload 'po-find-file-coding-system "po" "\ 20932(autoload 'po-find-file-coding-system "po" "\
@@ -20880,7 +20937,7 @@ Called through `file-coding-system-alist', before the file is visited for real.
20880 20937
20881;;;*** 20938;;;***
20882 20939
20883;;;### (autoloads (pong) "pong" "play/pong.el" (20478 3673 653810 20940;;;### (autoloads (pong) "pong" "play/pong.el" (20533 50312 678915
20884;;;;;; 0)) 20941;;;;;; 0))
20885;;; Generated autoloads from play/pong.el 20942;;; Generated autoloads from play/pong.el
20886 20943
@@ -20897,8 +20954,8 @@ pong-mode keybindings:\\<pong-mode-map>
20897 20954
20898;;;*** 20955;;;***
20899 20956
20900;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20458 56750 20957;;;### (autoloads (pop3-movemail) "pop3" "gnus/pop3.el" (20647 7982
20901;;;;;; 651721 0)) 20958;;;;;; 429263 0))
20902;;; Generated autoloads from gnus/pop3.el 20959;;; Generated autoloads from gnus/pop3.el
20903 20960
20904(autoload 'pop3-movemail "pop3" "\ 20961(autoload 'pop3-movemail "pop3" "\
@@ -20911,7 +20968,7 @@ Use streaming commands.
20911 20968
20912;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression 20969;;;### (autoloads (pp-macroexpand-last-sexp pp-eval-last-sexp pp-macroexpand-expression
20913;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el" 20970;;;;;; pp-eval-expression pp pp-buffer pp-to-string) "pp" "emacs-lisp/pp.el"
20914;;;;;; (20495 51111 757560 0)) 20971;;;;;; (20533 50312 678915 0))
20915;;; Generated autoloads from emacs-lisp/pp.el 20972;;; Generated autoloads from emacs-lisp/pp.el
20916 20973
20917(autoload 'pp-to-string "pp" "\ 20974(autoload 'pp-to-string "pp" "\
@@ -20979,7 +21036,7 @@ Ignores leading comment characters.
20979;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview 21036;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
20980;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript 21037;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
20981;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el" 21038;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el"
20982;;;;;; (20566 63671 243798 0)) 21039;;;;;; (20648 29678 511980 0))
20983;;; Generated autoloads from printing.el 21040;;; Generated autoloads from printing.el
20984 21041
20985(autoload 'pr-interface "printing" "\ 21042(autoload 'pr-interface "printing" "\
@@ -21566,7 +21623,7 @@ are both set to t.
21566 21623
21567;;;*** 21624;;;***
21568 21625
21569;;;### (autoloads (proced) "proced" "proced.el" (20593 22184 581574 21626;;;### (autoloads (proced) "proced" "proced.el" (20594 14884 858174
21570;;;;;; 0)) 21627;;;;;; 0))
21571;;; Generated autoloads from proced.el 21628;;; Generated autoloads from proced.el
21572 21629
@@ -21587,7 +21644,7 @@ Proced buffers.
21587 21644
21588;;;### (autoloads (profiler-find-profile-other-frame profiler-find-profile-other-window 21645;;;### (autoloads (profiler-find-profile-other-frame profiler-find-profile-other-window
21589;;;;;; profiler-find-profile profiler-start) "profiler" "profiler.el" 21646;;;;;; profiler-find-profile profiler-start) "profiler" "profiler.el"
21590;;;;;; (20619 46245 806932 0)) 21647;;;;;; (20650 61396 673885 0))
21591;;; Generated autoloads from profiler.el 21648;;; Generated autoloads from profiler.el
21592 21649
21593(autoload 'profiler-start "profiler" "\ 21650(autoload 'profiler-start "profiler" "\
@@ -21616,7 +21673,7 @@ Open profile FILENAME.
21616;;;*** 21673;;;***
21617 21674
21618;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog" 21675;;;### (autoloads (run-prolog mercury-mode prolog-mode) "prolog"
21619;;;;;; "progmodes/prolog.el" (20576 42138 697312 0)) 21676;;;;;; "progmodes/prolog.el" (20576 17486 923994 745000))
21620;;; Generated autoloads from progmodes/prolog.el 21677;;; Generated autoloads from progmodes/prolog.el
21621 21678
21622(autoload 'prolog-mode "prolog" "\ 21679(autoload 'prolog-mode "prolog" "\
@@ -21651,8 +21708,8 @@ With prefix argument ARG, restart the Prolog process if running before.
21651 21708
21652;;;*** 21709;;;***
21653 21710
21654;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20355 21711;;;### (autoloads (bdf-directory-list) "ps-bdf" "ps-bdf.el" (20652
21655;;;;;; 10021 546955 0)) 21712;;;;;; 52617 313760 0))
21656;;; Generated autoloads from ps-bdf.el 21713;;; Generated autoloads from ps-bdf.el
21657 21714
21658(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\ 21715(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\
@@ -21664,7 +21721,7 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").")
21664;;;*** 21721;;;***
21665 21722
21666;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20576 21723;;;### (autoloads (ps-mode) "ps-mode" "progmodes/ps-mode.el" (20576
21667;;;;;; 42138 697312 0)) 21724;;;;;; 17495 155995 39000))
21668;;; Generated autoloads from progmodes/ps-mode.el 21725;;; Generated autoloads from progmodes/ps-mode.el
21669 21726
21670(autoload 'ps-mode "ps-mode" "\ 21727(autoload 'ps-mode "ps-mode" "\
@@ -21716,7 +21773,7 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number
21716;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces 21773;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
21717;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type 21774;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
21718;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20566 21775;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (20566
21719;;;;;; 63671 243798 0)) 21776;;;;;; 45755 958602 756000))
21720;;; Generated autoloads from ps-print.el 21777;;; Generated autoloads from ps-print.el
21721 21778
21722(defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\ 21779(defvar ps-page-dimensions-database (purecopy (list (list 'a4 (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list 'a3 (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list 'letter (* 72 8.5) (* 72 11.0) "Letter") (list 'legal (* 72 8.5) (* 72 14.0) "Legal") (list 'letter-small (* 72 7.68) (* 72 10.16) "LetterSmall") (list 'tabloid (* 72 11.0) (* 72 17.0) "Tabloid") (list 'ledger (* 72 17.0) (* 72 11.0) "Ledger") (list 'statement (* 72 5.5) (* 72 8.5) "Statement") (list 'executive (* 72 7.5) (* 72 10.0) "Executive") (list 'a4small (* 72 7.47) (* 72 10.85) "A4Small") (list 'b4 (* 72 10.125) (* 72 14.33) "B4") (list 'b5 (* 72 7.16) (* 72 10.125) "B5") '(addresslarge 236.0 99.0 "AddressLarge") '(addresssmall 236.0 68.0 "AddressSmall") '(cuthanging13 90.0 222.0 "CutHanging13") '(cuthanging15 90.0 114.0 "CutHanging15") '(diskette 181.0 136.0 "Diskette") '(eurofilefolder 139.0 112.0 "EuropeanFilefolder") '(eurofoldernarrow 526.0 107.0 "EuroFolderNarrow") '(eurofolderwide 526.0 136.0 "EuroFolderWide") '(euronamebadge 189.0 108.0 "EuroNameBadge") '(euronamebadgelarge 223.0 136.0 "EuroNameBadgeLarge") '(filefolder 230.0 37.0 "FileFolder") '(jewelry 76.0 136.0 "Jewelry") '(mediabadge 180.0 136.0 "MediaBadge") '(multipurpose 126.0 68.0 "MultiPurpose") '(retaillabel 90.0 104.0 "RetailLabel") '(shipping 271.0 136.0 "Shipping") '(slide35mm 26.0 104.0 "Slide35mm") '(spine8mm 187.0 26.0 "Spine8mm") '(topcoated 425.19685 136.0 "TopCoatedPaper") '(topcoatedpaper 396.0 136.0 "TopcoatedPaper150") '(vhsface 205.0 127.0 "VHSFace") '(vhsspine 400.0 50.0 "VHSSpine") '(zipdisk 156.0 136.0 "ZipDisk"))) "\
@@ -21913,7 +21970,7 @@ If EXTENSION is any other symbol, it is ignored.
21913;;;*** 21970;;;***
21914 21971
21915;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el" 21972;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el"
21916;;;;;; (20599 27513 576550 0)) 21973;;;;;; (20660 26176 137583 0))
21917;;; Generated autoloads from progmodes/python.el 21974;;; Generated autoloads from progmodes/python.el
21918 21975
21919(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) 21976(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
@@ -21949,7 +22006,7 @@ if that value is non-nil.
21949;;;*** 22006;;;***
21950 22007
21951;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" 22008;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
21952;;;;;; (20557 48712 315579 0)) 22009;;;;;; (20557 23173 326608 0))
21953;;; Generated autoloads from gnus/qp.el 22010;;; Generated autoloads from gnus/qp.el
21954 22011
21955(autoload 'quoted-printable-decode-region "qp" "\ 22012(autoload 'quoted-printable-decode-region "qp" "\
@@ -21972,7 +22029,7 @@ them into characters should be done separately.
21972;;;;;; quail-defrule quail-install-decode-map quail-install-map 22029;;;;;; quail-defrule quail-install-decode-map quail-install-map
21973;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout 22030;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout
21974;;;;;; quail-define-package quail-use-package quail-title) "quail" 22031;;;;;; quail-define-package quail-use-package quail-title) "quail"
21975;;;;;; "international/quail.el" (20523 62082 997685 0)) 22032;;;;;; "international/quail.el" (20533 50312 678915 0))
21976;;; Generated autoloads from international/quail.el 22033;;; Generated autoloads from international/quail.el
21977 22034
21978(autoload 'quail-title "quail" "\ 22035(autoload 'quail-title "quail" "\
@@ -22204,7 +22261,7 @@ of each directory.
22204;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls 22261;;;### (autoloads (quickurl-list quickurl-list-mode quickurl-edit-urls
22205;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url 22262;;;;;; quickurl-browse-url-ask quickurl-browse-url quickurl-add-url
22206;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20566 22263;;;;;; quickurl-ask quickurl) "quickurl" "net/quickurl.el" (20566
22207;;;;;; 63671 243798 0)) 22264;;;;;; 46668 994639 176000))
22208;;; Generated autoloads from net/quickurl.el 22265;;; Generated autoloads from net/quickurl.el
22209 22266
22210(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ 22267(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
@@ -22276,7 +22333,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
22276;;;*** 22333;;;***
22277 22334
22278;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" 22335;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
22279;;;;;; "net/rcirc.el" (20614 54428 654267 0)) 22336;;;;;; "net/rcirc.el" (20615 22847 537904 0))
22280;;; Generated autoloads from net/rcirc.el 22337;;; Generated autoloads from net/rcirc.el
22281 22338
22282(autoload 'rcirc "rcirc" "\ 22339(autoload 'rcirc "rcirc" "\
@@ -22314,8 +22371,8 @@ if ARG is omitted or nil.
22314 22371
22315;;;*** 22372;;;***
22316 22373
22317;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20355 22374;;;### (autoloads (remote-compile) "rcompile" "net/rcompile.el" (20533
22318;;;;;; 10021 546955 0)) 22375;;;;;; 50312 678915 0))
22319;;; Generated autoloads from net/rcompile.el 22376;;; Generated autoloads from net/rcompile.el
22320 22377
22321(autoload 'remote-compile "rcompile" "\ 22378(autoload 'remote-compile "rcompile" "\
@@ -22327,7 +22384,7 @@ See \\[compile].
22327;;;*** 22384;;;***
22328 22385
22329;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el" 22386;;;### (autoloads (re-builder) "re-builder" "emacs-lisp/re-builder.el"
22330;;;;;; (20427 14766 970343 0)) 22387;;;;;; (20533 50312 678915 0))
22331;;; Generated autoloads from emacs-lisp/re-builder.el 22388;;; Generated autoloads from emacs-lisp/re-builder.el
22332 22389
22333(defalias 'regexp-builder 're-builder) 22390(defalias 'regexp-builder 're-builder)
@@ -22345,8 +22402,8 @@ matching parts of the target buffer will be highlighted.
22345 22402
22346;;;*** 22403;;;***
22347 22404
22348;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20356 2211 22405;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (20533 50312
22349;;;;;; 532900 0)) 22406;;;;;; 678915 0))
22350;;; Generated autoloads from recentf.el 22407;;; Generated autoloads from recentf.el
22351 22408
22352(defvar recentf-mode nil "\ 22409(defvar recentf-mode nil "\
@@ -22376,7 +22433,7 @@ were operated on recently.
22376;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle 22433;;;;;; string-rectangle delete-whitespace-rectangle open-rectangle
22377;;;;;; insert-rectangle yank-rectangle copy-rectangle-as-kill kill-rectangle 22434;;;;;; insert-rectangle yank-rectangle copy-rectangle-as-kill kill-rectangle
22378;;;;;; extract-rectangle delete-extract-rectangle delete-rectangle) 22435;;;;;; extract-rectangle delete-extract-rectangle delete-rectangle)
22379;;;;;; "rect" "rect.el" (20501 3499 284800 0)) 22436;;;;;; "rect" "rect.el" (20533 50312 678915 0))
22380;;; Generated autoloads from rect.el 22437;;; Generated autoloads from rect.el
22381 22438
22382(autoload 'delete-rectangle "rect" "\ 22439(autoload 'delete-rectangle "rect" "\
@@ -22510,8 +22567,8 @@ with a prefix argument, prompt for START-AT and FORMAT.
22510 22567
22511;;;*** 22568;;;***
22512 22569
22513;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20478 22570;;;### (autoloads (refill-mode) "refill" "textmodes/refill.el" (20533
22514;;;;;; 3673 653810 0)) 22571;;;;;; 50312 678915 0))
22515;;; Generated autoloads from textmodes/refill.el 22572;;; Generated autoloads from textmodes/refill.el
22516 22573
22517(autoload 'refill-mode "refill" "\ 22574(autoload 'refill-mode "refill" "\
@@ -22532,8 +22589,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead.
22532;;;*** 22589;;;***
22533 22590
22534;;;### (autoloads (reftex-reset-scanning-information reftex-mode 22591;;;### (autoloads (reftex-reset-scanning-information reftex-mode
22535;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20590 45996 22592;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20660 26176
22536;;;;;; 129575 0)) 22593;;;;;; 137583 0))
22537;;; Generated autoloads from textmodes/reftex.el 22594;;; Generated autoloads from textmodes/reftex.el
22538 22595
22539(autoload 'turn-on-reftex "reftex" "\ 22596(autoload 'turn-on-reftex "reftex" "\
@@ -22583,7 +22640,7 @@ This enforces rescanning the buffer on next use.
22583;;;*** 22640;;;***
22584 22641
22585;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el" 22642;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
22586;;;;;; (20585 28088 480237 0)) 22643;;;;;; (20585 2669 263465 0))
22587;;; Generated autoloads from textmodes/reftex-cite.el 22644;;; Generated autoloads from textmodes/reftex-cite.el
22588 22645
22589(autoload 'reftex-citation "reftex-cite" "\ 22646(autoload 'reftex-citation "reftex-cite" "\
@@ -22613,7 +22670,7 @@ While entering the regexp, completion on knows citation keys is possible.
22613;;;*** 22670;;;***
22614 22671
22615;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el" 22672;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
22616;;;;;; (20585 28088 480237 0)) 22673;;;;;; (20585 2669 263465 0))
22617;;; Generated autoloads from textmodes/reftex-global.el 22674;;; Generated autoloads from textmodes/reftex-global.el
22618 22675
22619(autoload 'reftex-isearch-minor-mode "reftex-global" "\ 22676(autoload 'reftex-isearch-minor-mode "reftex-global" "\
@@ -22630,7 +22687,7 @@ With no argument, this command toggles
22630;;;*** 22687;;;***
22631 22688
22632;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el" 22689;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
22633;;;;;; (20585 28088 480237 0)) 22690;;;;;; (20585 2669 263465 0))
22634;;; Generated autoloads from textmodes/reftex-index.el 22691;;; Generated autoloads from textmodes/reftex-index.el
22635 22692
22636(autoload 'reftex-index-phrases-mode "reftex-index" "\ 22693(autoload 'reftex-index-phrases-mode "reftex-index" "\
@@ -22663,7 +22720,7 @@ Here are all local bindings.
22663;;;*** 22720;;;***
22664 22721
22665;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el" 22722;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
22666;;;;;; (20585 28088 480237 0)) 22723;;;;;; (20660 26176 137583 0))
22667;;; Generated autoloads from textmodes/reftex-parse.el 22724;;; Generated autoloads from textmodes/reftex-parse.el
22668 22725
22669(autoload 'reftex-all-document-files "reftex-parse" "\ 22726(autoload 'reftex-all-document-files "reftex-parse" "\
@@ -22675,8 +22732,8 @@ of master file.
22675 22732
22676;;;*** 22733;;;***
22677 22734
22678;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20593 22735;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20594
22679;;;;;; 22184 581574 0)) 22736;;;;;; 14884 858174 0))
22680;;; Generated autoloads from textmodes/reftex-vars.el 22737;;; Generated autoloads from textmodes/reftex-vars.el
22681(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22738(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
22682(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 22739(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22686,7 +22743,7 @@ of master file.
22686;;;*** 22743;;;***
22687 22744
22688;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" 22745;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
22689;;;;;; (20522 38650 757441 0)) 22746;;;;;; (20533 50312 678915 0))
22690;;; Generated autoloads from emacs-lisp/regexp-opt.el 22747;;; Generated autoloads from emacs-lisp/regexp-opt.el
22691 22748
22692(autoload 'regexp-opt "regexp-opt" "\ 22749(autoload 'regexp-opt "regexp-opt" "\
@@ -22717,7 +22774,7 @@ This means the number of non-shy regexp grouping constructs
22717 22774
22718;;;### (autoloads (remember-diary-extract-entries remember-clipboard 22775;;;### (autoloads (remember-diary-extract-entries remember-clipboard
22719;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el" 22776;;;;;; remember-other-frame remember) "remember" "textmodes/remember.el"
22720;;;;;; (20355 10021 546955 0)) 22777;;;;;; (20533 50312 678915 0))
22721;;; Generated autoloads from textmodes/remember.el 22778;;; Generated autoloads from textmodes/remember.el
22722 22779
22723(autoload 'remember "remember" "\ 22780(autoload 'remember "remember" "\
@@ -22748,7 +22805,7 @@ Extract diary entries from the region.
22748 22805
22749;;;*** 22806;;;***
22750 22807
22751;;;### (autoloads (repeat) "repeat" "repeat.el" (20614 54428 654267 22808;;;### (autoloads (repeat) "repeat" "repeat.el" (20615 22847 537904
22752;;;;;; 0)) 22809;;;;;; 0))
22753;;; Generated autoloads from repeat.el 22810;;; Generated autoloads from repeat.el
22754 22811
@@ -22772,7 +22829,7 @@ recently executed command not bound to an input event\".
22772;;;*** 22829;;;***
22773 22830
22774;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el" 22831;;;### (autoloads (reporter-submit-bug-report) "reporter" "mail/reporter.el"
22775;;;;;; (20355 10021 546955 0)) 22832;;;;;; (20533 50312 678915 0))
22776;;; Generated autoloads from mail/reporter.el 22833;;; Generated autoloads from mail/reporter.el
22777 22834
22778(autoload 'reporter-submit-bug-report "reporter" "\ 22835(autoload 'reporter-submit-bug-report "reporter" "\
@@ -22804,7 +22861,7 @@ mail-sending package is used for editing and sending the message.
22804;;;*** 22861;;;***
22805 22862
22806;;;### (autoloads (reposition-window) "reposition" "reposition.el" 22863;;;### (autoloads (reposition-window) "reposition" "reposition.el"
22807;;;;;; (20355 10021 546955 0)) 22864;;;;;; (20533 50312 678915 0))
22808;;; Generated autoloads from reposition.el 22865;;; Generated autoloads from reposition.el
22809 22866
22810(autoload 'reposition-window "reposition" "\ 22867(autoload 'reposition-window "reposition" "\
@@ -22831,7 +22888,7 @@ first comment line visible (if point is in a comment).
22831;;;*** 22888;;;***
22832 22889
22833;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el" 22890;;;### (autoloads (global-reveal-mode reveal-mode) "reveal" "reveal.el"
22834;;;;;; (20355 10021 546955 0)) 22891;;;;;; (20533 50312 678915 0))
22835;;; Generated autoloads from reveal.el 22892;;; Generated autoloads from reveal.el
22836 22893
22837(autoload 'reveal-mode "reveal" "\ 22894(autoload 'reveal-mode "reveal" "\
@@ -22867,7 +22924,7 @@ the mode if ARG is omitted or nil.
22867;;;*** 22924;;;***
22868 22925
22869;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el" 22926;;;### (autoloads (make-ring ring-p) "ring" "emacs-lisp/ring.el"
22870;;;;;; (20355 10021 546955 0)) 22927;;;;;; (20533 50312 678915 0))
22871;;; Generated autoloads from emacs-lisp/ring.el 22928;;; Generated autoloads from emacs-lisp/ring.el
22872 22929
22873(autoload 'ring-p "ring" "\ 22930(autoload 'ring-p "ring" "\
@@ -22882,8 +22939,8 @@ Make a ring that can contain SIZE elements.
22882 22939
22883;;;*** 22940;;;***
22884 22941
22885;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20402 11562 22942;;;### (autoloads (rlogin) "rlogin" "net/rlogin.el" (20533 50312
22886;;;;;; 85788 0)) 22943;;;;;; 678915 0))
22887;;; Generated autoloads from net/rlogin.el 22944;;; Generated autoloads from net/rlogin.el
22888 22945
22889(autoload 'rlogin "rlogin" "\ 22946(autoload 'rlogin "rlogin" "\
@@ -22932,8 +22989,8 @@ variable.
22932;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers 22989;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers
22933;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers 22990;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers
22934;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory 22991;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory
22935;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20599 61088 34742 22992;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20599 38534 554587
22936;;;;;; 635000)) 22993;;;;;; 163000))
22937;;; Generated autoloads from mail/rmail.el 22994;;; Generated autoloads from mail/rmail.el
22938 22995
22939(defvar rmail-file-name (purecopy "~/RMAIL") "\ 22996(defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -23131,8 +23188,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
23131;;;*** 23188;;;***
23132 23189
23133;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen 23190;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen
23134;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20530 3765 184907 23191;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20533 50312
23135;;;;;; 0)) 23192;;;;;; 678915 0))
23136;;; Generated autoloads from mail/rmailout.el 23193;;; Generated autoloads from mail/rmailout.el
23137(put 'rmail-output-file-alist 'risky-local-variable t) 23194(put 'rmail-output-file-alist 'risky-local-variable t)
23138 23195
@@ -23197,7 +23254,7 @@ than appending to it. Deletes the message after writing if
23197;;;*** 23254;;;***
23198 23255
23199;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el" 23256;;;### (autoloads (rng-c-load-schema) "rng-cmpct" "nxml/rng-cmpct.el"
23200;;;;;; (20355 10021 546955 0)) 23257;;;;;; (20533 50312 678915 0))
23201;;; Generated autoloads from nxml/rng-cmpct.el 23258;;; Generated autoloads from nxml/rng-cmpct.el
23202 23259
23203(autoload 'rng-c-load-schema "rng-cmpct" "\ 23260(autoload 'rng-c-load-schema "rng-cmpct" "\
@@ -23209,7 +23266,7 @@ Return a pattern.
23209;;;*** 23266;;;***
23210 23267
23211;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el" 23268;;;### (autoloads (rng-nxml-mode-init) "rng-nxml" "nxml/rng-nxml.el"
23212;;;;;; (20355 10021 546955 0)) 23269;;;;;; (20533 50312 678915 0))
23213;;; Generated autoloads from nxml/rng-nxml.el 23270;;; Generated autoloads from nxml/rng-nxml.el
23214 23271
23215(autoload 'rng-nxml-mode-init "rng-nxml" "\ 23272(autoload 'rng-nxml-mode-init "rng-nxml" "\
@@ -23222,7 +23279,7 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil.
23222;;;*** 23279;;;***
23223 23280
23224;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el" 23281;;;### (autoloads (rng-validate-mode) "rng-valid" "nxml/rng-valid.el"
23225;;;;;; (20355 10021 546955 0)) 23282;;;;;; (20533 50312 678915 0))
23226;;; Generated autoloads from nxml/rng-valid.el 23283;;; Generated autoloads from nxml/rng-valid.el
23227 23284
23228(autoload 'rng-validate-mode "rng-valid" "\ 23285(autoload 'rng-validate-mode "rng-valid" "\
@@ -23252,8 +23309,8 @@ to use for finding the schema.
23252 23309
23253;;;*** 23310;;;***
23254 23311
23255;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20355 23312;;;### (autoloads (rng-xsd-compile) "rng-xsd" "nxml/rng-xsd.el" (20533
23256;;;;;; 10021 546955 0)) 23313;;;;;; 50312 678915 0))
23257;;; Generated autoloads from nxml/rng-xsd.el 23314;;; Generated autoloads from nxml/rng-xsd.el
23258 23315
23259(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile) 23316(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile)
@@ -23281,7 +23338,7 @@ must be equal.
23281;;;*** 23338;;;***
23282 23339
23283;;;### (autoloads (robin-use-package robin-modify-package robin-define-package) 23340;;;### (autoloads (robin-use-package robin-modify-package robin-define-package)
23284;;;;;; "robin" "international/robin.el" (20523 62082 997685 0)) 23341;;;;;; "robin" "international/robin.el" (20533 50312 678915 0))
23285;;; Generated autoloads from international/robin.el 23342;;; Generated autoloads from international/robin.el
23286 23343
23287(autoload 'robin-define-package "robin" "\ 23344(autoload 'robin-define-package "robin" "\
@@ -23314,7 +23371,7 @@ Start using robin package NAME, which is a string.
23314;;;*** 23371;;;***
23315 23372
23316;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region 23373;;;### (autoloads (toggle-rot13-mode rot13-other-window rot13-region
23317;;;;;; rot13-string rot13) "rot13" "rot13.el" (20355 10021 546955 23374;;;;;; rot13-string rot13) "rot13" "rot13.el" (20533 50312 678915
23318;;;;;; 0)) 23375;;;;;; 0))
23319;;; Generated autoloads from rot13.el 23376;;; Generated autoloads from rot13.el
23320 23377
@@ -23353,7 +23410,7 @@ Toggle the use of ROT13 encoding for the current window.
23353;;;*** 23410;;;***
23354 23411
23355;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el" 23412;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el"
23356;;;;;; (20594 43050 277913 0)) 23413;;;;;; (20594 14884 858174 0))
23357;;; Generated autoloads from textmodes/rst.el 23414;;; Generated autoloads from textmodes/rst.el
23358 (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) 23415 (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
23359 23416
@@ -23384,7 +23441,7 @@ for modes derived from Text mode, like Mail mode.
23384;;;*** 23441;;;***
23385 23442
23386;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" 23443;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el"
23387;;;;;; (20576 42138 697312 0)) 23444;;;;;; (20647 7982 429263 0))
23388;;; Generated autoloads from progmodes/ruby-mode.el 23445;;; Generated autoloads from progmodes/ruby-mode.el
23389 23446
23390(autoload 'ruby-mode "ruby-mode" "\ 23447(autoload 'ruby-mode "ruby-mode" "\
@@ -23401,12 +23458,14 @@ The variable `ruby-indent-level' controls the amount of indentation.
23401 23458
23402(add-to-list 'auto-mode-alist (cons (purecopy "\\.rb\\'") 'ruby-mode)) 23459(add-to-list 'auto-mode-alist (cons (purecopy "\\.rb\\'") 'ruby-mode))
23403 23460
23461(add-to-list 'auto-mode-alist '("Rakefile\\'" . ruby-mode))
23462
23404(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode))) 23463(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
23405 23464
23406;;;*** 23465;;;***
23407 23466
23408;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20355 23467;;;### (autoloads (ruler-mode) "ruler-mode" "ruler-mode.el" (20533
23409;;;;;; 10021 546955 0)) 23468;;;;;; 50312 678915 0))
23410;;; Generated autoloads from ruler-mode.el 23469;;; Generated autoloads from ruler-mode.el
23411 23470
23412(defvar ruler-mode nil "\ 23471(defvar ruler-mode nil "\
@@ -23423,8 +23482,8 @@ if ARG is omitted or nil.
23423 23482
23424;;;*** 23483;;;***
23425 23484
23426;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20518 23485;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20533
23427;;;;;; 12580 46478 0)) 23486;;;;;; 50312 678915 0))
23428;;; Generated autoloads from emacs-lisp/rx.el 23487;;; Generated autoloads from emacs-lisp/rx.el
23429 23488
23430(autoload 'rx-to-string "rx" "\ 23489(autoload 'rx-to-string "rx" "\
@@ -23735,8 +23794,8 @@ enclosed in `(and ...)'.
23735 23794
23736;;;*** 23795;;;***
23737 23796
23738;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20577 23797;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20576
23739;;;;;; 33959 40183 0)) 23798;;;;;; 15358 683905 201000))
23740;;; Generated autoloads from savehist.el 23799;;; Generated autoloads from savehist.el
23741 23800
23742(defvar savehist-mode nil "\ 23801(defvar savehist-mode nil "\
@@ -23768,7 +23827,7 @@ histories, which is probably undesirable.
23768;;;*** 23827;;;***
23769 23828
23770;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el" 23829;;;### (autoloads (dsssl-mode scheme-mode) "scheme" "progmodes/scheme.el"
23771;;;;;; (20427 14766 970343 0)) 23830;;;;;; (20665 36153 780714 159000))
23772;;; Generated autoloads from progmodes/scheme.el 23831;;; Generated autoloads from progmodes/scheme.el
23773 23832
23774(autoload 'scheme-mode "scheme" "\ 23833(autoload 'scheme-mode "scheme" "\
@@ -23810,7 +23869,7 @@ that variable's value is a string.
23810;;;*** 23869;;;***
23811 23870
23812;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el" 23871;;;### (autoloads (gnus-score-mode) "score-mode" "gnus/score-mode.el"
23813;;;;;; (20355 10021 546955 0)) 23872;;;;;; (20533 50312 678915 0))
23814;;; Generated autoloads from gnus/score-mode.el 23873;;; Generated autoloads from gnus/score-mode.el
23815 23874
23816(autoload 'gnus-score-mode "score-mode" "\ 23875(autoload 'gnus-score-mode "score-mode" "\
@@ -23824,7 +23883,7 @@ This mode is an extended emacs-lisp mode.
23824;;;*** 23883;;;***
23825 23884
23826;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el" 23885;;;### (autoloads (scroll-all-mode) "scroll-all" "scroll-all.el"
23827;;;;;; (20363 61861 222722 0)) 23886;;;;;; (20533 50312 678915 0))
23828;;; Generated autoloads from scroll-all.el 23887;;; Generated autoloads from scroll-all.el
23829 23888
23830(defvar scroll-all-mode nil "\ 23889(defvar scroll-all-mode nil "\
@@ -23850,7 +23909,7 @@ one window apply to all visible windows in the same frame.
23850;;;*** 23909;;;***
23851 23910
23852;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el" 23911;;;### (autoloads (scroll-lock-mode) "scroll-lock" "scroll-lock.el"
23853;;;;;; (20355 10021 546955 0)) 23912;;;;;; (20533 50312 678915 0))
23854;;; Generated autoloads from scroll-lock.el 23913;;; Generated autoloads from scroll-lock.el
23855 23914
23856(autoload 'scroll-lock-mode "scroll-lock" "\ 23915(autoload 'scroll-lock-mode "scroll-lock" "\
@@ -23866,7 +23925,7 @@ vertically fixed relative to window boundaries during scrolling.
23866 23925
23867;;;*** 23926;;;***
23868 23927
23869;;;### (autoloads nil "secrets" "net/secrets.el" (20478 3673 653810 23928;;;### (autoloads nil "secrets" "net/secrets.el" (20533 50312 678915
23870;;;;;; 0)) 23929;;;;;; 0))
23871;;; Generated autoloads from net/secrets.el 23930;;; Generated autoloads from net/secrets.el
23872(when (featurep 'dbusbind) 23931(when (featurep 'dbusbind)
@@ -23875,7 +23934,7 @@ vertically fixed relative to window boundaries during scrolling.
23875;;;*** 23934;;;***
23876 23935
23877;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic" 23936;;;### (autoloads (semantic-mode semantic-default-submodes) "semantic"
23878;;;;;; "cedet/semantic.el" (20617 41641 89638 0)) 23937;;;;;; "cedet/semantic.el" (20619 27099 673959 0))
23879;;; Generated autoloads from cedet/semantic.el 23938;;; Generated autoloads from cedet/semantic.el
23880 23939
23881(defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\ 23940(defvar semantic-default-submodes '(global-semantic-idle-scheduler-mode global-semanticdb-minor-mode) "\
@@ -23932,7 +23991,7 @@ Semantic mode.
23932;;;*** 23991;;;***
23933 23992
23934;;;### (autoloads (bovine-grammar-mode) "semantic/bovine/grammar" 23993;;;### (autoloads (bovine-grammar-mode) "semantic/bovine/grammar"
23935;;;;;; "cedet/semantic/bovine/grammar.el" (20593 22184 581574 0)) 23994;;;;;; "cedet/semantic/bovine/grammar.el" (20592 14750 589797 981000))
23936;;; Generated autoloads from cedet/semantic/bovine/grammar.el 23995;;; Generated autoloads from cedet/semantic/bovine/grammar.el
23937 23996
23938(autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\ 23997(autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
@@ -23943,7 +24002,7 @@ Major mode for editing Bovine grammars.
23943;;;*** 24002;;;***
23944 24003
23945;;;### (autoloads (wisent-grammar-mode) "semantic/wisent/grammar" 24004;;;### (autoloads (wisent-grammar-mode) "semantic/wisent/grammar"
23946;;;;;; "cedet/semantic/wisent/grammar.el" (20593 22184 581574 0)) 24005;;;;;; "cedet/semantic/wisent/grammar.el" (20592 14837 837798 186000))
23947;;; Generated autoloads from cedet/semantic/wisent/grammar.el 24006;;; Generated autoloads from cedet/semantic/wisent/grammar.el
23948 24007
23949(autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\ 24008(autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
@@ -23961,7 +24020,7 @@ Major mode for editing Wisent grammars.
23961;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name 24020;;;;;; mail-personal-alias-file mail-default-reply-to mail-archive-file-name
23962;;;;;; mail-header-separator send-mail-function mail-interactive 24021;;;;;; mail-header-separator send-mail-function mail-interactive
23963;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style) 24022;;;;;; mail-self-blind mail-specify-envelope-from mail-from-style)
23964;;;;;; "sendmail" "mail/sendmail.el" (20614 54428 654267 0)) 24023;;;;;; "sendmail" "mail/sendmail.el" (20615 22847 537904 0))
23965;;; Generated autoloads from mail/sendmail.el 24024;;; Generated autoloads from mail/sendmail.el
23966 24025
23967(defvar mail-from-style 'default "\ 24026(defvar mail-from-style 'default "\
@@ -24243,8 +24302,8 @@ Like `mail' command, but display mail buffer in another frame.
24243;;;*** 24302;;;***
24244 24303
24245;;;### (autoloads (server-save-buffers-kill-terminal server-mode 24304;;;### (autoloads (server-save-buffers-kill-terminal server-mode
24246;;;;;; server-force-delete server-start) "server" "server.el" (20594 24305;;;;;; server-force-delete server-start) "server" "server.el" (20647
24247;;;;;; 43050 277913 0)) 24306;;;;;; 7982 429263 0))
24248;;; Generated autoloads from server.el 24307;;; Generated autoloads from server.el
24249 24308
24250(put 'server-host 'risky-local-variable t) 24309(put 'server-host 'risky-local-variable t)
@@ -24311,7 +24370,7 @@ only these files will be asked to be saved.
24311 24370
24312;;;*** 24371;;;***
24313 24372
24314;;;### (autoloads (ses-mode) "ses" "ses.el" (20553 51627 169867 0)) 24373;;;### (autoloads (ses-mode) "ses" "ses.el" (20657 39151 929960 0))
24315;;; Generated autoloads from ses.el 24374;;; Generated autoloads from ses.el
24316 24375
24317(autoload 'ses-mode "ses" "\ 24376(autoload 'ses-mode "ses" "\
@@ -24330,7 +24389,7 @@ These are active only in the minibuffer, when entering or editing a formula:
24330;;;*** 24389;;;***
24331 24390
24332;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el" 24391;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
24333;;;;;; (20580 10161 446444 0)) 24392;;;;;; (20665 37305 556705 260000))
24334;;; Generated autoloads from textmodes/sgml-mode.el 24393;;; Generated autoloads from textmodes/sgml-mode.el
24335 24394
24336(autoload 'sgml-mode "sgml-mode" "\ 24395(autoload 'sgml-mode "sgml-mode" "\
@@ -24396,7 +24455,7 @@ To work around that, do:
24396;;;*** 24455;;;***
24397 24456
24398;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" 24457;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
24399;;;;;; (20624 64165 102958 0)) 24458;;;;;; (20665 38785 745682 0))
24400;;; Generated autoloads from progmodes/sh-script.el 24459;;; Generated autoloads from progmodes/sh-script.el
24401(put 'sh-shell 'safe-local-variable 'symbolp) 24460(put 'sh-shell 'safe-local-variable 'symbolp)
24402 24461
@@ -24460,7 +24519,7 @@ with your script for an edit-interpret-debug cycle.
24460;;;*** 24519;;;***
24461 24520
24462;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el" 24521;;;### (autoloads (list-load-path-shadows) "shadow" "emacs-lisp/shadow.el"
24463;;;;;; (20572 16038 402143 0)) 24522;;;;;; (20571 55599 814625 0))
24464;;; Generated autoloads from emacs-lisp/shadow.el 24523;;; Generated autoloads from emacs-lisp/shadow.el
24465 24524
24466(autoload 'list-load-path-shadows "shadow" "\ 24525(autoload 'list-load-path-shadows "shadow" "\
@@ -24510,8 +24569,8 @@ function, `load-path-shadows-find'.
24510;;;*** 24569;;;***
24511 24570
24512;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group 24571;;;### (autoloads (shadow-initialize shadow-define-regexp-group shadow-define-literal-group
24513;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20355 24572;;;;;; shadow-define-cluster) "shadowfile" "shadowfile.el" (20533
24514;;;;;; 10021 546955 0)) 24573;;;;;; 50312 678915 0))
24515;;; Generated autoloads from shadowfile.el 24574;;; Generated autoloads from shadowfile.el
24516 24575
24517(autoload 'shadow-define-cluster "shadowfile" "\ 24576(autoload 'shadow-define-cluster "shadowfile" "\
@@ -24550,7 +24609,7 @@ Set up file shadowing.
24550;;;*** 24609;;;***
24551 24610
24552;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el" 24611;;;### (autoloads (shell shell-dumb-shell-regexp) "shell" "shell.el"
24553;;;;;; (20566 63671 243798 0)) 24612;;;;;; (20664 27691 323071 891000))
24554;;; Generated autoloads from shell.el 24613;;; Generated autoloads from shell.el
24555 24614
24556(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ 24615(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
@@ -24598,8 +24657,8 @@ Otherwise, one argument `-i' is passed to the shell.
24598 24657
24599;;;*** 24658;;;***
24600 24659
24601;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20595 24660;;;### (autoloads (shr-insert-document) "shr" "gnus/shr.el" (20596
24602;;;;;; 63909 923329 0)) 24661;;;;;; 57817 368875 0))
24603;;; Generated autoloads from gnus/shr.el 24662;;; Generated autoloads from gnus/shr.el
24604 24663
24605(autoload 'shr-insert-document "shr" "\ 24664(autoload 'shr-insert-document "shr" "\
@@ -24612,7 +24671,7 @@ DOM should be a parse tree as generated by
24612;;;*** 24671;;;***
24613 24672
24614;;;### (autoloads (sieve-upload-and-kill sieve-upload-and-bury sieve-upload 24673;;;### (autoloads (sieve-upload-and-kill sieve-upload-and-bury sieve-upload
24615;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20487 57003 603251 24674;;;;;; sieve-manage) "sieve" "gnus/sieve.el" (20533 50312 678915
24616;;;;;; 0)) 24675;;;;;; 0))
24617;;; Generated autoloads from gnus/sieve.el 24676;;; Generated autoloads from gnus/sieve.el
24618 24677
@@ -24639,7 +24698,7 @@ DOM should be a parse tree as generated by
24639;;;*** 24698;;;***
24640 24699
24641;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el" 24700;;;### (autoloads (sieve-mode) "sieve-mode" "gnus/sieve-mode.el"
24642;;;;;; (20487 57003 603251 0)) 24701;;;;;; (20533 50312 678915 0))
24643;;; Generated autoloads from gnus/sieve-mode.el 24702;;; Generated autoloads from gnus/sieve-mode.el
24644 24703
24645(autoload 'sieve-mode "sieve-mode" "\ 24704(autoload 'sieve-mode "sieve-mode" "\
@@ -24654,8 +24713,8 @@ Turning on Sieve mode runs `sieve-mode-hook'.
24654 24713
24655;;;*** 24714;;;***
24656 24715
24657;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20355 24716;;;### (autoloads (simula-mode) "simula" "progmodes/simula.el" (20533
24658;;;;;; 10021 546955 0)) 24717;;;;;; 50312 678915 0))
24659;;; Generated autoloads from progmodes/simula.el 24718;;; Generated autoloads from progmodes/simula.el
24660 24719
24661(autoload 'simula-mode "simula" "\ 24720(autoload 'simula-mode "simula" "\
@@ -24704,7 +24763,7 @@ with no arguments, if that value is non-nil.
24704;;;*** 24763;;;***
24705 24764
24706;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new 24765;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
24707;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 6907 775259 24766;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 32865 505578
24708;;;;;; 0)) 24767;;;;;; 0))
24709;;; Generated autoloads from skeleton.el 24768;;; Generated autoloads from skeleton.el
24710 24769
@@ -24817,7 +24876,7 @@ symmetrical ones, and the same character twice for the others.
24817;;;*** 24876;;;***
24818 24877
24819;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff) 24878;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff)
24820;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 28088 480237 0)) 24879;;;;;; "smerge-mode" "vc/smerge-mode.el" (20585 2669 263465 0))
24821;;; Generated autoloads from vc/smerge-mode.el 24880;;; Generated autoloads from vc/smerge-mode.el
24822 24881
24823(autoload 'smerge-ediff "smerge-mode" "\ 24882(autoload 'smerge-ediff "smerge-mode" "\
@@ -24845,7 +24904,7 @@ If no conflict maker is found, turn off `smerge-mode'.
24845;;;*** 24904;;;***
24846 24905
24847;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el" 24906;;;### (autoloads (smiley-buffer smiley-region) "smiley" "gnus/smiley.el"
24848;;;;;; (20355 10021 546955 0)) 24907;;;;;; (20533 50312 678915 0))
24849;;; Generated autoloads from gnus/smiley.el 24908;;; Generated autoloads from gnus/smiley.el
24850 24909
24851(autoload 'smiley-region "smiley" "\ 24910(autoload 'smiley-region "smiley" "\
@@ -24863,7 +24922,7 @@ interactively. If there's no argument, do it at the current buffer.
24863;;;*** 24922;;;***
24864 24923
24865;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail" 24924;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
24866;;;;;; "mail/smtpmail.el" (20551 9899 283417 0)) 24925;;;;;; "mail/smtpmail.el" (20552 25066 479417 0))
24867;;; Generated autoloads from mail/smtpmail.el 24926;;; Generated autoloads from mail/smtpmail.el
24868 24927
24869(autoload 'smtpmail-send-it "smtpmail" "\ 24928(autoload 'smtpmail-send-it "smtpmail" "\
@@ -24878,7 +24937,7 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'.
24878 24937
24879;;;*** 24938;;;***
24880 24939
24881;;;### (autoloads (snake) "snake" "play/snake.el" (20478 3673 653810 24940;;;### (autoloads (snake) "snake" "play/snake.el" (20533 50312 678915
24882;;;;;; 0)) 24941;;;;;; 0))
24883;;; Generated autoloads from play/snake.el 24942;;; Generated autoloads from play/snake.el
24884 24943
@@ -24903,7 +24962,7 @@ Snake mode keybindings:
24903;;;*** 24962;;;***
24904 24963
24905;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el" 24964;;;### (autoloads (snmpv2-mode snmp-mode) "snmp-mode" "net/snmp-mode.el"
24906;;;;;; (20577 33959 40183 0)) 24965;;;;;; (20576 17407 119991 302000))
24907;;; Generated autoloads from net/snmp-mode.el 24966;;; Generated autoloads from net/snmp-mode.el
24908 24967
24909(autoload 'snmp-mode "snmp-mode" "\ 24968(autoload 'snmp-mode "snmp-mode" "\
@@ -24933,7 +24992,7 @@ then `snmpv2-mode-hook'.
24933;;;*** 24992;;;***
24934 24993
24935;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20566 24994;;;### (autoloads (sunrise-sunset) "solar" "calendar/solar.el" (20566
24936;;;;;; 63671 243798 0)) 24995;;;;;; 46404 938628 506000))
24937;;; Generated autoloads from calendar/solar.el 24996;;; Generated autoloads from calendar/solar.el
24938 24997
24939(autoload 'sunrise-sunset "solar" "\ 24998(autoload 'sunrise-sunset "solar" "\
@@ -24948,8 +25007,8 @@ This function is suitable for execution in an init file.
24948 25007
24949;;;*** 25008;;;***
24950 25009
24951;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20427 25010;;;### (autoloads (solitaire) "solitaire" "play/solitaire.el" (20533
24952;;;;;; 14766 970343 0)) 25011;;;;;; 50312 678915 0))
24953;;; Generated autoloads from play/solitaire.el 25012;;; Generated autoloads from play/solitaire.el
24954 25013
24955(autoload 'solitaire "solitaire" "\ 25014(autoload 'solitaire "solitaire" "\
@@ -25024,10 +25083,10 @@ Pick your favorite shortcuts:
25024 25083
25025;;;*** 25084;;;***
25026 25085
25027;;;### (autoloads (reverse-region sort-columns sort-regexp-fields 25086;;;### (autoloads (delete-duplicate-lines reverse-region sort-columns
25028;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs 25087;;;;;; sort-regexp-fields sort-fields sort-numeric-fields sort-pages
25029;;;;;; sort-lines sort-subr) "sort" "sort.el" (20507 42276 222255 25088;;;;;; sort-paragraphs sort-lines sort-subr) "sort" "sort.el" (20669
25030;;;;;; 0)) 25089;;;;;; 24410 534430 0))
25031;;; Generated autoloads from sort.el 25090;;; Generated autoloads from sort.el
25032(put 'sort-fold-case 'safe-local-variable 'booleanp) 25091(put 'sort-fold-case 'safe-local-variable 'booleanp)
25033 25092
@@ -25174,10 +25233,30 @@ From a program takes two point or marker arguments, BEG and END.
25174 25233
25175\(fn BEG END)" t nil) 25234\(fn BEG END)" t nil)
25176 25235
25236(autoload 'delete-duplicate-lines "sort" "\
25237Delete duplicate lines in the region between BEG and END.
25238
25239If REVERSE is nil, search and delete duplicates forward keeping the first
25240occurrence of duplicate lines. If REVERSE is non-nil (when called
25241interactively with C-u prefix), search and delete duplicates backward
25242keeping the last occurrence of duplicate lines.
25243
25244If ADJACENT is non-nil (when called interactively with two C-u prefixes),
25245delete repeated lines only if they are adjacent. It works like the utility
25246`uniq' and is useful when lines are already sorted in a large file since
25247this is more efficient in performance and memory usage than when ADJACENT
25248is nil that uses additional memory to remember previous lines.
25249
25250When called from Lisp and INTERACTIVE is omitted or nil, return the number
25251of deleted duplicate lines, do not print it; if INTERACTIVE is t, the
25252function behaves in all respects as if it had been called interactively.
25253
25254\(fn BEG END &optional REVERSE ADJACENT INTERACTIVE)" t nil)
25255
25177;;;*** 25256;;;***
25178 25257
25179;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20458 25258;;;### (autoloads (spam-initialize) "spam" "gnus/spam.el" (20533
25180;;;;;; 56750 651721 0)) 25259;;;;;; 50312 678915 0))
25181;;; Generated autoloads from gnus/spam.el 25260;;; Generated autoloads from gnus/spam.el
25182 25261
25183(autoload 'spam-initialize "spam" "\ 25262(autoload 'spam-initialize "spam" "\
@@ -25193,7 +25272,7 @@ installed through `spam-necessary-extra-headers'.
25193 25272
25194;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file 25273;;;### (autoloads (spam-report-deagentize spam-report-agentize spam-report-url-to-file
25195;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report" 25274;;;;;; spam-report-url-ping-mm-url spam-report-process-queue) "spam-report"
25196;;;;;; "gnus/spam-report.el" (20355 10021 546955 0)) 25275;;;;;; "gnus/spam-report.el" (20533 50312 678915 0))
25197;;; Generated autoloads from gnus/spam-report.el 25276;;; Generated autoloads from gnus/spam-report.el
25198 25277
25199(autoload 'spam-report-process-queue "spam-report" "\ 25278(autoload 'spam-report-process-queue "spam-report" "\
@@ -25236,7 +25315,7 @@ Spam reports will be queued with the method used when
25236;;;*** 25315;;;***
25237 25316
25238;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar" 25317;;;### (autoloads (speedbar-get-focus speedbar-frame-mode) "speedbar"
25239;;;;;; "speedbar.el" (20566 63671 243798 0)) 25318;;;;;; "speedbar.el" (20648 29678 511980 0))
25240;;; Generated autoloads from speedbar.el 25319;;; Generated autoloads from speedbar.el
25241 25320
25242(defalias 'speedbar 'speedbar-frame-mode) 25321(defalias 'speedbar 'speedbar-frame-mode)
@@ -25260,8 +25339,8 @@ selected. If the speedbar frame is active, then select the attached frame.
25260 25339
25261;;;*** 25340;;;***
25262 25341
25263;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20355 25342;;;### (autoloads (snarf-spooks spook) "spook" "play/spook.el" (20533
25264;;;;;; 10021 546955 0)) 25343;;;;;; 50312 678915 0))
25265;;; Generated autoloads from play/spook.el 25344;;; Generated autoloads from play/spook.el
25266 25345
25267(autoload 'spook "spook" "\ 25346(autoload 'spook "spook" "\
@@ -25279,8 +25358,8 @@ Return a vector containing the lines from `spook-phrases-file'.
25279;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres 25358;;;### (autoloads (sql-linter sql-db2 sql-interbase sql-postgres
25280;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix 25359;;;;;; sql-ms sql-ingres sql-solid sql-mysql sql-sqlite sql-informix
25281;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect 25360;;;;;; sql-sybase sql-oracle sql-product-interactive sql-connect
25282;;;;;; sql-mode sql-help sql-add-product-keywords) "sql" "progmodes/sql.el" 25361;;;;;; sql-mode sql-add-product-keywords) "sql" "progmodes/sql.el"
25283;;;;;; (20566 63671 243798 0)) 25362;;;;;; (20655 4702 996292 0))
25284;;; Generated autoloads from progmodes/sql.el 25363;;; Generated autoloads from progmodes/sql.el
25285 25364
25286(autoload 'sql-add-product-keywords "sql" "\ 25365(autoload 'sql-add-product-keywords "sql" "\
@@ -25304,40 +25383,7 @@ adds a fontification pattern to fontify identifiers ending in
25304 25383
25305\(fn PRODUCT KEYWORDS &optional APPEND)" nil nil) 25384\(fn PRODUCT KEYWORDS &optional APPEND)" nil nil)
25306 25385
25307(autoload 'sql-help "sql" "\ 25386(eval '(defun sql-help nil #("Show short help for the SQL modes.\n\nUse an entry function to open an interactive SQL buffer. This buffer is\nusually named `*SQL*'. The name of the major mode is SQLi.\n\nUse the following commands to start a specific SQL interpreter:\n\n \\\\FREE\n\nOther non-free SQL implementations are also supported:\n\n \\\\NONFREE\n\nBut we urge you to choose a free implementation instead of these.\n\nYou can also use \\[sql-product-interactive] to invoke the\ninterpreter for the current `sql-product'.\n\nOnce you have the SQLi buffer, you can enter SQL statements in the\nbuffer. The output generated is appended to the buffer and a new prompt\nis generated. See the In/Out menu in the SQLi buffer for some functions\nthat help you navigate through the buffer, the input history, etc.\n\nIf you have a really complex SQL statement or if you are writing a\nprocedure, you can do this in a separate buffer. Put the new buffer in\n`sql-mode' by calling \\[sql-mode]. The name of this buffer can be\nanything. The name of the major mode is SQL.\n\nIn this SQL buffer (SQL mode), you can send the region or the entire\nbuffer to the interactive SQL buffer (SQLi mode). The results are\nappended to the SQLi buffer without disturbing your SQL buffer." 0 1 (dynamic-docstring-function sql--make-help-docstring)) (interactive) (describe-function 'sql-help)))
25308Show short help for the SQL modes.
25309
25310Use an entry function to open an interactive SQL buffer. This buffer is
25311usually named `*SQL*'. The name of the major mode is SQLi.
25312
25313Use the following commands to start a specific SQL interpreter:
25314
25315 \\\\FREE
25316
25317Other non-free SQL implementations are also supported:
25318
25319 \\\\NONFREE
25320
25321But we urge you to choose a free implementation instead of these.
25322
25323You can also use \\[sql-product-interactive] to invoke the
25324interpreter for the current `sql-product'.
25325
25326Once you have the SQLi buffer, you can enter SQL statements in the
25327buffer. The output generated is appended to the buffer and a new prompt
25328is generated. See the In/Out menu in the SQLi buffer for some functions
25329that help you navigate through the buffer, the input history, etc.
25330
25331If you have a really complex SQL statement or if you are writing a
25332procedure, you can do this in a separate buffer. Put the new buffer in
25333`sql-mode' by calling \\[sql-mode]. The name of this buffer can be
25334anything. The name of the major mode is SQL.
25335
25336In this SQL buffer (SQL mode), you can send the region or the entire
25337buffer to the interactive SQL buffer (SQLi mode). The results are
25338appended to the SQLi buffer without disturbing your SQL buffer.
25339
25340\(fn)" t nil)
25341 25387
25342(autoload 'sql-mode "sql" "\ 25388(autoload 'sql-mode "sql" "\
25343Major mode to edit SQL. 25389Major mode to edit SQL.
@@ -25776,7 +25822,7 @@ buffer.
25776;;;*** 25822;;;***
25777 25823
25778;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el" 25824;;;### (autoloads (srecode-template-mode) "srecode/srt-mode" "cedet/srecode/srt-mode.el"
25779;;;;;; (20586 48936 135199 0)) 25825;;;;;; (20647 7982 429263 0))
25780;;; Generated autoloads from cedet/srecode/srt-mode.el 25826;;; Generated autoloads from cedet/srecode/srt-mode.el
25781 25827
25782(autoload 'srecode-template-mode "srecode/srt-mode" "\ 25828(autoload 'srecode-template-mode "srecode/srt-mode" "\
@@ -25789,7 +25835,7 @@ Major-mode for writing SRecode macros.
25789;;;*** 25835;;;***
25790 25836
25791;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el" 25837;;;### (autoloads (starttls-open-stream) "starttls" "gnus/starttls.el"
25792;;;;;; (20606 34222 123795 0)) 25838;;;;;; (20608 13586 654200 0))
25793;;; Generated autoloads from gnus/starttls.el 25839;;; Generated autoloads from gnus/starttls.el
25794 25840
25795(autoload 'starttls-open-stream "starttls" "\ 25841(autoload 'starttls-open-stream "starttls" "\
@@ -25816,8 +25862,8 @@ GnuTLS requires a port number.
25816;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes 25862;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes
25817;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke 25863;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke
25818;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke 25864;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke
25819;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20593 25865;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20594
25820;;;;;; 22184 581574 0)) 25866;;;;;; 14884 858174 0))
25821;;; Generated autoloads from strokes.el 25867;;; Generated autoloads from strokes.el
25822 25868
25823(autoload 'strokes-global-set-stroke "strokes" "\ 25869(autoload 'strokes-global-set-stroke "strokes" "\
@@ -25931,7 +25977,7 @@ Read a complex stroke and insert its glyph into the current buffer.
25931;;;*** 25977;;;***
25932 25978
25933;;;### (autoloads (studlify-buffer studlify-word studlify-region) 25979;;;### (autoloads (studlify-buffer studlify-word studlify-region)
25934;;;;;; "studly" "play/studly.el" (20355 10021 546955 0)) 25980;;;;;; "studly" "play/studly.el" (20533 50312 678915 0))
25935;;; Generated autoloads from play/studly.el 25981;;; Generated autoloads from play/studly.el
25936 25982
25937(autoload 'studlify-region "studly" "\ 25983(autoload 'studlify-region "studly" "\
@@ -25952,7 +25998,7 @@ Studlify-case the current buffer.
25952;;;*** 25998;;;***
25953 25999
25954;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el" 26000;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el"
25955;;;;;; (20524 51365 2559 0)) 26001;;;;;; (20533 50312 678915 0))
25956;;; Generated autoloads from progmodes/subword.el 26002;;; Generated autoloads from progmodes/subword.el
25957 26003
25958(autoload 'subword-mode "subword" "\ 26004(autoload 'subword-mode "subword" "\
@@ -26008,7 +26054,7 @@ See `subword-mode' for more information on Subword mode.
26008;;;*** 26054;;;***
26009 26055
26010;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el" 26056;;;### (autoloads (sc-cite-original) "supercite" "mail/supercite.el"
26011;;;;;; (20576 42138 697312 0)) 26057;;;;;; (20576 15917 623928 140000))
26012;;; Generated autoloads from mail/supercite.el 26058;;; Generated autoloads from mail/supercite.el
26013 26059
26014(autoload 'sc-cite-original "supercite" "\ 26060(autoload 'sc-cite-original "supercite" "\
@@ -26040,8 +26086,8 @@ and `sc-post-hook' is run after the guts of this function.
26040 26086
26041;;;*** 26087;;;***
26042 26088
26043;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20355 26089;;;### (autoloads (gpm-mouse-mode) "t-mouse" "t-mouse.el" (20533
26044;;;;;; 10021 546955 0)) 26090;;;;;; 50312 678915 0))
26045;;; Generated autoloads from t-mouse.el 26091;;; Generated autoloads from t-mouse.el
26046 26092
26047(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") 26093(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
@@ -26069,8 +26115,8 @@ It relies on the `gpm' daemon being activated.
26069 26115
26070;;;*** 26116;;;***
26071 26117
26072;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20355 10021 26118;;;### (autoloads (tabify untabify) "tabify" "tabify.el" (20533 50312
26073;;;;;; 546955 0)) 26119;;;;;; 678915 0))
26074;;; Generated autoloads from tabify.el 26120;;; Generated autoloads from tabify.el
26075 26121
26076(autoload 'untabify "tabify" "\ 26122(autoload 'untabify "tabify" "\
@@ -26105,7 +26151,7 @@ The variable `tab-width' controls the spacing of tab stops.
26105;;;;;; table-recognize table-insert-row-column table-insert-column 26151;;;;;; table-recognize table-insert-row-column table-insert-column
26106;;;;;; table-insert-row table-insert table-point-left-cell-hook 26152;;;;;; table-insert-row table-insert table-point-left-cell-hook
26107;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook) 26153;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook)
26108;;;;;; "table" "textmodes/table.el" (20586 48936 135199 0)) 26154;;;;;; "table" "textmodes/table.el" (20660 26176 137583 0))
26109;;; Generated autoloads from textmodes/table.el 26155;;; Generated autoloads from textmodes/table.el
26110 26156
26111(defvar table-cell-map-hook nil "\ 26157(defvar table-cell-map-hook nil "\
@@ -26697,8 +26743,8 @@ converts a table into plain text without frames. It is a companion to
26697 26743
26698;;;*** 26744;;;***
26699 26745
26700;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20355 10021 26746;;;### (autoloads (talk talk-connect) "talk" "talk.el" (20533 50312
26701;;;;;; 546955 0)) 26747;;;;;; 678915 0))
26702;;; Generated autoloads from talk.el 26748;;; Generated autoloads from talk.el
26703 26749
26704(autoload 'talk-connect "talk" "\ 26750(autoload 'talk-connect "talk" "\
@@ -26713,8 +26759,8 @@ Connect to the Emacs talk group from the current X display or tty frame.
26713 26759
26714;;;*** 26760;;;***
26715 26761
26716;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 28088 26762;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20585 2669
26717;;;;;; 480237 0)) 26763;;;;;; 263465 0))
26718;;; Generated autoloads from tar-mode.el 26764;;; Generated autoloads from tar-mode.el
26719 26765
26720(autoload 'tar-mode "tar-mode" "\ 26766(autoload 'tar-mode "tar-mode" "\
@@ -26738,7 +26784,7 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
26738;;;*** 26784;;;***
26739 26785
26740;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl" 26786;;;### (autoloads (tcl-help-on-word inferior-tcl tcl-mode) "tcl"
26741;;;;;; "progmodes/tcl.el" (20580 10161 446444 0)) 26787;;;;;; "progmodes/tcl.el" (20581 13032 944808 0))
26742;;; Generated autoloads from progmodes/tcl.el 26788;;; Generated autoloads from progmodes/tcl.el
26743 26789
26744(autoload 'tcl-mode "tcl" "\ 26790(autoload 'tcl-mode "tcl" "\
@@ -26786,8 +26832,8 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'.
26786 26832
26787;;;*** 26833;;;***
26788 26834
26789;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20355 10021 26835;;;### (autoloads (rsh telnet) "telnet" "net/telnet.el" (20533 50312
26790;;;;;; 546955 0)) 26836;;;;;; 678915 0))
26791;;; Generated autoloads from net/telnet.el 26837;;; Generated autoloads from net/telnet.el
26792 26838
26793(autoload 'telnet "telnet" "\ 26839(autoload 'telnet "telnet" "\
@@ -26813,7 +26859,7 @@ Normally input is edited in Emacs and sent a line at a time.
26813;;;*** 26859;;;***
26814 26860
26815;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el" 26861;;;### (autoloads (serial-term ansi-term term make-term) "term" "term.el"
26816;;;;;; (20580 10161 446444 0)) 26862;;;;;; (20648 29678 511980 0))
26817;;; Generated autoloads from term.el 26863;;; Generated autoloads from term.el
26818 26864
26819(autoload 'make-term "term" "\ 26865(autoload 'make-term "term" "\
@@ -26855,45 +26901,8 @@ use in that buffer.
26855 26901
26856;;;*** 26902;;;***
26857 26903
26858;;;### (autoloads (terminal-emulator) "terminal" "terminal.el" (20355
26859;;;;;; 10021 546955 0))
26860;;; Generated autoloads from terminal.el
26861
26862(autoload 'terminal-emulator "terminal" "\
26863Under a display-terminal emulator in BUFFER, run PROGRAM on arguments ARGS.
26864ARGS is a list of argument-strings. Remaining arguments are WIDTH and HEIGHT.
26865BUFFER's contents are made an image of the display generated by that program,
26866and any input typed when BUFFER is the current Emacs buffer is sent to that
26867program as keyboard input.
26868
26869Interactively, BUFFER defaults to \"*terminal*\" and PROGRAM and ARGS
26870are parsed from an input-string using your usual shell.
26871WIDTH and HEIGHT are determined from the size of the current window
26872-- WIDTH will be one less than the window's width, HEIGHT will be its height.
26873
26874To switch buffers and leave the emulator, or to give commands
26875to the emulator itself (as opposed to the program running under it),
26876type Control-^. The following character is an emulator command.
26877Type Control-^ twice to send it to the subprogram.
26878This escape character may be changed using the variable `terminal-escape-char'.
26879
26880`Meta' characters may not currently be sent through the terminal emulator.
26881
26882Here is a list of some of the variables which control the behavior
26883of the emulator -- see their documentation for more information:
26884terminal-escape-char, terminal-scrolling, terminal-more-processing,
26885terminal-redisplay-interval.
26886
26887This function calls the value of terminal-mode-hook if that exists
26888and is non-nil after the terminal buffer has been set up and the
26889subprocess started.
26890
26891\(fn BUFFER PROGRAM ARGS &optional WIDTH HEIGHT)" t nil)
26892
26893;;;***
26894
26895;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el" 26904;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
26896;;;;;; (20580 10161 446444 0)) 26905;;;;;; (20579 47335 3827 0))
26897;;; Generated autoloads from emacs-lisp/testcover.el 26906;;; Generated autoloads from emacs-lisp/testcover.el
26898 26907
26899(autoload 'testcover-this-defun "testcover" "\ 26908(autoload 'testcover-this-defun "testcover" "\
@@ -26903,8 +26912,8 @@ Start coverage on function under point.
26903 26912
26904;;;*** 26913;;;***
26905 26914
26906;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 57511 26915;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 60086
26907;;;;;; 257469 0)) 26916;;;;;; 510404 0))
26908;;; Generated autoloads from play/tetris.el 26917;;; Generated autoloads from play/tetris.el
26909 26918
26910(autoload 'tetris "tetris" "\ 26919(autoload 'tetris "tetris" "\
@@ -26935,7 +26944,7 @@ tetris-mode keybindings:
26935;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command 26944;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
26936;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp 26945;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
26937;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" 26946;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
26938;;;;;; (20594 43050 277913 0)) 26947;;;;;; (20665 36964 828705 971000))
26939;;; Generated autoloads from textmodes/tex-mode.el 26948;;; Generated autoloads from textmodes/tex-mode.el
26940 26949
26941(defvar tex-shell-file-name nil "\ 26950(defvar tex-shell-file-name nil "\
@@ -27237,7 +27246,7 @@ Major mode to edit DocTeX files.
27237;;;*** 27246;;;***
27238 27247
27239;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer) 27248;;;### (autoloads (texi2info texinfo-format-region texinfo-format-buffer)
27240;;;;;; "texinfmt" "textmodes/texinfmt.el" (20434 17809 692608 0)) 27249;;;;;; "texinfmt" "textmodes/texinfmt.el" (20533 50312 678915 0))
27241;;; Generated autoloads from textmodes/texinfmt.el 27250;;; Generated autoloads from textmodes/texinfmt.el
27242 27251
27243(autoload 'texinfo-format-buffer "texinfmt" "\ 27252(autoload 'texinfo-format-buffer "texinfmt" "\
@@ -27277,7 +27286,7 @@ if large. You can use `Info-split' to do this manually.
27277;;;*** 27286;;;***
27278 27287
27279;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote) 27288;;;### (autoloads (texinfo-mode texinfo-close-quote texinfo-open-quote)
27280;;;;;; "texinfo" "textmodes/texinfo.el" (20478 3673 653810 0)) 27289;;;;;; "texinfo" "textmodes/texinfo.el" (20665 37006 296704 255000))
27281;;; Generated autoloads from textmodes/texinfo.el 27290;;; Generated autoloads from textmodes/texinfo.el
27282 27291
27283(defvar texinfo-open-quote (purecopy "``") "\ 27292(defvar texinfo-open-quote (purecopy "``") "\
@@ -27363,7 +27372,7 @@ value of `texinfo-mode-hook'.
27363 27372
27364;;;### (autoloads (thai-composition-function thai-compose-buffer 27373;;;### (autoloads (thai-composition-function thai-compose-buffer
27365;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el" 27374;;;;;; thai-compose-string thai-compose-region) "thai-util" "language/thai-util.el"
27366;;;;;; (20355 10021 546955 0)) 27375;;;;;; (20533 50312 678915 0))
27367;;; Generated autoloads from language/thai-util.el 27376;;; Generated autoloads from language/thai-util.el
27368 27377
27369(autoload 'thai-compose-region "thai-util" "\ 27378(autoload 'thai-compose-region "thai-util" "\
@@ -27392,7 +27401,7 @@ Compose Thai characters in the current buffer.
27392 27401
27393;;;### (autoloads (list-at-point number-at-point symbol-at-point 27402;;;### (autoloads (list-at-point number-at-point symbol-at-point
27394;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing) 27403;;;;;; sexp-at-point thing-at-point bounds-of-thing-at-point forward-thing)
27395;;;;;; "thingatpt" "thingatpt.el" (20623 43301 870757 0)) 27404;;;;;; "thingatpt" "thingatpt.el" (20623 2577 143277 474000))
27396;;; Generated autoloads from thingatpt.el 27405;;; Generated autoloads from thingatpt.el
27397 27406
27398(autoload 'forward-thing "thingatpt" "\ 27407(autoload 'forward-thing "thingatpt" "\
@@ -27455,7 +27464,7 @@ Return the Lisp list at point, or nil if none is found.
27455 27464
27456;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked 27465;;;### (autoloads (thumbs-dired-setroot thumbs-dired-show thumbs-dired-show-marked
27457;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el" 27466;;;;;; thumbs-show-from-dir thumbs-find-thumb) "thumbs" "thumbs.el"
27458;;;;;; (20355 10021 546955 0)) 27467;;;;;; (20533 50312 678915 0))
27459;;; Generated autoloads from thumbs.el 27468;;; Generated autoloads from thumbs.el
27460 27469
27461(autoload 'thumbs-find-thumb "thumbs" "\ 27470(autoload 'thumbs-find-thumb "thumbs" "\
@@ -27493,8 +27502,8 @@ In dired, call the setroot program on the image at point.
27493;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer 27502;;;;;; tibetan-post-read-conversion tibetan-compose-buffer tibetan-decompose-buffer
27494;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region 27503;;;;;; tibetan-decompose-string tibetan-decompose-region tibetan-compose-region
27495;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription 27504;;;;;; tibetan-compose-string tibetan-transcription-to-tibetan tibetan-tibetan-to-transcription
27496;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20355 27505;;;;;; tibetan-char-p) "tibet-util" "language/tibet-util.el" (20533
27497;;;;;; 10021 546955 0)) 27506;;;;;; 50312 678915 0))
27498;;; Generated autoloads from language/tibet-util.el 27507;;; Generated autoloads from language/tibet-util.el
27499 27508
27500(autoload 'tibetan-char-p "tibet-util" "\ 27509(autoload 'tibetan-char-p "tibet-util" "\
@@ -27568,7 +27577,7 @@ See also docstring of the function tibetan-compose-region.
27568;;;*** 27577;;;***
27569 27578
27570;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el" 27579;;;### (autoloads (tildify-buffer tildify-region) "tildify" "textmodes/tildify.el"
27571;;;;;; (20373 11301 906925 0)) 27580;;;;;; (20533 50312 678915 0))
27572;;; Generated autoloads from textmodes/tildify.el 27581;;; Generated autoloads from textmodes/tildify.el
27573 27582
27574(autoload 'tildify-region "tildify" "\ 27583(autoload 'tildify-region "tildify" "\
@@ -27593,7 +27602,7 @@ This function performs no refilling of the changed text.
27593 27602
27594;;;### (autoloads (emacs-init-time emacs-uptime display-time-world 27603;;;### (autoloads (emacs-init-time emacs-uptime display-time-world
27595;;;;;; display-time-mode display-time display-time-day-and-date) 27604;;;;;; display-time-mode display-time display-time-day-and-date)
27596;;;;;; "time" "time.el" (20619 46245 806932 0)) 27605;;;;;; "time" "time.el" (20622 16646 799433 0))
27597;;; Generated autoloads from time.el 27606;;; Generated autoloads from time.el
27598 27607
27599(defvar display-time-day-and-date nil "\ 27608(defvar display-time-day-and-date nil "\
@@ -27659,7 +27668,7 @@ Return a string giving the duration of the Emacs initialization.
27659;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day 27668;;;;;; time-to-day-in-year date-leap-year-p days-between date-to-day
27660;;;;;; time-add time-subtract time-since days-to-time time-less-p 27669;;;;;; time-add time-subtract time-since days-to-time time-less-p
27661;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el" 27670;;;;;; seconds-to-time date-to-time) "time-date" "calendar/time-date.el"
27662;;;;;; (20453 5437 764254 0)) 27671;;;;;; (20652 52617 313760 0))
27663;;; Generated autoloads from calendar/time-date.el 27672;;; Generated autoloads from calendar/time-date.el
27664 27673
27665(autoload 'date-to-time "time-date" "\ 27674(autoload 'date-to-time "time-date" "\
@@ -27670,9 +27679,7 @@ If DATE lacks timezone information, GMT is assumed.
27670(if (or (featurep 'emacs) 27679(if (or (featurep 'emacs)
27671 (and (fboundp 'float-time) 27680 (and (fboundp 'float-time)
27672 (subrp (symbol-function 'float-time)))) 27681 (subrp (symbol-function 'float-time))))
27673 (progn 27682 (defalias 'time-to-seconds 'float-time)
27674 (defalias 'time-to-seconds 'float-time)
27675 (make-obsolete 'time-to-seconds 'float-time "21.1"))
27676 (autoload 'time-to-seconds "time-date")) 27683 (autoload 'time-to-seconds "time-date"))
27677 27684
27678(autoload 'seconds-to-time "time-date" "\ 27685(autoload 'seconds-to-time "time-date" "\
@@ -27773,7 +27780,7 @@ This function does not work for SECONDS greater than `most-positive-fixnum'.
27773;;;*** 27780;;;***
27774 27781
27775;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp" 27782;;;### (autoloads (time-stamp-toggle-active time-stamp) "time-stamp"
27776;;;;;; "time-stamp.el" (20566 63671 243798 0)) 27783;;;;;; "time-stamp.el" (20566 45666 534598 861000))
27777;;; Generated autoloads from time-stamp.el 27784;;; Generated autoloads from time-stamp.el
27778(put 'time-stamp-format 'safe-local-variable 'stringp) 27785(put 'time-stamp-format 'safe-local-variable 'stringp)
27779(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p) 27786(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
@@ -27817,7 +27824,7 @@ With ARG, turn time stamping on if and only if arg is positive.
27817;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out 27824;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
27818;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in 27825;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
27819;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el" 27826;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el"
27820;;;;;; (20593 22184 581574 0)) 27827;;;;;; (20594 14884 858174 0))
27821;;; Generated autoloads from calendar/timeclock.el 27828;;; Generated autoloads from calendar/timeclock.el
27822 27829
27823(autoload 'timeclock-mode-line-display "timeclock" "\ 27830(autoload 'timeclock-mode-line-display "timeclock" "\
@@ -27917,7 +27924,7 @@ relative only to the time worked today, and not to past time.
27917;;;*** 27924;;;***
27918 27925
27919;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv" 27926;;;### (autoloads (batch-titdic-convert titdic-convert) "titdic-cnv"
27920;;;;;; "international/titdic-cnv.el" (20355 10021 546955 0)) 27927;;;;;; "international/titdic-cnv.el" (20533 50312 678915 0))
27921;;; Generated autoloads from international/titdic-cnv.el 27928;;; Generated autoloads from international/titdic-cnv.el
27922 27929
27923(autoload 'titdic-convert "titdic-cnv" "\ 27930(autoload 'titdic-convert "titdic-cnv" "\
@@ -27940,7 +27947,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\".
27940;;;*** 27947;;;***
27941 27948
27942;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm" 27949;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
27943;;;;;; "tmm.el" (20622 22438 32851 0)) 27950;;;;;; "tmm.el" (20622 16646 799433 0))
27944;;; Generated autoloads from tmm.el 27951;;; Generated autoloads from tmm.el
27945 (define-key global-map "\M-`" 'tmm-menubar) 27952 (define-key global-map "\M-`" 'tmm-menubar)
27946 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) 27953 (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27980,7 +27987,7 @@ Its value should be an event that has a binding in MENU.
27980 27987
27981;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities 27988;;;### (autoloads (todo-show todo-cp todo-mode todo-print todo-top-priorities
27982;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category) 27989;;;;;; todo-insert-item todo-add-item-non-interactively todo-add-category)
27983;;;;;; "todo-mode" "calendar/todo-mode.el" (20355 10021 546955 0)) 27990;;;;;; "todo-mode" "calendar/todo-mode.el" (20533 50312 678915 0))
27984;;; Generated autoloads from calendar/todo-mode.el 27991;;; Generated autoloads from calendar/todo-mode.el
27985 27992
27986(autoload 'todo-add-category "todo-mode" "\ 27993(autoload 'todo-add-category "todo-mode" "\
@@ -28040,7 +28047,7 @@ Show TODO list.
28040 28047
28041;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu 28048;;;### (autoloads (tool-bar-local-item-from-menu tool-bar-add-item-from-menu
28042;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame) 28049;;;;;; tool-bar-local-item tool-bar-add-item toggle-tool-bar-mode-from-frame)
28043;;;;;; "tool-bar" "tool-bar.el" (20355 10021 546955 0)) 28050;;;;;; "tool-bar" "tool-bar.el" (20533 50312 678915 0))
28044;;; Generated autoloads from tool-bar.el 28051;;; Generated autoloads from tool-bar.el
28045 28052
28046(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\ 28053(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
@@ -28111,7 +28118,7 @@ holds a keymap.
28111;;;*** 28118;;;***
28112 28119
28113;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el" 28120;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
28114;;;;;; (20566 63671 243798 0)) 28121;;;;;; (20566 47027 18655 117000))
28115;;; Generated autoloads from emulation/tpu-edt.el 28122;;; Generated autoloads from emulation/tpu-edt.el
28116 28123
28117(defvar tpu-edt-mode nil "\ 28124(defvar tpu-edt-mode nil "\
@@ -28141,7 +28148,7 @@ Turn on TPU/edt emulation.
28141;;;*** 28148;;;***
28142 28149
28143;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el" 28150;;;### (autoloads (tpu-mapper) "tpu-mapper" "emulation/tpu-mapper.el"
28144;;;;;; (20566 63671 243798 0)) 28151;;;;;; (20566 46324 490624 377000))
28145;;; Generated autoloads from emulation/tpu-mapper.el 28152;;; Generated autoloads from emulation/tpu-mapper.el
28146 28153
28147(autoload 'tpu-mapper "tpu-mapper" "\ 28154(autoload 'tpu-mapper "tpu-mapper" "\
@@ -28175,8 +28182,8 @@ your local X guru can try to figure out why the key is being ignored.
28175 28182
28176;;;*** 28183;;;***
28177 28184
28178;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20355 10021 28185;;;### (autoloads (tq-create) "tq" "emacs-lisp/tq.el" (20533 50312
28179;;;;;; 546955 0)) 28186;;;;;; 678915 0))
28180;;; Generated autoloads from emacs-lisp/tq.el 28187;;; Generated autoloads from emacs-lisp/tq.el
28181 28188
28182(autoload 'tq-create "tq" "\ 28189(autoload 'tq-create "tq" "\
@@ -28189,16 +28196,17 @@ to a tcp server on another machine.
28189 28196
28190;;;*** 28197;;;***
28191 28198
28192;;;### (autoloads (trace-function-background trace-function trace-buffer) 28199;;;### (autoloads (trace-function-background trace-function-foreground
28193;;;;;; "trace" "emacs-lisp/trace.el" (20485 15269 390836 0)) 28200;;;;;; trace-buffer) "trace" "emacs-lisp/trace.el" (20652 52617
28201;;;;;; 313760 0))
28194;;; Generated autoloads from emacs-lisp/trace.el 28202;;; Generated autoloads from emacs-lisp/trace.el
28195 28203
28196(defvar trace-buffer (purecopy "*trace-output*") "\ 28204(defvar trace-buffer "*trace-output*" "\
28197Trace output will by default go to that buffer.") 28205Trace output will by default go to that buffer.")
28198 28206
28199(custom-autoload 'trace-buffer "trace" t) 28207(custom-autoload 'trace-buffer "trace" t)
28200 28208
28201(autoload 'trace-function "trace" "\ 28209(autoload 'trace-function-foreground "trace" "\
28202Traces FUNCTION with trace output going to BUFFER. 28210Traces FUNCTION with trace output going to BUFFER.
28203For every call of FUNCTION Lisp-style trace messages that display argument 28211For every call of FUNCTION Lisp-style trace messages that display argument
28204and return values will be inserted into BUFFER. This function generates the 28212and return values will be inserted into BUFFER. This function generates the
@@ -28207,7 +28215,7 @@ there might be!! The trace BUFFER will popup whenever FUNCTION is called.
28207Do not use this to trace functions that switch buffers or do any other 28215Do not use this to trace functions that switch buffers or do any other
28208display oriented stuff, use `trace-function-background' instead. 28216display oriented stuff, use `trace-function-background' instead.
28209 28217
28210\(fn FUNCTION &optional BUFFER)" t nil) 28218\(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
28211 28219
28212(autoload 'trace-function-background "trace" "\ 28220(autoload 'trace-function-background "trace" "\
28213Traces FUNCTION with trace output going quietly to BUFFER. 28221Traces FUNCTION with trace output going quietly to BUFFER.
@@ -28220,14 +28228,16 @@ the window or buffer configuration.
28220 28228
28221BUFFER defaults to `trace-buffer'. 28229BUFFER defaults to `trace-buffer'.
28222 28230
28223\(fn FUNCTION &optional BUFFER)" t nil) 28231\(fn FUNCTION &optional BUFFER CONTEXT)" t nil)
28232
28233(defalias 'trace-function 'trace-function-foreground)
28224 28234
28225;;;*** 28235;;;***
28226 28236
28227;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion 28237;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
28228;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers 28238;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
28229;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp" 28239;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp"
28230;;;;;; "net/tramp.el" (20597 19239 817699 0)) 28240;;;;;; "net/tramp.el" (20652 52617 313760 0))
28231;;; Generated autoloads from net/tramp.el 28241;;; Generated autoloads from net/tramp.el
28232 28242
28233(defvar tramp-mode t "\ 28243(defvar tramp-mode t "\
@@ -28360,7 +28370,7 @@ Discard Tramp from loading remote files.
28360;;;*** 28370;;;***
28361 28371
28362;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el" 28372;;;### (autoloads (tramp-ftp-enable-ange-ftp) "tramp-ftp" "net/tramp-ftp.el"
28363;;;;;; (20438 24016 194668 0)) 28373;;;;;; (20533 50312 678915 0))
28364;;; Generated autoloads from net/tramp-ftp.el 28374;;; Generated autoloads from net/tramp-ftp.el
28365 28375
28366(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ 28376(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
@@ -28371,7 +28381,7 @@ Discard Tramp from loading remote files.
28371;;;*** 28381;;;***
28372 28382
28373;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20584 28383;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20584
28374;;;;;; 7212 455152 0)) 28384;;;;;; 355 183605 0))
28375;;; Generated autoloads from tutorial.el 28385;;; Generated autoloads from tutorial.el
28376 28386
28377(autoload 'help-with-tutorial "tutorial" "\ 28387(autoload 'help-with-tutorial "tutorial" "\
@@ -28396,7 +28406,7 @@ resumed later.
28396;;;*** 28406;;;***
28397 28407
28398;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el" 28408;;;### (autoloads (tai-viet-composition-function) "tv-util" "language/tv-util.el"
28399;;;;;; (20355 10021 546955 0)) 28409;;;;;; (20533 50312 678915 0))
28400;;; Generated autoloads from language/tv-util.el 28410;;; Generated autoloads from language/tv-util.el
28401 28411
28402(autoload 'tai-viet-composition-function "tv-util" "\ 28412(autoload 'tai-viet-composition-function "tv-util" "\
@@ -28407,7 +28417,7 @@ resumed later.
28407;;;*** 28417;;;***
28408 28418
28409;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column" 28419;;;### (autoloads (2C-split 2C-associate-buffer 2C-two-columns) "two-column"
28410;;;;;; "textmodes/two-column.el" (20566 63671 243798 0)) 28420;;;;;; "textmodes/two-column.el" (20566 46502 658633 677000))
28411;;; Generated autoloads from textmodes/two-column.el 28421;;; Generated autoloads from textmodes/two-column.el
28412 (autoload '2C-command "two-column" () t 'keymap) 28422 (autoload '2C-command "two-column" () t 'keymap)
28413 (global-set-key "\C-x6" '2C-command) 28423 (global-set-key "\C-x6" '2C-command)
@@ -28456,7 +28466,7 @@ First column's text sSs Second column's text
28456 28466
28457;;;### (autoloads (type-break-guesstimate-keystroke-threshold type-break-statistics 28467;;;### (autoloads (type-break-guesstimate-keystroke-threshold type-break-statistics
28458;;;;;; type-break type-break-mode) "type-break" "type-break.el" 28468;;;;;; type-break type-break-mode) "type-break" "type-break.el"
28459;;;;;; (20582 12914 894781 0)) 28469;;;;;; (20584 355 183605 0))
28460;;; Generated autoloads from type-break.el 28470;;; Generated autoloads from type-break.el
28461 28471
28462(defvar type-break-mode nil "\ 28472(defvar type-break-mode nil "\
@@ -28588,8 +28598,8 @@ FRAC should be the inverse of the fractional value; for example, a value of
28588 28598
28589;;;*** 28599;;;***
28590 28600
28591;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 63671 28601;;;### (autoloads (uce-reply-to-uce) "uce" "mail/uce.el" (20566 46709
28592;;;;;; 243798 0)) 28602;;;;;; 606641 427000))
28593;;; Generated autoloads from mail/uce.el 28603;;; Generated autoloads from mail/uce.el
28594 28604
28595(autoload 'uce-reply-to-uce "uce" "\ 28605(autoload 'uce-reply-to-uce "uce" "\
@@ -28607,7 +28617,7 @@ You might need to set `uce-mail-reader' before using this.
28607;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string 28617;;;;;; ucs-normalize-NFKC-string ucs-normalize-NFKC-region ucs-normalize-NFKD-string
28608;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region 28618;;;;;; ucs-normalize-NFKD-region ucs-normalize-NFC-string ucs-normalize-NFC-region
28609;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize" 28619;;;;;; ucs-normalize-NFD-string ucs-normalize-NFD-region) "ucs-normalize"
28610;;;;;; "international/ucs-normalize.el" (20476 31768 298871 0)) 28620;;;;;; "international/ucs-normalize.el" (20533 50312 678915 0))
28611;;; Generated autoloads from international/ucs-normalize.el 28621;;; Generated autoloads from international/ucs-normalize.el
28612 28622
28613(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\ 28623(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
@@ -28673,7 +28683,7 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus.
28673;;;*** 28683;;;***
28674 28684
28675;;;### (autoloads (ununderline-region underline-region) "underline" 28685;;;### (autoloads (ununderline-region underline-region) "underline"
28676;;;;;; "textmodes/underline.el" (20355 10021 546955 0)) 28686;;;;;; "textmodes/underline.el" (20533 50312 678915 0))
28677;;; Generated autoloads from textmodes/underline.el 28687;;; Generated autoloads from textmodes/underline.el
28678 28688
28679(autoload 'underline-region "underline" "\ 28689(autoload 'underline-region "underline" "\
@@ -28694,7 +28704,7 @@ which specify the range to operate on.
28694;;;*** 28704;;;***
28695 28705
28696;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el" 28706;;;### (autoloads (unrmail batch-unrmail) "unrmail" "mail/unrmail.el"
28697;;;;;; (20369 14251 85829 0)) 28707;;;;;; (20533 50312 678915 0))
28698;;; Generated autoloads from mail/unrmail.el 28708;;; Generated autoloads from mail/unrmail.el
28699 28709
28700(autoload 'batch-unrmail "unrmail" "\ 28710(autoload 'batch-unrmail "unrmail" "\
@@ -28713,8 +28723,8 @@ Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE.
28713 28723
28714;;;*** 28724;;;***
28715 28725
28716;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20355 28726;;;### (autoloads (unsafep) "unsafep" "emacs-lisp/unsafep.el" (20533
28717;;;;;; 10021 546955 0)) 28727;;;;;; 50312 678915 0))
28718;;; Generated autoloads from emacs-lisp/unsafep.el 28728;;; Generated autoloads from emacs-lisp/unsafep.el
28719 28729
28720(autoload 'unsafep "unsafep" "\ 28730(autoload 'unsafep "unsafep" "\
@@ -28727,7 +28737,7 @@ UNSAFEP-VARS is a list of symbols with local bindings.
28727;;;*** 28737;;;***
28728 28738
28729;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url" 28739;;;### (autoloads (url-retrieve-synchronously url-retrieve) "url"
28730;;;;;; "url/url.el" (20601 16294 451653 0)) 28740;;;;;; "url/url.el" (20601 13717 868555 169000))
28731;;; Generated autoloads from url/url.el 28741;;; Generated autoloads from url/url.el
28732 28742
28733(autoload 'url-retrieve "url" "\ 28743(autoload 'url-retrieve "url" "\
@@ -28775,7 +28785,7 @@ no further processing). URL is either a string or a parsed URL.
28775;;;*** 28785;;;***
28776 28786
28777;;;### (autoloads (url-register-auth-scheme url-get-authentication) 28787;;;### (autoloads (url-register-auth-scheme url-get-authentication)
28778;;;;;; "url-auth" "url/url-auth.el" (20355 10021 546955 0)) 28788;;;;;; "url-auth" "url/url-auth.el" (20533 50312 678915 0))
28779;;; Generated autoloads from url/url-auth.el 28789;;; Generated autoloads from url/url-auth.el
28780 28790
28781(autoload 'url-get-authentication "url-auth" "\ 28791(autoload 'url-get-authentication "url-auth" "\
@@ -28817,7 +28827,7 @@ RATING a rating between 1 and 10 of the strength of the authentication.
28817;;;*** 28827;;;***
28818 28828
28819;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache) 28829;;;### (autoloads (url-cache-extract url-is-cached url-store-in-cache)
28820;;;;;; "url-cache" "url/url-cache.el" (20355 10021 546955 0)) 28830;;;;;; "url-cache" "url/url-cache.el" (20533 50312 678915 0))
28821;;; Generated autoloads from url/url-cache.el 28831;;; Generated autoloads from url/url-cache.el
28822 28832
28823(autoload 'url-store-in-cache "url-cache" "\ 28833(autoload 'url-store-in-cache "url-cache" "\
@@ -28838,8 +28848,8 @@ Extract FNAM from the local disk cache.
28838 28848
28839;;;*** 28849;;;***
28840 28850
28841;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20355 10021 28851;;;### (autoloads (url-cid) "url-cid" "url/url-cid.el" (20533 50312
28842;;;;;; 546955 0)) 28852;;;;;; 678915 0))
28843;;; Generated autoloads from url/url-cid.el 28853;;; Generated autoloads from url/url-cid.el
28844 28854
28845(autoload 'url-cid "url-cid" "\ 28855(autoload 'url-cid "url-cid" "\
@@ -28850,7 +28860,7 @@ Extract FNAM from the local disk cache.
28850;;;*** 28860;;;***
28851 28861
28852;;;### (autoloads (url-dav-vc-registered url-dav-request url-dav-supported-p) 28862;;;### (autoloads (url-dav-vc-registered url-dav-request url-dav-supported-p)
28853;;;;;; "url-dav" "url/url-dav.el" (20501 3499 284800 0)) 28863;;;;;; "url-dav" "url/url-dav.el" (20533 50312 678915 0))
28854;;; Generated autoloads from url/url-dav.el 28864;;; Generated autoloads from url/url-dav.el
28855 28865
28856(autoload 'url-dav-supported-p "url-dav" "\ 28866(autoload 'url-dav-supported-p "url-dav" "\
@@ -28884,8 +28894,8 @@ added to this list, so most requests can just pass in nil.
28884 28894
28885;;;*** 28895;;;***
28886 28896
28887;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20602 28897;;;### (autoloads (url-file) "url-file" "url/url-file.el" (20601
28888;;;;;; 37158 321420 0)) 28898;;;;;; 54760 265680 0))
28889;;; Generated autoloads from url/url-file.el 28899;;; Generated autoloads from url/url-file.el
28890 28900
28891(autoload 'url-file "url-file" "\ 28901(autoload 'url-file "url-file" "\
@@ -28896,7 +28906,7 @@ Handle file: and ftp: URLs.
28896;;;*** 28906;;;***
28897 28907
28898;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw" 28908;;;### (autoloads (url-open-stream url-gateway-nslookup-host) "url-gw"
28899;;;;;; "url/url-gw.el" (20478 3673 653810 0)) 28909;;;;;; "url/url-gw.el" (20533 50312 678915 0))
28900;;; Generated autoloads from url/url-gw.el 28910;;; Generated autoloads from url/url-gw.el
28901 28911
28902(autoload 'url-gateway-nslookup-host "url-gw" "\ 28912(autoload 'url-gateway-nslookup-host "url-gw" "\
@@ -28916,7 +28926,7 @@ Might do a non-blocking connection; use `process-status' to check.
28916 28926
28917;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file 28927;;;### (autoloads (url-insert-file-contents url-file-local-copy url-copy-file
28918;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el" 28928;;;;;; url-file-handler url-handler-mode) "url-handlers" "url/url-handlers.el"
28919;;;;;; (20584 7212 455152 0)) 28929;;;;;; (20584 355 183605 0))
28920;;; Generated autoloads from url/url-handlers.el 28930;;; Generated autoloads from url/url-handlers.el
28921 28931
28922(defvar url-handler-mode nil "\ 28932(defvar url-handler-mode nil "\
@@ -28970,8 +28980,8 @@ accessible.
28970 28980
28971;;;*** 28981;;;***
28972 28982
28973;;;### (autoloads nil "url-http" "url/url-http.el" (20601 16294 451653 28983;;;### (autoloads nil "url-http" "url/url-http.el" (20601 13773 988556
28974;;;;;; 0)) 28984;;;;;; 549000))
28975;;; Generated autoloads from url/url-http.el 28985;;; Generated autoloads from url/url-http.el
28976 (autoload 'url-default-expander "url-expand") 28986 (autoload 'url-default-expander "url-expand")
28977 28987
@@ -28983,8 +28993,8 @@ accessible.
28983 28993
28984;;;*** 28994;;;***
28985 28995
28986;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20355 10021 28996;;;### (autoloads (url-irc) "url-irc" "url/url-irc.el" (20533 50312
28987;;;;;; 546955 0)) 28997;;;;;; 678915 0))
28988;;; Generated autoloads from url/url-irc.el 28998;;; Generated autoloads from url/url-irc.el
28989 28999
28990(autoload 'url-irc "url-irc" "\ 29000(autoload 'url-irc "url-irc" "\
@@ -28994,8 +29004,8 @@ accessible.
28994 29004
28995;;;*** 29005;;;***
28996 29006
28997;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20355 29007;;;### (autoloads (url-ldap) "url-ldap" "url/url-ldap.el" (20533
28998;;;;;; 10021 546955 0)) 29008;;;;;; 50312 678915 0))
28999;;; Generated autoloads from url/url-ldap.el 29009;;; Generated autoloads from url/url-ldap.el
29000 29010
29001(autoload 'url-ldap "url-ldap" "\ 29011(autoload 'url-ldap "url-ldap" "\
@@ -29009,7 +29019,7 @@ URL can be a URL string, or a URL vector of the type returned by
29009;;;*** 29019;;;***
29010 29020
29011;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el" 29021;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
29012;;;;;; (20355 10021 546955 0)) 29022;;;;;; (20533 50312 678915 0))
29013;;; Generated autoloads from url/url-mailto.el 29023;;; Generated autoloads from url/url-mailto.el
29014 29024
29015(autoload 'url-mail "url-mailto" "\ 29025(autoload 'url-mail "url-mailto" "\
@@ -29025,8 +29035,8 @@ Handle the mailto: URL syntax.
29025;;;*** 29035;;;***
29026 29036
29027;;;### (autoloads (url-data url-generic-emulator-loader url-info 29037;;;### (autoloads (url-data url-generic-emulator-loader url-info
29028;;;;;; url-man) "url-misc" "url/url-misc.el" (20478 3673 653810 29038;;;;;; url-man) "url-misc" "url/url-misc.el" (20668 17640 189346
29029;;;;;; 0)) 29039;;;;;; 887000))
29030;;; Generated autoloads from url/url-misc.el 29040;;; Generated autoloads from url/url-misc.el
29031 29041
29032(autoload 'url-man "url-misc" "\ 29042(autoload 'url-man "url-misc" "\
@@ -29058,7 +29068,7 @@ Fetch a data URL (RFC 2397).
29058;;;*** 29068;;;***
29059 29069
29060;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el" 29070;;;### (autoloads (url-snews url-news) "url-news" "url/url-news.el"
29061;;;;;; (20355 10021 546955 0)) 29071;;;;;; (20533 50312 678915 0))
29062;;; Generated autoloads from url/url-news.el 29072;;; Generated autoloads from url/url-news.el
29063 29073
29064(autoload 'url-news "url-news" "\ 29074(autoload 'url-news "url-news" "\
@@ -29075,7 +29085,7 @@ Fetch a data URL (RFC 2397).
29075 29085
29076;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable 29086;;;### (autoloads (url-ns-user-pref url-ns-prefs isInNet isResolvable
29077;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el" 29087;;;;;; dnsResolve dnsDomainIs isPlainHostName) "url-ns" "url/url-ns.el"
29078;;;;;; (20355 10021 546955 0)) 29088;;;;;; (20533 50312 678915 0))
29079;;; Generated autoloads from url/url-ns.el 29089;;; Generated autoloads from url/url-ns.el
29080 29090
29081(autoload 'isPlainHostName "url-ns" "\ 29091(autoload 'isPlainHostName "url-ns" "\
@@ -29116,7 +29126,7 @@ Fetch a data URL (RFC 2397).
29116;;;*** 29126;;;***
29117 29127
29118;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" 29128;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
29119;;;;;; "url/url-parse.el" (20577 33959 40183 0)) 29129;;;;;; "url/url-parse.el" (20648 29678 511980 0))
29120;;; Generated autoloads from url/url-parse.el 29130;;; Generated autoloads from url/url-parse.el
29121 29131
29122(autoload 'url-recreate-url "url-parse" "\ 29132(autoload 'url-recreate-url "url-parse" "\
@@ -29168,7 +29178,7 @@ parses to
29168;;;*** 29178;;;***
29169 29179
29170;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el" 29180;;;### (autoloads (url-setup-privacy-info) "url-privacy" "url/url-privacy.el"
29171;;;;;; (20478 3673 653810 0)) 29181;;;;;; (20533 50312 678915 0))
29172;;; Generated autoloads from url/url-privacy.el 29182;;; Generated autoloads from url/url-privacy.el
29173 29183
29174(autoload 'url-setup-privacy-info "url-privacy" "\ 29184(autoload 'url-setup-privacy-info "url-privacy" "\
@@ -29179,7 +29189,7 @@ Setup variables that expose info about you and your system.
29179;;;*** 29189;;;***
29180 29190
29181;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el" 29191;;;### (autoloads (url-queue-retrieve) "url-queue" "url/url-queue.el"
29182;;;;;; (20478 3673 653810 0)) 29192;;;;;; (20533 50312 678915 0))
29183;;; Generated autoloads from url/url-queue.el 29193;;; Generated autoloads from url/url-queue.el
29184 29194
29185(autoload 'url-queue-retrieve "url-queue" "\ 29195(autoload 'url-queue-retrieve "url-queue" "\
@@ -29200,7 +29210,7 @@ The variable `url-queue-timeout' sets a timeout.
29200;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message 29210;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message
29201;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args 29211;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args
29202;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20584 29212;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20584
29203;;;;;; 7212 455152 0)) 29213;;;;;; 355 183605 0))
29204;;; Generated autoloads from url/url-util.el 29214;;; Generated autoloads from url/url-util.el
29205 29215
29206(defvar url-debug nil "\ 29216(defvar url-debug nil "\
@@ -29374,7 +29384,7 @@ This uses `url-current-object', set locally to the buffer.
29374;;;*** 29384;;;***
29375 29385
29376;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) 29386;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock)
29377;;;;;; "userlock" "userlock.el" (20555 6946 859539 0)) 29387;;;;;; "userlock" "userlock.el" (20553 51521 311307 389000))
29378;;; Generated autoloads from userlock.el 29388;;; Generated autoloads from userlock.el
29379 29389
29380(autoload 'ask-user-about-lock "userlock" "\ 29390(autoload 'ask-user-about-lock "userlock" "\
@@ -29404,7 +29414,7 @@ The buffer in question is current when this function is called.
29404 29414
29405;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion 29415;;;### (autoloads (utf-7-imap-pre-write-conversion utf-7-pre-write-conversion
29406;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion) 29416;;;;;; utf-7-imap-post-read-conversion utf-7-post-read-conversion)
29407;;;;;; "utf-7" "international/utf-7.el" (20355 10021 546955 0)) 29417;;;;;; "utf-7" "international/utf-7.el" (20533 50312 678915 0))
29408;;; Generated autoloads from international/utf-7.el 29418;;; Generated autoloads from international/utf-7.el
29409 29419
29410(autoload 'utf-7-post-read-conversion "utf-7" "\ 29420(autoload 'utf-7-post-read-conversion "utf-7" "\
@@ -29429,8 +29439,8 @@ The buffer in question is current when this function is called.
29429 29439
29430;;;*** 29440;;;***
29431 29441
29432;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20355 10021 29442;;;### (autoloads (utf7-encode) "utf7" "gnus/utf7.el" (20533 50312
29433;;;;;; 546955 0)) 29443;;;;;; 678915 0))
29434;;; Generated autoloads from gnus/utf7.el 29444;;; Generated autoloads from gnus/utf7.el
29435 29445
29436(autoload 'utf7-encode "utf7" "\ 29446(autoload 'utf7-encode "utf7" "\
@@ -29442,7 +29452,7 @@ Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil.
29442 29452
29443;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal 29453;;;### (autoloads (uudecode-decode-region uudecode-decode-region-internal
29444;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el" 29454;;;;;; uudecode-decode-region-external) "uudecode" "mail/uudecode.el"
29445;;;;;; (20355 10021 546955 0)) 29455;;;;;; (20533 50312 678915 0))
29446;;; Generated autoloads from mail/uudecode.el 29456;;; Generated autoloads from mail/uudecode.el
29447 29457
29448(autoload 'uudecode-decode-region-external "uudecode" "\ 29458(autoload 'uudecode-decode-region-external "uudecode" "\
@@ -29472,8 +29482,8 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
29472;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers 29482;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers
29473;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff 29483;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff
29474;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook 29484;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook
29475;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20611 29485;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20668
29476;;;;;; 52135 109136 0)) 29486;;;;;; 15033 902481 0))
29477;;; Generated autoloads from vc/vc.el 29487;;; Generated autoloads from vc/vc.el
29478 29488
29479(defvar vc-checkout-hook nil "\ 29489(defvar vc-checkout-hook nil "\
@@ -29719,11 +29729,15 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
29719 29729
29720(autoload 'vc-delete-file "vc" "\ 29730(autoload 'vc-delete-file "vc" "\
29721Delete file and mark it as such in the version control system. 29731Delete file and mark it as such in the version control system.
29732If called interactively, read FILE, defaulting to the current
29733buffer's file name if it's under version control.
29722 29734
29723\(fn FILE)" t nil) 29735\(fn FILE)" t nil)
29724 29736
29725(autoload 'vc-rename-file "vc" "\ 29737(autoload 'vc-rename-file "vc" "\
29726Rename file OLD to NEW in both work area and repository. 29738Rename file OLD to NEW in both work area and repository.
29739If called interactively, read OLD and NEW, defaulting OLD to the
29740current buffer's file name if it's under version control.
29727 29741
29728\(fn OLD NEW)" t nil) 29742\(fn OLD NEW)" t nil)
29729 29743
@@ -29751,7 +29765,7 @@ Return the branch part of a revision number REV.
29751;;;*** 29765;;;***
29752 29766
29753;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el" 29767;;;### (autoloads (vc-annotate) "vc-annotate" "vc/vc-annotate.el"
29754;;;;;; (20478 3673 653810 0)) 29768;;;;;; (20533 50312 678915 0))
29755;;; Generated autoloads from vc/vc-annotate.el 29769;;; Generated autoloads from vc/vc-annotate.el
29756 29770
29757(autoload 'vc-annotate "vc-annotate" "\ 29771(autoload 'vc-annotate "vc-annotate" "\
@@ -29788,7 +29802,7 @@ mode-specific menu. `vc-annotate-color-map' and
29788 29802
29789;;;*** 29803;;;***
29790 29804
29791;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20478 3673 653810 29805;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (20533 50312 678915
29792;;;;;; 0)) 29806;;;;;; 0))
29793;;; Generated autoloads from vc/vc-arch.el 29807;;; Generated autoloads from vc/vc-arch.el
29794 (defun vc-arch-registered (file) 29808 (defun vc-arch-registered (file)
@@ -29799,8 +29813,7 @@ mode-specific menu. `vc-annotate-color-map' and
29799 29813
29800;;;*** 29814;;;***
29801 29815
29802;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 7212 455152 29816;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (20584 355 183605 0))
29803;;;;;; 0))
29804;;; Generated autoloads from vc/vc-bzr.el 29817;;; Generated autoloads from vc/vc-bzr.el
29805 29818
29806(defconst vc-bzr-admin-dirname ".bzr" "\ 29819(defconst vc-bzr-admin-dirname ".bzr" "\
@@ -29816,7 +29829,7 @@ Name of the format file in a .bzr directory.")
29816 29829
29817;;;*** 29830;;;***
29818 29831
29819;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 46798 773957 29832;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 54621 56606
29820;;;;;; 0)) 29833;;;;;; 0))
29821;;; Generated autoloads from vc/vc-cvs.el 29834;;; Generated autoloads from vc/vc-cvs.el
29822(defun vc-cvs-registered (f) 29835(defun vc-cvs-registered (f)
@@ -29828,10 +29841,49 @@ Name of the format file in a .bzr directory.")
29828 29841
29829;;;*** 29842;;;***
29830 29843
29831;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20522 9637 465791 29844;;;### (autoloads (vc-dir vc-dir-mode) "vc-dir" "vc/vc-dir.el" (20664
29832;;;;;; 0)) 29845;;;;;; 5610 38100 0))
29833;;; Generated autoloads from vc/vc-dir.el 29846;;; Generated autoloads from vc/vc-dir.el
29834 29847
29848(autoload 'vc-dir-mode "vc-dir" "\
29849Major mode for VC directory buffers.
29850Marking/Unmarking key bindings and actions:
29851m - mark a file/directory
29852 - if the region is active, mark all the files in region.
29853 Restrictions: - a file cannot be marked if any parent directory is marked
29854 - a directory cannot be marked if any child file or
29855 directory is marked
29856u - unmark a file/directory
29857 - if the region is active, unmark all the files in region.
29858M - if the cursor is on a file: mark all the files with the same state as
29859 the current file
29860 - if the cursor is on a directory: mark all child files
29861 - with a prefix argument: mark all files
29862U - if the cursor is on a file: unmark all the files with the same state
29863 as the current file
29864 - if the cursor is on a directory: unmark all child files
29865 - with a prefix argument: unmark all files
29866mouse-2 - toggles the mark state
29867
29868VC commands
29869VC commands in the `C-x v' prefix can be used.
29870VC commands act on the marked entries. If nothing is marked, VC
29871commands act on the current entry.
29872
29873Search & Replace
29874S - searches the marked files
29875Q - does a query replace on the marked files
29876M-s a C-s - does an isearch on the marked files
29877M-s a C-M-s - does a regexp isearch on the marked files
29878If nothing is marked, these commands act on the current entry.
29879When a directory is current or marked, the Search & Replace
29880commands act on the child files of that directory that are displayed in
29881the *vc-dir* buffer.
29882
29883\\{vc-dir-mode-map}
29884
29885\(fn)" t nil)
29886
29835(autoload 'vc-dir "vc-dir" "\ 29887(autoload 'vc-dir "vc-dir" "\
29836Show the VC status for \"interesting\" files in and below DIR. 29888Show the VC status for \"interesting\" files in and below DIR.
29837This allows you to mark files and perform VC operations on them. 29889This allows you to mark files and perform VC operations on them.
@@ -29854,7 +29906,7 @@ These are the commands available for use in the file status buffer:
29854;;;*** 29906;;;***
29855 29907
29856;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el" 29908;;;### (autoloads (vc-do-command) "vc-dispatcher" "vc/vc-dispatcher.el"
29857;;;;;; (20489 12324 656827 0)) 29909;;;;;; (20533 50312 678915 0))
29858;;; Generated autoloads from vc/vc-dispatcher.el 29910;;; Generated autoloads from vc/vc-dispatcher.el
29859 29911
29860(autoload 'vc-do-command "vc-dispatcher" "\ 29912(autoload 'vc-do-command "vc-dispatcher" "\
@@ -29877,8 +29929,8 @@ case, and the process object in the asynchronous case.
29877 29929
29878;;;*** 29930;;;***
29879 29931
29880;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20586 48936 135199 29932;;;### (autoloads nil "vc-git" "vc/vc-git.el" (20664 25386 555095
29881;;;;;; 0)) 29933;;;;;; 685000))
29882;;; Generated autoloads from vc/vc-git.el 29934;;; Generated autoloads from vc/vc-git.el
29883 (defun vc-git-registered (file) 29935 (defun vc-git-registered (file)
29884 "Return non-nil if FILE is registered with git." 29936 "Return non-nil if FILE is registered with git."
@@ -29889,7 +29941,7 @@ case, and the process object in the asynchronous case.
29889 29941
29890;;;*** 29942;;;***
29891 29943
29892;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20489 12324 656827 0)) 29944;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (20665 28029 52155 0))
29893;;; Generated autoloads from vc/vc-hg.el 29945;;; Generated autoloads from vc/vc-hg.el
29894 (defun vc-hg-registered (file) 29946 (defun vc-hg-registered (file)
29895 "Return non-nil if FILE is registered with hg." 29947 "Return non-nil if FILE is registered with hg."
@@ -29900,7 +29952,8 @@ case, and the process object in the asynchronous case.
29900 29952
29901;;;*** 29953;;;***
29902 29954
29903;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20524 51365 2559 0)) 29955;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20533 50312 678915
29956;;;;;; 0))
29904;;; Generated autoloads from vc/vc-mtn.el 29957;;; Generated autoloads from vc/vc-mtn.el
29905 29958
29906(defconst vc-mtn-admin-dir "_MTN" "\ 29959(defconst vc-mtn-admin-dir "_MTN" "\
@@ -29917,7 +29970,7 @@ Name of the monotone directory's format file.")
29917;;;*** 29970;;;***
29918 29971
29919;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el" 29972;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc/vc-rcs.el"
29920;;;;;; (20584 7212 455152 0)) 29973;;;;;; (20584 355 183605 0))
29921;;; Generated autoloads from vc/vc-rcs.el 29974;;; Generated autoloads from vc/vc-rcs.el
29922 29975
29923(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ 29976(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -29931,7 +29984,7 @@ For a description of possible values, see `vc-check-master-templates'.")
29931;;;*** 29984;;;***
29932 29985
29933;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el" 29986;;;### (autoloads (vc-sccs-master-templates) "vc-sccs" "vc/vc-sccs.el"
29934;;;;;; (20584 7212 455152 0)) 29987;;;;;; (20584 355 183605 0))
29935;;; Generated autoloads from vc/vc-sccs.el 29988;;; Generated autoloads from vc/vc-sccs.el
29936 29989
29937(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ 29990(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
@@ -29949,7 +30002,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
29949 30002
29950;;;*** 30003;;;***
29951 30004
29952;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20355 10021 546955 30005;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (20648 29678 511980
29953;;;;;; 0)) 30006;;;;;; 0))
29954;;; Generated autoloads from vc/vc-svn.el 30007;;; Generated autoloads from vc/vc-svn.el
29955 (defun vc-svn-registered (f) 30008 (defun vc-svn-registered (f)
@@ -29964,7 +30017,7 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir)
29964;;;*** 30017;;;***
29965 30018
29966;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el" 30019;;;### (autoloads (vera-mode) "vera-mode" "progmodes/vera-mode.el"
29967;;;;;; (20577 33959 40183 0)) 30020;;;;;; (20576 17562 243997 985000))
29968;;; Generated autoloads from progmodes/vera-mode.el 30021;;; Generated autoloads from progmodes/vera-mode.el
29969 (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode)) 30022 (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode))
29970 30023
@@ -30022,7 +30075,7 @@ Key bindings:
30022;;;*** 30075;;;***
30023 30076
30024;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el" 30077;;;### (autoloads (verilog-mode) "verilog-mode" "progmodes/verilog-mode.el"
30025;;;;;; (20593 22184 581574 0)) 30078;;;;;; (20594 14884 858174 0))
30026;;; Generated autoloads from progmodes/verilog-mode.el 30079;;; Generated autoloads from progmodes/verilog-mode.el
30027 30080
30028(autoload 'verilog-mode "verilog-mode" "\ 30081(autoload 'verilog-mode "verilog-mode" "\
@@ -30161,7 +30214,7 @@ Key bindings specific to `verilog-mode-map' are:
30161;;;*** 30214;;;***
30162 30215
30163;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el" 30216;;;### (autoloads (vhdl-mode) "vhdl-mode" "progmodes/vhdl-mode.el"
30164;;;;;; (20593 22184 581574 0)) 30217;;;;;; (20594 14884 858174 0))
30165;;; Generated autoloads from progmodes/vhdl-mode.el 30218;;; Generated autoloads from progmodes/vhdl-mode.el
30166 30219
30167(autoload 'vhdl-mode "vhdl-mode" "\ 30220(autoload 'vhdl-mode "vhdl-mode" "\
@@ -30715,8 +30768,8 @@ Key bindings:
30715 30768
30716;;;*** 30769;;;***
30717 30770
30718;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20566 63671 243798 30771;;;### (autoloads (vi-mode) "vi" "emulation/vi.el" (20566 46321 482625
30719;;;;;; 0)) 30772;;;;;; 150000))
30720;;; Generated autoloads from emulation/vi.el 30773;;; Generated autoloads from emulation/vi.el
30721 30774
30722(autoload 'vi-mode "vi" "\ 30775(autoload 'vi-mode "vi" "\
@@ -30771,7 +30824,7 @@ Syntax table and abbrevs while in vi mode remain as they were in Emacs.
30771;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion 30824;;;### (autoloads (viqr-pre-write-conversion viqr-post-read-conversion
30772;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer 30825;;;;;; viet-encode-viqr-buffer viet-encode-viqr-region viet-decode-viqr-buffer
30773;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util" 30826;;;;;; viet-decode-viqr-region viet-encode-viscii-char) "viet-util"
30774;;;;;; "language/viet-util.el" (20355 10021 546955 0)) 30827;;;;;; "language/viet-util.el" (20533 50312 678915 0))
30775;;; Generated autoloads from language/viet-util.el 30828;;; Generated autoloads from language/viet-util.el
30776 30829
30777(autoload 'viet-encode-viscii-char "viet-util" "\ 30830(autoload 'viet-encode-viscii-char "viet-util" "\
@@ -30819,7 +30872,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics.
30819;;;;;; view-mode view-buffer-other-frame view-buffer-other-window 30872;;;;;; view-mode view-buffer-other-frame view-buffer-other-window
30820;;;;;; view-buffer view-file-other-frame view-file-other-window 30873;;;;;; view-buffer view-file-other-frame view-file-other-window
30821;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting) 30874;;;;;; view-file kill-buffer-if-not-modified view-remove-frame-by-deleting)
30822;;;;;; "view" "view.el" (20577 33959 40183 0)) 30875;;;;;; "view" "view.el" (20574 60285 453605 907000))
30823;;; Generated autoloads from view.el 30876;;; Generated autoloads from view.el
30824 30877
30825(defvar view-remove-frame-by-deleting t "\ 30878(defvar view-remove-frame-by-deleting t "\
@@ -31075,8 +31128,8 @@ Exit View mode and make the current buffer editable.
31075 31128
31076;;;*** 31129;;;***
31077 31130
31078;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20513 31131;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20533
31079;;;;;; 18948 537867 0)) 31132;;;;;; 50312 678915 0))
31080;;; Generated autoloads from emulation/vip.el 31133;;; Generated autoloads from emulation/vip.el
31081 31134
31082(autoload 'vip-setup "vip" "\ 31135(autoload 'vip-setup "vip" "\
@@ -31092,7 +31145,7 @@ Turn on VIP emulation of VI.
31092;;;*** 31145;;;***
31093 31146
31094;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el" 31147;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
31095;;;;;; (20566 63671 243798 0)) 31148;;;;;; (20566 46795 194646 255000))
31096;;; Generated autoloads from emulation/viper.el 31149;;; Generated autoloads from emulation/viper.el
31097 31150
31098(autoload 'toggle-viper-mode "viper" "\ 31151(autoload 'toggle-viper-mode "viper" "\
@@ -31109,7 +31162,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
31109;;;*** 31162;;;***
31110 31163
31111;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el" 31164;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
31112;;;;;; (20355 10021 546955 0)) 31165;;;;;; (20533 50312 678915 0))
31113;;; Generated autoloads from emacs-lisp/warnings.el 31166;;; Generated autoloads from emacs-lisp/warnings.el
31114 31167
31115(defvar warning-prefix-function nil "\ 31168(defvar warning-prefix-function nil "\
@@ -31199,7 +31252,7 @@ this is equivalent to `display-warning', using
31199;;;*** 31252;;;***
31200 31253
31201;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" 31254;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
31202;;;;;; (20619 46245 806932 0)) 31255;;;;;; (20656 14460 296991 0))
31203;;; Generated autoloads from wdired.el 31256;;; Generated autoloads from wdired.el
31204 31257
31205(autoload 'wdired-change-to-wdired-mode "wdired" "\ 31258(autoload 'wdired-change-to-wdired-mode "wdired" "\
@@ -31216,8 +31269,8 @@ See `wdired-mode'.
31216 31269
31217;;;*** 31270;;;***
31218 31271
31219;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 63671 31272;;;### (autoloads (webjump) "webjump" "net/webjump.el" (20566 45342
31220;;;;;; 243798 0)) 31273;;;;;; 918583 804000))
31221;;; Generated autoloads from net/webjump.el 31274;;; Generated autoloads from net/webjump.el
31222 31275
31223(autoload 'webjump "webjump" "\ 31276(autoload 'webjump "webjump" "\
@@ -31234,7 +31287,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
31234;;;*** 31287;;;***
31235 31288
31236;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el" 31289;;;### (autoloads (which-function-mode) "which-func" "progmodes/which-func.el"
31237;;;;;; (20613 49078 764749 0)) 31290;;;;;; (20613 39767 44650 0))
31238;;; Generated autoloads from progmodes/which-func.el 31291;;; Generated autoloads from progmodes/which-func.el
31239 (put 'which-func-format 'risky-local-variable t) 31292 (put 'which-func-format 'risky-local-variable t)
31240 (put 'which-func-current 'risky-local-variable t) 31293 (put 'which-func-current 'risky-local-variable t)
@@ -31267,8 +31320,8 @@ in certain major modes.
31267;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region 31320;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region
31268;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options 31321;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options
31269;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode 31322;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode
31270;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20508 13724 31323;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20533 50312
31271;;;;;; 260761 0)) 31324;;;;;; 678915 0))
31272;;; Generated autoloads from whitespace.el 31325;;; Generated autoloads from whitespace.el
31273 31326
31274(autoload 'whitespace-mode "whitespace" "\ 31327(autoload 'whitespace-mode "whitespace" "\
@@ -31667,8 +31720,8 @@ cleaning up these problems.
31667;;;*** 31720;;;***
31668 31721
31669;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse 31722;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse
31670;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20478 3673 31723;;;;;; widget-browse-at) "wid-browse" "wid-browse.el" (20533 50312
31671;;;;;; 653810 0)) 31724;;;;;; 678915 0))
31672;;; Generated autoloads from wid-browse.el 31725;;; Generated autoloads from wid-browse.el
31673 31726
31674(autoload 'widget-browse-at "wid-browse" "\ 31727(autoload 'widget-browse-at "wid-browse" "\
@@ -31697,8 +31750,8 @@ if ARG is omitted or nil.
31697;;;*** 31750;;;***
31698 31751
31699;;;### (autoloads (widget-setup widget-insert widget-delete widget-create 31752;;;### (autoloads (widget-setup widget-insert widget-delete widget-create
31700;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20373 31753;;;;;; widget-prompt-value widgetp) "wid-edit" "wid-edit.el" (20533
31701;;;;;; 11301 906925 0)) 31754;;;;;; 50312 678915 0))
31702;;; Generated autoloads from wid-edit.el 31755;;; Generated autoloads from wid-edit.el
31703 31756
31704(autoload 'widgetp "wid-edit" "\ 31757(autoload 'widgetp "wid-edit" "\
@@ -31742,7 +31795,7 @@ Setup current buffer so editing string widgets works.
31742 31795
31743;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right 31796;;;### (autoloads (windmove-default-keybindings windmove-down windmove-right
31744;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20566 31797;;;;;; windmove-up windmove-left) "windmove" "windmove.el" (20566
31745;;;;;; 63671 243798 0)) 31798;;;;;; 44765 218559 34000))
31746;;; Generated autoloads from windmove.el 31799;;; Generated autoloads from windmove.el
31747 31800
31748(autoload 'windmove-left "windmove" "\ 31801(autoload 'windmove-left "windmove" "\
@@ -31794,8 +31847,8 @@ Default MODIFIER is 'shift.
31794 31847
31795;;;*** 31848;;;***
31796 31849
31797;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 7212 31850;;;### (autoloads (winner-mode) "winner" "winner.el" (20584 355 183605
31798;;;;;; 455152 0)) 31851;;;;;; 0))
31799;;; Generated autoloads from winner.el 31852;;; Generated autoloads from winner.el
31800 31853
31801(defvar winner-mode nil "\ 31854(defvar winner-mode nil "\
@@ -31819,8 +31872,8 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
31819;;;*** 31872;;;***
31820 31873
31821;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file 31874;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file
31822;;;;;; woman woman-locale) "woman" "woman.el" (20623 43301 870757 31875;;;;;; woman woman-locale) "woman" "woman.el" (20656 64489 79784
31823;;;;;; 0)) 31876;;;;;; 260000))
31824;;; Generated autoloads from woman.el 31877;;; Generated autoloads from woman.el
31825 31878
31826(defvar woman-locale nil "\ 31879(defvar woman-locale nil "\
@@ -31869,7 +31922,7 @@ Default bookmark handler for Woman buffers.
31869;;;*** 31922;;;***
31870 31923
31871;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el" 31924;;;### (autoloads (wordstar-mode) "ws-mode" "emulation/ws-mode.el"
31872;;;;;; (20355 10021 546955 0)) 31925;;;;;; (20533 50312 678915 0))
31873;;; Generated autoloads from emulation/ws-mode.el 31926;;; Generated autoloads from emulation/ws-mode.el
31874 31927
31875(autoload 'wordstar-mode "ws-mode" "\ 31928(autoload 'wordstar-mode "ws-mode" "\
@@ -31981,8 +32034,8 @@ The key bindings are:
31981 32034
31982;;;*** 32035;;;***
31983 32036
31984;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20478 3673 32037;;;### (autoloads (xesam-search) "xesam" "net/xesam.el" (20533 50312
31985;;;;;; 653810 0)) 32038;;;;;; 678915 0))
31986;;; Generated autoloads from net/xesam.el 32039;;; Generated autoloads from net/xesam.el
31987 32040
31988(autoload 'xesam-search "xesam" "\ 32041(autoload 'xesam-search "xesam" "\
@@ -32002,7 +32055,7 @@ Example:
32002;;;*** 32055;;;***
32003 32056
32004;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" 32057;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
32005;;;;;; (20528 48420 241677 0)) 32058;;;;;; (20533 50312 678915 0))
32006;;; Generated autoloads from xml.el 32059;;; Generated autoloads from xml.el
32007 32060
32008(autoload 'xml-parse-file "xml" "\ 32061(autoload 'xml-parse-file "xml" "\
@@ -32059,7 +32112,7 @@ Both features can be combined by providing a cons cell
32059;;;*** 32112;;;***
32060 32113
32061;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok" 32114;;;### (autoloads (xmltok-get-declared-encoding-position) "xmltok"
32062;;;;;; "nxml/xmltok.el" (20355 10021 546955 0)) 32115;;;;;; "nxml/xmltok.el" (20533 50312 678915 0))
32063;;; Generated autoloads from nxml/xmltok.el 32116;;; Generated autoloads from nxml/xmltok.el
32064 32117
32065(autoload 'xmltok-get-declared-encoding-position "xmltok" "\ 32118(autoload 'xmltok-get-declared-encoding-position "xmltok" "\
@@ -32077,8 +32130,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT.
32077 32130
32078;;;*** 32131;;;***
32079 32132
32080;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20485 32133;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (20533
32081;;;;;; 15269 390836 0)) 32134;;;;;; 50312 678915 0))
32082;;; Generated autoloads from xt-mouse.el 32135;;; Generated autoloads from xt-mouse.el
32083 32136
32084(defvar xterm-mouse-mode nil "\ 32137(defvar xterm-mouse-mode nil "\
@@ -32108,7 +32161,7 @@ down the SHIFT key while pressing the mouse button.
32108;;;*** 32161;;;***
32109 32162
32110;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc" 32163;;;### (autoloads (yenc-extract-filename yenc-decode-region) "yenc"
32111;;;;;; "gnus/yenc.el" (20355 10021 546955 0)) 32164;;;;;; "gnus/yenc.el" (20533 50312 678915 0))
32112;;; Generated autoloads from gnus/yenc.el 32165;;; Generated autoloads from gnus/yenc.el
32113 32166
32114(autoload 'yenc-decode-region "yenc" "\ 32167(autoload 'yenc-decode-region "yenc" "\
@@ -32124,7 +32177,7 @@ Extract file name from an yenc header.
32124;;;*** 32177;;;***
32125 32178
32126;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism 32179;;;### (autoloads (psychoanalyze-pinhead apropos-zippy insert-zippyism
32127;;;;;; yow) "yow" "play/yow.el" (20364 42504 244840 586000)) 32180;;;;;; yow) "yow" "play/yow.el" (20533 50312 678915 0))
32128;;; Generated autoloads from play/yow.el 32181;;; Generated autoloads from play/yow.el
32129 32182
32130(autoload 'yow "yow" "\ 32183(autoload 'yow "yow" "\
@@ -32150,7 +32203,7 @@ Zippy goes to the analyst.
32150 32203
32151;;;*** 32204;;;***
32152 32205
32153;;;### (autoloads (zone) "zone" "play/zone.el" (20545 57511 257469 32206;;;### (autoloads (zone) "zone" "play/zone.el" (20545 60086 510404
32154;;;;;; 0)) 32207;;;;;; 0))
32155;;; Generated autoloads from play/zone.el 32208;;; Generated autoloads from play/zone.el
32156 32209
@@ -32167,46 +32220,46 @@ Zone out, completely.
32167;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el" 32220;;;;;; "calc/calc-fin.el" "calc/calc-forms.el" "calc/calc-frac.el"
32168;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el" 32221;;;;;; "calc/calc-funcs.el" "calc/calc-graph.el" "calc/calc-help.el"
32169;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el" 32222;;;;;; "calc/calc-incom.el" "calc/calc-keypd.el" "calc/calc-lang.el"
32170;;;;;; "calc/calc-loaddefs.el" "calc/calc-macs.el" "calc/calc-map.el" 32223;;;;;; "calc/calc-macs.el" "calc/calc-map.el" "calc/calc-math.el"
32171;;;;;; "calc/calc-math.el" "calc/calc-menu.el" "calc/calc-misc.el" 32224;;;;;; "calc/calc-menu.el" "calc/calc-misc.el" "calc/calc-mode.el"
32172;;;;;; "calc/calc-mode.el" "calc/calc-mtx.el" "calc/calc-nlfit.el" 32225;;;;;; "calc/calc-mtx.el" "calc/calc-nlfit.el" "calc/calc-poly.el"
32173;;;;;; "calc/calc-poly.el" "calc/calc-prog.el" "calc/calc-rewr.el" 32226;;;;;; "calc/calc-prog.el" "calc/calc-rewr.el" "calc/calc-rules.el"
32174;;;;;; "calc/calc-rules.el" "calc/calc-sel.el" "calc/calc-stat.el" 32227;;;;;; "calc/calc-sel.el" "calc/calc-stat.el" "calc/calc-store.el"
32175;;;;;; "calc/calc-store.el" "calc/calc-stuff.el" "calc/calc-trail.el" 32228;;;;;; "calc/calc-stuff.el" "calc/calc-trail.el" "calc/calc-units.el"
32176;;;;;; "calc/calc-units.el" "calc/calc-vec.el" "calc/calc-yank.el" 32229;;;;;; "calc/calc-vec.el" "calc/calc-yank.el" "calc/calcalg2.el"
32177;;;;;; "calc/calcalg2.el" "calc/calcalg3.el" "calc/calccomp.el" 32230;;;;;; "calc/calcalg3.el" "calc/calccomp.el" "calc/calcsel2.el"
32178;;;;;; "calc/calcsel2.el" "calendar/cal-bahai.el" "calendar/cal-coptic.el" 32231;;;;;; "calendar/cal-bahai.el" "calendar/cal-coptic.el" "calendar/cal-french.el"
32179;;;;;; "calendar/cal-french.el" "calendar/cal-html.el" "calendar/cal-islam.el" 32232;;;;;; "calendar/cal-html.el" "calendar/cal-islam.el" "calendar/cal-iso.el"
32180;;;;;; "calendar/cal-iso.el" "calendar/cal-julian.el" "calendar/cal-loaddefs.el" 32233;;;;;; "calendar/cal-julian.el" "calendar/cal-loaddefs.el" "calendar/cal-mayan.el"
32181;;;;;; "calendar/cal-mayan.el" "calendar/cal-menu.el" "calendar/cal-move.el" 32234;;;;;; "calendar/cal-menu.el" "calendar/cal-move.el" "calendar/cal-persia.el"
32182;;;;;; "calendar/cal-persia.el" "calendar/cal-tex.el" "calendar/cal-x.el" 32235;;;;;; "calendar/cal-tex.el" "calendar/cal-x.el" "calendar/diary-loaddefs.el"
32183;;;;;; "calendar/diary-loaddefs.el" "calendar/hol-loaddefs.el" "cdl.el" 32236;;;;;; "calendar/hol-loaddefs.el" "cdl.el" "cedet/cedet-cscope.el"
32184;;;;;; "cedet/cedet-cscope.el" "cedet/cedet-files.el" "cedet/cedet-global.el" 32237;;;;;; "cedet/cedet-files.el" "cedet/cedet-global.el" "cedet/cedet-idutils.el"
32185;;;;;; "cedet/cedet-idutils.el" "cedet/cedet.el" "cedet/ede/auto.el" 32238;;;;;; "cedet/cedet.el" "cedet/ede/auto.el" "cedet/ede/autoconf-edit.el"
32186;;;;;; "cedet/ede/autoconf-edit.el" "cedet/ede/base.el" "cedet/ede/cpp-root.el" 32239;;;;;; "cedet/ede/base.el" "cedet/ede/cpp-root.el" "cedet/ede/custom.el"
32187;;;;;; "cedet/ede/custom.el" "cedet/ede/dired.el" "cedet/ede/emacs.el" 32240;;;;;; "cedet/ede/dired.el" "cedet/ede/emacs.el" "cedet/ede/files.el"
32188;;;;;; "cedet/ede/files.el" "cedet/ede/generic.el" "cedet/ede/linux.el" 32241;;;;;; "cedet/ede/generic.el" "cedet/ede/linux.el" "cedet/ede/locate.el"
32189;;;;;; "cedet/ede/loaddefs.el" "cedet/ede/locate.el" "cedet/ede/make.el" 32242;;;;;; "cedet/ede/make.el" "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el"
32190;;;;;; "cedet/ede/makefile-edit.el" "cedet/ede/pconf.el" "cedet/ede/pmake.el" 32243;;;;;; "cedet/ede/pmake.el" "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el"
32191;;;;;; "cedet/ede/proj-archive.el" "cedet/ede/proj-aux.el" "cedet/ede/proj-comp.el" 32244;;;;;; "cedet/ede/proj-comp.el" "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el"
32192;;;;;; "cedet/ede/proj-elisp.el" "cedet/ede/proj-info.el" "cedet/ede/proj-misc.el" 32245;;;;;; "cedet/ede/proj-misc.el" "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el"
32193;;;;;; "cedet/ede/proj-obj.el" "cedet/ede/proj-prog.el" "cedet/ede/proj-scheme.el" 32246;;;;;; "cedet/ede/proj-scheme.el" "cedet/ede/proj-shared.el" "cedet/ede/proj.el"
32194;;;;;; "cedet/ede/proj-shared.el" "cedet/ede/proj.el" "cedet/ede/project-am.el" 32247;;;;;; "cedet/ede/project-am.el" "cedet/ede/shell.el" "cedet/ede/simple.el"
32195;;;;;; "cedet/ede/shell.el" "cedet/ede/simple.el" "cedet/ede/source.el" 32248;;;;;; "cedet/ede/source.el" "cedet/ede/speedbar.el" "cedet/ede/srecode.el"
32196;;;;;; "cedet/ede/speedbar.el" "cedet/ede/srecode.el" "cedet/ede/system.el" 32249;;;;;; "cedet/ede/system.el" "cedet/ede/util.el" "cedet/pulse.el"
32197;;;;;; "cedet/ede/util.el" "cedet/pulse.el" "cedet/semantic/analyze.el" 32250;;;;;; "cedet/semantic/analyze.el" "cedet/semantic/analyze/complete.el"
32198;;;;;; "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el" 32251;;;;;; "cedet/semantic/analyze/debug.el" "cedet/semantic/analyze/fcn.el"
32199;;;;;; "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el" 32252;;;;;; "cedet/semantic/analyze/refs.el" "cedet/semantic/bovine.el"
32200;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el" 32253;;;;;; "cedet/semantic/bovine/c-by.el" "cedet/semantic/bovine/c.el"
32201;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el" 32254;;;;;; "cedet/semantic/bovine/debug.el" "cedet/semantic/bovine/el.el"
32202;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el" 32255;;;;;; "cedet/semantic/bovine/gcc.el" "cedet/semantic/bovine/make-by.el"
32203;;;;;; "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el" 32256;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm-by.el"
32204;;;;;; "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el" 32257;;;;;; "cedet/semantic/bovine/scm.el" "cedet/semantic/chart.el"
32205;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" 32258;;;;;; "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" "cedet/semantic/db-debug.el"
32206;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el" 32259;;;;;; "cedet/semantic/db-ebrowse.el" "cedet/semantic/db-el.el"
32207;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" 32260;;;;;; "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" "cedet/semantic/db-global.el"
32208;;;;;; "cedet/semantic/db-global.el" "cedet/semantic/db-javascript.el" 32261;;;;;; "cedet/semantic/db-javascript.el" "cedet/semantic/db-mode.el"
32209;;;;;; "cedet/semantic/db-mode.el" "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el" 32262;;;;;; "cedet/semantic/db-ref.el" "cedet/semantic/db-typecache.el"
32210;;;;;; "cedet/semantic/db.el" "cedet/semantic/debug.el" "cedet/semantic/decorate.el" 32263;;;;;; "cedet/semantic/db.el" "cedet/semantic/debug.el" "cedet/semantic/decorate.el"
32211;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el" 32264;;;;;; "cedet/semantic/decorate/include.el" "cedet/semantic/decorate/mode.el"
32212;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/ede-grammar.el" 32265;;;;;; "cedet/semantic/dep.el" "cedet/semantic/doc.el" "cedet/semantic/ede-grammar.el"
@@ -32214,13 +32267,13 @@ Zone out, completely.
32214;;;;;; "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el" 32267;;;;;; "cedet/semantic/fw.el" "cedet/semantic/grammar-wy.el" "cedet/semantic/grammar.el"
32215;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el" 32268;;;;;; "cedet/semantic/html.el" "cedet/semantic/ia-sb.el" "cedet/semantic/ia.el"
32216;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el" 32269;;;;;; "cedet/semantic/idle.el" "cedet/semantic/imenu.el" "cedet/semantic/java.el"
32217;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/loaddefs.el" 32270;;;;;; "cedet/semantic/lex-spp.el" "cedet/semantic/lex.el" "cedet/semantic/mru-bookmark.el"
32218;;;;;; "cedet/semantic/mru-bookmark.el" "cedet/semantic/sb.el" "cedet/semantic/scope.el" 32271;;;;;; "cedet/semantic/sb.el" "cedet/semantic/scope.el" "cedet/semantic/senator.el"
32219;;;;;; "cedet/semantic/senator.el" "cedet/semantic/sort.el" "cedet/semantic/symref.el" 32272;;;;;; "cedet/semantic/sort.el" "cedet/semantic/symref.el" "cedet/semantic/symref/cscope.el"
32220;;;;;; "cedet/semantic/symref/cscope.el" "cedet/semantic/symref/filter.el" 32273;;;;;; "cedet/semantic/symref/filter.el" "cedet/semantic/symref/global.el"
32221;;;;;; "cedet/semantic/symref/global.el" "cedet/semantic/symref/grep.el" 32274;;;;;; "cedet/semantic/symref/grep.el" "cedet/semantic/symref/idutils.el"
32222;;;;;; "cedet/semantic/symref/idutils.el" "cedet/semantic/symref/list.el" 32275;;;;;; "cedet/semantic/symref/list.el" "cedet/semantic/tag-file.el"
32223;;;;;; "cedet/semantic/tag-file.el" "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el" 32276;;;;;; "cedet/semantic/tag-ls.el" "cedet/semantic/tag-write.el"
32224;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el" 32277;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el"
32225;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el" 32278;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el"
32226;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el" 32279;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el"
@@ -32232,11 +32285,11 @@ Zone out, completely.
32232;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el" 32285;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el"
32233;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el" 32286;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el"
32234;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el" 32287;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el"
32235;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el" 32288;;;;;; "cedet/srecode/map.el" "cedet/srecode/mode.el" "cedet/srecode/semantic.el"
32236;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" 32289;;;;;; "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" "cedet/srecode/table.el"
32237;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el" 32290;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el"
32238;;;;;; "cus-dep.el" "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" 32291;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dos-fns.el" "dos-vars.el"
32239;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el" 32292;;;;;; "dos-w32.el" "dynamic-setting.el" "emacs-lisp/authors.el"
32240;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" 32293;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el"
32241;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" 32294;;;;;; "emacs-lisp/chart.el" "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el"
32242;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" 32295;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el"
@@ -32256,33 +32309,32 @@ Zone out, completely.
32256;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el" 32309;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
32257;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el" 32310;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
32258;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el" 32311;;;;;; "eshell/em-unix.el" "eshell/em-xtra.el" "eshell/esh-arg.el"
32259;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-groups.el" 32312;;;;;; "eshell/esh-cmd.el" "eshell/esh-ext.el" "eshell/esh-io.el"
32260;;;;;; "eshell/esh-io.el" "eshell/esh-module.el" "eshell/esh-opt.el" 32313;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el"
32261;;;;;; "eshell/esh-proc.el" "eshell/esh-util.el" "eshell/esh-var.el" 32314;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "foldout.el"
32262;;;;;; "ezimage.el" "foldout.el" "format-spec.el" "fringe.el" "generic-x.el" 32315;;;;;; "format-spec.el" "fringe.el" "generic-x.el" "gnus/compface.el"
32263;;;;;; "gnus/compface.el" "gnus/gnus-async.el" "gnus/gnus-bcklg.el" 32316;;;;;; "gnus/gnus-async.el" "gnus/gnus-bcklg.el" "gnus/gnus-cite.el"
32264;;;;;; "gnus/gnus-cite.el" "gnus/gnus-cus.el" "gnus/gnus-demon.el" 32317;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
32265;;;;;; "gnus/gnus-dup.el" "gnus/gnus-eform.el" "gnus/gnus-ems.el" 32318;;;;;; "gnus/gnus-eform.el" "gnus/gnus-ems.el" "gnus/gnus-int.el"
32266;;;;;; "gnus/gnus-int.el" "gnus/gnus-logic.el" "gnus/gnus-mh.el" 32319;;;;;; "gnus/gnus-logic.el" "gnus/gnus-mh.el" "gnus/gnus-salt.el"
32267;;;;;; "gnus/gnus-salt.el" "gnus/gnus-score.el" "gnus/gnus-setup.el" 32320;;;;;; "gnus/gnus-score.el" "gnus/gnus-setup.el" "gnus/gnus-srvr.el"
32268;;;;;; "gnus/gnus-srvr.el" "gnus/gnus-topic.el" "gnus/gnus-undo.el" 32321;;;;;; "gnus/gnus-topic.el" "gnus/gnus-undo.el" "gnus/gnus-util.el"
32269;;;;;; "gnus/gnus-util.el" "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" 32322;;;;;; "gnus/gnus-uu.el" "gnus/gnus-vm.el" "gnus/gssapi.el" "gnus/ietf-drums.el"
32270;;;;;; "gnus/ietf-drums.el" "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" 32323;;;;;; "gnus/legacy-gnus-agent.el" "gnus/mail-parse.el" "gnus/mail-prsvr.el"
32271;;;;;; "gnus/mail-prsvr.el" "gnus/mail-source.el" "gnus/mailcap.el" 32324;;;;;; "gnus/mail-source.el" "gnus/mailcap.el" "gnus/messcompat.el"
32272;;;;;; "gnus/messcompat.el" "gnus/mm-archive.el" "gnus/mm-bodies.el" 32325;;;;;; "gnus/mm-archive.el" "gnus/mm-bodies.el" "gnus/mm-decode.el"
32273;;;;;; "gnus/mm-decode.el" "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" 32326;;;;;; "gnus/mm-util.el" "gnus/mm-view.el" "gnus/mml-sec.el" "gnus/mml-smime.el"
32274;;;;;; "gnus/mml-smime.el" "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" 32327;;;;;; "gnus/nnagent.el" "gnus/nnbabyl.el" "gnus/nndir.el" "gnus/nndraft.el"
32275;;;;;; "gnus/nndraft.el" "gnus/nneething.el" "gnus/nngateway.el" 32328;;;;;; "gnus/nneething.el" "gnus/nngateway.el" "gnus/nnheader.el"
32276;;;;;; "gnus/nnheader.el" "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" 32329;;;;;; "gnus/nnimap.el" "gnus/nnir.el" "gnus/nnmail.el" "gnus/nnmaildir.el"
32277;;;;;; "gnus/nnmaildir.el" "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" 32330;;;;;; "gnus/nnmairix.el" "gnus/nnmbox.el" "gnus/nnmh.el" "gnus/nnnil.el"
32278;;;;;; "gnus/nnnil.el" "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" 32331;;;;;; "gnus/nnoo.el" "gnus/nnregistry.el" "gnus/nnrss.el" "gnus/nnspool.el"
32279;;;;;; "gnus/nnspool.el" "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" 32332;;;;;; "gnus/nntp.el" "gnus/nnvirtual.el" "gnus/nnweb.el" "gnus/registry.el"
32280;;;;;; "gnus/registry.el" "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" 32333;;;;;; "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2104.el"
32281;;;;;; "gnus/rfc2104.el" "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el" 32334;;;;;; "gnus/rfc2231.el" "gnus/rtree.el" "gnus/shr-color.el" "gnus/sieve-manage.el"
32282;;;;;; "gnus/sieve-manage.el" "gnus/smime.el" "gnus/spam-stat.el" 32335;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
32283;;;;;; "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el" 32336;;;;;; "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" "international/eucjp-ms.el"
32284;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el" 32337;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el"
32285;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el"
32286;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el" 32338;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el"
32287;;;;;; "international/uni-category.el" "international/uni-combining.el" 32339;;;;;; "international/uni-category.el" "international/uni-combining.el"
32288;;;;;; "international/uni-comment.el" "international/uni-decimal.el" 32340;;;;;; "international/uni-comment.el" "international/uni-decimal.el"
@@ -32370,8 +32422,8 @@ Zone out, completely.
32370;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" 32422;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
32371;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" 32423;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
32372;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el" 32424;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-common-fns.el"
32373;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20626 19627 425848 32425;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (20669 25890 774402
32374;;;;;; 6000)) 32426;;;;;; 97000))
32375 32427
32376;;;*** 32428;;;***
32377 32429
diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el
index 2e4ffec1383..aa507897243 100644
--- a/lisp/mail/mailabbrev.el
+++ b/lisp/mail/mailabbrev.el
@@ -472,10 +472,12 @@ of a mail alias. The value is set up, buffer-local, when first needed.")
472 472
473(defun mail-abbrev-expand-wrapper (expand) 473(defun mail-abbrev-expand-wrapper (expand)
474 (if (and mail-abbrevs (not (eq mail-abbrevs t))) 474 (if (and mail-abbrevs (not (eq mail-abbrevs t)))
475 (if (mail-abbrev-in-expansion-header-p) 475 (if (or (mail-abbrev-in-expansion-header-p)
476 ;; Necessary for `message-read-from-minibuffer' to work.
477 (window-minibuffer-p))
476 478
477 ;; We are in a To: (or CC:, or whatever) header, and 479 ;; We are in a To: (or CC:, or whatever) header or a minibuffer,
478 ;; should use word-abbrevs to expand mail aliases. 480 ;; and should use word-abbrevs to expand mail aliases.
479 (let ((local-abbrev-table mail-abbrevs)) 481 (let ((local-abbrev-table mail-abbrevs))
480 482
481 ;; Before anything else, resolve aliases if they need it. 483 ;; Before anything else, resolve aliases if they need it.
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index a2cb7cb9ee8..9c48788553b 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -100,6 +100,10 @@ its character representation and its display representation.")
100 "The current header display style choice, one of 100 "The current header display style choice, one of
101'normal (selected headers) or 'full (all headers).") 101'normal (selected headers) or 'full (all headers).")
102 102
103(defvar rmail-mime-decoded nil
104 "Non-nil if message has been processed by `rmail-show-mime-function'.")
105(put 'rmail-mime-decoded 'permanent-local t) ; for rmail-edit
106
103(defgroup rmail nil 107(defgroup rmail nil
104 "Mail reader for Emacs." 108 "Mail reader for Emacs."
105 :group 'mail) 109 :group 'mail)
@@ -2699,6 +2703,27 @@ N defaults to the current message."
2699 :group 'rmail 2703 :group 'rmail
2700 :version "23.1") 2704 :version "23.1")
2701 2705
2706;; FIXME?
2707;; rmail-show-mime-function does not unquote >From lines. Should it?
2708(defcustom rmail-mbox-format 'mboxrd
2709 "The mbox format that your system uses.
2710There is no way to determine this, so you should set the appropriate value.
2711The formats quote lines containing \"From \" differently.
2712The choices are:
2713 `mboxo' : lines that start with \"From \" quoted as \">From \"
2714 `mboxrd': lines that start with \">*From \" quoted with another \">\"
2715The `mboxo' format is ambiguous, in that one cannot know whether
2716a line starting with \">From \" originally had a \">\" or not.
2717
2718It is not critical to set this to the correct value; it only affects
2719how Rmail displays lines starting with \">*From \" in non-MIME messages.
2720
2721See also `unrmail-mbox-format'."
2722 :type '(choice (const mboxrd)
2723 (const mboxro))
2724 :version "24.4"
2725 :group 'rmail-files)
2726
2702(defun rmail-show-message-1 (&optional msg) 2727(defun rmail-show-message-1 (&optional msg)
2703 "Show message MSG (default: current message) using `rmail-view-buffer'. 2728 "Show message MSG (default: current message) using `rmail-view-buffer'.
2704Return text to display in the minibuffer if MSG is out of 2729Return text to display in the minibuffer if MSG is out of
@@ -2747,6 +2772,7 @@ The current mail message becomes the message displayed."
2747 (re-search-forward "mime-version: 1.0" nil t)) 2772 (re-search-forward "mime-version: 1.0" nil t))
2748 (let ((rmail-buffer mbox-buf) 2773 (let ((rmail-buffer mbox-buf)
2749 (rmail-view-buffer view-buf)) 2774 (rmail-view-buffer view-buf))
2775 (set (make-local-variable 'rmail-mime-decoded) t)
2750 (funcall rmail-show-mime-function)) 2776 (funcall rmail-show-mime-function))
2751 (setq body-start (search-forward "\n\n" nil t)) 2777 (setq body-start (search-forward "\n\n" nil t))
2752 (narrow-to-region beg (point)) 2778 (narrow-to-region beg (point))
@@ -2791,11 +2817,15 @@ The current mail message becomes the message displayed."
2791 ;; Prepare the separator (blank line) before the body. 2817 ;; Prepare the separator (blank line) before the body.
2792 (goto-char (point-min)) 2818 (goto-char (point-min))
2793 (insert "\n") 2819 (insert "\n")
2794 ;; Unquote quoted From lines 2820 ;; Unquote quoted From lines.
2795 (while (re-search-forward "^>+From " nil t) 2821 (let ((fromline (if (eq 'mboxrd rmail-mbox-format)
2796 (beginning-of-line) 2822 "^>+From "
2797 (delete-char 1) 2823 "^>From "))
2798 (forward-line)) 2824 case-fold-search)
2825 (while (re-search-forward fromline nil t)
2826 (beginning-of-line)
2827 (delete-char 1)
2828 (forward-line)))
2799 (goto-char (point-min))) 2829 (goto-char (point-min)))
2800 ;; Copy the headers to the front of the message view buffer. 2830 ;; Copy the headers to the front of the message view buffer.
2801 (rmail-copy-headers beg end) 2831 (rmail-copy-headers beg end)
@@ -3869,6 +3899,7 @@ see the documentation of `rmail-resend'."
3869 (msgnum rmail-current-message) 3899 (msgnum rmail-current-message)
3870 (subject (concat "[" 3900 (subject (concat "["
3871 (let ((from (or (mail-fetch-field "From") 3901 (let ((from (or (mail-fetch-field "From")
3902 ;; FIXME - huh?
3872 (mail-fetch-field ">From")))) 3903 (mail-fetch-field ">From"))))
3873 (if from 3904 (if from
3874 (concat (mail-strip-quoted-names from) ": ") 3905 (concat (mail-strip-quoted-names from) ": ")
@@ -4194,6 +4225,7 @@ This has an effect only if a summary buffer exists."
4194;; Put the summary buffer back on the screen, if user wants that. 4225;; Put the summary buffer back on the screen, if user wants that.
4195(defun rmail-maybe-display-summary () 4226(defun rmail-maybe-display-summary ()
4196 (let ((selected (selected-window)) 4227 (let ((selected (selected-window))
4228 (buffer (current-buffer))
4197 window) 4229 window)
4198 ;; If requested, make sure the summary is displayed. 4230 ;; If requested, make sure the summary is displayed.
4199 (and rmail-summary-buffer (buffer-name rmail-summary-buffer) 4231 (and rmail-summary-buffer (buffer-name rmail-summary-buffer)
@@ -4215,7 +4247,8 @@ This has an effect only if a summary buffer exists."
4215 (progn 4247 (progn
4216 (select-window window) 4248 (select-window window)
4217 (enlarge-window (- rmail-summary-window-size (window-height)))) 4249 (enlarge-window (- rmail-summary-window-size (window-height))))
4218 (select-window selected))))) 4250 (select-window selected)
4251 (set-buffer buffer)))))
4219 4252
4220;;;; *** Rmail Local Fontification *** 4253;;;; *** Rmail Local Fontification ***
4221 4254
@@ -4550,7 +4583,7 @@ encoded string (and the same mask) will decode the string."
4550;;; Start of automatically extracted autoloads. 4583;;; Start of automatically extracted autoloads.
4551 4584
4552;;;### (autoloads (rmail-edit-current-message) "rmailedit" "rmailedit.el" 4585;;;### (autoloads (rmail-edit-current-message) "rmailedit" "rmailedit.el"
4553;;;;;; "78b8b7d5c679935c118d595d473d7c5e") 4586;;;;;; "791ea184628feb6335fe3e29f7234934")
4554;;; Generated autoloads from rmailedit.el 4587;;; Generated autoloads from rmailedit.el
4555 4588
4556(autoload 'rmail-edit-current-message "rmailedit" "\ 4589(autoload 'rmail-edit-current-message "rmailedit" "\
@@ -4707,7 +4740,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order.
4707 4740
4708;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic 4741;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic
4709;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels 4742;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels
4710;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "6cafe6b03e187b5836e3c359322b5cbf") 4743;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "856fc6e337d5398b302c448ee7a2315e")
4711;;; Generated autoloads from rmailsum.el 4744;;; Generated autoloads from rmailsum.el
4712 4745
4713(autoload 'rmail-summary "rmailsum" "\ 4746(autoload 'rmail-summary "rmailsum" "\
diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el
index e4e066bd642..004eb2e3247 100644
--- a/lisp/mail/rmailedit.el
+++ b/lisp/mail/rmailedit.el
@@ -167,10 +167,25 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
167 (if (or rmail-old-mime-state 167 (if (or rmail-old-mime-state
168 (not rmail-old-pruned)) 168 (not rmail-old-pruned))
169 (forward-line 1)) 169 (forward-line 1))
170 (while (re-search-forward "^>*From " nil t) 170 ;; When editing a non-MIME message, rmail-show-message-1 has unescaped
171 (beginning-of-line) 171 ;; ^>*From lines according to rmail-mbox-format. We are editing
172 (insert ">") 172 ;; the message as it was displayed, and need to put the escapes when done.
173 (forward-line)) 173 ;; When editing a MIME message, we are editing the "raw" message.
174 ;; ^>*From lines have not been escaped, but we still need to ensure
175 ;; a "^From " line is escaped so as not to break later parsing (?).
176 ;; With ^>+From lines, we have no way of knowing whether the person
177 ;; doing the editing escaped them or not, so it seems best to leave
178 ;; them alone. (This all assumes you are using rmailmm rather than
179 ;; something else that behaves differently.)
180 (let ((fromline (if (or (eq 'mboxo rmail-mbox-format)
181 rmail-mime-decoded)
182 "^From "
183 "^>*From "))
184 case-fold-search)
185 (while (re-search-forward fromline nil t)
186 (beginning-of-line)
187 (insert ">")
188 (forward-line)))
174 ;; Make sure buffer ends with a blank line so as not to run this 189 ;; Make sure buffer ends with a blank line so as not to run this
175 ;; message together with the following one. 190 ;; message together with the following one.
176 (goto-char (point-max)) 191 (goto-char (point-max))
@@ -201,6 +216,7 @@ This function runs the hooks `text-mode-hook' and `rmail-edit-mode-hook'.
201 (setq buffer-undo-list t) 216 (setq buffer-undo-list t)
202 (rmail-variables)) 217 (rmail-variables))
203 ;; If text has really changed, mark message as edited. 218 ;; If text has really changed, mark message as edited.
219 ;; FIXME we should do the comparison before escaping From lines.
204 (unless (and (= (length old) (- (point-max) (point-min))) 220 (unless (and (= (length old) (- (point-max) (point-min)))
205 (string= old (buffer-substring (point-min) (point-max)))) 221 (string= old (buffer-substring (point-min) (point-max))))
206 (setq old nil) 222 (setq old nil)
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index 612ccbdfd9e..cacc6e19416 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -428,7 +428,7 @@ nil for FUNCTION means all messages."
428 ;; This is how rmail makes the summary buffer reappear. 428 ;; This is how rmail makes the summary buffer reappear.
429 ;; We do this here to make the window the proper size. 429 ;; We do this here to make the window the proper size.
430 (rmail-select-summary nil) 430 (rmail-select-summary nil)
431 (set-buffer rmail-summary-buffer)) 431 (set-buffer sumbuf))
432 (rmail-summary-goto-msg mesg t t) 432 (rmail-summary-goto-msg mesg t t)
433 (rmail-summary-construct-io-menu) 433 (rmail-summary-construct-io-menu)
434 (message "Computing summary lines...done"))) 434 (message "Computing summary lines...done")))
diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el
index bf7b9abe2c1..fd7e49a65d5 100644
--- a/lisp/mail/unrmail.el
+++ b/lisp/mail/unrmail.el
@@ -1,6 +1,6 @@
1;;; unrmail.el --- convert Rmail Babyl files to mailbox files 1;;; unrmail.el --- convert Rmail Babyl files to mbox files
2 2
3;; Copyright (C) 1992, 2001-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1992, 2001-2012 Free Software Foundation, Inc.
4 4
5;; Maintainer: FSF 5;; Maintainer: FSF
6;; Keywords: mail 6;; Keywords: mail
@@ -26,7 +26,7 @@
26 26
27;;;###autoload 27;;;###autoload
28(defun batch-unrmail () 28(defun batch-unrmail ()
29 "Convert old-style Rmail Babyl files to system inbox format. 29 "Convert old-style Rmail Babyl files to mbox format.
30Specify the input Rmail Babyl file names as command line arguments. 30Specify the input Rmail Babyl file names as command line arguments.
31For each Rmail file, the corresponding output file name 31For each Rmail file, the corresponding output file name
32is made by adding `.mail' at the end. 32is made by adding `.mail' at the end.
@@ -45,9 +45,26 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
45(declare-function mail-mbox-from "mail-utils" ()) 45(declare-function mail-mbox-from "mail-utils" ())
46(defvar rmime-magic-string) ; in rmime.el, if you have it 46(defvar rmime-magic-string) ; in rmime.el, if you have it
47 47
48(defcustom unrmail-mbox-format 'mboxrd
49 "The mbox format that `unrmail' should produce.
50These formats separate messages using lines that start with \"From \".
51Therefore any lines in the message bodies that start with \"From \"
52must be quoted. The `mboxo' format just prepends a \">\" to such lines.
53This is not reversible, because given a line starting with \">From \" in
54an mboxo file, it is not possible to know whether the original had a \">\"
55or not. The `mxbord' format avoids this by also quoting \">From \" as
56\">>From \", and so on. For this reason, mboxrd is recommended.
57
58See also `rmail-mbox-format'."
59 :type '(choice (const mboxrd)
60 (const mboxro))
61 :version "24.4"
62 :group 'rmail-files)
63
48;;;###autoload 64;;;###autoload
49(defun unrmail (file to-file) 65(defun unrmail (file to-file)
50 "Convert old-style Rmail Babyl file FILE to system inbox format file TO-FILE." 66 "Convert old-style Rmail Babyl file FILE to mbox format file TO-FILE.
67The variable `unrmail-mbox-format' controls which mbox format to use."
51 (interactive "fUnrmail (babyl file): \nFUnrmail into (new mailbox file): ") 68 (interactive "fUnrmail (babyl file): \nFUnrmail into (new mailbox file): ")
52 (with-temp-buffer 69 (with-temp-buffer
53 ;; Read in the old Rmail file with no decoding. 70 ;; Read in the old Rmail file with no decoding.
@@ -224,13 +241,15 @@ For example, invoke `emacs -batch -f batch-unrmail RMAIL'."
224 (when keywords 241 (when keywords
225 (insert "X-RMAIL-KEYWORDS: " keywords "\n")) 242 (insert "X-RMAIL-KEYWORDS: " keywords "\n"))
226 (goto-char (point-min)) 243 (goto-char (point-min))
227 ;; ``Quote'' "\nFrom " as "\n>From " 244 ;; Convert From to >From, etc.
228 ;; (note that this isn't really quoting, as there is no requirement 245 (let ((case-fold-search nil)
229 ;; that "\n[>]+From " be quoted in the same transparent way.) 246 (fromline (if (eq 'mboxrd unrmail-mbox-format)
230 (let ((case-fold-search nil)) 247 "^>*From "
231 (while (search-forward "\nFrom " nil t) 248 "^From ")))
232 (forward-char -5) 249 (while (re-search-forward fromline nil t)
233 (insert ?>))) 250 (beginning-of-line)
251 (insert ?>)
252 (forward-line 1)))
234 (goto-char (point-max)) 253 (goto-char (point-max))
235 ;; Add terminator blank line to message. 254 ;; Add terminator blank line to message.
236 (insert "\n") 255 (insert "\n")
diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in
index 756d2b949fa..cb2cba466f6 100644
--- a/lisp/makefile.w32-in
+++ b/lisp/makefile.w32-in
@@ -104,27 +104,39 @@ WINS_CEDET=\
104 cedet/semantic/symref \ 104 cedet/semantic/symref \
105 cedet/semantic/wisent 105 cedet/semantic/wisent
106 106
107WINS_BASIC=\ 107# The list of subdirectories is subdivided into 4 more or less equal
108# parts so that we could have 4-way parallelism while compiling Lisp
109# files, which helps to slash bootstrap times. See the 'compile'
110# target below.
111WINS_BASIC1=\
108 calc \ 112 calc \
109 calendar \ 113 calendar \
110 emacs-lisp \ 114 emacs-lisp \
111 emulation \
112 erc \ 115 erc \
113 eshell \ 116 net \
117 url
118
119WINS_BASIC2=\
114 gnus \ 120 gnus \
115 international \ 121 international \
116 language \ 122 language \
117 mail \ 123 mail
124
125WINS_BASIC3=\
126 emulation \
118 mh-e \ 127 mh-e \
119 net \
120 nxml \ 128 nxml \
121 org \ 129 org \
122 play \ 130 play \
123 progmodes \
124 textmodes \ 131 textmodes \
125 url \
126 vc 132 vc
127 133
134WINS_BASIC4=\
135 eshell \
136 progmodes
137
138WINS_BASIC= $(WINS_BASIC1) $(WINS_BASIC2) $(WINS_BASIC3) $(WINS_BASIC4)
139
128# Directories with lisp files to compile, and to extract data from 140# Directories with lisp files to compile, and to extract data from
129# (customs, autoloads, etc.) 141# (customs, autoloads, etc.)
130WINS_UPDATES=$(WINS_BASIC) \ 142WINS_UPDATES=$(WINS_BASIC) \
@@ -311,22 +323,71 @@ TAGS-LISP-CMD: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsf
311# compiled find the right files. 323# compiled find the right files.
312 324
313# Need separate version for sh and native cmd.exe 325# Need separate version for sh and native cmd.exe
314compile: $(lisp)/subdirs.el compile-$(SHELLTYPE) doit 326compile: $(lisp)/subdirs.el compile0-$(SHELLTYPE) compile1-$(SHELLTYPE) compile2-$(SHELLTYPE) compile3-$(SHELLTYPE) compile4-$(SHELLTYPE) doit
315 327
316compile-CMD: autoloads 328compile0-CMD: autoloads
317# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g 329# -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g
318 for %%f in ($(COMPILE_FIRST)) do \ 330 for %%f in ($(COMPILE_FIRST)) do \
319 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f 331 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f
320 for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do \ 332
333compile1-CMD: autoloads compile0-CMD
334 for %%f in (. $(WINS_BASIC1)) do for %%g in (%%f/*.el) do \
321 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g 335 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
322 336
323compile-SH: autoloads 337compile2-CMD: autoloads compile0-CMD
338 for %%f in ($(WINS_BASIC2)) do for %%g in (%%f/*.el) do \
339 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
340
341compile3-CMD: autoloads compile0-CMD
342 for %%f in ($(WINS_BASIC3)) do for %%g in (%%f/*.el) do \
343 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
344
345compile4-CMD: autoloads compile0-CMD
346 for %%f in ($(WINS_BASIC4) $(WINS_CEDET) term obsolete) do for %%g in (%%f/*.el) do \
347 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done %%f/%%g
348
349compile0-SH: autoloads
324# for elc in $(lisp)/*.elc $(lisp)/*/*.elc; do attrib -r $$elc; done 350# for elc in $(lisp)/*.elc $(lisp)/*/*.elc; do attrib -r $$elc; done
325 for el in $(COMPILE_FIRST); do \ 351 for el in $(COMPILE_FIRST); do \
326 echo Compiling $$el; \ 352 echo Compiling $$el; \
327 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \ 353 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \
328 done 354 done
329 for dir in $(lisp) $(WINS); do \ 355
356compile1-SH: autoloads compile0-SH
357 for dir in $(lisp) $(WINS_BASIC1); do \
358 for el in $$dir/*.el; do \
359 if test -f $$el; \
360 then \
361 echo Compiling $$el; \
362 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \
363 fi \
364 done; \
365 done
366
367compile2-SH: autoloads compile0-SH
368 for dir in $(WINS_BASIC2); do \
369 for el in $$dir/*.el; do \
370 if test -f $$el; \
371 then \
372 echo Compiling $$el; \
373 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \
374 fi \
375 done; \
376 done
377
378compile3-SH: autoloads compile0-SH
379 for dir in $(WINS_BASIC3); do \
380 for el in $$dir/*.el; do \
381 if test -f $$el; \
382 then \
383 echo Compiling $$el; \
384 $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f batch-byte-compile-if-not-done $$el; \
385 fi \
386 done; \
387 done
388
389compile4-SH: autoloads compile0-SH
390 for dir in $(WINS_BASIC4) $(WINS_CEDET) terms obsolete; do \
330 for el in $$dir/*.el; do \ 391 for el in $$dir/*.el; do \
331 if test -f $$el; \ 392 if test -f $$el; \
332 then \ 393 then \
@@ -447,23 +508,24 @@ $(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC) $(lisp)/subdirs.el
447 $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) $(MAKE) ./mh-e 508 $(ARGQUOTE)$(lisp)/mh-e/mh-loaddefs.el$(ARGQUOTE) $(MAKE) ./mh-e
448 509
449# Update TRAMP internal autoloads. Maybe we could move tramp*.el into 510# Update TRAMP internal autoloads. Maybe we could move tramp*.el into
450# its own subdirectory. OTOH, it does not hurt to keep them in 511# an own subdirectory. OTOH, it does not hurt to keep them in
451# lisp/net. 512# lisp/net.
452TRAMP_SRC = $(lisp)/net/tramp.el $(lisp)/net/tramp-cache.el \ 513TRAMP_DIR = $(lisp)/net
453 $(lisp)/net/tramp-cmds.el $(lisp)/net/tramp-compat.el \ 514TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-adb.el \
454 $(lisp)/net/tramp-ftp.el $(lisp)/net/tramp-gvfs.el \ 515 $(TRAMP_DIR)/tramp-cache.el $(TRAMP_DIR)/tramp-cmds.el \
455 $(lisp)/net/tramp-gw.el $(lisp)/net/tramp-sh.el \ 516 $(TRAMP_DIR)/tramp-compat.el $(TRAMP_DIR)/tramp-ftp.el \
456 $(lisp)/net/tramp-smb.el $(lisp)/net/tramp-uu.el \ 517 $(TRAMP_DIR)/tramp-gvfs.el $(TRAMP_DIR)/tramp-gw.el \
457 $(lisp)/net/trampver.el 518 $(TRAMP_DIR)/tramp-sh.el $(TRAMP_DIR)/tramp-smb.el \
458 519 $(TRAMP_DIR)/tramp-uu.el $(TRAMP_DIR)/trampver.el
459$(lisp)/net/tramp-loaddefs.el: $(TRAMP_SRC) $(lisp)/subdirs.el 520
521$(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) $(lisp)/subdirs.el
460 "$(EMACS)" $(EMACSOPT) \ 522 "$(EMACS)" $(EMACSOPT) \
461 -l autoload \ 523 -l autoload \
462 --eval $(ARGQUOTE)(setq generate-autoload-cookie $(DQUOTE);;;###tramp-autoload$(DQUOTE))$(ARGQUOTE) \ 524 --eval $(ARGQUOTE)(setq generate-autoload-cookie $(DQUOTE);;;###tramp-autoload$(DQUOTE))$(ARGQUOTE) \
463 --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \ 525 --eval $(ARGQUOTE)(setq find-file-suppress-same-file-warnings t)$(ARGQUOTE) \
464 --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \ 526 --eval $(ARGQUOTE)(setq make-backup-files nil)$(ARGQUOTE) \
465 -f w32-batch-update-autoloads \ 527 -f w32-batch-update-autoloads \
466 $(ARGQUOTE)$(lisp)/net/tramp-loaddefs.el$(ARGQUOTE) $(MAKE) ./net 528 $(ARGQUOTE)$(TRAMP_DIR)/tramp-loaddefs.el$(ARGQUOTE) $(MAKE) ./net
467 529
468# Prepare a bootstrap in the lisp subdirectory. 530# Prepare a bootstrap in the lisp subdirectory.
469# 531#
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index adc8707f011..cf8f1ac2b16 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,136 @@
12012-11-25 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.4.
4
5 * mh-e.el (Version, mh-version): Update for release 8.4.
6
7 * mh-comp.el (mh-regexp-in-field-syntax-table): Fix docstring.
8 (mh-edit-again): Format.
9 (mh-components-to-list): Fix docstring.
10 (mh-regexp-in-field-p): Remove unused variable `field'.
11
12 * mh-compat.el (mh-define-obsolete-variable-alias)
13 (mh-make-obsolete-variable): New macros to fix XEmacs compiler
14 warnings.
15
16 * mh-letter.el (mh-yank-hooks): Use new mh-make-obsolete-variable
17 macro.
18
19 * mh-e.el (mh-kill-folder-suppress-prompt-hooks): Use
20 new mh-define-obsolete-variable-alias macro.
21
22 * mh-compat.el (mh-cl-flet): New alias for cl-flet on Emacs 24 and
23 flet elsewhere.
24
25 * mh-thread.el (mh-thread-set-tables): Replace flet with new alias
26 mh-cl-flet.
27
28 * mh-show.el (mh-gnus-article-highlight-citation):
29 Replace flet with new alias mh-cl-flet.
30
31 * mh-mime.el (mh-display-with-external-viewer, mh-mime-display)
32 (mh-press-button, mh-push-button, mh-display-emphasis): Replace
33 flet with new alias mh-cl-flet.
34
35 * mh-e.el (mh-invisible-header-fields-internal):
36 Remove trailing whitespace.
37
382012-11-25 Jeffrey C Honig <jch@honig.net>
39
40 * mh-comp.el: (mh-edit-again): Use the components file to specify
41 default values for missing headers in the draft.
42 (mh-regexp-in-field-syntax-table, mh-fcc-syntax-table)
43 (mh-addr-syntax-table, mh-regexp-in-field-p): Use a syntax table
44 so we'll properly parse non-address fields.
45 (mh-components-to-list, mh-extract-header-field): New functions to
46 read components file.
47 (mh-find-components, mh-send-sub): Move code to locate components
48 file into a new function.
49 (mh-insert-auto-fields, mh-modify-header-field): New syntax for
50 calling mh-regexp-in-field-p (closes SF #1708292).
51
52 * mh-e.el (mh-invisible-header-fields-internal): Added: X-xsi.
53 (addresses SF #1916032).
54
55 * mh-folder.el (mh-inc-folder): Call mh-process-or-undo-commands
56 before running to insure we do not lose any pending changes.
57 (closes SF #2321115).
58
592012-11-25 Ted Phelps <phelps@gnusto.com>
60
61 Postpone junk processing (closes SF #2945712). Patch submitted by
62 Ted Phelps and refined by Bill Wohler.
63
64 * mh-e.el (mh-blacklist, mh-whitelist): New variables.
65 (mh-whitelist-preserves-sequences-flag): New option.
66 (mh-before-commands-processed-hook): Update documentation.
67 (mh-blacklist-msg-hook, mh-whitelist-msg-hook): New hooks.
68 (mh-folder-blacklisted, mh-folder-whitelisted): New faces.
69 * mh-folder.el (mh-folder-message-menu): Add "Junk" to "Undo."
70 (mh-folder-font-lock-keywords): Add regexps for blacklisted and
71 whitelisted messages.
72 (mh-folder-mode): Add mh-blacklist and mh-whitelist variables.
73 (mh-execute-commands): Update documentation.
74 (mh-undo, mh-outstanding-commands-p, mh-process-commands)
75 (mh-delete-a-msg, mh-refile-a-msg, mh-undo-msg): Handle
76 blacklisted and whitelisted messages.
77 * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Update to put
78 messages in blacklist and whitelist respectively for latter
79 processing.
80 (mh-blacklist-a-msg, mh-junk-whitelist-a-msg): New function to
81 support previous functions.
82 (mh-junk-blacklist-disposition): New function.
83 (mh-junk-process-blacklist, mh-junk-process-whitelist): New
84 functions that perform the blacklisting and whitelisting
85 respectively that used to be performed by mh-junk-blacklist and
86 mh-junk-whitelist.
87 * mh-scan.el (mh-scan-blacklisted-msg-regexp)
88 (mh-scan-whitelisted-msg-regexp): New scan line regexps.
89 (mh-scan-good-msg-regexp): Add B and W characters to regexp.
90 (mh-scan-cmd-note-width): Update documentation.
91 (mh-note-blacklisted, mh-note-whitelisted): New scan line
92 characters.
93 * mh-search.el (mh-index-execute-commands): Handle blacklisted and
94 whitelisted messages.
95
962012-11-25 Jeffrey C Honig <jch@honig.net>
97
98 * mh-e.el (mh-invisible-header-fields-internal): Added:
99 Bounces-To:, Bounces_to:, X-ACL-Warn:, X-BFI:, X-BPS1:, X-BPS2:,
100 X-Campaign-Id:, X-Campaign:, X-Cloudmark-SP-, X-Destination-ID:,
101 X-detected-operating-system:, X-DocGen-Version:, X-EM-,
102 X-Email-Type-Id:, X-FB-SS:, X-FuHaFi:, X-MailFlowPolicy:,
103 X-mail_abuse-inquires, X-MailingID:, X-Match:,
104 X-MaxCode-Template:, X-ME-Bayesian:, X-Sendergroup:, X-SFDC-,
105 X-SMFBL:, X-SMHeaderMap:, X-VGI-OESCD:, X-VirtualServer:,
106 X-VirtualServerGroup:, X-XPT-XSL-Name:, X-Y-GMX-Trusted:,
107 X-XWALL-, X-ZixNet:. Changed X-Habeas-SWE- to X-Habeas-. Updated
108 the comment. (addresses SF #1916032).
109
1102012-11-25 Bill Wohler <wohler@newt.com>
111
112 * mh-e.el (mh-invisible-header-fields-internal): Add
113 X-AnalysisOut, X-Authentication-Info, X-Auto-Response-Suppress,
114 X-Bayes-Prob, X-Cam-, X-CanIt-Geo, X-Completed, X-Facebook,
115 X-Forwarded-, X-Generated-By, X-Headers-End, X-IEEE-UCE,
116 X-Jira-Fingerprint, X-Junkmail-, X-Launchpad-, X-MXL-Hash,
117 X-Notification-, X-Notifications, X-Oracle-Calendar. Replace
118 X-DCC-Usenix-Metrics with X-DCC- (addresses SF #1916032).
119
1202012-11-25 Jeffrey C Honig <jch@honig.net>
121
122 * mh-letter.el (mh-yank-cur-msg): Replace usage of set-buffer with
123 with-current-buffer in mh-yang-cur-msg, semantics changed in emacs
124 23 and we do not want to use set-buffer unless we actually want to
125 change the buffer the user is looking at (closes SF #2830504).
126
127 * mh-show.el (mh-show-folder-map): Add missing key binding for
128 mh-show-pack-folder (closes SF #3466086).
129
1302012-11-25 Bill Wohler <wohler@newt.com>
131
132 * mh-e.el (Version, mh-version): Add +bzr to version.
133
12012-10-23 Stefan Monnier <monnier@iro.umontreal.ca> 1342012-10-23 Stefan Monnier <monnier@iro.umontreal.ca>
2 135
3 * mh-letter.el (mh-yank-hooks): Use make-obsolete-variable. 136 * mh-letter.el (mh-yank-hooks): Use make-obsolete-variable.
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index b2a5f023224..3f2ee056bdf 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -121,6 +121,42 @@ Used by the \\[mh-edit-again] and \\[mh-extract-rejected-mail] commands.")
121 syntax-table) 121 syntax-table)
122 "Syntax table used by MH-E while in MH-Letter mode.") 122 "Syntax table used by MH-E while in MH-Letter mode.")
123 123
124(defvar mh-regexp-in-field-syntax-table nil
125 "Specify a syntax table for `mh-regexp-in-field-p' to use.")
126
127(defvar mh-fcc-syntax-table
128 (let ((syntax-table (make-syntax-table text-mode-syntax-table)))
129 (modify-syntax-entry ?+ "w" syntax-table)
130 (modify-syntax-entry ?/ "w" syntax-table)
131 syntax-table)
132 "Syntax table used by MH-E while searching an Fcc field.")
133
134(defvar mh-addr-syntax-table
135 (let ((syntax-table (make-syntax-table text-mode-syntax-table)))
136 (modify-syntax-entry ?! "w" syntax-table)
137 (modify-syntax-entry ?# "w" syntax-table)
138 (modify-syntax-entry ?$ "w" syntax-table)
139 (modify-syntax-entry ?% "w" syntax-table)
140 (modify-syntax-entry ?& "w" syntax-table)
141 (modify-syntax-entry ?' "w" syntax-table)
142 (modify-syntax-entry ?* "w" syntax-table)
143 (modify-syntax-entry ?+ "w" syntax-table)
144 (modify-syntax-entry ?- "w" syntax-table)
145 (modify-syntax-entry ?/ "w" syntax-table)
146 (modify-syntax-entry ?= "w" syntax-table)
147 (modify-syntax-entry ?? "w" syntax-table)
148 (modify-syntax-entry ?^ "w" syntax-table)
149 (modify-syntax-entry ?_ "w" syntax-table)
150 (modify-syntax-entry ?` "w" syntax-table)
151 (modify-syntax-entry ?{ "w" syntax-table)
152 (modify-syntax-entry ?| "w" syntax-table)
153 (modify-syntax-entry ?} "w" syntax-table)
154 (modify-syntax-entry ?~ "w" syntax-table)
155 (modify-syntax-entry ?. "w" syntax-table)
156 (modify-syntax-entry ?@ "w" syntax-table)
157 syntax-table)
158 "Syntax table used by MH-E while searching an address field.")
159
124(defvar mh-send-args "" 160(defvar mh-send-args ""
125 "Extra args to pass to \"send\" command.") 161 "Extra args to pass to \"send\" command.")
126 162
@@ -391,13 +427,81 @@ See also `mh-send'."
391 (mh-read-draft "clean-up" (mh-msg-filename message) nil))))) 427 (mh-read-draft "clean-up" (mh-msg-filename message) nil)))))
392 (mh-clean-msg-header (point-min) mh-new-draft-cleaned-headers nil) 428 (mh-clean-msg-header (point-min) mh-new-draft-cleaned-headers nil)
393 (mh-insert-header-separator) 429 (mh-insert-header-separator)
430 ;; Merge in components
431 (mh-mapc
432 (function
433 (lambda (header-field)
434 (let ((field (car header-field))
435 (value (cdr header-field))
436 (case-fold-search t))
437 (cond
438 ;; Address field
439 ((string-match field "^To$\\|^Cc$\\|^From$")
440 (cond
441 ((not (mh-goto-header-field (concat field ":")))
442 ;; Header field does not exist, add it
443 (mh-goto-header-end 0)
444 (insert field ": " value "\n"))
445 ((string-equal value "")
446 ;; Header field already exists and no value
447 )
448 (t
449 ;; Header field exists and we have a value
450 (let (address mailbox (alias (mh-alias-expand value)))
451 (and alias
452 (setq address (ietf-drums-parse-address alias))
453 (setq mailbox (car address)))
454 ;; XXX - Need to parse all addresses out of field
455 (if (and
456 (not (mh-regexp-in-field-p
457 (concat "\\b" (regexp-quote value) "\\b") field))
458 mailbox
459 (not (mh-regexp-in-field-p
460 (concat "\\b" (regexp-quote mailbox) "\\b") field)))
461 (insert " " value ","))
462 ))))
463 ((string-match field "^Fcc$")
464 ;; Folder reference
465 (mh-modify-header-field field value))
466 ;; Text field, that's an easy case
467 (t
468 (mh-modify-header-field field value))))))
469 (mh-components-to-list (mh-find-components)))
394 (goto-char (point-min)) 470 (goto-char (point-min))
395 (save-buffer) 471 (save-buffer)
396 (mh-compose-and-send-mail draft "" from-folder nil nil nil nil nil nil 472 (mh-compose-and-send-mail
397 config) 473 draft "" from-folder nil nil nil nil nil nil config)
398 (mh-letter-mode-message) 474 (mh-letter-mode-message)
399 (mh-letter-adjust-point))) 475 (mh-letter-adjust-point)))
400 476
477(defun mh-extract-header-field ()
478 "Extract field name and field value from the field at point.
479Returns a list of field name and value (which may be null)."
480 (let ((end (save-excursion (mh-header-field-end)
481 (point))))
482 (if (looking-at mh-letter-header-field-regexp)
483 (save-excursion
484 (goto-char (match-end 1))
485 (forward-char 1)
486 (skip-chars-forward " \t")
487 (cons (match-string-no-properties 1) (buffer-substring-no-properties (point) end))))))
488
489
490(defun mh-components-to-list (components)
491 "Convert the COMPONENTS file to a list of field names and values."
492 (with-current-buffer (get-buffer-create mh-temp-buffer)
493 (erase-buffer)
494 (insert-file-contents components)
495 (goto-char (point-min))
496 (let
497 ((header-fields nil))
498 (while (mh-in-header-p)
499 (setq header-fields (append header-fields (list (mh-extract-header-field))))
500 (mh-header-field-end)
501 (forward-char 1)
502 )
503 header-fields)))
504
401;;;###mh-autoload 505;;;###mh-autoload
402(defun mh-extract-rejected-mail (message) 506(defun mh-extract-rejected-mail (message)
403 "Edit a MESSAGE that was returned by the mail system. 507 "Edit a MESSAGE that was returned by the mail system.
@@ -773,6 +877,22 @@ Optional argument BUFFER can be used to specify the buffer."
773 (t 877 (t
774 nil)))) 878 nil))))
775 879
880(defun mh-find-components ()
881 "Return the path to the components file."
882 (let (components)
883 (cond
884 ((file-exists-p
885 (setq components
886 (expand-file-name mh-comp-formfile mh-user-path)))
887 components)
888 ((file-exists-p
889 (setq components
890 (expand-file-name mh-comp-formfile mh-lib)))
891 components)
892 (t
893 (error "Can't find %s in %s or %s"
894 mh-comp-formfile mh-user-path mh-lib)))))
895
776(defun mh-send-sub (to cc subject config) 896(defun mh-send-sub (to cc subject config)
777 "Do the real work of composing and sending a letter. 897 "Do the real work of composing and sending a letter.
778Expects the TO, CC, and SUBJECT fields as arguments. 898Expects the TO, CC, and SUBJECT fields as arguments.
@@ -782,19 +902,7 @@ CONFIG is the window configuration before sending mail."
782 (message "Composing a message...") 902 (message "Composing a message...")
783 (let ((draft (mh-read-draft 903 (let ((draft (mh-read-draft
784 "message" 904 "message"
785 (let (components) 905 (mh-find-components)
786 (cond
787 ((file-exists-p
788 (setq components
789 (expand-file-name mh-comp-formfile mh-user-path)))
790 components)
791 ((file-exists-p
792 (setq components
793 (expand-file-name mh-comp-formfile mh-lib)))
794 components)
795 (t
796 (error "Can't find %s in %s or %s"
797 mh-comp-formfile mh-user-path mh-lib))))
798 nil))) 906 nil)))
799 (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc) 907 (mh-insert-fields "To:" to "Subject:" subject "Cc:" cc)
800 (goto-char (point-max)) 908 (goto-char (point-max))
@@ -1071,7 +1179,7 @@ discarded."
1071 (insert " " value) 1179 (insert " " value)
1072 (delete-region (point) (mh-line-end-position))) 1180 (delete-region (point) (mh-line-end-position)))
1073 ((and (not overwrite-flag) 1181 ((and (not overwrite-flag)
1074 (mh-regexp-in-field-p (concat "\\b" value "\\b") field)) 1182 (mh-regexp-in-field-p (concat "\\b" (regexp-quote value) "\\b") field))
1075 ;; Already there, do nothing. 1183 ;; Already there, do nothing.
1076 ) 1184 )
1077 ((and (not overwrite-flag) 1185 ((and (not overwrite-flag)
@@ -1083,18 +1191,33 @@ discarded."
1083 1191
1084(defun mh-regexp-in-field-p (regexp &rest fields) 1192(defun mh-regexp-in-field-p (regexp &rest fields)
1085 "Non-nil means REGEXP was found in FIELDS." 1193 "Non-nil means REGEXP was found in FIELDS."
1086 (save-excursion 1194 (let ((old-syntax-table (syntax-table)))
1087 (let ((search-result nil) 1195 (unwind-protect
1088 (field)) 1196 (save-excursion
1089 (while fields 1197 (let ((search-result nil))
1090 (setq field (car fields)) 1198 (while fields
1091 (if (and (mh-goto-header-field field) 1199 (let ((field (car fields))
1092 (re-search-forward 1200 (syntax-table mh-regexp-in-field-syntax-table))
1093 regexp (save-excursion (mh-header-field-end)(point)) t)) 1201 (if (null syntax-table)
1094 (setq fields nil 1202 (let ((case-fold-search t))
1095 search-result t) 1203 (cond
1096 (setq fields (cdr fields)))) 1204 ((string-match field "^To$\\|^[BD]?cc$\\|^From$")
1097 search-result))) 1205 (setq syntax-table mh-addr-syntax-table))
1206 ((string-match field "^Fcc$")
1207 (setq syntax-table mh-fcc-syntax-table))
1208 (t
1209 (setq syntax-table (syntax-table)))
1210 )))
1211 (if (and (mh-goto-header-field field)
1212 (set-syntax-table syntax-table)
1213 (re-search-forward
1214 regexp (save-excursion (mh-header-field-end)(point)) t))
1215 (setq fields nil
1216 search-result t)
1217 (setq fields (cdr fields)))
1218 (set-syntax-table old-syntax-table)))
1219 search-result))
1220 (set-syntax-table old-syntax-table))))
1098 1221
1099(defun mh-ascii-buffer-p () 1222(defun mh-ascii-buffer-p ()
1100 "Check if current buffer is entirely composed of ASCII. 1223 "Check if current buffer is entirely composed of ASCII.
diff --git a/lisp/mh-e/mh-compat.el b/lisp/mh-e/mh-compat.el
index 4a93109e7a4..973a5ca5833 100644
--- a/lisp/mh-e/mh-compat.el
+++ b/lisp/mh-e/mh-compat.el
@@ -75,6 +75,12 @@ introduced in Emacs 22."
75 'cancel-timer 75 'cancel-timer
76 'delete-itimer)) 76 'delete-itimer))
77 77
78;; Emacs 24 renamed flet to cl-flet.
79(defalias 'mh-cl-flet
80 (if (fboundp 'cl-flet)
81 'cl-flet
82 'flet))
83
78(defun mh-display-color-cells (&optional display) 84(defun mh-display-color-cells (&optional display)
79 "Return the number of color cells supported by DISPLAY. 85 "Return the number of color cells supported by DISPLAY.
80This function is used by XEmacs to return 2 when `device-color-cells' 86This function is used by XEmacs to return 2 when `device-color-cells'
@@ -242,6 +248,40 @@ This function returns nil on those systems."
242This function returns nil on those systems." 248This function returns nil on those systems."
243 nil) 249 nil)
244 250
251(defmacro mh-define-obsolete-variable-alias
252 (obsolete-name current-name &optional when docstring)
253 "Make OBSOLETE-NAME a variable alias for CURRENT-NAME and mark it obsolete.
254See documentation for `define-obsolete-variable-alias' for a description
255of the arguments OBSOLETE-NAME, CURRENT-NAME, and perhaps WHEN
256and DOCSTRING. This macro is used by XEmacs that lacks WHEN and
257DOCSTRING arguments."
258 (if (featurep 'xemacs)
259 `(define-obsolete-variable-alias ,obsolete-name ,current-name)
260 `(define-obsolete-variable-alias ,obsolete-name ,current-name ,when ,docstring)))
261
262(defmacro mh-make-obsolete-variable (obsolete-name current-name &optional when access-type)
263 "Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
264See documentation for `make-obsolete-variable' for a description
265of the arguments OBSOLETE-NAME, CURRENT-NAME, and perhaps WHEN
266and ACCESS-TYPE. This macro is used by XEmacs that lacks WHEN and
267ACCESS-TYPE arguments."
268 (if (featurep 'xemacs)
269 `(make-obsolete-variable ,obsolete-name ,current-name)
270 `(make-obsolete-variable ,obsolete-name ,current-name ,when ,access-type)))
271
272(defmacro mh-make-obsolete-variable (obsolete-name current-name &optional when access-type)
273 "Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
274See documentation for `make-obsolete-variable' for a description
275of the arguments OBSOLETE-NAME, CURRENT-NAME, and perhaps WHEN
276and ACCESS-TYPE. This macro is used by XEmacs that lacks WHEN and
277ACCESS-TYPE arguments and by Emacs versions that lack ACCESS-TYPE,
278introduced in Emacs 24."
279 (if (featurep 'xemacs)
280 `(make-obsolete-variable ,obsolete-name ,current-name)
281 (if (< emacs-major-version 24)
282 `(make-obsolete-variable ,obsolete-name ,current-name ,when)
283 `(make-obsolete-variable ,obsolete-name ,current-name ,when ,access-type))))
284
245(defun-mh mh-match-string-no-properties 285(defun-mh mh-match-string-no-properties
246 match-string-no-properties (num &optional string) 286 match-string-no-properties (num &optional string)
247 "Return string of text matched by last search, without text properties. 287 "Return string of text matched by last search, without text properties.
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 705c92b0b4c..3b37b9e799c 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
8;; Version: 8.3.1 8;; Version: 8.4
9;; Keywords: mail 9;; Keywords: mail
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -127,7 +127,7 @@
127;; Try to keep variables local to a single file. Provide accessors if 127;; Try to keep variables local to a single file. Provide accessors if
128;; variables are shared. Use this section as a last resort. 128;; variables are shared. Use this section as a last resort.
129 129
130(defconst mh-version "8.3.1" "Version number of MH-E.") 130(defconst mh-version "8.4" "Version number of MH-E.")
131 131
132;; Variants 132;; Variants
133 133
@@ -230,6 +230,11 @@ User's mail folder directory.")
230(defvar mh-arrow-marker nil 230(defvar mh-arrow-marker nil
231 "Marker for arrow display in fringe.") 231 "Marker for arrow display in fringe.")
232 232
233(defvar mh-blacklist nil
234 "List of messages to use to train the junk filter.
235This variable can be used by
236`mh-before-commands-processed-hook'.")
237
233(defvar mh-colors-available-flag nil 238(defvar mh-colors-available-flag nil
234 "Non-nil means colors are available.") 239 "Non-nil means colors are available.")
235 240
@@ -291,6 +296,11 @@ Elements have the form (SEQUENCE . MESSAGES).")
291 "Stack of operations that change the folder view. 296 "Stack of operations that change the folder view.
292These operations include narrowing or threading.") 297These operations include narrowing or threading.")
293 298
299(defvar mh-whitelist nil
300 "List of messages to use to train the junk filter.
301This variable can be used by
302`mh-before-commands-processed-hook'.")
303
294;; MH-Show Locals (alphabetical) 304;; MH-Show Locals (alphabetical)
295 305
296(defvar mh-globals-hash (make-hash-table) 306(defvar mh-globals-hash (make-hash-table)
@@ -2215,6 +2225,17 @@ commands."
2215 :group 'mh-sequences 2225 :group 'mh-sequences
2216 :package-version '(MH-E . "7.0")) 2226 :package-version '(MH-E . "7.0"))
2217 2227
2228(defcustom-mh mh-whitelist-preserves-sequences-flag t
2229 "*Non-nil means that sequences are preserved when messages are whitelisted.
2230
2231If a message is in any sequence (except \"Previous-Sequence:\"
2232and \"cur\") when it is whitelisted, then it will still be in
2233those sequences in the destination folder. If this behavior is
2234not desired, then turn off this option."
2235 :type 'boolean
2236 :group 'mh-sequences
2237 :package-version '(MH-E . "8.4"))
2238
2218;;; Reading Your Mail (:group 'mh-show) 2239;;; Reading Your Mail (:group 'mh-show)
2219 2240
2220(defcustom-mh mh-bury-show-buffer-flag t 2241(defcustom-mh mh-bury-show-buffer-flag t
@@ -2400,7 +2421,8 @@ of citations entirely, choose \"None\"."
2400;; "X-Mailer:" ; 2421;; "X-Mailer:" ;
2401;; "X-Operator:" ; Similar to X-Mailer, so display it 2422;; "X-Operator:" ; Similar to X-Mailer, so display it
2402 2423
2403;; Keep fields alphabetized (set sort-fold-case to t first). 2424;; Keep fields alphabetized with case folding. Use M-:(setq
2425;; sort-fold-case t) from the minibuffer to accomplish this.
2404;; Mention source, if known. 2426;; Mention source, if known.
2405(defvar mh-invisible-header-fields-internal 2427(defvar mh-invisible-header-fields-internal
2406 '( 2428 '(
@@ -2418,6 +2440,8 @@ of citations entirely, choose \"None\"."
2418 "Auto-forwarded:" ; RFC 2156 2440 "Auto-forwarded:" ; RFC 2156
2419 "Autoforwarded:" ; RFC 2156 2441 "Autoforwarded:" ; RFC 2156
2420 "Bestservhost:" 2442 "Bestservhost:"
2443 "Bounces-To:"
2444 "Bounces_to:"
2421 "Bytes:" 2445 "Bytes:"
2422 "Cancel-Key:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2446 "Cancel-Key:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2423 "Cancel-Lock:" ; NNTP posts 2447 "Cancel-Lock:" ; NNTP posts
@@ -2523,9 +2547,11 @@ of citations entirely, choose \"None\"."
2523 "X-Abuse-Info:" 2547 "X-Abuse-Info:"
2524 "X-Accept-Language:" ; Netscape/Mozilla 2548 "X-Accept-Language:" ; Netscape/Mozilla
2525 "X-Ack:" 2549 "X-Ack:"
2550 "X-ACL-Warn:" ; http://www.exim.org
2526 "X-Admin:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2551 "X-Admin:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2527 "X-Administrivia-To:" 2552 "X-Administrivia-To:"
2528 "X-AMAZON" ; Amazon.com 2553 "X-AMAZON" ; Amazon.com
2554 "X-AnalysisOut:" ; Exchange
2529 "X-AntiAbuse:" ; cPanel 2555 "X-AntiAbuse:" ; cPanel
2530 "X-Antivirus-Scanner:" 2556 "X-Antivirus-Scanner:"
2531 "X-AOL-IP:" ; AOL WebMail 2557 "X-AOL-IP:" ; AOL WebMail
@@ -2535,18 +2561,30 @@ of citations entirely, choose \"None\"."
2535 "X-AuditID:" 2561 "X-AuditID:"
2536 "X-Authenticated-Info:" ; Verizon.net? 2562 "X-Authenticated-Info:" ; Verizon.net?
2537 "X-Authenticated-Sender:" ; AT&T Message Center (webmail) 2563 "X-Authenticated-Sender:" ; AT&T Message Center (webmail)
2564 "X-Authentication-Info:" ; verizon.net?
2538 "X-Authentication-Warning:" ; sendmail 2565 "X-Authentication-Warning:" ; sendmail
2539 "X-Authority-Analysis:" 2566 "X-Authority-Analysis:"
2567 "X-Auto-Response-Suppress:" ; Exchange
2540 "X-Barracuda-" ; Barracuda spam scores 2568 "X-Barracuda-" ; Barracuda spam scores
2569 "X-Bayes-Prob:" ; IEEE spam filter
2541 "X-Beenthere:" ; Mailman mailing list manager 2570 "X-Beenthere:" ; Mailman mailing list manager
2571 "X-BFI:"
2542 "X-Bigfish:" 2572 "X-Bigfish:"
2543 "X-Bogosity:" ; bogofilter 2573 "X-Bogosity:" ; bogofilter
2574 "X-BPS1:" ; http://www.boggletools.com
2575 "X-BPS2:" ; http://www.boggletools.com
2544 "X-Brightmail-Tracker:" ; Brightmail 2576 "X-Brightmail-Tracker:" ; Brightmail
2545 "X-BrightmailFiltered:" ; Brightmail 2577 "X-BrightmailFiltered:" ; Brightmail
2546 "X-Bugzilla-" ; Bugzilla 2578 "X-Bugzilla-" ; Bugzilla
2579 "X-Cam-" ; Cambridge scanners
2580 "X-Campaign-Id:"
2581 "X-Campaign:"
2547 "X-Campaignid:" 2582 "X-Campaignid:"
2583 "X-CanIt-Geo:" ; IEEE spam filter
2584 "X-Cloudmark-SP-" ; Cloudmark (www.cloudmark.com)
2548 "X-Comment:" ; AT&T Mailennium 2585 "X-Comment:" ; AT&T Mailennium
2549 "X-Complaints-To:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2586 "X-Complaints-To:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2587 "X-Completed:"
2550 "X-Confirm-Reading-To:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2588 "X-Confirm-Reading-To:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2551 "X-Content-Filtered-By:" 2589 "X-Content-Filtered-By:"
2552 "X-ContentStamp:" ; NetZero 2590 "X-ContentStamp:" ; NetZero
@@ -2554,18 +2592,23 @@ of citations entirely, choose \"None\"."
2554 "X-Cr-Hashedpuzzle:" 2592 "X-Cr-Hashedpuzzle:"
2555 "X-Cr-Puzzleid:" 2593 "X-Cr-Puzzleid:"
2556 "X-Cron-Env:" 2594 "X-Cron-Env:"
2557 "X-DCC-Usenix-Metrics:" 2595 "X-DCC-" ; SpamAssassin
2558 "X-Declude-" ; http://www.declude.com/x-note.htm 2596 "X-Declude-" ; http://www.declude.com/x-note.htm
2559 "X-Dedicated:" 2597 "X-Dedicated:"
2560 "X-Delivered" 2598 "X-Delivered"
2599 "X-Destination-ID:"
2600 "X-detected-operating-system:" ; GNU.ORG?
2561 "X-DH-Virus-" 2601 "X-DH-Virus-"
2562 "X-DMCA" 2602 "X-DMCA"
2603 "X-DocGen-Version:" ; DocGen
2563 "X-Domain:" 2604 "X-Domain:"
2564 "X-Echelon-Distraction" 2605 "X-Echelon-Distraction"
2565 "X-EFL-Spamscore:" ; MIT alumni spam filtering 2606 "X-EFL-Spamscore:" ; MIT alumni spam filtering
2566 "X-eGroups-" ; Egroups/yahoogroups mailing list manager 2607 "X-eGroups-" ; Egroups/yahoogroups mailing list manager
2567 "X-EID:" 2608 "X-EID:"
2568 "X-ELNK-Trace:" ; Earthlink mailer 2609 "X-ELNK-Trace:" ; Earthlink mailer
2610 "X-EM-" ; Some ecommerce software
2611 "X-Email-Type-Id:" ; Paypal http://www.paypal.com
2569 "X-Enigmail-Version:" 2612 "X-Enigmail-Version:"
2570 "X-Envelope-Date:" ; GNU mailutils 2613 "X-Envelope-Date:" ; GNU mailutils
2571 "X-Envelope-From:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2614 "X-Envelope-From:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
@@ -2575,29 +2618,39 @@ of citations entirely, choose \"None\"."
2575 "X-Evolution:" ; Evolution mail client 2618 "X-Evolution:" ; Evolution mail client
2576 "X-ExtLoop" 2619 "X-ExtLoop"
2577 "X-Face:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2620 "X-Face:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2621 "X-Facebook" ; Facebook
2622 "X-FB-SS:"
2578 "X-fmx-" 2623 "X-fmx-"
2579 "X-Folder:" ; Spam 2624 "X-Folder:" ; Spam
2625 "X-Forwarded-" ; Google+
2580 "X-From-Line" 2626 "X-From-Line"
2627 "X-FuHaFi:" ; http://www.gmx.net/
2628 "X-Generated-By:" ; launchpad.net
2581 "X-Gmail-" ; Gmail 2629 "X-Gmail-" ; Gmail
2582 "X-Gnus-Mail-Source:" ; gnus 2630 "X-Gnus-Mail-Source:" ; gnus
2583 "X-Google-" ; Google mail 2631 "X-Google-" ; Google mail
2584 "X-Google-Sender-Auth:" 2632 "X-Google-Sender-Auth:"
2585 "X-Greylist:" ; milter-greylist-1.2.1 2633 "X-Greylist:" ; milter-greylist-1.2.1
2586 "X-Habeas-SWE-" ; Spam 2634 "X-Habeas-" ; http://www.returnpath.net
2587 "X-Hashcash:" ; hashcash 2635 "X-Hashcash:" ; hashcash
2636 "X-Headers-End:" ; SpamCop
2588 "X-HPL-" 2637 "X-HPL-"
2589 "X-HR-" 2638 "X-HR-"
2590 "X-HTTP-UserAgent:" 2639 "X-HTTP-UserAgent:"
2591 "X-Hz" ; Hertz 2640 "X-Hz" ; Hertz
2592 "X-Identity:" ; http://www.declude.com/x-note.htm 2641 "X-Identity:" ; http://www.declude.com/x-note.htm
2642 "X-IEEE-UCE-" ; IEEE spam filter
2593 "X-Image-URL:" 2643 "X-Image-URL:"
2594 "X-IMAP:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2644 "X-IMAP:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2595 "X-Info:" ; NTMail 2645 "X-Info:" ; NTMail
2596 "X-IronPort-" ; IronPort AV 2646 "X-IronPort-" ; IronPort AV
2597 "X-ISI-4-30-3-MailScanner:" 2647 "X-ISI-4-30-3-MailScanner:"
2598 "X-J2-" 2648 "X-J2-"
2649 "X-Jira-Fingerprint:" ; JIRA
2650 "X-Junkmail-" ; RCN?
2599 "X-Juno-" ; Juno 2651 "X-Juno-" ; Juno
2600 "X-Key:" 2652 "X-Key:"
2653 "X-Launchpad-" ; plaunchpad.net
2601 "X-List-Host:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2654 "X-List-Host:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2602 "X-List-Subscribe:" ; Unknown mailing list managers 2655 "X-List-Subscribe:" ; Unknown mailing list managers
2603 "X-List-Unsubscribe:" ; Unknown mailing list managers 2656 "X-List-Unsubscribe:" ; Unknown mailing list managers
@@ -2606,18 +2659,24 @@ of citations entirely, choose \"None\"."
2606 "X-Loop:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2659 "X-Loop:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2607 "X-Lrde-Mailscanner:" 2660 "X-Lrde-Mailscanner:"
2608 "X-Lumos-SenderID:" ; Roving ConstantContact 2661 "X-Lumos-SenderID:" ; Roving ConstantContact
2662 "X-mail_abuse_inquiries:" ; http://www.salesforce.com
2609 "X-Mail-from:" ; fastmail.fm 2663 "X-Mail-from:" ; fastmail.fm
2610 "X-MAIL-INFO:" ; NetZero 2664 "X-MAIL-INFO:" ; NetZero
2611 "X-Mailer_" 2665 "X-Mailer_"
2666 "X-MailFlowPolicy:" ; Cisco Email Security (formerly IronPort; http://www.ironport.com)
2612 "X-Mailing-List:" ; Unknown mailing list managers 2667 "X-Mailing-List:" ; Unknown mailing list managers
2668 "X-MailingID:"
2613 "X-Mailman-Approved-At:" ; Mailman mailing list manager 2669 "X-Mailman-Approved-At:" ; Mailman mailing list manager
2614 "X-Mailman-Version:" ; Mailman mailing list manager 2670 "X-Mailman-Version:" ; Mailman mailing list manager
2615 "X-MailScanner" ; ListProc(tm) by CREN 2671 "X-MailScanner" ; ListProc(tm) by CREN
2616 "X-Mailutils-Message-Id" ; GNU Mailutils 2672 "X-Mailutils-Message-Id" ; GNU Mailutils
2617 "X-Majordomo:" ; Majordomo mailing list manager 2673 "X-Majordomo:" ; Majordomo mailing list manager
2674 "X-Match:"
2675 "X-MaxCode-Template:" ; Paypal http://www.paypal.com
2618 "X-MB-Message-" ; AOL WebMail 2676 "X-MB-Message-" ; AOL WebMail
2619 "X-MDaemon-Deliver-To:" 2677 "X-MDaemon-Deliver-To:"
2620 "X-MDRemoteIP:" 2678 "X-MDRemoteIP:"
2679 "X-ME-Bayesian:" ; http://www.newmediadevelopment.net/page.cfm/parent/Client-Area/content/Managing-spam/
2621 "X-Message-Id" 2680 "X-Message-Id"
2622 "X-Message-Type:" 2681 "X-Message-Type:"
2623 "X-MessageWall-Score:" ; Unknown mailing list manager, AUC TeX 2682 "X-MessageWall-Score:" ; Unknown mailing list manager, AUC TeX
@@ -2630,12 +2689,16 @@ of citations entirely, choose \"None\"."
2630 "X-MS-" ; MS Outlook 2689 "X-MS-" ; MS Outlook
2631 "X-Msmail-" ; MS Outlook 2690 "X-Msmail-" ; MS Outlook
2632 "X-MSMail-Priority" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2691 "X-MSMail-Priority" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2692 "X-MXL-Hash:"
2633 "X-NAI-Spam-" ; Network Associates Inc. SpamKiller 2693 "X-NAI-Spam-" ; Network Associates Inc. SpamKiller
2634 "X-News:" ; News 2694 "X-News:" ; News
2635 "X-Newsreader:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2695 "X-Newsreader:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2636 "X-No-Archive:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2696 "X-No-Archive:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2637 "X-Notes-Item:" ; Lotus Notes Domino structured header 2697 "X-Notes-Item:" ; Lotus Notes Domino structured header
2698 "X-Notification-" ; Google+
2699 "X-Notifications:" ; Google+
2638 "X-OperatingSystem:" 2700 "X-OperatingSystem:"
2701 "X-Oracle-Calendar:" ; Oracle calendar invitations
2639 "X-ORBL:" 2702 "X-ORBL:"
2640 "X-Orcl-Content-Type:" 2703 "X-Orcl-Content-Type:"
2641 "X-Organization:" 2704 "X-Organization:"
@@ -2652,6 +2715,7 @@ of citations entirely, choose \"None\"."
2652 "X-PID:" 2715 "X-PID:"
2653 "X-PMG-" 2716 "X-PMG-"
2654 "X-PMX-Version:" 2717 "X-PMX-Version:"
2718 "X-Policyd-Weight:" ; policyd-weight (Postfix)
2655 "X-Postfilter:" 2719 "X-Postfilter:"
2656 "X-Priority:" ; MS Outlook 2720 "X-Priority:" ; MS Outlook
2657 "X-Proofpoint-" ; Proofpoint mail filter 2721 "X-Proofpoint-" ; Proofpoint mail filter
@@ -2677,14 +2741,20 @@ of citations entirely, choose \"None\"."
2677 "X-SBRS:" 2741 "X-SBRS:"
2678 "X-SBRule:" ; Spam 2742 "X-SBRule:" ; Spam
2679 "X-Scanned-By:" 2743 "X-Scanned-By:"
2744 "X-Sender-ID:" ; Google+
2680 "X-Sender:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2745 "X-Sender:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2746 "X-Sendergroup:" ; Cisco Email Security (formerly IronPort; http://www.ironport.com)
2681 "X-Server-Date:" 2747 "X-Server-Date:"
2682 "X-Server-Uuid:" 2748 "X-Server-Uuid:"
2683 "X-Service-Code:" 2749 "X-Service-Code:"
2750 "X-SFDC-" ; http://www.salesforce.com
2684 "X-Sieve:" ; Sieve filtering 2751 "X-Sieve:" ; Sieve filtering
2752 "X-SMFBL:"
2753 "X-SMHeaderMap:"
2685 "X-SMTP-" 2754 "X-SMTP-"
2686 "X-Source" 2755 "X-Source"
2687 "X-Spam-" ; Spamassassin 2756 "X-Spam-" ; SpamAssassin
2757 "X-Spam:" ; Exchange
2688 "X-SpamBouncer:" ; Spam 2758 "X-SpamBouncer:" ; Spam
2689 "X-SPF-" 2759 "X-SPF-"
2690 "X-Status" 2760 "X-Status"
@@ -2692,6 +2762,7 @@ of citations entirely, choose \"None\"."
2692 "X-Submissions-To:" 2762 "X-Submissions-To:"
2693 "X-Sun-Charset:" 2763 "X-Sun-Charset:"
2694 "X-Telecom-Digest" 2764 "X-Telecom-Digest"
2765 "X-TM-IMSS-Message-ID:" ; http://www.trendmicro.com
2695 "X-Trace:" 2766 "X-Trace:"
2696 "X-UID" 2767 "X-UID"
2697 "X-UIDL:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2768 "X-UIDL:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
@@ -2702,15 +2773,23 @@ of citations entirely, choose \"None\"."
2702 "X-USANET-" ; usa.net 2773 "X-USANET-" ; usa.net
2703 "X-Usenet-Provider" 2774 "X-Usenet-Provider"
2704 "X-UserInfo1:" 2775 "X-UserInfo1:"
2776 "X-VGI-OESCD:"
2777 "X-VirtualServer:"
2778 "X-VirtualServerGroup:"
2705 "X-Virus-" ; 2779 "X-Virus-" ;
2706 "X-Vms-To:" 2780 "X-Vms-To:"
2707 "X-VSMLoop:" ; NTMail 2781 "X-VSMLoop:" ; NTMail
2708 "X-WebTV-Signature:" 2782 "X-WebTV-Signature:"
2709 "X-Wss-Id:" ; Worldtalk gateways 2783 "X-Wss-Id:" ; Worldtalk gateways
2710 "X-X-Sender:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/ 2784 "X-X-Sender:" ; http://people.dsv.su.se/~jpalme/ietf/mail-headers/
2785 "X-XPT-XSL-Name:" ; Paypal http://www.paypal.com
2786 "X-xsi-"
2787 "X-XWALL-" ; http://www.dataenter.co.at/doc/xwall_undocumented_config.htm
2788 "X-Y-GMX-Trusted:" ; http://www.gmx.net/
2711 "X-Yahoo" 2789 "X-Yahoo"
2712 "X-Yahoo-Newman-" 2790 "X-Yahoo-Newman-"
2713 "X-YMail-" 2791 "X-YMail-"
2792 "X-ZixNet:"
2714 "X400-" ; X400 2793 "X400-" ; X400
2715 "Xref:" ; RFC 1036 2794 "Xref:" ; RFC 1036
2716 ) 2795 )
@@ -3104,9 +3183,10 @@ annotated messages with `mh-annotate-list'."
3104(defcustom-mh mh-before-commands-processed-hook nil 3183(defcustom-mh mh-before-commands-processed-hook nil
3105 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding refile and delete requests. 3184 "Hook run by \\<mh-folder-mode-map>\\[mh-execute-commands] before performing outstanding refile and delete requests.
3106 3185
3107Variables that are useful in this hook include `mh-delete-list' 3186Variables that are useful in this hook include `mh-delete-list',
3108and `mh-refile-list' which can be used to see which changes will 3187`mh-refile-list', `mh-blacklist', and `mh-whitelist' which can be
3109be made to the current folder, `mh-current-folder'." 3188used to see which changes will be made to the current folder,
3189`mh-current-folder'."
3110 :type 'hook 3190 :type 'hook
3111 :group 'mh-hooks 3191 :group 'mh-hooks
3112 :group 'mh-folder 3192 :group 'mh-folder
@@ -3136,6 +3216,13 @@ before sending, add the `ispell-message' function."
3136 :group 'mh-letter 3216 :group 'mh-letter
3137 :package-version '(MH-E . "6.0")) 3217 :package-version '(MH-E . "6.0"))
3138 3218
3219(defcustom-mh mh-blacklist-msg-hook nil
3220 "Hook run by \\<mh-letter-mode-map>\\[mh-junk-blacklist] after marking each message for blacklisting."
3221 :type 'hook
3222 :group 'mh-hooks
3223 :group 'mh-show
3224 :package-version '(MH-E . "8.4"))
3225
3139(defcustom-mh mh-delete-msg-hook nil 3226(defcustom-mh mh-delete-msg-hook nil
3140 "Hook run by \\<mh-letter-mode-map>\\[mh-delete-msg] after marking each message for deletion. 3227 "Hook run by \\<mh-letter-mode-map>\\[mh-delete-msg] after marking each message for deletion.
3141 3228
@@ -3189,7 +3276,7 @@ function used to insert the signature with
3189 :group 'mh-letter 3276 :group 'mh-letter
3190 :package-version '(MH-E . "8.0")) 3277 :package-version '(MH-E . "8.0"))
3191 3278
3192(define-obsolete-variable-alias 'mh-kill-folder-suppress-prompt-hooks 3279(mh-define-obsolete-variable-alias 'mh-kill-folder-suppress-prompt-hooks
3193 'mh-kill-folder-suppress-prompt-functions "24.3") 3280 'mh-kill-folder-suppress-prompt-functions "24.3")
3194(defcustom-mh mh-kill-folder-suppress-prompt-functions '(mh-search-p) 3281(defcustom-mh mh-kill-folder-suppress-prompt-functions '(mh-search-p)
3195 "Abnormal hook run at the beginning of \\<mh-folder-mode-map>\\[mh-kill-folder]. 3282 "Abnormal hook run at the beginning of \\<mh-folder-mode-map>\\[mh-kill-folder].
@@ -3301,6 +3388,13 @@ sequence."
3301 :group 'mh-sequences 3388 :group 'mh-sequences
3302 :package-version '(MH-E . "6.0")) 3389 :package-version '(MH-E . "6.0"))
3303 3390
3391(defcustom-mh mh-whitelist-msg-hook nil
3392 "Hook run by \\<mh-letter-mode-map>\\[mh-junk-whitelist] after marking each message for whitelisting."
3393 :type 'hook
3394 :group 'mh-hooks
3395 :group 'mh-show
3396 :package-version '(MH-E . "8.4"))
3397
3304 3398
3305 3399
3306;;; Faces (:group 'mh-faces + group where faces described) 3400;;; Faces (:group 'mh-faces + group where faces described)
@@ -3519,6 +3613,13 @@ specified colors."
3519 :group 'mh-folder 3613 :group 'mh-folder
3520 :package-version '(MH-E . "8.0")) 3614 :package-version '(MH-E . "8.0"))
3521 3615
3616(defface-mh mh-folder-blacklisted
3617 (mh-face-data 'mh-folder-msg-number '((t (:inherit mh-folder-msg-number))))
3618 "Blacklisted message face."
3619 :group 'mh-faces
3620 :group 'mh-folder
3621 :package-version '(MH-E . "8.4"))
3622
3522(defface-mh mh-folder-body 3623(defface-mh mh-folder-body
3523 (mh-face-data 'mh-folder-msg-number 3624 (mh-face-data 'mh-folder-msg-number
3524 '((((class color)) 3625 '((((class color))
@@ -3608,6 +3709,13 @@ format `mh-scan-format-nmh' and the regular expression
3608 :group 'mh-folder 3709 :group 'mh-folder
3609 :package-version '(MH-E . "8.0")) 3710 :package-version '(MH-E . "8.0"))
3610 3711
3712(defface-mh mh-folder-whitelisted
3713 (mh-face-data 'mh-folder-refiled '((t (:inherit mh-folder-refiled))))
3714 "Whitelisted message face."
3715 :group 'mh-faces
3716 :group 'mh-folder
3717 :package-version '(MH-E . "8.4"))
3718
3611(defface-mh mh-letter-header-field (mh-face-data 'mh-letter-header-field) 3719(defface-mh mh-letter-header-field (mh-face-data 'mh-letter-header-field)
3612 "Editable header field value face in draft buffers." 3720 "Editable header field value face in draft buffers."
3613 :group 'mh-faces 3721 :group 'mh-faces
diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el
index d9e6c74f3f3..6b5ff3b62e2 100644
--- a/lisp/mh-e/mh-folder.el
+++ b/lisp/mh-e/mh-folder.el
@@ -162,9 +162,9 @@ annotation.")
162 ["Go to Last Message" mh-last-msg t] 162 ["Go to Last Message" mh-last-msg t]
163 ["Go to Message by Number..." mh-goto-msg t] 163 ["Go to Message by Number..." mh-goto-msg t]
164 ["Modify Message" mh-modify t] 164 ["Modify Message" mh-modify t]
165 ["Delete Message" mh-delete-msg (mh-get-msg-num nil)]
166 ["Refile Message" mh-refile-msg (mh-get-msg-num nil)] 165 ["Refile Message" mh-refile-msg (mh-get-msg-num nil)]
167 ["Undo Delete/Refile" mh-undo (mh-outstanding-commands-p)] 166 ["Delete Message" mh-delete-msg (mh-get-msg-num nil)]
167 ["Undo Delete/Refile/Junk" mh-undo (mh-outstanding-commands-p)]
168 ["Execute Delete/Refile" mh-execute-commands 168 ["Execute Delete/Refile" mh-execute-commands
169 (mh-outstanding-commands-p)] 169 (mh-outstanding-commands-p)]
170 "--" 170 "--"
@@ -405,12 +405,18 @@ See `mh-set-help'.")
405 ;; Folders when displaying index buffer 405 ;; Folders when displaying index buffer
406 (list "^\\+.*" 406 (list "^\\+.*"
407 '(0 'mh-search-folder)) 407 '(0 'mh-search-folder))
408 ;; Marked for deletion
409 (list (concat mh-scan-deleted-msg-regexp ".*")
410 '(0 'mh-folder-deleted))
411 ;; Marked for refile 408 ;; Marked for refile
412 (list (concat mh-scan-refiled-msg-regexp ".*") 409 (list (concat mh-scan-refiled-msg-regexp ".*")
413 '(0 'mh-folder-refiled)) 410 '(0 'mh-folder-refiled))
411 ;; Marked for deletion
412 (list (concat mh-scan-deleted-msg-regexp ".*")
413 '(0 'mh-folder-deleted))
414 ;; Marked for blacklisting
415 (list (concat mh-scan-blacklisted-msg-regexp ".*")
416 '(0 'mh-folder-blacklisted))
417 ;; Marked for whitelisting
418 (list (concat mh-scan-whitelisted-msg-regexp ".*")
419 '(0 'mh-folder-whitelisted))
414 ;; After subject 420 ;; After subject
415 (list mh-scan-body-regexp 421 (list mh-scan-body-regexp
416 '(1 'mh-folder-body nil t)) 422 '(1 'mh-folder-body nil t))
@@ -614,8 +620,10 @@ perform the operation on all messages in that region.
614 'overlay-arrow-position nil ; Allow for simultaneous display in 620 'overlay-arrow-position nil ; Allow for simultaneous display in
615 'overlay-arrow-string ">" ; different MH-E buffers. 621 'overlay-arrow-string ">" ; different MH-E buffers.
616 'mh-showing-mode nil ; Show message also? 622 'mh-showing-mode nil ; Show message also?
617 'mh-delete-list nil ; List of msgs nums to delete
618 'mh-refile-list nil ; List of folder names in mh-seq-list 623 'mh-refile-list nil ; List of folder names in mh-seq-list
624 'mh-delete-list nil ; List of msgs nums to delete
625 'mh-blacklist nil ; List of messages to process as spam
626 'mh-whitelist nil ; List of messages to process as ham
619 'mh-seq-list nil ; Alist of (seq . msgs) nums 627 'mh-seq-list nil ; Alist of (seq . msgs) nums
620 'mh-seen-list nil ; List of displayed messages 628 'mh-seen-list nil ; List of displayed messages
621 'mh-next-direction 'forward ; Direction to move to next message 629 'mh-next-direction 'forward ; Direction to move to next message
@@ -709,15 +717,15 @@ RANGE is read in interactive use."
709 717
710;;;###mh-autoload 718;;;###mh-autoload
711(defun mh-execute-commands () 719(defun mh-execute-commands ()
712 "Process outstanding delete and refile requests\\<mh-folder-mode-map>. 720 "Perform outstanding operations\\<mh-folder-mode-map>.
713 721
714If you've marked messages to be deleted or refiled and you want 722If you've marked messages to be refiled, deleted, blacklisted, or
715to go ahead and delete or refile the messages, use this command. 723whitelisted and you want to go ahead and perform these operations
716Many MH-E commands that may affect the numbering of the 724on these messages, use this command. Many MH-E commands that may
717messages (such as \\[mh-rescan-folder] or \\[mh-pack-folder]) 725affect the numbering of the messages (such as
718will ask if you want to process refiles or deletes first and then 726\\[mh-rescan-folder] or \\[mh-pack-folder]) will ask if you want
719either run this command for you or undo the pending refiles and 727to perform these operations first and then either run this
720deletes. 728command for you or undo the pending operations.
721 729
722This function runs `mh-before-commands-processed-hook' before the 730This function runs `mh-before-commands-processed-hook' before the
723commands are processed and `mh-after-commands-processed-hook' 731commands are processed and `mh-after-commands-processed-hook'
@@ -766,7 +774,7 @@ the message."
766 return-value)) 774 return-value))
767 775
768;;;###mh-autoload 776;;;###mh-autoload
769(defun mh-inc-folder (&optional file folder) 777(defun mh-inc-folder (&optional file folder dont-exec-pending)
770 "Incorporate new mail into a folder. 778 "Incorporate new mail into a folder.
771 779
772You can incorporate mail from any file into the current folder by 780You can incorporate mail from any file into the current folder by
@@ -777,7 +785,10 @@ The hook `mh-inc-folder-hook' is run after incorporating new
777mail. 785mail.
778 786
779Do not call this function from outside MH-E; use \\[mh-rmail] 787Do not call this function from outside MH-E; use \\[mh-rmail]
780instead." 788instead.
789
790In a program, the processing of outstanding commands is not performed
791if DONT-EXEC-PENDING is non-nil."
781 (interactive (list (if current-prefix-arg 792 (interactive (list (if current-prefix-arg
782 (expand-file-name 793 (expand-file-name
783 (read-file-name "inc mail from file: " 794 (read-file-name "inc mail from file: "
@@ -786,6 +797,8 @@ instead."
786 (mh-prompt-for-folder "inc mail into" mh-inbox t)))) 797 (mh-prompt-for-folder "inc mail into" mh-inbox t))))
787 (if (not folder) 798 (if (not folder)
788 (setq folder mh-inbox)) 799 (setq folder mh-inbox))
800 (unless dont-exec-pending
801 (mh-process-or-undo-commands folder))
789 (let ((threading-needed-flag nil)) 802 (let ((threading-needed-flag nil))
790 (let ((config (current-window-configuration))) 803 (let ((config (current-window-configuration)))
791 (when (and mh-show-buffer (get-buffer mh-show-buffer)) 804 (when (and mh-show-buffer (get-buffer mh-show-buffer))
@@ -1181,14 +1194,18 @@ RANGE is read in interactive use."
1181 (cond ((numberp range) 1194 (cond ((numberp range)
1182 (let ((original-position (point))) 1195 (let ((original-position (point)))
1183 (beginning-of-line) 1196 (beginning-of-line)
1184 (while (not (or (looking-at mh-scan-deleted-msg-regexp) 1197 (while (not (or (looking-at mh-scan-refiled-msg-regexp)
1185 (looking-at mh-scan-refiled-msg-regexp) 1198 (looking-at mh-scan-deleted-msg-regexp)
1199 (looking-at mh-scan-blacklisted-msg-regexp)
1200 (looking-at mh-scan-whitelisted-msg-regexp)
1186 (and (eq mh-next-direction 'forward) (bobp)) 1201 (and (eq mh-next-direction 'forward) (bobp))
1187 (and (eq mh-next-direction 'backward) 1202 (and (eq mh-next-direction 'backward)
1188 (save-excursion (forward-line) (eobp))))) 1203 (save-excursion (forward-line) (eobp)))))
1189 (forward-line (if (eq mh-next-direction 'forward) -1 1))) 1204 (forward-line (if (eq mh-next-direction 'forward) -1 1)))
1190 (if (or (looking-at mh-scan-deleted-msg-regexp) 1205 (if (or (looking-at mh-scan-refiled-msg-regexp)
1191 (looking-at mh-scan-refiled-msg-regexp)) 1206 (looking-at mh-scan-deleted-msg-regexp)
1207 (looking-at mh-scan-blacklisted-msg-regexp)
1208 (looking-at mh-scan-whitelisted-msg-regexp))
1192 (progn 1209 (progn
1193 (mh-undo-msg (mh-get-msg-num t)) 1210 (mh-undo-msg (mh-get-msg-num t))
1194 (mh-maybe-show)) 1211 (mh-maybe-show))
@@ -1520,7 +1537,7 @@ is updated."
1520 (save-excursion 1537 (save-excursion
1521 (when (eq major-mode 'mh-show-mode) 1538 (when (eq major-mode 'mh-show-mode)
1522 (set-buffer mh-show-folder-buffer)) 1539 (set-buffer mh-show-folder-buffer))
1523 (or mh-delete-list mh-refile-list))) 1540 (or mh-delete-list mh-refile-list mh-blacklist mh-whitelist)))
1524 1541
1525;;;###mh-autoload 1542;;;###mh-autoload
1526(defun mh-set-folder-modified-p (flag) 1543(defun mh-set-folder-modified-p (flag)
@@ -1544,10 +1561,15 @@ after the commands are processed."
1544 1561
1545 (let ((redraw-needed-flag mh-index-data) 1562 (let ((redraw-needed-flag mh-index-data)
1546 (folders-changed (list mh-current-folder)) 1563 (folders-changed (list mh-current-folder))
1547 (seq-map (and mh-refile-list mh-refile-preserves-sequences-flag 1564 (seq-map (and
1548 (mh-create-sequence-map mh-seq-list))) 1565 (or (and mh-refile-list mh-refile-preserves-sequences-flag)
1566 (and mh-whitelist
1567 mh-whitelist-preserves-sequences-flag))
1568 (mh-create-sequence-map mh-seq-list)))
1549 (dest-map (and mh-refile-list mh-refile-preserves-sequences-flag 1569 (dest-map (and mh-refile-list mh-refile-preserves-sequences-flag
1550 (make-hash-table)))) 1570 (make-hash-table)))
1571 (white-map (and mh-whitelist mh-whitelist-preserves-sequences-flag
1572 (make-hash-table))))
1551 ;; Remove invalid scan lines if we are in an index folder and then remove 1573 ;; Remove invalid scan lines if we are in an index folder and then remove
1552 ;; the real messages 1574 ;; the real messages
1553 (when mh-index-data 1575 (when mh-index-data
@@ -1594,6 +1616,49 @@ after the commands are processed."
1594 (mh-delete-scan-msgs mh-delete-list) 1616 (mh-delete-scan-msgs mh-delete-list)
1595 (setq mh-delete-list nil))) 1617 (setq mh-delete-list nil)))
1596 1618
1619 ;; Blacklist messages.
1620 (when mh-blacklist
1621 (let ((msg-list (mh-coalesce-msg-list mh-blacklist))
1622 (dest (mh-junk-blacklist-disposition)))
1623 (mh-junk-process-blacklist mh-blacklist)
1624 ;; TODO I wonder why mh-exec-cmd is used instead of the following:
1625 ;; (mh-refile-a-msg nil (intern dest))
1626 ;; (mh-delete-a-msg nil)))
1627 (if (null dest)
1628 (apply 'mh-exec-cmd "rmm" folder msg-list)
1629 (apply 'mh-exec-cmd "refile" "-src" folder dest msg-list)
1630 (push dest folders-changed))
1631 (setq redraw-needed-flag t)
1632 (mh-delete-scan-msgs mh-blacklist)
1633 (setq mh-blacklist nil)))
1634
1635 ;; Whitelist messages.
1636 (when mh-whitelist
1637 (let ((msg-list (mh-coalesce-msg-list mh-whitelist))
1638 (last (car (mh-translate-range mh-inbox "last"))))
1639 (mh-junk-process-whitelist mh-whitelist)
1640 (apply #'mh-exec-cmd "refile" "-src" folder mh-inbox msg-list)
1641 (push mh-inbox folders-changed)
1642 (setq redraw-needed-flag t)
1643 (mh-delete-scan-msgs mh-whitelist)
1644 (when mh-whitelist-preserves-sequences-flag
1645 (clrhash white-map)
1646 (loop for i from (1+ (or last 0))
1647 for msg in (sort (copy-sequence mh-whitelist) #'<)
1648 do (loop for seq-name in (gethash msg seq-map)
1649 do (push i (gethash seq-name white-map))))
1650 (maphash
1651 #'(lambda (seq msgs)
1652 ;; Can't be run in background, since the current
1653 ;; folder is changed by mark this could lead to a
1654 ;; race condition with the next refile/whitelist.
1655 (apply #'mh-exec-cmd "mark"
1656 "-sequence" (symbol-name seq) mh-inbox
1657 "-add" (mapcar #'(lambda(x) (format "%s" x))
1658 (mh-coalesce-msg-list msgs))))
1659 white-map))
1660 (setq mh-whitelist nil)))
1661
1597 ;; Don't need to remove sequences since delete and refile do so. 1662 ;; Don't need to remove sequences since delete and refile do so.
1598 ;; Mark cur message 1663 ;; Mark cur message
1599 (if (> (buffer-size) 0) 1664 (if (> (buffer-size) 0)
@@ -1904,6 +1969,10 @@ once when he kept statistics on his mail usage."
1904 (setq message (mh-get-msg-num t))) 1969 (setq message (mh-get-msg-num t)))
1905 (if (looking-at mh-scan-refiled-msg-regexp) 1970 (if (looking-at mh-scan-refiled-msg-regexp)
1906 (error "Message %d is refiled; undo refile before deleting" message)) 1971 (error "Message %d is refiled; undo refile before deleting" message))
1972 (if (looking-at mh-scan-blacklisted-msg-regexp)
1973 (error "Message %d is blacklisted; undo before deleting" message))
1974 (if (looking-at mh-scan-whitelisted-msg-regexp)
1975 (error "Message %d is whitelisted; undo before deleting" message))
1907 (if (looking-at mh-scan-deleted-msg-regexp) 1976 (if (looking-at mh-scan-deleted-msg-regexp)
1908 nil 1977 nil
1909 (mh-set-folder-modified-p t) 1978 (mh-set-folder-modified-p t)
@@ -1925,6 +1994,10 @@ be refiled."
1925 (setq message (mh-get-msg-num t))) 1994 (setq message (mh-get-msg-num t)))
1926 (cond ((looking-at mh-scan-deleted-msg-regexp) 1995 (cond ((looking-at mh-scan-deleted-msg-regexp)
1927 (error "Message %d is deleted; undo delete before moving" message)) 1996 (error "Message %d is deleted; undo delete before moving" message))
1997 ((looking-at mh-scan-blacklisted-msg-regexp)
1998 (error "Message %d is blacklisted; undo before moving" message))
1999 ((looking-at mh-scan-whitelisted-msg-regexp)
2000 (error "Message %d is whitelisted; undo before moving" message))
1928 ((looking-at mh-scan-refiled-msg-regexp) 2001 ((looking-at mh-scan-refiled-msg-regexp)
1929 (if (y-or-n-p 2002 (if (y-or-n-p
1930 (format "Message %d already refiled; copy to %s as well? " 2003 (format "Message %d already refiled; copy to %s as well? "
@@ -1943,7 +2016,7 @@ be refiled."
1943 (run-hooks 'mh-refile-msg-hook))))) 2016 (run-hooks 'mh-refile-msg-hook)))))
1944 2017
1945(defun mh-undo-msg (msg) 2018(defun mh-undo-msg (msg)
1946 "Undo the deletion or refile of one MSG. 2019 "Undo the deletion, refile, black- or whitelisting of one MSG.
1947If MSG is nil then act on the message at point" 2020If MSG is nil then act on the message at point"
1948 (save-excursion 2021 (save-excursion
1949 (if (numberp msg) 2022 (if (numberp msg)
@@ -1952,6 +2025,10 @@ If MSG is nil then act on the message at point"
1952 (setq msg (mh-get-msg-num t))) 2025 (setq msg (mh-get-msg-num t)))
1953 (cond ((memq msg mh-delete-list) 2026 (cond ((memq msg mh-delete-list)
1954 (setq mh-delete-list (delq msg mh-delete-list))) 2027 (setq mh-delete-list (delq msg mh-delete-list)))
2028 ((memq msg mh-blacklist)
2029 (setq mh-blacklist (delq msg mh-blacklist)))
2030 ((memq msg mh-whitelist)
2031 (setq mh-whitelist (delq msg mh-whitelist)))
1955 (t 2032 (t
1956 (dolist (folder-msg-list mh-refile-list) 2033 (dolist (folder-msg-list mh-refile-list)
1957 (setf (cdr folder-msg-list) (remove msg (cdr folder-msg-list)))) 2034 (setf (cdr folder-msg-list) (remove msg (cdr folder-msg-list))))
diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el
index 2119d6f93ea..261dbfbf645 100644
--- a/lisp/mh-e/mh-junk.el
+++ b/lisp/mh-e/mh-junk.el
@@ -52,27 +52,64 @@ program, see:
52 - `mh-bogofilter-blacklist' 52 - `mh-bogofilter-blacklist'
53 - `mh-spamprobe-blacklist'" 53 - `mh-spamprobe-blacklist'"
54 (interactive (list (mh-interactive-range "Blacklist"))) 54 (interactive (list (mh-interactive-range "Blacklist")))
55 (mh-iterate-on-range () range (mh-blacklist-a-msg nil))
56 (if (looking-at mh-scan-blacklisted-msg-regexp)
57 (mh-next-msg)))
58
59(defun mh-blacklist-a-msg (message)
60 "Blacklist MESSAGE.
61If MESSAGE is nil then the message at point is blacklisted.
62The hook `mh-blacklisted-msg-hook' is called after you mark a message
63for blacklisting."
64 (save-excursion
65 (if (numberp message)
66 (mh-goto-msg message nil t)
67 (beginning-of-line)
68 (setq message (mh-get-msg-num t)))
69 (cond ((looking-at mh-scan-refiled-msg-regexp)
70 (error "Message %d is refiled; undo refile before blacklisting"
71 message))
72 ((looking-at mh-scan-deleted-msg-regexp)
73 (error "Message %d is deleted; undo delete before blacklisting"
74 message))
75 ((looking-at mh-scan-whitelisted-msg-regexp)
76 (error "Message %d is whitelisted; undo before blacklisting"
77 message))
78 ((looking-at mh-scan-blacklisted-msg-regexp) nil)
79 (t
80 (mh-set-folder-modified-p t)
81 (setq mh-blacklist (cons message mh-blacklist))
82 (if (not (memq message mh-seen-list))
83 (setq mh-seen-list (cons message mh-seen-list)))
84 (mh-notate nil mh-note-blacklisted mh-cmd-note)
85 (run-hooks 'mh-blacklist-msg-hook)))))
86
87;;;###mh-autoload
88(defun mh-junk-blacklist-disposition ()
89 "Determines the fate of the selected spam."
90 (cond ((null mh-junk-disposition) nil)
91 ((equal mh-junk-disposition "") "+")
92 ((eq (aref mh-junk-disposition 0) ?+)
93 mh-junk-disposition)
94 ((eq (aref mh-junk-disposition 0) ?@)
95 (concat mh-current-folder "/"
96 (substring mh-junk-disposition 1)))
97 (t (concat "+" mh-junk-disposition))))
98
99;;;###mh-autoload
100(defun mh-junk-process-blacklist (range)
101 "Blacklist RANGE as spam.
102This command trains the spam program in use (see the option
103`mh-junk-program') with the content of RANGE and then handles the
104message(s) as specified by the option `mh-junk-disposition'."
55 (let ((blacklist-func (nth 1 (assoc mh-junk-choice mh-junk-function-alist)))) 105 (let ((blacklist-func (nth 1 (assoc mh-junk-choice mh-junk-function-alist))))
56 (unless blacklist-func 106 (unless blacklist-func
57 (error "Customize `mh-junk-program' appropriately")) 107 (error "Customize `mh-junk-program' appropriately"))
58 (let ((dest (cond ((null mh-junk-disposition) nil) 108 (mh-iterate-on-range msg range
59 ((equal mh-junk-disposition "") "+") 109 (message "Blacklisting message %d..." msg)
60 ((eq (aref mh-junk-disposition 0) ?+) 110 (funcall (symbol-function blacklist-func) msg)
61 mh-junk-disposition) 111 (message "Blacklisting message %d...done" msg))
62 ((eq (aref mh-junk-disposition 0) ?@) 112 (mh-next-msg)))
63 (concat mh-current-folder "/"
64 (substring mh-junk-disposition 1)))
65 (t (concat "+" mh-junk-disposition)))))
66 (mh-iterate-on-range msg range
67 (message "Blacklisting message %d..." msg)
68 (funcall (symbol-function blacklist-func) msg)
69 (message "Blacklisting message %d...done" msg)
70 (if (not (memq msg mh-seen-list))
71 (setq mh-seen-list (cons msg mh-seen-list)))
72 (if dest
73 (mh-refile-a-msg nil (intern dest))
74 (mh-delete-a-msg nil)))
75 (mh-next-msg))))
76 113
77;;;###mh-autoload 114;;;###mh-autoload
78(defun mh-junk-whitelist (range) 115(defun mh-junk-whitelist (range)
@@ -85,14 +122,49 @@ refiles the message into the \"+inbox\" folder.
85Check the documentation of `mh-interactive-range' to see how 122Check the documentation of `mh-interactive-range' to see how
86RANGE is read in interactive use." 123RANGE is read in interactive use."
87 (interactive (list (mh-interactive-range "Whitelist"))) 124 (interactive (list (mh-interactive-range "Whitelist")))
125 (mh-iterate-on-range () range (mh-junk-whitelist-a-msg nil))
126 (if (looking-at mh-scan-whitelisted-msg-regexp)
127 (mh-next-msg)))
128
129(defun mh-junk-whitelist-a-msg (message)
130 "Whitelist MESSAGE.
131If MESSAGE is nil then the message at point is whitelisted. The
132hook `mh-whitelist-msg-hook' is called after you mark a message
133for whitelisting."
134 (save-excursion
135 (if (numberp message)
136 (mh-goto-msg message nil t)
137 (beginning-of-line)
138 (setq message (mh-get-msg-num t)))
139 (cond ((looking-at mh-scan-refiled-msg-regexp)
140 (error "Message %d is refiled; undo refile before whitelisting"
141 message))
142 ((looking-at mh-scan-deleted-msg-regexp)
143 (error "Message %d is deleted; undo delete before whitelisting"
144 message))
145 ((looking-at mh-scan-blacklisted-msg-regexp)
146 (error "Message %d is blacklisted; undo before whitelisting"
147 message))
148 ((looking-at mh-scan-whitelisted-msg-regexp) nil)
149 (t
150 (mh-set-folder-modified-p t)
151 (setq mh-whitelist (cons message mh-whitelist))
152 (mh-notate nil mh-note-whitelisted mh-cmd-note)
153 (run-hooks 'mh-whitelist-msg-hook)))))
154
155;;;###mh-autoload
156(defun mh-junk-process-whitelist (range)
157 "Whitelist RANGE as ham.
158
159This command reclassifies the RANGE as ham if it were incorrectly
160classified as spam (see the option `mh-junk-program')."
88 (let ((whitelist-func (nth 2 (assoc mh-junk-choice mh-junk-function-alist)))) 161 (let ((whitelist-func (nth 2 (assoc mh-junk-choice mh-junk-function-alist))))
89 (unless whitelist-func 162 (unless whitelist-func
90 (error "Customize `mh-junk-program' appropriately")) 163 (error "Customize `mh-junk-program' appropriately"))
91 (mh-iterate-on-range msg range 164 (mh-iterate-on-range msg range
92 (message "Whitelisting message %d..." msg) 165 (message "Whitelisting message %d..." msg)
93 (funcall (symbol-function whitelist-func) msg) 166 (funcall (symbol-function whitelist-func) msg)
94 (message "Whitelisting message %d...done" msg) 167 (message "Whitelisting message %d...done" msg))
95 (mh-refile-a-msg nil (intern mh-inbox)))
96 (mh-next-msg))) 168 (mh-next-msg)))
97 169
98 170
diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el
index 490bfc07560..8965439a275 100644
--- a/lisp/mh-e/mh-letter.el
+++ b/lisp/mh-e/mh-letter.el
@@ -68,7 +68,7 @@ citation text as modified.
68 68
69This is a normal hook, misnamed for historical reasons. 69This is a normal hook, misnamed for historical reasons.
70It is obsolete and is only used if `mail-citation-hook' is nil.") 70It is obsolete and is only used if `mail-citation-hook' is nil.")
71(make-obsolete-variable 'mh-yank-hooks 'mail-citation-hook "19.34") 71(mh-make-obsolete-variable 'mh-yank-hooks 'mail-citation-hook "19.34")
72 72
73 73
74 74
@@ -724,69 +724,71 @@ not inserted. If the option `mh-yank-behavior' is set to one of
724the supercite flavors, the hook `mail-citation-hook' is ignored 724the supercite flavors, the hook `mail-citation-hook' is ignored
725and `mh-ins-buf-prefix' is not inserted." 725and `mh-ins-buf-prefix' is not inserted."
726 (interactive) 726 (interactive)
727 (if (and mh-sent-from-folder 727 (let ((show-buffer))
728 (with-current-buffer mh-sent-from-folder mh-show-buffer) 728 (if (and mh-sent-from-folder
729 (with-current-buffer mh-sent-from-folder 729 (with-current-buffer mh-sent-from-folder mh-show-buffer)
730 (get-buffer mh-show-buffer)) 730 (setq show-buffer (with-current-buffer mh-sent-from-folder
731 mh-sent-from-msg) 731 (get-buffer mh-show-buffer)))
732 (let ((to-point (point)) 732 mh-sent-from-msg)
733 (to-buffer (current-buffer))) 733 (let ((to-point (point))
734 (set-buffer mh-sent-from-folder) 734 (to-buffer (current-buffer)))
735 (if mh-delete-yanked-msg-window-flag 735 (if mh-delete-yanked-msg-window-flag
736 (delete-windows-on mh-show-buffer)) 736 (with-current-buffer mh-sent-from-folder
737 (set-buffer mh-show-buffer) ; Find displayed message 737 (delete-windows-on show-buffer)))
738 (let* ((from-attr (mh-extract-from-attribution)) 738 ;; Find displayed message
739 (yank-region (mh-mark-active-p nil)) 739 (with-current-buffer show-buffer
740 (mh-ins-str 740 (let* ((from-attr (mh-extract-from-attribution))
741 (cond ((and yank-region 741 (yank-region (mh-mark-active-p nil))
742 (or (eq 'supercite mh-yank-behavior) 742 (mh-ins-str
743 (eq 'autosupercite mh-yank-behavior) 743 (cond ((and yank-region
744 (eq t mh-yank-behavior))) 744 (or (eq 'supercite mh-yank-behavior)
745 ;; supercite needs the full header 745 (eq 'autosupercite mh-yank-behavior)
746 (concat 746 (eq t mh-yank-behavior)))
747 (buffer-substring (point-min) (mh-mail-header-end)) 747 ;; supercite needs the full header
748 "\n" 748 (concat
749 (buffer-substring (region-beginning) (region-end)))) 749 (buffer-substring (point-min) (mh-mail-header-end))
750 (yank-region 750 "\n"
751 (buffer-substring (region-beginning) (region-end))) 751 (buffer-substring (region-beginning) (region-end))))
752 ((or (eq 'body mh-yank-behavior) 752 (yank-region
753 (eq 'attribution mh-yank-behavior) 753 (buffer-substring (region-beginning) (region-end)))
754 (eq 'autoattrib mh-yank-behavior)) 754 ((or (eq 'body mh-yank-behavior)
755 (buffer-substring 755 (eq 'attribution mh-yank-behavior)
756 (save-excursion 756 (eq 'autoattrib mh-yank-behavior))
757 (goto-char (point-min)) 757 (buffer-substring
758 (mh-goto-header-end 1) 758 (save-excursion
759 (point)) 759 (goto-char (point-min))
760 (point-max))) 760 (mh-goto-header-end 1)
761 ((or (eq 'supercite mh-yank-behavior) 761 (point))
762 (eq 'autosupercite mh-yank-behavior) 762 (point-max)))
763 (eq t mh-yank-behavior)) 763 ((or (eq 'supercite mh-yank-behavior)
764 (buffer-substring (point-min) (point-max))) 764 (eq 'autosupercite mh-yank-behavior)
765 (t 765 (eq t mh-yank-behavior))
766 (buffer-substring (point) (point-max)))))) 766 (buffer-substring (point-min) (point-max)))
767 (set-buffer to-buffer) 767 (t
768 (save-restriction 768 (buffer-substring (point) (point-max))))))
769 (narrow-to-region to-point to-point) 769 (with-current-buffer to-buffer
770 (insert (mh-filter-out-non-text mh-ins-str)) 770 (save-restriction
771 (goto-char (point-max)) ;Needed for sc-cite-original 771 (narrow-to-region to-point to-point)
772 (push-mark) ;Needed for sc-cite-original 772 (insert (mh-filter-out-non-text mh-ins-str))
773 (goto-char (point-min)) ;Needed for sc-cite-original 773 (goto-char (point-max)) ;Needed for sc-cite-original
774 (mh-insert-prefix-string mh-ins-buf-prefix) 774 (push-mark) ;Needed for sc-cite-original
775 (when (or (eq 'attribution mh-yank-behavior) 775 (goto-char (point-min)) ;Needed for sc-cite-original
776 (eq 'autoattrib mh-yank-behavior)) 776 (mh-insert-prefix-string mh-ins-buf-prefix)
777 (insert from-attr) 777 (when (or (eq 'attribution mh-yank-behavior)
778 (mh-identity-insert-attribution-verb nil) 778 (eq 'autoattrib mh-yank-behavior))
779 (insert "\n\n")) 779 (insert from-attr)
780 ;; If the user has selected a region, he has already "edited" the 780 (mh-identity-insert-attribution-verb nil)
781 ;; text, so leave the cursor at the end of the yanked text. In 781 (insert "\n\n"))
782 ;; either case, leave a mark at the opposite end of the included 782 ;; If the user has selected a region, he has already "edited" the
783 ;; text to make it easy to jump or delete to the other end of the 783 ;; text, so leave the cursor at the end of the yanked text. In
784 ;; text. 784 ;; either case, leave a mark at the opposite end of the included
785 (push-mark) 785 ;; text to make it easy to jump or delete to the other end of the
786 (goto-char (point-max)) 786 ;; text.
787 (if (null yank-region) 787 (push-mark)
788 (mh-exchange-point-and-mark-preserving-active-mark))))) 788 (goto-char (point-max))
789 (error "There is no current message"))) 789 (if (null yank-region)
790 (mh-exchange-point-and-mark-preserving-active-mark)))))))
791 (error "There is no current message"))))
790 792
791 793
792 794
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 66e1ba5ec69..5ce6159e2d5 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -268,10 +268,12 @@ usually reads the file \"/etc/mailcap\"."
268 (buffer-read-only nil)) 268 (buffer-read-only nil))
269 (when (string-match "^[^% \t]+$" method) 269 (when (string-match "^[^% \t]+$" method)
270 (setq method (concat method " %s"))) 270 (setq method (concat method " %s")))
271 (flet ((mm-handle-set-external-undisplayer (handle function) 271 (mh-cl-flet
272 (mh-handle-set-external-undisplayer folder handle function))) 272 ((mm-handle-set-external-undisplayer
273 (unwind-protect (mm-display-external part method) 273 (handle function)
274 (set-buffer-modified-p nil))))) 274 (mh-handle-set-external-undisplayer folder handle function)))
275 (unwind-protect (mm-display-external part method)
276 (set-buffer-modified-p nil)))))
275 nil)) 277 nil))
276 278
277;;;###mh-autoload 279;;;###mh-autoload
@@ -523,47 +525,48 @@ parsed and then displayed."
523 (let ((handles ()) 525 (let ((handles ())
524 (folder mh-show-folder-buffer) 526 (folder mh-show-folder-buffer)
525 (raw-message-data (buffer-string))) 527 (raw-message-data (buffer-string)))
526 (flet ((mm-handle-set-external-undisplayer 528 (mh-cl-flet
527 (handle function) 529 ((mm-handle-set-external-undisplayer
528 (mh-handle-set-external-undisplayer folder handle function))) 530 (handle function)
529 (goto-char (point-min)) 531 (mh-handle-set-external-undisplayer folder handle function)))
530 (unless (search-forward "\n\n" nil t) 532 (goto-char (point-min))
531 (goto-char (point-max)) 533 (unless (search-forward "\n\n" nil t)
532 (insert "\n\n")) 534 (goto-char (point-max))
533 535 (insert "\n\n"))
534 (condition-case err 536
535 (progn 537 (condition-case err
536 ;; If needed dissect the current buffer 538 (progn
537 (if pre-dissected-handles 539 ;; If needed dissect the current buffer
538 (setq handles pre-dissected-handles) 540 (if pre-dissected-handles
539 (if (setq handles (mm-dissect-buffer nil)) 541 (setq handles pre-dissected-handles)
540 (mh-mm-uu-dissect-text-parts handles) 542 (if (setq handles (mm-dissect-buffer nil))
541 (setq handles (mm-uu-dissect))) 543 (mh-mm-uu-dissect-text-parts handles)
542 (setf (mh-mime-handles (mh-buffer-data)) 544 (setq handles (mm-uu-dissect)))
543 (mh-mm-merge-handles handles 545 (setf (mh-mime-handles (mh-buffer-data))
544 (mh-mime-handles (mh-buffer-data)))) 546 (mh-mm-merge-handles handles
545 (unless handles 547 (mh-mime-handles (mh-buffer-data))))
546 (mh-decode-message-body))) 548 (unless handles
547 549 (mh-decode-message-body)))
548 (cond ((and handles 550
549 (or (not (stringp (car handles))) 551 (cond ((and handles
550 (cdr handles))) 552 (or (not (stringp (car handles)))
551 ;; Go to start of message body 553 (cdr handles)))
552 (goto-char (point-min)) 554 ;; Go to start of message body
553 (or (search-forward "\n\n" nil t) 555 (goto-char (point-min))
554 (goto-char (point-max))) 556 (or (search-forward "\n\n" nil t)
555 557 (goto-char (point-max)))
556 ;; Delete the body 558
557 (delete-region (point) (point-max)) 559 ;; Delete the body
558 560 (delete-region (point) (point-max))
559 ;; Display the MIME handles 561
560 (mh-mime-display-part handles)) 562 ;; Display the MIME handles
561 (t 563 (mh-mime-display-part handles))
562 (mh-signature-highlight)))) 564 (t
563 (error 565 (mh-signature-highlight))))
564 (message "Could not display body: %s" (error-message-string err)) 566 (error
565 (delete-region (point-min) (point-max)) 567 (message "Could not display body: %s" (error-message-string err))
566 (insert raw-message-data)))))) 568 (delete-region (point-min) (point-max))
569 (insert raw-message-data))))))
567 570
568(defun mh-decode-message-body () 571(defun mh-decode-message-body ()
569 "Decode message based on charset. 572 "Decode message based on charset.
@@ -1046,13 +1049,14 @@ attachment, the attachment is hidden."
1046 (function (get-text-property (point) 'mh-callback)) 1049 (function (get-text-property (point) 'mh-callback))
1047 (buffer-read-only nil) 1050 (buffer-read-only nil)
1048 (folder mh-show-folder-buffer)) 1051 (folder mh-show-folder-buffer))
1049 (flet ((mm-handle-set-external-undisplayer 1052 (mh-cl-flet
1050 (handle function) 1053 ((mm-handle-set-external-undisplayer
1051 (mh-handle-set-external-undisplayer folder handle function))) 1054 (handle function)
1052 (when (and function (eolp)) 1055 (mh-handle-set-external-undisplayer folder handle function)))
1053 (backward-char)) 1056 (when (and function (eolp))
1054 (unwind-protect (and function (funcall function data)) 1057 (backward-char))
1055 (set-buffer-modified-p nil))))) 1058 (unwind-protect (and function (funcall function data))
1059 (set-buffer-modified-p nil)))))
1056 1060
1057(defun mh-push-button (event) 1061(defun mh-push-button (event)
1058 "Click MIME button for EVENT. 1062 "Click MIME button for EVENT.
@@ -1066,9 +1070,11 @@ to click the MIME button."
1066 (mm-inline-media-tests mh-mm-inline-media-tests) 1070 (mm-inline-media-tests mh-mm-inline-media-tests)
1067 (data (get-text-property (point) 'mh-data)) 1071 (data (get-text-property (point) 'mh-data))
1068 (function (get-text-property (point) 'mh-callback))) 1072 (function (get-text-property (point) 'mh-callback)))
1069 (flet ((mm-handle-set-external-undisplayer (handle func) 1073 (mh-cl-flet
1070 (mh-handle-set-external-undisplayer folder handle func))) 1074 ((mm-handle-set-external-undisplayer
1071 (and function (funcall function data)))))) 1075 (handle func)
1076 (mh-handle-set-external-undisplayer folder handle func)))
1077 (and function (funcall function data))))))
1072 1078
1073(defun mh-handle-set-external-undisplayer (folder handle function) 1079(defun mh-handle-set-external-undisplayer (folder handle function)
1074 "Replacement for `mm-handle-set-external-undisplayer'. 1080 "Replacement for `mm-handle-set-external-undisplayer'.
@@ -1160,10 +1166,11 @@ this ;-)"
1160(defun mh-display-emphasis () 1166(defun mh-display-emphasis ()
1161 "Display graphical emphasis." 1167 "Display graphical emphasis."
1162 (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p)) 1168 (when (and mh-graphical-emphasis-flag (mh-small-show-buffer-p))
1163 (flet ((article-goto-body ())) ; shadow this function to do nothing 1169 (mh-cl-flet
1164 (save-excursion 1170 ((article-goto-body ())) ; shadow this function to do nothing
1165 (goto-char (point-min)) 1171 (save-excursion
1166 (article-emphasize))))) 1172 (goto-char (point-min))
1173 (article-emphasize)))))
1167 1174
1168(defun mh-small-show-buffer-p () 1175(defun mh-small-show-buffer-p ()
1169 "Check if show buffer is small. 1176 "Check if show buffer is small.
diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el
index 5f0c0818714..30bcf9f4647 100644
--- a/lisp/mh-e/mh-scan.el
+++ b/lisp/mh-e/mh-scan.el
@@ -111,6 +111,22 @@ expression which matches the body text as in the default of
111not correct, the body fragment will not be highlighted with the 111not correct, the body fragment will not be highlighted with the
112face `mh-folder-body'.") 112face `mh-folder-body'.")
113 113
114(defvar mh-scan-blacklisted-msg-regexp "^\\( *[0-9]+\\)B"
115 "This regular expression matches blacklisted (spam) messages.
116
117It must match from the beginning of the line. Note that the
118default setting of `mh-folder-font-lock-keywords' expects this
119expression to contain at least one parenthesized expression which
120matches the message number as in the default of
121
122 \"^\\\\( *[0-9]+\\\\)B\".
123
124This expression includes the leading space within parenthesis
125since it looks better to highlight it as well. The highlighting
126is done with the face `mh-folder-blacklisted'. This regular
127expression should be correct as it is needed by non-fontification
128functions. See also `mh-note-blacklisted'.")
129
114(defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*" 130(defvar mh-scan-cur-msg-number-regexp "^\\( *[0-9]+\\+\\).*"
115 "This regular expression matches the current message. 131 "This regular expression matches the current message.
116 132
@@ -155,7 +171,7 @@ is done with the face `mh-folder-deleted'. This regular
155expression should be correct as it is needed by non-fontification 171expression should be correct as it is needed by non-fontification
156functions. See also `mh-note-deleted'.") 172functions. See also `mh-note-deleted'.")
157 173
158(defvar mh-scan-good-msg-regexp "^\\( *[0-9]+\\)[^D^0-9]" 174(defvar mh-scan-good-msg-regexp "^\\( *[0-9]+\\)[^^DBW0-9]"
159 "This regular expression matches \"good\" messages. 175 "This regular expression matches \"good\" messages.
160 176
161It must match from the beginning of the line. Note that the 177It must match from the beginning of the line. Note that the
@@ -163,7 +179,7 @@ default setting of `mh-folder-font-lock-keywords' expects this
163expression to contain at least one parenthesized expression which 179expression to contain at least one parenthesized expression which
164matches the message number as in the default of 180matches the message number as in the default of
165 181
166 \"^\\\\( *[0-9]+\\\\)[^D^0-9]\". 182 \"^\\\\( *[0-9]+\\\\)[^^DBW0-9]\".
167 183
168This expression includes the leading space within the parenthesis 184This expression includes the leading space within the parenthesis
169since it looks better to highlight it as well. The highlighting 185since it looks better to highlight it as well. The highlighting
@@ -277,6 +293,22 @@ non-fontification functions.")
277This is used to eliminate error messages that are occasionally 293This is used to eliminate error messages that are occasionally
278produced by \"inc\".") 294produced by \"inc\".")
279 295
296(defvar mh-scan-whitelisted-msg-regexp "^\\( *[0-9]+\\)W"
297 "This regular expression matches whitelisted (non-spam) messages.
298
299It must match from the beginning of the line. Note that the
300default setting of `mh-folder-font-lock-keywords' expects this
301expression to contain at least one parenthesized expression which
302matches the message number as in the default of
303
304 \"^\\\\( *[0-9]+\\\\)W\".
305
306This expression includes the leading space within parenthesis
307since it looks better to highlight it as well. The highlighting
308is done with the face `mh-folder-whitelisted'. This regular
309expression should be correct as it is needed by non-fontification
310functions. See also `mh-note-whitelisted'.")
311
280 312
281 313
282;;; Widths, Offsets and Columns 314;;; Widths, Offsets and Columns
@@ -294,11 +326,13 @@ Note that columns in Emacs start with 0.")
294(defvar mh-scan-cmd-note-width 1 326(defvar mh-scan-cmd-note-width 1
295 "Number of columns consumed by the cmd-note field in `mh-scan-format'. 327 "Number of columns consumed by the cmd-note field in `mh-scan-format'.
296 328
297This column will have one of the values: \" \", \"D\", \"^\", \"+\", where 329This column will have one of the values: \" \", \"^\", \"D\", \"B\", \"W\", \"+\", where
298 330
299 \" \" is the default value, 331 \" \" is the default value,
332 \"^\" is the `mh-note-refiled' character,
300 \"D\" is the `mh-note-deleted' character, 333 \"D\" is the `mh-note-deleted' character,
301 \"^\" is the `mh-note-refiled' character, and 334 \"B\" is the `mh-note-blacklisted' character,
335 \"W\" is the `mh-note-whitelisted' character, and
302 \"+\" is the `mh-note-cur' character.") 336 \"+\" is the `mh-note-cur' character.")
303 337
304(defvar mh-scan-destination-width 1 338(defvar mh-scan-destination-width 1
@@ -363,6 +397,10 @@ This column will only ever have spaces in it.")
363 397
364;; Alphabetical. 398;; Alphabetical.
365 399
400(defvar mh-note-blacklisted ?B
401 "Messages that have been blacklisted are marked by this character.
402See also `mh-scan-blacklisted-msg-regexp'.")
403
366(defvar mh-note-cur ?+ 404(defvar mh-note-cur ?+
367 "The current message (in MH, not in MH-E) is marked by this character. 405 "The current message (in MH, not in MH-E) is marked by this character.
368See also `mh-scan-cur-msg-number-regexp'.") 406See also `mh-scan-cur-msg-number-regexp'.")
@@ -396,6 +434,10 @@ See also `mh-scan-refiled-msg-regexp'.")
396Messages in the \"search\" sequence are marked by this character as 434Messages in the \"search\" sequence are marked by this character as
397well.") 435well.")
398 436
437(defvar mh-note-whitelisted ?W
438 "Messages that have been whitelisted are marked by this character.
439See also `mh-scan-whitelisted-msg-regexp'.")
440
399 441
400 442
401;;; Utilities 443;;; Utilities
diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el
index 453f1b77901..88e42986f7d 100644
--- a/lisp/mh-e/mh-search.el
+++ b/lisp/mh-e/mh-search.el
@@ -1449,11 +1449,12 @@ being the list of messages originally from that folder."
1449 1449
1450;;;###mh-autoload 1450;;;###mh-autoload
1451(defun mh-index-execute-commands () 1451(defun mh-index-execute-commands ()
1452 "Delete/refile the actual messages. 1452 "Perform the outstanding operations on the actual messages.
1453The copies in the searched folder are then deleted/refiled to get 1453The copies in the searched folder are then deleted, refiled,
1454the desired result. Before deleting the messages we make sure 1454blacklisted and whitelisted to get the desired result. Before
1455that the message being deleted is identical to the one that the 1455processing the messages we make sure that the message is
1456user has marked in the index buffer." 1456identical to the one that the user has marked in the index
1457buffer."
1457 (save-excursion 1458 (save-excursion
1458 (let ((folders ()) 1459 (let ((folders ())
1459 (mh-speed-flists-inhibit-flag t)) 1460 (mh-speed-flists-inhibit-flag t))
@@ -1466,9 +1467,13 @@ user has marked in the index buffer."
1466 ;; Otherwise delete the messages in the source buffer... 1467 ;; Otherwise delete the messages in the source buffer...
1467 (with-current-buffer folder 1468 (with-current-buffer folder
1468 (let ((old-refile-list mh-refile-list) 1469 (let ((old-refile-list mh-refile-list)
1469 (old-delete-list mh-delete-list)) 1470 (old-delete-list mh-delete-list)
1471 (old-blacklist mh-blacklist)
1472 (old-whitelist mh-whitelist))
1470 (setq mh-refile-list nil 1473 (setq mh-refile-list nil
1471 mh-delete-list msgs) 1474 mh-delete-list msgs
1475 mh-blacklist nil
1476 mh-whitelist nil)
1472 (unwind-protect (mh-execute-commands) 1477 (unwind-protect (mh-execute-commands)
1473 (setq mh-refile-list 1478 (setq mh-refile-list
1474 (mapcar (lambda (x) 1479 (mapcar (lambda (x)
@@ -1478,13 +1483,21 @@ user has marked in the index buffer."
1478 old-refile-list) 1483 old-refile-list)
1479 mh-delete-list 1484 mh-delete-list
1480 (loop for x in old-delete-list 1485 (loop for x in old-delete-list
1486 unless (memq x msgs) collect x)
1487 mh-blacklist
1488 (loop for x in old-blacklist
1489 unless (memq x msgs) collect x)
1490 mh-whitelist
1491 (loop for x in old-whitelist
1481 unless (memq x msgs) collect x)) 1492 unless (memq x msgs) collect x))
1482 (mh-set-folder-modified-p (mh-outstanding-commands-p)) 1493 (mh-set-folder-modified-p (mh-outstanding-commands-p))
1483 (when (mh-outstanding-commands-p) 1494 (when (mh-outstanding-commands-p)
1484 (mh-notate-deleted-and-refiled))))))) 1495 (mh-notate-deleted-and-refiled)))))))
1485 (mh-index-matching-source-msgs (append (loop for x in mh-refile-list 1496 (mh-index-matching-source-msgs (append (loop for x in mh-refile-list
1486 append (cdr x)) 1497 append (cdr x))
1487 mh-delete-list) 1498 mh-delete-list
1499 mh-blacklist
1500 mh-whitelist)
1488 t)) 1501 t))
1489 folders))) 1502 folders)))
1490 1503
diff --git a/lisp/mh-e/mh-show.el b/lisp/mh-e/mh-show.el
index a5759344b25..4fb9fad0919 100644
--- a/lisp/mh-e/mh-show.el
+++ b/lisp/mh-e/mh-show.el
@@ -611,6 +611,7 @@ still visible.\n")
611 "l" mh-show-list-folders 611 "l" mh-show-list-folders
612 "n" mh-index-new-messages 612 "n" mh-index-new-messages
613 "o" mh-show-visit-folder 613 "o" mh-show-visit-folder
614 "p" mh-show-pack-folder
614 "q" mh-show-index-sequenced-messages 615 "q" mh-show-index-sequenced-messages
615 "r" mh-show-rescan-folder 616 "r" mh-show-rescan-folder
616 "s" mh-search 617 "s" mh-search
@@ -898,13 +899,14 @@ See also `mh-folder-mode'.
898 (interactive) 899 (interactive)
899 ;; Don't allow Gnus to create buttons while highlighting, maybe this is bad 900 ;; Don't allow Gnus to create buttons while highlighting, maybe this is bad
900 ;; style? 901 ;; style?
901 (flet ((gnus-article-add-button (&rest args) nil)) 902 (mh-cl-flet
902 (let* ((modified (buffer-modified-p)) 903 ((gnus-article-add-button (&rest args) nil))
903 (gnus-article-buffer (buffer-name)) 904 (let* ((modified (buffer-modified-p))
904 (gnus-cite-face-list `(,@(cdr gnus-cite-face-list) 905 (gnus-article-buffer (buffer-name))
905 ,(car gnus-cite-face-list)))) 906 (gnus-cite-face-list `(,@(cdr gnus-cite-face-list)
906 (gnus-article-highlight-citation t) 907 ,(car gnus-cite-face-list))))
907 (set-buffer-modified-p modified)))) 908 (gnus-article-highlight-citation t)
909 (set-buffer-modified-p modified))))
908 910
909(provide 'mh-show) 911(provide 'mh-show)
910 912
diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el
index 48c06c3df87..ba2c61f1708 100644
--- a/lisp/mh-e/mh-thread.el
+++ b/lisp/mh-e/mh-thread.el
@@ -645,19 +645,20 @@ Only information about messages in MSG-LIST are added to the tree."
645 645
646(defun mh-thread-set-tables (folder) 646(defun mh-thread-set-tables (folder)
647 "Use the tables of FOLDER in current buffer." 647 "Use the tables of FOLDER in current buffer."
648 (flet ((mh-get-table (symbol) 648 (mh-cl-flet
649 (with-current-buffer folder 649 ((mh-get-table (symbol)
650 (symbol-value symbol)))) 650 (with-current-buffer folder
651 (setq mh-thread-id-hash (mh-get-table 'mh-thread-id-hash)) 651 (symbol-value symbol))))
652 (setq mh-thread-subject-hash (mh-get-table 'mh-thread-subject-hash)) 652 (setq mh-thread-id-hash (mh-get-table 'mh-thread-id-hash))
653 (setq mh-thread-id-table (mh-get-table 'mh-thread-id-table)) 653 (setq mh-thread-subject-hash (mh-get-table 'mh-thread-subject-hash))
654 (setq mh-thread-id-index-map (mh-get-table 'mh-thread-id-index-map)) 654 (setq mh-thread-id-table (mh-get-table 'mh-thread-id-table))
655 (setq mh-thread-index-id-map (mh-get-table 'mh-thread-index-id-map)) 655 (setq mh-thread-id-index-map (mh-get-table 'mh-thread-id-index-map))
656 (setq mh-thread-scan-line-map (mh-get-table 'mh-thread-scan-line-map)) 656 (setq mh-thread-index-id-map (mh-get-table 'mh-thread-index-id-map))
657 (setq mh-thread-subject-container-hash 657 (setq mh-thread-scan-line-map (mh-get-table 'mh-thread-scan-line-map))
658 (mh-get-table 'mh-thread-subject-container-hash)) 658 (setq mh-thread-subject-container-hash
659 (setq mh-thread-duplicates (mh-get-table 'mh-thread-duplicates)) 659 (mh-get-table 'mh-thread-subject-container-hash))
660 (setq mh-thread-history (mh-get-table 'mh-thread-history)))) 660 (setq mh-thread-duplicates (mh-get-table 'mh-thread-duplicates))
661 (setq mh-thread-history (mh-get-table 'mh-thread-history))))
661 662
662(defun mh-thread-process-in-reply-to (reply-to-header) 663(defun mh-thread-process-in-reply-to (reply-to-header)
663 "Extract message id's from REPLY-TO-HEADER. 664 "Extract message id's from REPLY-TO-HEADER.
diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el
index 950c28b227f..c9e663eedba 100644
--- a/lisp/minibuf-eldef.el
+++ b/lisp/minibuf-eldef.el
@@ -152,15 +152,11 @@ been set up by `minibuf-eldef-setup-minibuffer'."
152 (and (= (point-max) minibuf-eldef-initial-buffer-length) 152 (and (= (point-max) minibuf-eldef-initial-buffer-length)
153 (string-equal (minibuffer-contents-no-properties) 153 (string-equal (minibuffer-contents-no-properties)
154 minibuf-eldef-initial-input))) 154 minibuf-eldef-initial-input)))
155 ;; swap state 155 ;; Swap state.
156 (setq minibuf-eldef-showing-default-in-prompt 156 (setq minibuf-eldef-showing-default-in-prompt
157 (not minibuf-eldef-showing-default-in-prompt)) 157 (not minibuf-eldef-showing-default-in-prompt))
158 (cond (minibuf-eldef-showing-default-in-prompt 158 (overlay-put minibuf-eldef-overlay 'invisible
159 (overlay-put minibuf-eldef-overlay 'invisible nil) 159 (not minibuf-eldef-showing-default-in-prompt))))
160 (overlay-put minibuf-eldef-overlay 'intangible nil))
161 (t
162 (overlay-put minibuf-eldef-overlay 'invisible t)
163 (overlay-put minibuf-eldef-overlay 'intangible t)))))
164 160
165 161
166;;;###autoload 162;;;###autoload
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 6e704fad807..7fe50e930ce 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1106,6 +1106,13 @@ scroll the window of possible completions."
1106 (sort-fun (completion-metadata-get all-md 'cycle-sort-function))) 1106 (sort-fun (completion-metadata-get all-md 'cycle-sort-function)))
1107 (when last 1107 (when last
1108 (setcdr last nil) 1108 (setcdr last nil)
1109
1110 ;; Delete duplicates: do it after setting last's cdr to nil (so
1111 ;; it's a proper list), and be careful to reset `last' since it
1112 ;; may be a different cons-cell.
1113 (setq all (delete-dups all))
1114 (setq last (last all))
1115
1109 (setq all (if sort-fun (funcall sort-fun all) 1116 (setq all (if sort-fun (funcall sort-fun all)
1110 ;; Prefer shorter completions, by default. 1117 ;; Prefer shorter completions, by default.
1111 (sort all (lambda (c1 c2) (< (length c1) (length c2)))))) 1118 (sort all (lambda (c1 c2) (< (length c1) (length c2))))))
@@ -1120,6 +1127,15 @@ scroll the window of possible completions."
1120 ;; all possibilities. 1127 ;; all possibilities.
1121 (completion--cache-all-sorted-completions (nconc all base-size)))))) 1128 (completion--cache-all-sorted-completions (nconc all base-size))))))
1122 1129
1130(defun minibuffer-force-complete-and-exit ()
1131 "Complete the minibuffer with first of the matches and exit."
1132 (interactive)
1133 (minibuffer-force-complete)
1134 (minibuffer--complete-and-exit
1135 ;; If the previous completion completed to an element which fails
1136 ;; test-completion, then we shouldn't exit, but that should be rare.
1137 (lambda () (minibuffer-message "Incomplete"))))
1138
1123(defun minibuffer-force-complete () 1139(defun minibuffer-force-complete ()
1124 "Complete the minibuffer to an exact match. 1140 "Complete the minibuffer to an exact match.
1125Repeated uses step through the possible completions." 1141Repeated uses step through the possible completions."
@@ -1192,6 +1208,22 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
1192 `minibuffer-confirm-exit-commands', and accept the input 1208 `minibuffer-confirm-exit-commands', and accept the input
1193 otherwise." 1209 otherwise."
1194 (interactive) 1210 (interactive)
1211 (minibuffer--complete-and-exit
1212 (lambda ()
1213 (pcase (condition-case nil
1214 (completion--do-completion nil 'expect-exact)
1215 (error 1))
1216 ((or #b001 #b011) (exit-minibuffer))
1217 (#b111 (if (not minibuffer-completion-confirm)
1218 (exit-minibuffer)
1219 (minibuffer-message "Confirm")
1220 nil))
1221 (_ nil)))))
1222
1223(defun minibuffer--complete-and-exit (completion-function)
1224 "Exit from `require-match' minibuffer.
1225COMPLETION-FUNCTION is called if the current buffer's content does not
1226appear to be a match."
1195 (let ((beg (field-beginning)) 1227 (let ((beg (field-beginning))
1196 (end (field-end))) 1228 (end (field-end)))
1197 (cond 1229 (cond
@@ -1239,15 +1271,7 @@ If `minibuffer-completion-confirm' is `confirm-after-completion',
1239 1271
1240 (t 1272 (t
1241 ;; Call do-completion, but ignore errors. 1273 ;; Call do-completion, but ignore errors.
1242 (pcase (condition-case nil 1274 (funcall completion-function)))))
1243 (completion--do-completion nil 'expect-exact)
1244 (error 1))
1245 ((or #b001 #b011) (exit-minibuffer))
1246 (#b111 (if (not minibuffer-completion-confirm)
1247 (exit-minibuffer)
1248 (minibuffer-message "Confirm")
1249 nil))
1250 (_ nil))))))
1251 1275
1252(defun completion--try-word-completion (string table predicate point md) 1276(defun completion--try-word-completion (string table predicate point md)
1253 (let ((comp (completion-try-completion string table predicate point md))) 1277 (let ((comp (completion-try-completion string table predicate point md)))
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 61d70404bd6..60a3d390889 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -425,7 +425,7 @@ must be one of the symbols `header', `mode', or `vertical'."
425 (frame-parameters frame))) 425 (frame-parameters frame)))
426 'right))) 426 'right)))
427 (draggable t) 427 (draggable t)
428 event position growth dragged) 428 finished event position growth dragged)
429 (cond 429 (cond
430 ((eq line 'header) 430 ((eq line 'header)
431 ;; Check whether header-line can be dragged at all. 431 ;; Check whether header-line can be dragged at all.
@@ -457,7 +457,7 @@ must be one of the symbols `header', `mode', or `vertical'."
457 ;; Start tracking. 457 ;; Start tracking.
458 (track-mouse 458 (track-mouse
459 ;; Loop reading events and sampling the position of the mouse. 459 ;; Loop reading events and sampling the position of the mouse.
460 (while draggable 460 (while (not finished)
461 (setq event (read-event)) 461 (setq event (read-event))
462 (setq position (mouse-position)) 462 (setq position (mouse-position))
463 ;; Do nothing if 463 ;; Do nothing if
@@ -472,7 +472,7 @@ must be one of the symbols `header', `mode', or `vertical'."
472 ;; - there is a keyboard event or some other unknown event. 472 ;; - there is a keyboard event or some other unknown event.
473 (cond 473 (cond
474 ((not (consp event)) 474 ((not (consp event))
475 (setq draggable nil)) 475 (setq finished t))
476 ((memq (car event) '(switch-frame select-window)) 476 ((memq (car event) '(switch-frame select-window))
477 nil) 477 nil)
478 ((not (memq (car event) '(mouse-movement scroll-bar-movement))) 478 ((not (memq (car event) '(mouse-movement scroll-bar-movement)))
@@ -480,15 +480,15 @@ must be one of the symbols `header', `mode', or `vertical'."
480 ;; Do not unread a drag-mouse-1 event to avoid selecting 480 ;; Do not unread a drag-mouse-1 event to avoid selecting
481 ;; some other window. For vertical line dragging do not 481 ;; some other window. For vertical line dragging do not
482 ;; unread mouse-1 events either (but only if we dragged at 482 ;; unread mouse-1 events either (but only if we dragged at
483 ;; least once to allow mouse-1 clicks get through. 483 ;; least once to allow mouse-1 clicks get through).
484 (unless (and dragged 484 (unless (and dragged
485 (if (eq line 'vertical) 485 (if (eq line 'vertical)
486 (memq (car event) '(drag-mouse-1 mouse-1)) 486 (memq (car event) '(drag-mouse-1 mouse-1))
487 (eq (car event) 'drag-mouse-1))) 487 (eq (car event) 'drag-mouse-1)))
488 (push event unread-command-events))) 488 (push event unread-command-events)))
489 (setq draggable nil)) 489 (setq finished t))
490 ((or (not (eq (car position) frame)) 490 ((not (and (eq (car position) frame)
491 (null (car (cdr position)))) 491 (cadr position)))
492 nil) 492 nil)
493 ((eq line 'vertical) 493 ((eq line 'vertical)
494 ;; Drag vertical divider. 494 ;; Drag vertical divider.
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index e9828c5f813..fa5bc4a9822 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -406,7 +406,8 @@ will be killed."
406 "The channel or user associated with this buffer.") 406 "The channel or user associated with this buffer.")
407 407
408(defvar rcirc-urls nil 408(defvar rcirc-urls nil
409 "List of urls seen in the current buffer.") 409 "List of URLs seen in the current buffer and the position in
410the buffer where the URL starts.")
410(put 'rcirc-urls 'permanent-local t) 411(put 'rcirc-urls 'permanent-local t)
411 412
412(defvar rcirc-timeout-seconds 600 413(defvar rcirc-timeout-seconds 600
@@ -2392,12 +2393,23 @@ keywords when no KEYWORD is given."
2392 "\\)") 2393 "\\)")
2393 "Regexp matching URLs. Set to nil to disable URL features in rcirc.") 2394 "Regexp matching URLs. Set to nil to disable URL features in rcirc.")
2394 2395
2396(defun rcirc-condition-filter (condp lst)
2397 "Given a condition and a list, returns the list with elements
2398that do not satisfy the condition removed."
2399 (delq nil (mapcar (lambda (x) (and (funcall condp x) x)) lst)))
2400
2395(defun rcirc-browse-url (&optional arg) 2401(defun rcirc-browse-url (&optional arg)
2396 "Prompt for URL to browse based on URLs in buffer." 2402 "Prompt for URL to browse based on URLs in buffer before point.
2403
2404If ARG is given, opens the URL in a new browser window."
2397 (interactive "P") 2405 (interactive "P")
2398 (let ((completions (mapcar (lambda (x) (cons x nil)) rcirc-urls)) 2406 (let* ((point (point))
2399 (initial-input (car rcirc-urls)) 2407 (filtered (rcirc-condition-filter
2400 (history (cdr rcirc-urls))) 2408 (lambda (x) (>= point (cdr x)))
2409 rcirc-urls))
2410 (completions (mapcar (lambda (x) (car x)) filtered))
2411 (initial-input (caar filtered))
2412 (history (mapcar (lambda (x) (car x)) (cdr filtered))))
2401 (browse-url (completing-read "rcirc browse-url: " 2413 (browse-url (completing-read "rcirc browse-url: "
2402 completions nil nil initial-input 'history) 2414 completions nil nil initial-input 'history)
2403 arg))) 2415 arg)))
@@ -2441,17 +2453,19 @@ keywords when no KEYWORD is given."
2441(defun rcirc-markup-urls (sender response) 2453(defun rcirc-markup-urls (sender response)
2442 (while (and rcirc-url-regexp ;; nil means disable URL catching 2454 (while (and rcirc-url-regexp ;; nil means disable URL catching
2443 (re-search-forward rcirc-url-regexp nil t)) 2455 (re-search-forward rcirc-url-regexp nil t))
2444 (let ((start (match-beginning 0)) 2456 (let* ((start (match-beginning 0))
2445 (end (match-end 0)) 2457 (end (match-end 0))
2446 (url (match-string-no-properties 0))) 2458 (url (match-string-no-properties 0))
2459 (link-text (buffer-substring-no-properties start end)))
2447 (make-button start end 2460 (make-button start end
2448 'face 'rcirc-url 2461 'face 'rcirc-url
2449 'follow-link t 2462 'follow-link t
2450 'rcirc-url url 2463 'rcirc-url url
2451 'action (lambda (button) 2464 'action (lambda (button)
2452 (browse-url (button-get button 'rcirc-url)))) 2465 (browse-url (button-get button 'rcirc-url))))
2453 ;; record the url 2466 ;; record the url if it is not already the latest stored url
2454 (push url rcirc-urls)))) 2467 (when (not (string= link-text (caar rcirc-urls)))
2468 (push (cons link-text start) rcirc-urls)))))
2455 2469
2456(defun rcirc-markup-keywords (sender response) 2470(defun rcirc-markup-keywords (sender response)
2457 (when (and (string= response "PRIVMSG") 2471 (when (and (string= response "PRIVMSG")
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
new file mode 100644
index 00000000000..fea4cb35ea3
--- /dev/null
+++ b/lisp/net/tramp-adb.el
@@ -0,0 +1,981 @@
1;;; tramp-adb.el --- Functions for calling Android Debug Bridge from Tramp
2
3;; Copyright (C) 2011-2012 Free Software Foundation, Inc.
4
5;; Author: Juergen Hoetzel <juergen@archlinux.org>
6;; Keywords: comm, processes
7;; Package: tramp
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software: you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
13;; the Free Software Foundation, either version 3 of the License, or
14;; (at your option) any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
23
24;;; Commentary:
25
26;; The Android Debug Bridge must be installed on your local machine.
27;; Add the following form into your .emacs:
28;;
29;; (setq tramp-adb-sdk-dir "/path/to/android/sdk")
30;;
31;; Due to security it is not possible to access non-root devices.
32
33;;; Code:
34
35(require 'tramp)
36
37(defvar dired-move-to-filename-regexp)
38
39(defcustom tramp-adb-sdk-dir "~/Android/sdk"
40 "Set to the directory containing the Android SDK."
41 :type 'string
42 :version "24.4"
43 :group 'tramp)
44
45;;;###tramp-autoload
46(defconst tramp-adb-method "adb"
47 "*When this method name is used, forward all calls to Android Debug Bridge.")
48
49(defcustom tramp-adb-prompt "^\\(?:[[:alnum:]]*@[[:alnum:]]*[^#\\$]*\\)?[#\\$][[:space:]]"
50 "Regexp used as prompt in almquist shell."
51 :type 'string
52 :version "24.4"
53 :group 'tramp)
54
55(defconst tramp-adb-ls-date-regexp "[[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]][0-9][0-9]:[0-9][0-9][[:space:]]")
56
57;;;###tramp-autoload
58(add-to-list 'tramp-methods `(,tramp-adb-method))
59
60;;;###tramp-autoload
61(eval-after-load 'tramp
62 '(tramp-set-completion-function
63 tramp-adb-method '((tramp-adb-parse-device-names ""))))
64
65;;;###tramp-autoload
66(add-to-list 'tramp-foreign-file-name-handler-alist
67 (cons 'tramp-adb-file-name-p 'tramp-adb-file-name-handler))
68
69(defconst tramp-adb-file-name-handler-alist
70 '((directory-file-name . tramp-handle-directory-file-name)
71 (dired-uncache . tramp-handle-dired-uncache)
72 (file-name-as-directory . tramp-handle-file-name-as-directory)
73 (file-name-completion . tramp-handle-file-name-completion)
74 (file-name-all-completions . tramp-adb-handle-file-name-all-completions)
75 (file-attributes . tramp-adb-handle-file-attributes)
76 (file-name-directory . tramp-handle-file-name-directory)
77 (file-name-nondirectory . tramp-handle-file-name-nondirectory)
78 (file-truename . tramp-adb-handle-file-truename)
79 (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
80 (file-name-as-directory . tramp-handle-file-name-as-directory)
81 (file-regular-p . tramp-handle-file-regular-p)
82 (file-remote-p . tramp-handle-file-remote-p)
83 (file-directory-p . tramp-adb-handle-file-directory-p)
84 (file-symlink-p . tramp-handle-file-symlink-p)
85 ;; FIXME: This is too sloppy.
86 (file-executable-p . file-exists-p)
87 (file-exists-p . tramp-adb-handle-file-exists-p)
88 (file-readable-p . tramp-handle-file-exists-p)
89 (file-writable-p . tramp-adb-handle-file-writable-p)
90 (file-local-copy . tramp-adb-handle-file-local-copy)
91 (file-modes . tramp-handle-file-modes)
92 (expand-file-name . tramp-adb-handle-expand-file-name)
93 (find-backup-file-name . tramp-handle-find-backup-file-name)
94 (directory-files . tramp-handle-directory-files)
95 (make-directory . tramp-adb-handle-make-directory)
96 (delete-directory . tramp-adb-handle-delete-directory)
97 (delete-file . tramp-adb-handle-delete-file)
98 (load . tramp-handle-load)
99 (insert-directory . tramp-adb-handle-insert-directory)
100 (insert-file-contents . tramp-handle-insert-file-contents)
101 (substitute-in-file-name . tramp-handle-substitute-in-file-name)
102 (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
103 (vc-registered . ignore) ;no vc control files on Android devices
104 (write-region . tramp-adb-handle-write-region)
105 (set-file-modes . tramp-adb-handle-set-file-modes)
106 (set-file-times . ignore)
107 (copy-file . tramp-adb-handle-copy-file)
108 (rename-file . tramp-adb-handle-rename-file)
109 (process-file . tramp-adb-handle-process-file)
110 (shell-command . tramp-adb-handle-shell-command)
111 (start-file-process . tramp-adb-handle-start-file-process))
112 "Alist of handler functions for Tramp ADB method.")
113
114;;;###tramp-autoload
115(defun tramp-adb-file-name-p (filename)
116 "Check if it's a filename for ADB."
117 (let ((v (tramp-dissect-file-name filename)))
118 (string= (tramp-file-name-method v) tramp-adb-method)))
119
120;;;###tramp-autoload
121(defun tramp-adb-file-name-handler (operation &rest args)
122 "Invoke the ADB handler for OPERATION.
123First arg specifies the OPERATION, second arg is a list of arguments to
124pass to the OPERATION."
125 (let ((fn (assoc operation tramp-adb-file-name-handler-alist))
126 ;; `tramp-default-host's default value is (system-name). Not
127 ;; useful for us.
128 (tramp-default-host
129 (unless (equal (eval (car (get 'tramp-default-host 'standard-value)))
130 tramp-default-host)
131 tramp-default-host)))
132 (if fn
133 (save-match-data (apply (cdr fn) args))
134 (tramp-run-real-handler operation args))))
135
136;; This cannot be a constant, because `tramp-adb-sdk-dir' is customizable.
137(defun tramp-adb-program ()
138 "The Android Debug Bridge."
139 (expand-file-name "platform-tools/adb" tramp-adb-sdk-dir))
140
141;;;###tramp-autoload
142(defun tramp-adb-parse-device-names (ignore)
143 "Return a list of (nil host) tuples allowed to access."
144 (with-temp-buffer
145 (when (zerop (call-process (tramp-adb-program) nil t nil "devices"))
146 (let (result)
147 (goto-char (point-min))
148 (while (search-forward-regexp "^\\(\\S-+\\)[[:space:]]+device$" nil t)
149 (add-to-list 'result (list nil (match-string 1))))
150 result))))
151
152(defun tramp-adb-handle-expand-file-name (name &optional dir)
153 "Like `expand-file-name' for Tramp files."
154 ;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
155 (setq dir (or dir default-directory "/"))
156 ;; Unless NAME is absolute, concat DIR and NAME.
157 (unless (file-name-absolute-p name)
158 (setq name (concat (file-name-as-directory dir) name)))
159 ;; If NAME is not a Tramp file, run the real handler.
160 (if (not (tramp-tramp-file-p name))
161 (tramp-run-real-handler 'expand-file-name (list name nil))
162 ;; Dissect NAME.
163 (with-parsed-tramp-file-name name nil
164 (unless (tramp-run-real-handler 'file-name-absolute-p (list localname))
165 (setq localname (concat "/" localname)))
166 ;; Do normal `expand-file-name' (this does "/./" and "/../").
167 ;; We bind `directory-sep-char' here for XEmacs on Windows,
168 ;; which would otherwise use backslash. `default-directory' is
169 ;; bound, because on Windows there would be problems with UNC
170 ;; shares or Cygwin mounts.
171 (let ((directory-sep-char ?/)
172 (default-directory (tramp-compat-temporary-file-directory)))
173 (tramp-make-tramp-file-name
174 method user host
175 (tramp-drop-volume-letter
176 (tramp-run-real-handler
177 'expand-file-name (list localname))))))))
178
179(defun tramp-adb-handle-file-directory-p (filename)
180 "Like `file-directory-p' for Tramp files."
181 (car (file-attributes (file-truename filename))))
182
183;; This is derived from `tramp-sh-handle-file-truename'. Maybe the
184;; code could be shared?
185(defun tramp-adb-handle-file-truename (filename &optional counter prev-dirs)
186 "Like `file-truename' for Tramp files."
187 (with-parsed-tramp-file-name (expand-file-name filename) nil
188 (with-tramp-file-property v localname "file-truename"
189 (let ((result nil)) ; result steps in reverse order
190 (tramp-message v 4 "Finding true name for `%s'" filename)
191 (let* ((directory-sep-char ?/)
192 (steps (tramp-compat-split-string localname "/"))
193 (localnamedir (tramp-run-real-handler
194 'file-name-as-directory (list localname)))
195 (is-dir (string= localname localnamedir))
196 (thisstep nil)
197 (numchase 0)
198 ;; Don't make the following value larger than
199 ;; necessary. People expect an error message in a
200 ;; timely fashion when something is wrong; otherwise
201 ;; they might think that Emacs is hung. Of course,
202 ;; correctness has to come first.
203 (numchase-limit 20)
204 symlink-target)
205 (while (and steps (< numchase numchase-limit))
206 (setq thisstep (pop steps))
207 (tramp-message
208 v 5 "Check %s"
209 (mapconcat 'identity
210 (append '("") (reverse result) (list thisstep))
211 "/"))
212 (setq symlink-target
213 (nth 0 (file-attributes
214 (tramp-make-tramp-file-name
215 method user host
216 (mapconcat 'identity
217 (append '("")
218 (reverse result)
219 (list thisstep))
220 "/")))))
221 (cond ((string= "." thisstep)
222 (tramp-message v 5 "Ignoring step `.'"))
223 ((string= ".." thisstep)
224 (tramp-message v 5 "Processing step `..'")
225 (pop result))
226 ((stringp symlink-target)
227 ;; It's a symlink, follow it.
228 (tramp-message v 5 "Follow symlink to %s" symlink-target)
229 (setq numchase (1+ numchase))
230 (when (file-name-absolute-p symlink-target)
231 (setq result nil))
232 ;; If the symlink was absolute, we'll get a string
233 ;; like "/user@host:/some/target"; extract the
234 ;; "/some/target" part from it.
235 (when (tramp-tramp-file-p symlink-target)
236 (unless (tramp-equal-remote filename symlink-target)
237 (tramp-error
238 v 'file-error
239 "Symlink target `%s' on wrong host" symlink-target))
240 (setq symlink-target localname))
241 (setq steps
242 (append (tramp-compat-split-string
243 symlink-target "/")
244 steps)))
245 (t
246 ;; It's a file.
247 (setq result (cons thisstep result)))))
248 (when (>= numchase numchase-limit)
249 (tramp-error
250 v 'file-error
251 "Maximum number (%d) of symlinks exceeded" numchase-limit))
252 (setq result (reverse result))
253 ;; Combine list to form string.
254 (setq result
255 (if result
256 (mapconcat 'identity (cons "" result) "/")
257 "/"))
258 (when (and is-dir (or (string= "" result)
259 (not (string= (substring result -1) "/"))))
260 (setq result (concat result "/"))))
261
262 (tramp-message v 4 "True name of `%s' is `%s'" filename result)
263 (tramp-make-tramp-file-name method user host result)))))
264
265(defun tramp-adb-handle-file-attributes (filename &optional id-format)
266 "Like `file-attributes' for Tramp files."
267 (unless id-format (setq id-format 'integer))
268 (ignore-errors
269 (with-parsed-tramp-file-name filename nil
270 (with-tramp-file-property v localname (format "file-attributes-%s" id-format)
271 (tramp-adb-barf-unless-okay
272 v (format "ls -d -l %s" (tramp-shell-quote-argument localname)) "")
273 (with-current-buffer (tramp-get-buffer v)
274 (tramp-adb-sh-fix-ls-output)
275 (let* ((columns (split-string (buffer-string)))
276 (mod-string (nth 0 columns))
277 (is-dir (eq ?d (aref mod-string 0)))
278 (is-symlink (eq ?l (aref mod-string 0)))
279 (symlink-target (and is-symlink (cadr (split-string (buffer-string) "\\( -> \\|\n\\)"))))
280 (uid (nth 1 columns))
281 (gid (nth 2 columns))
282 (date (format "%s %s" (nth 4 columns) (nth 5 columns)))
283 (size (string-to-number (nth 3 columns))))
284 (list
285 (or is-dir symlink-target)
286 1 ;link-count
287 ;; no way to handle numeric ids in Androids ash
288 (if (eq id-format 'integer) 0 uid)
289 (if (eq id-format 'integer) 0 gid)
290 '(0 0) ; atime
291 (date-to-time date) ; mtime
292 '(0 0) ; ctime
293 size
294 mod-string
295 ;; fake
296 t 1 1)))))))
297
298(defun tramp-adb--gnu-switches-to-ash
299 (switches)
300 "Almquist shell can't handle multiple arguments.
301Convert (\"-al\") to (\"-a\" \"-l\"). Remove arguments like \"--dired\"."
302 (split-string
303 (apply 'concat
304 (mapcar (lambda (s)
305 (replace-regexp-in-string
306 "\\(.\\)" " -\\1"
307 (replace-regexp-in-string "^-" "" s)))
308 ;; FIXME: Warning about removed switches (long and non-dash).
309 (delq nil
310 (mapcar
311 (lambda (s) (and (not (string-match "\\(^--\\|^[^-]\\)" s)) s))
312 switches))))))
313
314(defun tramp-adb-handle-insert-directory
315 (filename switches &optional wildcard full-directory-p)
316 "Like `insert-directory' for Tramp files."
317 (when (stringp switches)
318 (setq switches (tramp-adb--gnu-switches-to-ash (split-string switches))))
319 (with-parsed-tramp-file-name (file-truename filename) nil
320 (with-current-buffer (tramp-get-buffer v)
321 (let ((name (tramp-shell-quote-argument (directory-file-name localname)))
322 (switch-d (member "-d" switches))
323 (switch-t (member "-t" switches))
324 (switches (mapconcat 'identity (remove "-t" switches) " ")))
325 (tramp-adb-barf-unless-okay
326 v (format "ls %s %s" switches name)
327 "Cannot insert directory listing: %s" filename)
328 (unless switch-d
329 ;; We insert also filename/. and filename/.., because "ls" doesn't.
330 (narrow-to-region (point) (point))
331 (ignore-errors
332 (tramp-adb-barf-unless-okay
333 v (format "ls -d %s %s %s"
334 switches
335 (concat (file-name-as-directory name) ".")
336 (concat (file-name-as-directory name) ".."))
337 "Cannot insert directory listing: %s" filename))
338 (widen))
339 (tramp-adb-sh-fix-ls-output switch-t)))
340 (insert-buffer-substring (tramp-get-buffer v))))
341
342(defun tramp-adb-sh-fix-ls-output (&optional sort-by-time)
343 "Androids ls command doesn't insert size column for directories: Emacs dired can't find files. Insert dummy 0 in empty size columns."
344 (save-excursion
345 ;; Insert missing size.
346 (goto-char (point-min))
347 (while (search-forward-regexp "[[:space:]]\\([[:space:]][0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9][[:space:]]\\)" nil t)
348 (replace-match "0\\1" "\\1" nil)
349 ;; Insert missing "/".
350 (when (looking-at "[0-9][0-9]:[0-9][0-9][[:space:]]+$")
351 (end-of-line)
352 (insert "/")))
353 ;; Sort entries.
354 (let* ((lines (split-string (buffer-string) "\n" t))
355 (sorted-lines
356 (sort
357 lines
358 (if sort-by-time
359 'tramp-adb-ls-output-time-less-p
360 'tramp-adb-ls-output-name-less-p))))
361 (delete-region (point-min) (point-max))
362 (insert " " (mapconcat 'identity sorted-lines "\n ")))
363 ;; Add final newline.
364 (goto-char (point-max))
365 (unless (= (point) (line-beginning-position))
366 (insert "\n"))))
367
368
369(defun tramp-adb-ls-output-time-less-p (a b)
370 "Sort \"ls\" output by time, descending."
371 (let (time-a time-b)
372 (string-match tramp-adb-ls-date-regexp a)
373 (setq time-a (apply 'encode-time (parse-time-string (match-string 0 a))))
374 (string-match tramp-adb-ls-date-regexp b)
375 (setq time-b (apply 'encode-time (parse-time-string (match-string 0 b))))
376 (time-less-p time-b time-a)))
377
378(defun tramp-adb-ls-output-name-less-p (a b)
379 "Sort \"ls\" output by name, ascending."
380 (let (posa posb)
381 (string-match dired-move-to-filename-regexp a)
382 (setq posa (match-end 0))
383 (string-match dired-move-to-filename-regexp b)
384 (setq posb (match-end 0))
385 (string-lessp (substring a posa) (substring b posb))))
386
387(defun tramp-adb-handle-make-directory (dir &optional parents)
388 "Like `make-directory' for Tramp files."
389 (setq dir (expand-file-name dir))
390 (with-parsed-tramp-file-name dir nil
391 (when parents
392 (let ((par (expand-file-name ".." dir)))
393 (unless (file-directory-p par)
394 (make-directory par parents))))
395 (tramp-adb-barf-unless-okay
396 v (format "mkdir %s" (tramp-shell-quote-argument localname))
397 "Couldn't make directory %s" dir)
398 (tramp-flush-directory-property v (file-name-directory localname))))
399
400(defun tramp-adb-handle-delete-directory (directory &optional recursive)
401 "Like `delete-directory' for Tramp files."
402 (setq directory (expand-file-name directory))
403 (with-parsed-tramp-file-name directory nil
404 (tramp-flush-file-property v (file-name-directory localname))
405 (tramp-flush-directory-property v localname)
406 (tramp-adb-barf-unless-okay
407 v (format "%s %s"
408 (if recursive "rm -r" "rmdir")
409 (tramp-shell-quote-argument localname))
410 "Couldn't delete %s" directory)))
411
412(defun tramp-adb-handle-delete-file (filename &optional trash)
413 "Like `delete-file' for Tramp files."
414 (setq filename (expand-file-name filename))
415 (with-parsed-tramp-file-name filename nil
416 (tramp-flush-file-property v (file-name-directory localname))
417 (tramp-flush-file-property v localname)
418 (tramp-adb-barf-unless-okay
419 v (format "rm %s" (tramp-shell-quote-argument localname))
420 "Couldn't delete %s" filename)))
421
422(defun tramp-adb-handle-file-name-all-completions (filename directory)
423 "Like `file-name-all-completions' for Tramp files."
424 (all-completions
425 filename
426 (with-parsed-tramp-file-name directory nil
427 (with-tramp-file-property v localname "file-name-all-completions"
428 (save-match-data
429 (tramp-adb-send-command
430 v (format "ls %s" (tramp-shell-quote-argument localname)))
431 (mapcar
432 (lambda (f)
433 (if (file-directory-p f)
434 (file-name-as-directory f)
435 f))
436 (with-current-buffer (tramp-get-buffer v)
437 (delq
438 nil
439 (mapcar
440 (lambda (l) (and (not (string-match "^[[:space:]]*$" l)) l))
441 (split-string (buffer-string) "\n"))))))))))
442
443(defun tramp-adb-handle-file-local-copy (filename)
444 "Like `file-local-copy' for Tramp files."
445 (with-parsed-tramp-file-name filename nil
446 (unless (file-exists-p (file-truename filename))
447 (tramp-error
448 v 'file-error
449 "Cannot make local copy of non-existing file `%s'" filename))
450 (let ((tmpfile (tramp-compat-make-temp-file filename)))
451 (with-tramp-progress-reporter
452 v 3 (format "Fetching %s to tmp file %s" filename tmpfile)
453 (when (tramp-adb-execute-adb-command v "pull" localname tmpfile)
454 (delete-file tmpfile)
455 (tramp-error
456 v 'file-error "Cannot make local copy of file `%s'" filename))
457 (set-file-modes tmpfile (file-modes filename)))
458 tmpfile)))
459
460(defun tramp-adb-handle-file-writable-p (filename)
461 "Like `tramp-sh-handle-file-writable-p'.
462But handle the case, if the \"test\" command is not available."
463 (with-parsed-tramp-file-name filename nil
464 (with-tramp-file-property v localname "file-writable-p"
465 (if (tramp-adb-find-test-command v)
466 (if (file-exists-p filename)
467 (zerop
468 (tramp-adb-command-exit-status
469 v (format "test -w %s" (tramp-shell-quote-argument localname))))
470 (and
471 (file-directory-p (file-name-directory filename))
472 (file-writable-p (file-name-directory filename))))
473
474 ;; Missing "test" command on Android < 4.
475 (let ((rw-path "/data/data"))
476 (tramp-message
477 v 5
478 "Not implemented yet (assuming \"/data/data\" is writable): %s"
479 localname)
480 (and (>= (length localname) (length rw-path))
481 (string= (substring localname 0 (length rw-path))
482 rw-path)))))))
483
484(defun tramp-adb-handle-write-region
485 (start end filename &optional append visit lockname confirm)
486 "Like `write-region' for Tramp files."
487 (setq filename (expand-file-name filename))
488 (with-parsed-tramp-file-name filename nil
489 (when append
490 (tramp-error
491 v 'file-error "Cannot append to file using Tramp (`%s')" filename))
492 (when (and confirm (file-exists-p filename))
493 (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
494 filename))
495 (tramp-error v 'file-error "File not overwritten")))
496 ;; We must also flush the cache of the directory, because
497 ;; `file-attributes' reads the values from there.
498 (tramp-flush-file-property v (file-name-directory localname))
499 (tramp-flush-file-property v localname)
500 (let* ((curbuf (current-buffer))
501 (tmpfile (tramp-compat-make-temp-file filename)))
502 (tramp-run-real-handler
503 'write-region
504 (list start end tmpfile append 'no-message lockname confirm))
505 (with-tramp-progress-reporter
506 v 3 (format "Moving tmp file %s to %s" tmpfile filename)
507 (unwind-protect
508 (when (tramp-adb-execute-adb-command v "push" tmpfile localname)
509 (tramp-error v 'file-error "Cannot write: `%s' filename"))
510 (delete-file tmpfile)))
511
512 (unless (equal curbuf (current-buffer))
513 (tramp-error
514 v 'file-error
515 "Buffer has changed from `%s' to `%s'" curbuf (current-buffer))))))
516
517(defun tramp-adb-handle-set-file-modes (filename mode)
518 "Like `set-file-modes' for Tramp files."
519 (with-parsed-tramp-file-name filename nil
520 (tramp-flush-file-property v localname)
521 (tramp-adb-barf-unless-okay
522 v (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) localname)
523 "Error while changing file's mode %s" filename)))
524
525(defun tramp-adb-handle-copy-file
526 (filename newname &optional ok-if-already-exists keep-date
527 preserve-uid-gid preserve-selinux-context)
528 "Like `copy-file' for Tramp files.
529PRESERVE-UID-GID and PRESERVE-SELINUX-CONTEXT are completely ignored."
530 (setq filename (expand-file-name filename)
531 newname (expand-file-name newname))
532
533 (if (file-directory-p filename)
534 (copy-directory filename newname keep-date t)
535 (with-tramp-progress-reporter
536 (tramp-dissect-file-name (if (file-remote-p filename) filename newname))
537 0 (format "Copying %s to %s" filename newname)
538
539 (let ((tmpfile (file-local-copy filename)))
540
541 (if tmpfile
542 ;; Remote filename.
543 (condition-case err
544 (rename-file tmpfile newname ok-if-already-exists)
545 ((error quit)
546 (delete-file tmpfile)
547 (signal (car err) (cdr err))))
548
549 ;; Remote newname.
550 (when (file-directory-p newname)
551 (setq newname
552 (expand-file-name (file-name-nondirectory filename) newname)))
553
554 (with-parsed-tramp-file-name newname nil
555 (when (and (not ok-if-already-exists)
556 (file-exists-p newname))
557 (tramp-error v 'file-already-exists newname))
558
559 ;; We must also flush the cache of the directory, because
560 ;; `file-attributes' reads the values from there.
561 (tramp-flush-file-property v (file-name-directory localname))
562 (tramp-flush-file-property v localname)
563 (when (tramp-adb-execute-adb-command v "push" filename localname)
564 (tramp-error
565 v 'file-error "Cannot copy `%s' `%s'" filename newname))))))
566
567 ;; KEEP-DATE handling.
568 (when keep-date
569 (set-file-times newname (nth 5 (file-attributes filename))))))
570
571(defun tramp-adb-handle-rename-file
572 (filename newname &optional ok-if-already-exists)
573 "Like `rename-file' for Tramp files."
574 (setq filename (expand-file-name filename)
575 newname (expand-file-name newname))
576
577 (with-parsed-tramp-file-name
578 (if (file-remote-p filename) filename newname) nil
579 (with-tramp-progress-reporter
580 v 0 (format "Renaming %s to %s" newname filename)
581
582 (if (and (tramp-equal-remote filename newname)
583 (not (file-directory-p filename)))
584 (progn
585 (when (and (not ok-if-already-exists)
586 (file-exists-p newname))
587 (tramp-error v 'file-already-exists newname))
588 ;; We must also flush the cache of the directory, because
589 ;; `file-attributes' reads the values from there.
590 (tramp-flush-file-property v (file-name-directory localname))
591 (tramp-flush-file-property v localname)
592 ;; Short track.
593 (tramp-adb-barf-unless-okay
594 v (format "mv %s %s" (file-remote-p filename 'localname) localname)
595 "Error renaming %s to %s" filename newname))
596
597 ;; Rename by copy.
598 (copy-file filename newname ok-if-already-exists t t)
599 (delete-file filename)))))
600
601(defun tramp-adb-handle-process-file
602 (program &optional infile destination display &rest args)
603 "Like `process-file' for Tramp files."
604 ;; The implementation is not complete yet.
605 (when (and (numberp destination) (zerop destination))
606 (error "Implementation does not handle immediate return"))
607
608 (with-parsed-tramp-file-name default-directory nil
609 (let (command input tmpinput stderr tmpstderr outbuf ret)
610 ;; Compute command.
611 (setq command (mapconcat 'tramp-shell-quote-argument
612 (cons program args) " "))
613 ;; Determine input.
614 (if (null infile)
615 (setq input "/dev/null")
616 (setq infile (expand-file-name infile))
617 (if (tramp-equal-remote default-directory infile)
618 ;; INFILE is on the same remote host.
619 (setq input (with-parsed-tramp-file-name infile nil localname))
620 ;; INFILE must be copied to remote host.
621 (setq input (tramp-make-tramp-temp-file v)
622 tmpinput (tramp-make-tramp-file-name method user host input))
623 (copy-file infile tmpinput t)))
624 (when input (setq command (format "%s <%s" command input)))
625
626 ;; Determine output.
627 (cond
628 ;; Just a buffer.
629 ((bufferp destination)
630 (setq outbuf destination))
631 ;; A buffer name.
632 ((stringp destination)
633 (setq outbuf (get-buffer-create destination)))
634 ;; (REAL-DESTINATION ERROR-DESTINATION)
635 ((consp destination)
636 ;; output.
637 (cond
638 ((bufferp (car destination))
639 (setq outbuf (car destination)))
640 ((stringp (car destination))
641 (setq outbuf (get-buffer-create (car destination))))
642 ((car destination)
643 (setq outbuf (current-buffer))))
644 ;; stderr.
645 (cond
646 ((stringp (cadr destination))
647 (setcar (cdr destination) (expand-file-name (cadr destination)))
648 (if (tramp-equal-remote default-directory (cadr destination))
649 ;; stderr is on the same remote host.
650 (setq stderr (with-parsed-tramp-file-name
651 (cadr destination) nil localname))
652 ;; stderr must be copied to remote host. The temporary
653 ;; file must be deleted after execution.
654 (setq stderr (tramp-make-tramp-temp-file v)
655 tmpstderr (tramp-make-tramp-file-name
656 method user host stderr))))
657 ;; stderr to be discarded.
658 ((null (cadr destination))
659 (setq stderr "/dev/null"))))
660 ;; 't
661 (destination
662 (setq outbuf (current-buffer))))
663 (when stderr (setq command (format "%s 2>%s" command stderr)))
664
665 ;; Send the command. It might not return in time, so we protect
666 ;; it. Call it in a subshell, in order to preserve working
667 ;; directory.
668 (condition-case nil
669 (progn
670 (setq ret 0
671 ret
672 (tramp-adb-barf-unless-okay
673 v (format "(cd %s; %s)"
674 (tramp-shell-quote-argument localname)
675 command)
676 ""))
677 ;; We should show the output anyway.
678 (when outbuf
679 (with-current-buffer outbuf
680 (insert-buffer-substring (tramp-get-connection-buffer v)))
681 (when display (display-buffer outbuf))))
682 ;; When the user did interrupt, we should do it also. We use
683 ;; return code -1 as marker.
684 (quit
685 (kill-buffer (tramp-get-connection-buffer v))
686 (setq ret -1))
687 ;; Handle errors.
688 (error
689 (kill-buffer (tramp-get-connection-buffer v))
690 (setq ret 1)))
691
692 ;; Provide error file.
693 (when tmpstderr (rename-file tmpstderr (cadr destination) t))
694
695 ;; Cleanup. We remove all file cache values for the connection,
696 ;; because the remote process could have changed them.
697 (when tmpinput (delete-file tmpinput))
698
699 ;; `process-file-side-effects' has been introduced with GNU
700 ;; Emacs 23.2. If set to `nil', no remote file will be changed
701 ;; by `program'. If it doesn't exist, we assume its default
702 ;; value 't'.
703 (unless (and (boundp 'process-file-side-effects)
704 (not (symbol-value 'process-file-side-effects)))
705 (tramp-flush-directory-property v ""))
706
707 ;; Return exit status.
708 (if (equal ret -1)
709 (keyboard-quit)
710 ret))))
711
712(defun tramp-adb-handle-shell-command
713 (command &optional output-buffer error-buffer)
714 "Like `shell-command' for Tramp files."
715 (let* ((asynchronous (string-match "[ \t]*&[ \t]*\\'" command))
716 ;; We cannot use `shell-file-name' and `shell-command-switch',
717 ;; they are variables of the local host.
718 (args (list "sh" "-c" (substring command 0 asynchronous)))
719 current-buffer-p
720 (output-buffer
721 (cond
722 ((bufferp output-buffer) output-buffer)
723 ((stringp output-buffer) (get-buffer-create output-buffer))
724 (output-buffer
725 (setq current-buffer-p t)
726 (current-buffer))
727 (t (get-buffer-create
728 (if asynchronous
729 "*Async Shell Command*"
730 "*Shell Command Output*")))))
731 (error-buffer
732 (cond
733 ((bufferp error-buffer) error-buffer)
734 ((stringp error-buffer) (get-buffer-create error-buffer))))
735 (buffer
736 (if (and (not asynchronous) error-buffer)
737 (with-parsed-tramp-file-name default-directory nil
738 (list output-buffer (tramp-make-tramp-temp-file v)))
739 output-buffer))
740 (p (get-buffer-process output-buffer)))
741
742 ;; Check whether there is another process running. Tramp does not
743 ;; support 2 (asynchronous) processes in parallel.
744 (when p
745 (if (yes-or-no-p "A command is running. Kill it? ")
746 (ignore-errors (kill-process p))
747 (error "Shell command in progress")))
748
749 (if current-buffer-p
750 (progn
751 (barf-if-buffer-read-only)
752 (push-mark nil t))
753 (with-current-buffer output-buffer
754 (setq buffer-read-only nil)
755 (erase-buffer)))
756
757 (if (and (not current-buffer-p) (integerp asynchronous))
758 (prog1
759 ;; Run the process.
760 (apply 'start-file-process "*Async Shell*" buffer args)
761 ;; Display output.
762 (pop-to-buffer output-buffer)
763 (setq mode-line-process '(":%s"))
764 (shell-mode))
765
766 (prog1
767 ;; Run the process.
768 (apply 'process-file (car args) nil buffer nil (cdr args))
769 ;; Insert error messages if they were separated.
770 (when (listp buffer)
771 (with-current-buffer error-buffer
772 (insert-file-contents (cadr buffer)))
773 (delete-file (cadr buffer)))
774 (if current-buffer-p
775 ;; This is like exchange-point-and-mark, but doesn't
776 ;; activate the mark. It is cleaner to avoid activation,
777 ;; even though the command loop would deactivate the mark
778 ;; because we inserted text.
779 (goto-char (prog1 (mark t)
780 (set-marker (mark-marker) (point)
781 (current-buffer))))
782 ;; There's some output, display it.
783 (when (with-current-buffer output-buffer (> (point-max) (point-min)))
784 (if (functionp 'display-message-or-buffer)
785 (tramp-compat-funcall 'display-message-or-buffer output-buffer)
786 (pop-to-buffer output-buffer))))))))
787
788;; We use BUFFER also as connection buffer during setup. Because of
789;; this, its original contents must be saved, and restored once
790;; connection has been setup.
791(defun tramp-adb-handle-start-file-process (name buffer program &rest args)
792 "Like `start-file-process' for Tramp files."
793 (with-parsed-tramp-file-name default-directory nil
794 ;; When PROGRAM is nil, we just provide a tty.
795 (let ((command
796 (when (stringp program)
797 (format "cd %s; %s"
798 (tramp-shell-quote-argument localname)
799 (mapconcat 'tramp-shell-quote-argument
800 (cons program args) " "))))
801 (tramp-process-connection-type
802 (or (null program) tramp-process-connection-type))
803 (bmp (and (buffer-live-p buffer) (buffer-modified-p buffer)))
804 (name1 name)
805 (i 0))
806 (unwind-protect
807 (save-excursion
808 (save-restriction
809 (unless buffer
810 ;; BUFFER can be nil. We use a temporary buffer.
811 (setq buffer (generate-new-buffer tramp-temp-buffer-name)))
812 (while (get-process name1)
813 ;; NAME must be unique as process name.
814 (setq i (1+ i)
815 name1 (format "%s<%d>" name i)))
816 (setq name name1)
817 ;; Set the new process properties.
818 (tramp-set-connection-property v "process-name" name)
819 (tramp-set-connection-property v "process-buffer" buffer)
820 ;; Activate narrowing in order to save BUFFER contents.
821 ;; Clear also the modification time; otherwise we might
822 ;; be interrupted by `verify-visited-file-modtime'.
823 (with-current-buffer (tramp-get-connection-buffer v)
824 (let ((buffer-undo-list t))
825 (clear-visited-file-modtime)
826 (narrow-to-region (point-max) (point-max))
827 (if command
828 ;; Send the command.
829 (tramp-adb-send-command v command)
830 ;; Open the connection.
831 (tramp-adb-maybe-open-connection v))))
832 (let ((p (tramp-get-connection-process v)))
833 ;; Set sentinel and query flag for this process.
834 (tramp-set-connection-property p "vector" v)
835 (set-process-sentinel p 'tramp-process-sentinel)
836 (tramp-compat-set-process-query-on-exit-flag p t)
837 ;; Return process.
838 p)))
839 ;; Save exit.
840 (with-current-buffer (tramp-get-connection-buffer v)
841 (if (string-match tramp-temp-buffer-name (buffer-name))
842 (progn
843 (set-process-buffer (tramp-get-connection-process v) nil)
844 (kill-buffer (current-buffer)))
845 (set-buffer-modified-p bmp)))
846 (tramp-set-connection-property v "process-name" nil)
847 (tramp-set-connection-property v "process-buffer" nil)))))
848
849;; Android < 4 doesn't provide test command.
850
851(defun tramp-adb-handle-file-exists-p (filename)
852 "Like `file-exists-p' for Tramp files."
853 (with-parsed-tramp-file-name filename nil
854 (with-tramp-file-property v localname "file-exists-p"
855 (file-attributes filename))))
856
857;; Helper functions.
858
859(defun tramp-adb-execute-adb-command (vec &rest args)
860 "Returns nil on success error-output on failure."
861 (when (tramp-file-name-host vec)
862 (setq args (append (list "-s" (tramp-file-name-host vec)) args)))
863 (with-temp-buffer
864 (prog1
865 (unless (zerop (apply 'call-process (tramp-adb-program) nil t nil args))
866 (buffer-string))
867 (tramp-message
868 vec 6 "%s %s\n%s"
869 (tramp-adb-program) (mapconcat 'identity args " ") (buffer-string)))))
870
871(defun tramp-adb-find-test-command (vec)
872 "Checks, whether the ash has a builtin \"test\" command.
873This happens for Android >= 4.0."
874 (with-tramp-connection-property vec "test"
875 (zerop (tramp-adb-command-exit-status vec "type test"))))
876
877;; Connection functions
878
879(defun tramp-adb-send-command (vec command)
880 "Send the COMMAND to connection VEC."
881 (tramp-adb-maybe-open-connection vec)
882 (tramp-message vec 6 "%s" command)
883 (tramp-send-string vec command)
884 ;; fixme: Race condition
885 (tramp-adb-wait-for-output (tramp-get-connection-process vec))
886 (with-current-buffer (tramp-get-connection-buffer vec)
887 (save-excursion
888 (goto-char (point-min))
889 ;; We can't use stty to disable echo of command.
890 (delete-matching-lines (regexp-quote command))
891 ;; When the local machine is W32, there are still trailing ^M.
892 ;; There must be a better solution by setting the correct coding
893 ;; system, but this requires changes in core Tramp.
894 (goto-char (point-min))
895 (while (re-search-forward "\r+$" nil t)
896 (replace-match "" nil nil)))))
897
898(defun tramp-adb-barf-unless-okay (vec command fmt &rest args)
899 "Run COMMAND, check exit status, throw error if exit status not okay.
900FMT and ARGS are passed to `error'."
901 (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command))
902 (with-current-buffer (tramp-get-connection-buffer vec)
903 (goto-char (point-max))
904 (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
905 (tramp-error
906 vec 'file-error "Couldn't find exit status of `%s'" command))
907 (skip-chars-forward "^ ")
908 (unless (zerop (read (current-buffer)))
909 (apply 'tramp-error vec 'file-error fmt args))
910 (let (buffer-read-only)
911 (delete-region (match-beginning 0) (point-max)))))
912
913(defun tramp-adb-command-exit-status
914 (vec command)
915 "Run COMMAND and return its exit status.
916Sends `echo $?' along with the COMMAND for checking the exit status. If
917COMMAND is nil, just sends `echo $?'. Returns the exit status found."
918 (tramp-adb-send-command vec (format "%s; echo tramp_exit_status $?" command))
919 (with-current-buffer (tramp-get-connection-buffer vec)
920 (goto-char (point-max))
921 (unless (re-search-backward "tramp_exit_status [0-9]+" nil t)
922 (tramp-error
923 vec 'file-error "Couldn't find exit status of `%s'" command))
924 (skip-chars-forward "^ ")
925 (read (current-buffer))))
926
927(defun tramp-adb-wait-for-output (proc &optional timeout)
928 "Wait for output from remote command."
929 (unless (buffer-live-p (process-buffer proc))
930 (delete-process proc)
931 (tramp-error proc 'file-error "Process `%s' not available, try again" proc))
932 (with-current-buffer (process-buffer proc)
933 (if (tramp-wait-for-regexp proc timeout tramp-adb-prompt)
934 (let (buffer-read-only)
935 (goto-char (point-min))
936 (when (re-search-forward tramp-adb-prompt (point-at-eol) t)
937 (forward-line 1)
938 (delete-region (point-min) (point)))
939 ;; Delete the prompt.
940 (goto-char (point-max))
941 (re-search-backward tramp-adb-prompt nil t)
942 (delete-region (point) (point-max)))
943 (if timeout
944 (tramp-error
945 proc 'file-error
946 "[[Remote adb prompt `%s' not found in %d secs]]"
947 tramp-adb-prompt timeout)
948 (tramp-error
949 proc 'file-error
950 "[[Remote prompt `%s' not found]]" tramp-adb-prompt)))))
951
952(defun tramp-adb-maybe-open-connection (vec)
953 "Maybe open a connection VEC.
954Does not do anything if a connection is already open, but re-opens the
955connection if a previous connection has died for some reason."
956 (let* ((buf (tramp-get-connection-buffer vec))
957 (p (get-buffer-process buf)))
958 (unless
959 (and p (processp p) (memq (process-status p) '(run open)))
960 (save-match-data
961 (when (and p (processp p)) (delete-process p))
962 (with-tramp-progress-reporter vec 3 "Opening adb shell connection"
963 (let* ((coding-system-for-read 'utf-8-dos) ;is this correct?
964 (process-connection-type tramp-process-connection-type)
965 (args (if (tramp-file-name-host vec)
966 (list "-s" (tramp-file-name-host vec) "shell")
967 (list "shell")))
968 (p (let ((default-directory
969 (tramp-compat-temporary-file-directory)))
970 (apply 'start-process (tramp-get-connection-name vec) buf
971 (tramp-adb-program) args))))
972 (tramp-message
973 vec 6 "%s" (mapconcat 'identity (process-command p) " "))
974 ;; Wait for initial prompt.
975 (tramp-adb-wait-for-output p)
976 (unless (eq 'run (process-status p))
977 (tramp-error vec 'file-error "Terminated!"))
978 (set-process-query-on-exit-flag p nil)))))))
979
980(provide 'tramp-adb)
981;;; tramp-adb.el ends here
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index c3552ae023b..3d37a0cfc39 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -71,22 +71,6 @@
71 (require 'timer-funcs) 71 (require 'timer-funcs)
72 (require 'timer)) 72 (require 'timer))
73 73
74 ;; We check whether `start-file-process' is bound.
75 ;; Note: we deactivate this. There are problems, at least in SXEmacs.
76 (unless t;(fboundp 'start-file-process)
77
78 ;; tramp-util offers integration into other (X)Emacs packages like
79 ;; compile.el, gud.el etc. Not necessary in Emacs 23.
80 (eval-after-load "tramp"
81 '(require 'tramp-util))
82
83 ;; Make sure that we get integration with the VC package. When it
84 ;; is loaded, we need to pull in the integration module. Not
85 ;; necessary in Emacs 23.
86 (eval-after-load "vc"
87 (eval-after-load "tramp"
88 '(require 'tramp-vc))))
89
90 ;; Avoid byte-compiler warnings if the byte-compiler supports this. 74 ;; Avoid byte-compiler warnings if the byte-compiler supports this.
91 ;; Currently, XEmacs supports this. 75 ;; Currently, XEmacs supports this.
92 (when (featurep 'xemacs) 76 (when (featurep 'xemacs)
@@ -132,9 +116,7 @@
132 ;; mechanism. 116 ;; mechanism.
133 117
134 ;; `file-remote-p' has been introduced with Emacs 22. The version 118 ;; `file-remote-p' has been introduced with Emacs 22. The version
135 ;; of XEmacs is not a magic file name function (yet); this is 119 ;; of XEmacs is not a magic file name function (yet).
136 ;; corrected in tramp-util.el. Here it is sufficient if the
137 ;; function exists.
138 (unless (fboundp 'file-remote-p) 120 (unless (fboundp 'file-remote-p)
139 (defalias 'file-remote-p 121 (defalias 'file-remote-p
140 (lambda (file &optional identification connected) 122 (lambda (file &optional identification connected)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 0aa1b8957ac..a4b2e0fccff 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -526,7 +526,11 @@ is no information where to trace the message.")
526 (tramp-message tramp-gvfs-dbus-event-vector 10 "%S" event) 526 (tramp-message tramp-gvfs-dbus-event-vector 10 "%S" event)
527 (tramp-error tramp-gvfs-dbus-event-vector 'file-error "%s" (cadr err)))) 527 (tramp-error tramp-gvfs-dbus-event-vector 'file-error "%s" (cadr err))))
528 528
529(add-hook 'dbus-event-error-functions 'tramp-gvfs-dbus-event-error) 529;; `dbus-event-error-hooks' has been renamed to `dbus-event-error-functions'.
530(add-hook
531 (if (boundp 'dbus-event-error-functions)
532 'dbus-event-error-functions 'dbus-event-error-hooks)
533 'tramp-gvfs-dbus-event-error)
530 534
531 535
532;; File name primitives. 536;; File name primitives.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index ec321d00506..55af0f0d96b 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -813,14 +813,11 @@ my %%trans = do {
813 map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)} 813 map {(substr(unpack(q(B8), chr $i++), 2, 6), $_)}
814 split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/); 814 split //, q(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/);
815}; 815};
816 816my $data;
817binmode(\\*STDIN);
818 817
819# We read in chunks of 54 bytes, to generate output lines 818# We read in chunks of 54 bytes, to generate output lines
820# of 72 chars (plus end of line) 819# of 72 chars (plus end of line)
821$/ = \\54; 820while (read STDIN, $data, 54) {
822
823while (my $data = <STDIN>) {
824 my $pad = q(); 821 my $pad = q();
825 822
826 # Only for the last chunk, and only if did not fill the last three-byte packet 823 # Only for the last chunk, and only if did not fill the last three-byte packet
@@ -1270,9 +1267,10 @@ target of the symlink differ."
1270 res-uid 1267 res-uid
1271 ;; 3. File gid. 1268 ;; 3. File gid.
1272 res-gid 1269 res-gid
1273 ;; 4. Last access time, as a list of two integers. First 1270 ;; 4. Last access time, as a list of integers. Normally this
1274 ;; integer has high-order 16 bits of time, second has low 16 1271 ;; would be in the same format as `current-time', but the
1275 ;; bits. 1272 ;; subseconds part is not currently implemented, and (0 0)
1273 ;; denotes an unknown time.
1276 ;; 5. Last modification time, likewise. 1274 ;; 5. Last modification time, likewise.
1277 ;; 6. Last status change time, likewise. 1275 ;; 6. Last status change time, likewise.
1278 '(0 0) '(0 0) '(0 0) ;CCC how to find out? 1276 '(0 0) '(0 0) '(0 0) ;CCC how to find out?
@@ -1980,6 +1978,7 @@ file names."
1980 (error "Unknown operation `%s', must be `copy' or `rename'" op)) 1978 (error "Unknown operation `%s', must be `copy' or `rename'" op))
1981 (let ((t1 (tramp-tramp-file-p filename)) 1979 (let ((t1 (tramp-tramp-file-p filename))
1982 (t2 (tramp-tramp-file-p newname)) 1980 (t2 (tramp-tramp-file-p newname))
1981 (length (nth 7 (file-attributes (file-truename filename))))
1983 (context (and preserve-selinux-context 1982 (context (and preserve-selinux-context
1984 (apply 'file-selinux-context (list filename)))) 1983 (apply 'file-selinux-context (list filename))))
1985 pr tm) 1984 pr tm)
@@ -2009,8 +2008,9 @@ file names."
2009 ok-if-already-exists keep-date preserve-uid-gid)) 2008 ok-if-already-exists keep-date preserve-uid-gid))
2010 2009
2011 ;; Try out-of-band operation. 2010 ;; Try out-of-band operation.
2012 ((tramp-method-out-of-band-p 2011 ((and
2013 v1 (nth 7 (file-attributes (file-truename filename)))) 2012 (tramp-method-out-of-band-p v1 length)
2013 (tramp-method-out-of-band-p v2 length))
2014 (tramp-do-copy-or-rename-file-out-of-band 2014 (tramp-do-copy-or-rename-file-out-of-band
2015 op filename newname keep-date)) 2015 op filename newname keep-date))
2016 2016
@@ -2038,8 +2038,7 @@ file names."
2038 2038
2039 ;; If the Tramp file has an out-of-band method, the 2039 ;; If the Tramp file has an out-of-band method, the
2040 ;; corresponding copy-program can be invoked. 2040 ;; corresponding copy-program can be invoked.
2041 ((tramp-method-out-of-band-p 2041 ((tramp-method-out-of-band-p v length)
2042 v (nth 7 (file-attributes (file-truename filename))))
2043 (tramp-do-copy-or-rename-file-out-of-band 2042 (tramp-do-copy-or-rename-file-out-of-band
2044 op filename newname keep-date)) 2043 op filename newname keep-date))
2045 2044
@@ -2380,17 +2379,38 @@ The method used must be an out-of-band method."
2380 ;; last longer than 60 secs. 2379 ;; last longer than 60 secs.
2381 (let ((p (let ((default-directory 2380 (let ((p (let ((default-directory
2382 (tramp-compat-temporary-file-directory))) 2381 (tramp-compat-temporary-file-directory)))
2383 (apply 'start-process 2382 (apply 'start-process-shell-command
2384 (tramp-get-connection-name v) 2383 (tramp-get-connection-name v)
2385 (tramp-get-connection-buffer v) 2384 (tramp-get-connection-buffer v)
2386 copy-program 2385 copy-program
2387 (append copy-args (list source target)))))) 2386 (append
2387 copy-args
2388 (list
2389 (shell-quote-argument source)
2390 (shell-quote-argument target)
2391 "&&" "echo" "tramp_exit_status" "0"
2392 "||" "echo" "tramp_exit_status" "1"))))))
2388 (tramp-message 2393 (tramp-message
2389 orig-vec 6 "%s" 2394 orig-vec 6 "%s"
2390 (mapconcat 'identity (process-command p) " ")) 2395 (mapconcat 'identity (process-command p) " "))
2391 (tramp-compat-set-process-query-on-exit-flag p nil) 2396 (tramp-compat-set-process-query-on-exit-flag p nil)
2392 (tramp-process-actions 2397 (tramp-process-actions
2393 p v nil tramp-actions-copy-out-of-band))) 2398 p v nil tramp-actions-copy-out-of-band)
2399
2400 ;; Check the return code.
2401 (goto-char (point-max))
2402 (unless
2403 (re-search-backward "tramp_exit_status [0-9]+" nil t)
2404 (tramp-error
2405 orig-vec 'file-error
2406 "Couldn't find exit status of `%s'" (process-command p)))
2407 (skip-chars-forward "^ ")
2408 (unless (zerop (read (current-buffer)))
2409 (forward-line -1)
2410 (tramp-error
2411 orig-vec 'file-error
2412 "Error copying: `%s'"
2413 (buffer-substring (point-min) (point-at-eol))))))
2394 2414
2395 ;; Reset the transfer process properties. 2415 ;; Reset the transfer process properties.
2396 (tramp-message orig-vec 6 "\n%s" (buffer-string)) 2416 (tramp-message orig-vec 6 "\n%s" (buffer-string))
@@ -2912,16 +2932,6 @@ the result will be a local, non-Tramp, filename."
2912 (keyboard-quit) 2932 (keyboard-quit)
2913 ret)))) 2933 ret))))
2914 2934
2915(defun tramp-sh-handle-call-process-region
2916 (start end program &optional delete buffer display &rest args)
2917 "Like `call-process-region' for Tramp files."
2918 (let ((tmpfile (tramp-compat-make-temp-file "")))
2919 (write-region start end tmpfile)
2920 (when delete (delete-region start end))
2921 (unwind-protect
2922 (apply 'call-process program tmpfile buffer display args)
2923 (delete-file tmpfile))))
2924
2925(defun tramp-sh-handle-file-local-copy (filename) 2935(defun tramp-sh-handle-file-local-copy (filename)
2926 "Like `file-local-copy' for Tramp files." 2936 "Like `file-local-copy' for Tramp files."
2927 (with-parsed-tramp-file-name filename nil 2937 (with-parsed-tramp-file-name filename nil
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index caaae5d553e..a4d36cbe72c 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1750,10 +1750,12 @@ value of `default-file-modes', without execute permissions."
1750 1750
1751(defalias 'tramp-replace-environment-variables 1751(defalias 'tramp-replace-environment-variables
1752 (if (ignore-errors 1752 (if (ignore-errors
1753 (equal "${ tramp?}" (substitute-env-vars "${ tramp?}" 'only-defined))) 1753 (equal "${ tramp?}"
1754 (tramp-compat-funcall
1755 'substitute-env-vars "${ tramp?}" 'only-defined)))
1754 (lambda (filename) 1756 (lambda (filename)
1755 "Like `substitute-env-vars' with `only-defined' non-nil." 1757 "Like `substitute-env-vars' with `only-defined' non-nil."
1756 (substitute-env-vars filename 'only-defined)) 1758 (tramp-compat-funcall 'substitute-env-vars filename 'only-defined))
1757 (lambda (filename) 1759 (lambda (filename)
1758 "Replace environment variables in FILENAME. 1760 "Replace environment variables in FILENAME.
1759Return the string with the replaced variables." 1761Return the string with the replaced variables."
@@ -1928,10 +1930,7 @@ ARGS are the arguments OPERATION has been called with."
1928 ;; Emacs 23+ only. 1930 ;; Emacs 23+ only.
1929 'start-file-process 1931 'start-file-process
1930 ;; XEmacs only. 1932 ;; XEmacs only.
1931 'dired-print-file 'dired-shell-call-process 1933 'dired-print-file 'dired-shell-call-process))
1932 ;; nowhere yet.
1933 'executable-find 'start-process
1934 'call-process 'call-process-region))
1935 default-directory) 1934 default-directory)
1936 ;; Unknown file primitive. 1935 ;; Unknown file primitive.
1937 (t (error "unknown file I/O primitive: %s" operation)))) 1936 (t (error "unknown file I/O primitive: %s" operation))))
@@ -3767,6 +3766,7 @@ Invokes `password-read' if available, `read-passwd' else."
3767 ("oct" . 10) ("nov" . 11) ("dec" . 12)) 3766 ("oct" . 10) ("nov" . 11) ("dec" . 12))
3768 "Alist mapping month names to integers.") 3767 "Alist mapping month names to integers.")
3769 3768
3769;; FIXME: Shouldn't this also look at any subseconds parts of T1 and T2?
3770;;;###tramp-autoload 3770;;;###tramp-autoload
3771(defun tramp-time-less-p (t1 t2) 3771(defun tramp-time-less-p (t1 t2)
3772 "Say whether time value T1 is less than time value T2." 3772 "Say whether time value T1 is less than time value T2."
@@ -3776,6 +3776,7 @@ Invokes `password-read' if available, `read-passwd' else."
3776 (and (= (car t1) (car t2)) 3776 (and (= (car t1) (car t2))
3777 (< (nth 1 t1) (nth 1 t2))))) 3777 (< (nth 1 t1) (nth 1 t2)))))
3778 3778
3779;; FIXME: Shouldn't this also look at any subseconds parts of T1 and T2?
3779(defun tramp-time-subtract (t1 t2) 3780(defun tramp-time-subtract (t1 t2)
3780 "Subtract two time values. 3781 "Subtract two time values.
3781Return the difference in the format of a time value." 3782Return the difference in the format of a time value."
diff --git a/lisp/novice.el b/lisp/novice.el
index c621ac4b692..b8e4a268b23 100644
--- a/lisp/novice.el
+++ b/lisp/novice.el
@@ -49,7 +49,6 @@ If nil, the feature is disabled, i.e., all commands work normally.")
49 (unless keys (setq keys (this-command-keys))) 49 (unless keys (setq keys (this-command-keys)))
50 (let (char) 50 (let (char)
51 (save-window-excursion 51 (save-window-excursion
52 (help-setup-xref (list 'disabled-command-function cmd keys) nil)
53 (with-output-to-temp-buffer "*Disabled Command*" ;; (help-buffer) 52 (with-output-to-temp-buffer "*Disabled Command*" ;; (help-buffer)
54 (if (or (eq (aref keys 0) 53 (if (or (eq (aref keys 0)
55 (if (stringp keys) 54 (if (stringp keys)
diff --git a/lisp/longlines.el b/lisp/obsolete/longlines.el
index 68722a8f920..1ae6d1a357e 100644
--- a/lisp/longlines.el
+++ b/lisp/obsolete/longlines.el
@@ -6,6 +6,7 @@
6;; Alex Schroeder <alex@gnu.org> 6;; Alex Schroeder <alex@gnu.org>
7;; Chong Yidong <cyd@stupidchicken.com> 7;; Chong Yidong <cyd@stupidchicken.com>
8;; Maintainer: Chong Yidong <cyd@stupidchicken.com> 8;; Maintainer: Chong Yidong <cyd@stupidchicken.com>
9;; Obsolete-since: 24.4
9;; Keywords: convenience, wp 10;; Keywords: convenience, wp
10 11
11;; This file is part of GNU Emacs. 12;; This file is part of GNU Emacs.
@@ -278,7 +279,7 @@ end of the buffer."
278If wrapping is performed, point remains on the line. If the line does 279If wrapping is performed, point remains on the line. If the line does
279not need to be wrapped, move point to the next line and return t." 280not need to be wrapped, move point to the next line and return t."
280 (if (longlines-set-breakpoint) 281 (if (longlines-set-breakpoint)
281 (progn (insert-before-markers ?\n) 282 (progn (insert-before-markers-and-inherit ?\n)
282 (backward-char 1) 283 (backward-char 1)
283 (delete-char -1) 284 (delete-char -1)
284 (forward-char 1) 285 (forward-char 1)
@@ -384,8 +385,12 @@ compatibility with `format-alist', and is ignored."
384 (mod (buffer-modified-p))) 385 (mod (buffer-modified-p)))
385 (goto-char (min beg end)) 386 (goto-char (min beg end))
386 (while (search-forward "\n" reg-max t) 387 (while (search-forward "\n" reg-max t)
387 (unless (get-text-property (match-beginning 0) 'hard) 388 (let ((pos (match-beginning 0)))
388 (replace-match " "))) 389 (unless (get-text-property pos 'hard)
390 (goto-char (1+ pos))
391 (insert-and-inherit " ")
392 (delete-region pos (1+ pos))
393 (remove-text-properties pos (1+ pos) 'hard))))
389 (set-buffer-modified-p mod) 394 (set-buffer-modified-p mod)
390 end))) 395 end)))
391 396
diff --git a/lisp/terminal.el b/lisp/obsolete/terminal.el
index 7aaac26f1b0..5497a74b32f 100644
--- a/lisp/terminal.el
+++ b/lisp/obsolete/terminal.el
@@ -5,6 +5,7 @@
5 5
6;; Author: Richard Mlynarik <mly@eddie.mit.edu> 6;; Author: Richard Mlynarik <mly@eddie.mit.edu>
7;; Maintainer: FSF 7;; Maintainer: FSF
8;; Obsolete-since: 24.4
8;; Keywords: comm, terminals 9;; Keywords: comm, terminals
9 10
10;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -24,14 +25,14 @@
24 25
25;;; Commentary: 26;;; Commentary:
26 27
27;;; This file has been censored by the Communications Decency Act. 28;; This file has been censored by the Communications Decency Act.
28;;; That law was passed under the guise of a ban on pornography, but 29;; That law was passed under the guise of a ban on pornography, but
29;;; it bans far more than that. This file did not contain pornography, 30;; it bans far more than that. This file did not contain pornography,
30;;; but it was censored nonetheless. 31;; but it was censored nonetheless.
31 32
32;;; For information on US government censorship of the Internet, and 33;; For information on US government censorship of the Internet, and
33;;; what you can do to bring back freedom of the press, see the web 34;; what you can do to bring back freedom of the press, see the web
34;;; site http://www.vtw.org/ 35;; site http://www.vtw.org/
35 36
36;;; Code: 37;;; Code:
37 38
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 9bf731fb6b2..98383e56532 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,8 @@
12012-12-04 Chong Yidong <cyd@gnu.org>
2
3 * org-bibtex.el (org-bibtex-ask): Use visual-line-mode instead of
4 longlines-mode.
5
12012-10-26 Achim Gratz <stromeko@stromeko.de> 62012-10-26 Achim Gratz <stromeko@stromeko.de>
2 7
3 * ob-ditaa.el: Needs to (require 'org-compat) for 8 * ob-ditaa.el: Needs to (require 'org-compat) for
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el
index f8e07adcd8a..aaae8d52de8 100644
--- a/lisp/org/org-bibtex.el
+++ b/lisp/org/org-bibtex.el
@@ -120,7 +120,6 @@
120(declare-function bibtex-generate-autokey "bibtex" ()) 120(declare-function bibtex-generate-autokey "bibtex" ())
121(declare-function bibtex-parse-entry "bibtex" (&optional content)) 121(declare-function bibtex-parse-entry "bibtex" (&optional content))
122(declare-function bibtex-url "bibtex" (&optional pos no-browse)) 122(declare-function bibtex-url "bibtex" (&optional pos no-browse))
123(declare-function longlines-mode "longlines" (&optional arg))
124(declare-function org-babel-trim "ob" (string &optional regexp)) 123(declare-function org-babel-trim "ob" (string &optional regexp))
125 124
126 125
@@ -381,7 +380,7 @@ This variable is relevant only if `org-bibtex-export-tags-as-keywords' is t."
381 (buf-name (format "*Bibtex Help %s*" name))) 380 (buf-name (format "*Bibtex Help %s*" name)))
382 (with-output-to-temp-buffer buf-name 381 (with-output-to-temp-buffer buf-name
383 (princ (cdr (assoc field org-bibtex-fields)))) 382 (princ (cdr (assoc field org-bibtex-fields))))
384 (with-current-buffer buf-name (longlines-mode t)) 383 (with-current-buffer buf-name (visual-line-mode 1))
385 (org-fit-window-to-buffer (get-buffer-window buf-name)) 384 (org-fit-window-to-buffer (get-buffer-window buf-name))
386 ((lambda (result) (when (> (length result) 0) result)) 385 ((lambda (result) (when (> (length result) 0) result))
387 (read-from-minibuffer (format "%s: " name)))))) 386 (read-from-minibuffer (format "%s: " name))))))
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 9e55976a8bd..13cf7356e7f 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -833,7 +833,8 @@ this is `comint-dynamic-complete-functions'."
833 . ,(lambda (comps) 833 . ,(lambda (comps)
834 (sort comps pcomplete-compare-entry-function))) 834 (sort comps pcomplete-compare-entry-function)))
835 ,@(cdr (completion-file-name-table s p a))) 835 ,@(cdr (completion-file-name-table s p a)))
836 (let ((completion-ignored-extensions nil)) 836 (let ((completion-ignored-extensions nil)
837 (completion-ignore-case pcomplete-ignore-case))
837 (completion-table-with-predicate 838 (completion-table-with-predicate
838 #'comint-completion-file-name-table pred 'strict s p a)))))) 839 #'comint-completion-file-name-table pred 'strict s p a))))))
839 840
diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el
index a3ea4af4651..8af877c7843 100644
--- a/lisp/play/gamegrid.el
+++ b/lisp/play/gamegrid.el
@@ -175,7 +175,7 @@ static unsigned char gamegrid_bits[] = {
175 175
176(defun gamegrid-make-mono-tty-face () 176(defun gamegrid-make-mono-tty-face ()
177 (let ((face (make-face 'gamegrid-mono-tty-face))) 177 (let ((face (make-face 'gamegrid-mono-tty-face)))
178 (set-face-inverse-video-p face t) 178 (set-face-inverse-video face t)
179 face)) 179 face))
180 180
181(defun gamegrid-make-color-tty-face (color) 181(defun gamegrid-make-color-tty-face (color)
diff --git a/lisp/printing.el b/lisp/printing.el
index 02b2fb0139c..26a7648f68e 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -1383,6 +1383,10 @@ Used by `pr-menu-bind' and `pr-update-menus'.")
1383 (eval-when-compile 1383 (eval-when-compile
1384 (require 'easymenu)) ; to avoid compilation gripes 1384 (require 'easymenu)) ; to avoid compilation gripes
1385 1385
1386 (declare-function easy-menu-add-item "easymenu"
1387 (map path item &optional before))
1388 (declare-function easy-menu-remove-item "easymenu" (map path name))
1389
1386 (eval-and-compile 1390 (eval-and-compile
1387 (defun pr-global-menubar (pr-menu-spec) 1391 (defun pr-global-menubar (pr-menu-spec)
1388 (require 'easymenu) 1392 (require 'easymenu)
@@ -6079,6 +6083,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order."
6079 (and pr-i-region ; let region activated 6083 (and pr-i-region ; let region activated
6080 (pr-keep-region-active))) 6084 (pr-keep-region-active)))
6081 6085
6086(declare-function widget-field-action "wid-edit" (widget &optional _event))
6087(declare-function widget-value-set "wid-edit" (widget value))
6082 6088
6083(defun pr-insert-section-1 () 6089(defun pr-insert-section-1 ()
6084 ;; 1. Print: 6090 ;; 1. Print:
diff --git a/lisp/profiler.el b/lisp/profiler.el
index 38c0c0b83a7..00b51ffe099 100644
--- a/lisp/profiler.el
+++ b/lisp/profiler.el
@@ -404,7 +404,6 @@ RET: expand or collapse"))
404 404
405(defvar profiler-report-mode-map 405(defvar profiler-report-mode-map
406 (let ((map (make-sparse-keymap))) 406 (let ((map (make-sparse-keymap)))
407 ;; FIXME: Add menu.
408 (define-key map "n" 'profiler-report-next-entry) 407 (define-key map "n" 'profiler-report-next-entry)
409 (define-key map "p" 'profiler-report-previous-entry) 408 (define-key map "p" 'profiler-report-previous-entry)
410 ;; I find it annoying more than helpful to not be able to navigate 409 ;; I find it annoying more than helpful to not be able to navigate
@@ -424,8 +423,43 @@ RET: expand or collapse"))
424 (define-key map "D" 'profiler-report-descending-sort) 423 (define-key map "D" 'profiler-report-descending-sort)
425 (define-key map "=" 'profiler-report-compare-profile) 424 (define-key map "=" 'profiler-report-compare-profile)
426 (define-key map (kbd "C-x C-w") 'profiler-report-write-profile) 425 (define-key map (kbd "C-x C-w") 'profiler-report-write-profile)
427 (define-key map "q" 'quit-window) 426 (easy-menu-define profiler-report-menu map "Menu for Profiler Report mode."
428 map)) 427 '("Profiler"
428 ["Next Entry" profiler-report-next-entry :active t
429 :help "Move to next entry"]
430 ["Previous Entry" profiler-report-previous-entry :active t
431 :help "Move to previous entry"]
432 "--"
433 ["Toggle Entry" profiler-report-toggle-entry
434 :active (profiler-report-calltree-at-point)
435 :help "Expand or collapse the current entry"]
436 ["Find Entry" profiler-report-find-entry
437 ;; FIXME should deactivate if not on a known function.
438 :active (profiler-report-calltree-at-point)
439 :help "Find the definition of the current entry"]
440 ["Describe Entry" profiler-report-describe-entry
441 :active (profiler-report-calltree-at-point)
442 :help "Show the documentation of the current entry"]
443 "--"
444 ["Show Calltree" profiler-report-render-calltree
445 :active profiler-report-reversed
446 :help "Show calltree view"]
447 ["Show Reversed Calltree" profiler-report-render-reversed-calltree
448 :active (not profiler-report-reversed)
449 :help "Show reversed calltree view"]
450 ["Sort Ascending" profiler-report-ascending-sort
451 :active (not (eq profiler-report-order 'ascending))
452 :help "Sort calltree view in ascending order"]
453 ["Sort Descending" profiler-report-descending-sort
454 :active (not (eq profiler-report-order 'descending))
455 :help "Sort calltree view in descending order"]
456 "--"
457 ["Compare Profile..." profiler-report-compare-profile :active t
458 :help "Compare current profile with another"]
459 ["Write Profile..." profiler-report-write-profile :active t
460 :help "Write current profile to a file"]))
461 map)
462 "Keymap for `profiler-report-mode'.")
429 463
430(defun profiler-report-make-buffer-name (profile) 464(defun profiler-report-make-buffer-name (profile)
431 (format "*%s-Profiler-Report %s*" 465 (format "*%s-Profiler-Report %s*"
@@ -529,11 +563,15 @@ otherwise collapse."
529(defun profiler-report-find-entry (&optional event) 563(defun profiler-report-find-entry (&optional event)
530 "Find entry at point." 564 "Find entry at point."
531 (interactive (list last-nonmenu-event)) 565 (interactive (list last-nonmenu-event))
532 (if event (posn-set-point (event-end event))) 566 (with-current-buffer
533 (let ((tree (profiler-report-calltree-at-point))) 567 (if event (window-buffer (posn-window (event-start event)))
534 (when tree 568 (current-buffer))
535 (let ((entry (profiler-calltree-entry tree))) 569 (and event (setq event (event-end event))
536 (find-function entry))))) 570 (posn-set-point event))
571 (let ((tree (profiler-report-calltree-at-point)))
572 (when tree
573 (let ((entry (profiler-calltree-entry tree)))
574 (find-function entry))))))
537 575
538(defun profiler-report-describe-entry () 576(defun profiler-report-describe-entry ()
539 "Describe entry at point." 577 "Describe entry at point."
diff --git a/lisp/progmodes/autoconf.el b/lisp/progmodes/autoconf.el
index ac3a7282952..5deb60f9e41 100644
--- a/lisp/progmodes/autoconf.el
+++ b/lisp/progmodes/autoconf.el
@@ -78,22 +78,19 @@ searching backwards at another AC_... command."
78;;;###autoload 78;;;###autoload
79(define-derived-mode autoconf-mode prog-mode "Autoconf" 79(define-derived-mode autoconf-mode prog-mode "Autoconf"
80 "Major mode for editing Autoconf configure.ac files." 80 "Major mode for editing Autoconf configure.ac files."
81 (set (make-local-variable 'parens-require-spaces) nil) ; for M4 arg lists 81 (setq-local parens-require-spaces nil) ; for M4 arg lists
82 (set (make-local-variable 'defun-prompt-regexp) 82 (setq-local defun-prompt-regexp "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+")
83 "^[ \t]*A[CM]_\\(\\sw\\|\\s_\\)+") 83 (setq-local comment-start "dnl ")
84 (set (make-local-variable 'comment-start) "dnl ") 84 (setq-local comment-start-skip "\\(?:\\(\\W\\|\\`\\)dnl\\|#\\) +")
85 (set (make-local-variable 'comment-start-skip) 85 (setq-local syntax-propertize-function
86 "\\(?:\\(\\W\\|\\`\\)dnl\\|#\\) +") 86 (syntax-propertize-rules ("\\<dnl\\>" (0 "<"))))
87 (set (make-local-variable 'syntax-propertize-function) 87 (setq-local font-lock-defaults
88 (syntax-propertize-rules ("\\<dnl\\>" (0 "<")))) 88 `(autoconf-font-lock-keywords nil nil (("_" . "w"))))
89 (set (make-local-variable 'font-lock-defaults) 89 (setq-local imenu-generic-expression autoconf-imenu-generic-expression)
90 `(autoconf-font-lock-keywords nil nil (("_" . "w")))) 90 (setq-local imenu-syntax-alist '(("_" . "w")))
91 (set (make-local-variable 'imenu-generic-expression) 91 (setq-local indent-line-function #'indent-relative)
92 autoconf-imenu-generic-expression) 92 (setq-local add-log-current-defun-function
93 (set (make-local-variable 'imenu-syntax-alist) '(("_" . "w"))) 93 #'autoconf-current-defun-function))
94 (set (make-local-variable 'indent-line-function) #'indent-relative)
95 (set (make-local-variable 'add-log-current-defun-function)
96 #'autoconf-current-defun-function))
97 94
98(provide 'autoconf-mode) 95(provide 'autoconf-mode)
99(provide 'autoconf) 96(provide 'autoconf)
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 0dc596a472b..17bd2760baa 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -93,7 +93,7 @@
93 93
94;;; Variables also used at compile time. 94;;; Variables also used at compile time.
95 95
96(defconst c-version "5.32.3" 96(defconst c-version "5.32.4"
97 "CC Mode version number.") 97 "CC Mode version number.")
98 98
99(defconst c-version-sym (intern c-version)) 99(defconst c-version-sym (intern c-version))
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 2aa04cb2b0b..10355451480 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -2561,8 +2561,11 @@ comment at the start of cc-engine.el for more info."
2561 start-point cache-pos))) 2561 start-point cache-pos)))
2562 2562
2563 ;; Might we be better off starting from the top level, two defuns back, 2563 ;; Might we be better off starting from the top level, two defuns back,
2564 ;; instead? 2564 ;; instead? This heuristic no longer works well in C++, where
2565 (when (> how-far c-state-cache-too-far) 2565 ;; declarations inside namespace brace blocks are frequently placed at
2566 ;; column zero.
2567 (when (and (not (c-major-mode-is 'c++-mode))
2568 (> how-far c-state-cache-too-far))
2566 (setq BOD-pos (c-get-fallback-scan-pos here)) ; somewhat EXPENSIVE!!! 2569 (setq BOD-pos (c-get-fallback-scan-pos here)) ; somewhat EXPENSIVE!!!
2567 (if (< (- here BOD-pos) how-far) 2570 (if (< (- here BOD-pos) how-far)
2568 (setq strategy 'BOD 2571 (setq strategy 'BOD
@@ -2649,17 +2652,20 @@ comment at the start of cc-engine.el for more info."
2649 ;; If we're essentially repeating a fruitless search, just give up. 2652 ;; If we're essentially repeating a fruitless search, just give up.
2650 (unless (and c-state-brace-pair-desert 2653 (unless (and c-state-brace-pair-desert
2651 (eq cache-pos (car c-state-brace-pair-desert)) 2654 (eq cache-pos (car c-state-brace-pair-desert))
2655 (or (null (car c-state-brace-pair-desert))
2656 (> from (car c-state-brace-pair-desert)))
2652 (<= from (cdr c-state-brace-pair-desert))) 2657 (<= from (cdr c-state-brace-pair-desert)))
2653 ;; DESERT-LIM. Only search what we absolutely need to, 2658 ;; DESERT-LIM. Avoid repeated searching through the cached desert.
2654 (let ((desert-lim 2659 (let ((desert-lim
2655 (and c-state-brace-pair-desert 2660 (and c-state-brace-pair-desert
2656 (eq cache-pos (car c-state-brace-pair-desert)) 2661 (eq cache-pos (car c-state-brace-pair-desert))
2662 (>= from (cdr c-state-brace-pair-desert))
2657 (cdr c-state-brace-pair-desert))) 2663 (cdr c-state-brace-pair-desert)))
2658 ;; CACHE-LIM. This limit will be necessary when an opening 2664 ;; CACHE-LIM. This limit will be necessary when an opening
2659 ;; paren at `cache-pos' has just had its matching close paren 2665 ;; paren at `cache-pos' has just had its matching close paren
2660 ;; inserted. `cache-pos' continues to be a search bound, even 2666 ;; inserted into the buffer. `cache-pos' continues to be a
2661 ;; though the algorithm below would skip over the new paren 2667 ;; search bound, even though the algorithm below would skip
2662 ;; pair. 2668 ;; over the new paren pair.
2663 (cache-lim (and cache-pos (< cache-pos from) cache-pos))) 2669 (cache-lim (and cache-pos (< cache-pos from) cache-pos)))
2664 (narrow-to-region 2670 (narrow-to-region
2665 (cond 2671 (cond
@@ -3342,12 +3348,18 @@ comment at the start of cc-engine.el for more info."
3342 (fset 'c-real-parse-state (symbol-function 'c-parse-state))) 3348 (fset 'c-real-parse-state (symbol-function 'c-parse-state)))
3343(cc-bytecomp-defun c-real-parse-state) 3349(cc-bytecomp-defun c-real-parse-state)
3344 3350
3351(defvar c-parse-state-point nil)
3345(defvar c-parse-state-state nil) 3352(defvar c-parse-state-state nil)
3346(defun c-record-parse-state-state () 3353(defun c-record-parse-state-state ()
3354 (setq c-parse-state-point (point))
3347 (setq c-parse-state-state 3355 (setq c-parse-state-state
3348 (mapcar 3356 (mapcar
3349 (lambda (arg) 3357 (lambda (arg)
3350 (cons arg (symbol-value arg))) 3358 (let ((val (symbol-value arg)))
3359 (cons arg
3360 (if (consp val)
3361 (copy-tree val)
3362 val))))
3351 '(c-state-cache 3363 '(c-state-cache
3352 c-state-cache-good-pos 3364 c-state-cache-good-pos
3353 c-state-nonlit-pos-cache 3365 c-state-nonlit-pos-cache
@@ -3360,7 +3372,8 @@ comment at the start of cc-engine.el for more info."
3360 c-state-point-min-lit-start 3372 c-state-point-min-lit-start
3361 c-state-min-scan-pos 3373 c-state-min-scan-pos
3362 c-state-old-cpp-beg 3374 c-state-old-cpp-beg
3363 c-state-old-cpp-end)))) 3375 c-state-old-cpp-end
3376 c-parse-state-point))))
3364(defun c-replay-parse-state-state () 3377(defun c-replay-parse-state-state ()
3365 (message 3378 (message
3366 (concat "(setq " 3379 (concat "(setq "
@@ -3370,6 +3383,16 @@ comment at the start of cc-engine.el for more info."
3370 c-parse-state-state " ") 3383 c-parse-state-state " ")
3371 ")"))) 3384 ")")))
3372 3385
3386(defun c-debug-parse-state-double-cons (state)
3387 (let (state-car conses-not-ok)
3388 (while state
3389 (setq state-car (car state)
3390 state (cdr state))
3391 (if (and (consp state-car)
3392 (consp (car state)))
3393 (setq conses-not-ok t)))
3394 conses-not-ok))
3395
3373(defun c-debug-parse-state () 3396(defun c-debug-parse-state ()
3374 (let ((here (point)) (res1 (c-real-parse-state)) res2) 3397 (let ((here (point)) (res1 (c-real-parse-state)) res2)
3375 (let ((c-state-cache nil) 3398 (let ((c-state-cache nil)
@@ -3402,8 +3425,16 @@ comment at the start of cc-engine.el for more info."
3402 here res1 res2) 3425 here res1 res2)
3403 (message "Old state:") 3426 (message "Old state:")
3404 (c-replay-parse-state-state)) 3427 (c-replay-parse-state-state))
3428
3429 (when (c-debug-parse-state-double-cons res1)
3430 (message "c-parse-state INVALIDITY at %s: %s"
3431 here res1)
3432 (message "Old state:")
3433 (c-replay-parse-state-state))
3434
3405 (c-record-parse-state-state) 3435 (c-record-parse-state-state)
3406 res1)) 3436 res2 ; res1 correct a cascading series of errors ASAP
3437 ))
3407 3438
3408(defun c-toggle-parse-state-debug (&optional arg) 3439(defun c-toggle-parse-state-debug (&optional arg)
3409 (interactive "P") 3440 (interactive "P")
@@ -3411,7 +3442,9 @@ comment at the start of cc-engine.el for more info."
3411 (fset 'c-parse-state (symbol-function (if c-debug-parse-state 3442 (fset 'c-parse-state (symbol-function (if c-debug-parse-state
3412 'c-debug-parse-state 3443 'c-debug-parse-state
3413 'c-real-parse-state))) 3444 'c-real-parse-state)))
3414 (c-keep-region-active)) 3445 (c-keep-region-active)
3446 (message "c-debug-parse-state %sabled"
3447 (if c-debug-parse-state "en" "dis")))
3415(when c-debug-parse-state 3448(when c-debug-parse-state
3416 (c-toggle-parse-state-debug 1)) 3449 (c-toggle-parse-state-debug 1))
3417 3450
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 50eaebe4dec..a904ffdb811 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -647,7 +647,9 @@ compatible with old code; callers should always specify it."
647 647
648 (set (make-local-variable 'outline-regexp) "[^#\n\^M]") 648 (set (make-local-variable 'outline-regexp) "[^#\n\^M]")
649 (set (make-local-variable 'outline-level) 'c-outline-level) 649 (set (make-local-variable 'outline-level) 'c-outline-level)
650 650 (set (make-local-variable 'add-log-current-defun-function)
651 (lambda ()
652 (or (c-cpp-define-name) (c-defun-name))))
651 (let ((rfn (assq mode c-require-final-newline))) 653 (let ((rfn (assq mode c-require-final-newline)))
652 (when rfn 654 (when rfn
653 (and (cdr rfn) 655 (and (cdr rfn)
@@ -1034,7 +1036,10 @@ Note that the style variables are always made local to the buffer."
1034 (mapc (lambda (fn) 1036 (mapc (lambda (fn)
1035 (funcall fn beg end)) 1037 (funcall fn beg end))
1036 c-get-state-before-change-functions)) 1038 c-get-state-before-change-functions))
1037 )))) 1039 )))
1040 ;; The following must be done here rather than in `c-after-change' because
1041 ;; newly inserted parens would foul up the invalidation algorithm.
1042 (c-invalidate-state-cache beg))
1038 1043
1039(defvar c-in-after-change-fontification nil) 1044(defvar c-in-after-change-fontification nil)
1040(make-variable-buffer-local 'c-in-after-change-fontification) 1045(make-variable-buffer-local 'c-in-after-change-fontification)
@@ -1082,7 +1087,7 @@ Note that the style variables are always made local to the buffer."
1082 1087
1083 (c-trim-found-types beg end old-len) ; maybe we don't need all of these. 1088 (c-trim-found-types beg end old-len) ; maybe we don't need all of these.
1084 (c-invalidate-sws-region-after beg end) 1089 (c-invalidate-sws-region-after beg end)
1085 (c-invalidate-state-cache beg) 1090 ;; (c-invalidate-state-cache beg) ; moved to `c-before-change'.
1086 (c-invalidate-find-decl-cache beg) 1091 (c-invalidate-find-decl-cache beg)
1087 1092
1088 (when c-recognize-<>-arglists 1093 (when c-recognize-<>-arglists
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index e1430b67e99..0a952cf3870 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1742,6 +1742,13 @@ or as help on variables `cperl-tips', `cperl-problems',
1742 (setq outline-regexp cperl-outline-regexp) 1742 (setq outline-regexp cperl-outline-regexp)
1743 (make-local-variable 'outline-level) 1743 (make-local-variable 'outline-level)
1744 (setq outline-level 'cperl-outline-level) 1744 (setq outline-level 'cperl-outline-level)
1745 (make-local-variable 'add-log-current-defun-function)
1746 (setq add-log-current-defun-function
1747 (lambda ()
1748 (save-excursion
1749 (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
1750 (match-string-no-properties 1)))))
1751
1745 (make-local-variable 'paragraph-start) 1752 (make-local-variable 'paragraph-start)
1746 (setq paragraph-start (concat "^$\\|" page-delimiter)) 1753 (setq paragraph-start (concat "^$\\|" page-delimiter))
1747 (make-local-variable 'paragraph-separate) 1754 (make-local-variable 'paragraph-separate)
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 071a0fb6037..067d89781d2 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -702,7 +702,9 @@ Returns t if it visits a tags table, or nil if there are no more in the list."
702 (kill-local-variable 'tags-file-name) 702 (kill-local-variable 'tags-file-name)
703 (if (eq local-tags-file-name tags-file-name) 703 (if (eq local-tags-file-name tags-file-name)
704 (setq tags-file-name nil)) 704 (setq tags-file-name nil))
705 (user-error "File %s is not a valid tags table" 705 (user-error (if (file-exists-p local-tags-file-name)
706 "File %s is not a valid tags table"
707 "File %s does not exist")
706 local-tags-file-name))))) 708 local-tags-file-name)))))
707 709
708(defun tags-reset-tags-tables () 710(defun tags-reset-tags-tables ()
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index c056b0f4e26..b448b7b3032 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -586,7 +586,7 @@ This function is called from `compilation-filter-hook'."
586 'exec-plus) 586 'exec-plus)
587 ((and 587 ((and
588 (grep-probe find-program `(nil nil nil ,null-device "-print0")) 588 (grep-probe find-program `(nil nil nil ,null-device "-print0"))
589 (grep-probe xargs-program `(nil nil nil "-0" "-e" "echo"))) 589 (grep-probe xargs-program `(nil nil nil "-0" "echo")))
590 'gnu) 590 'gnu)
591 (t 591 (t
592 'exec)))) 592 'exec))))
@@ -596,7 +596,7 @@ This function is called from `compilation-filter-hook'."
596 ;; Windows shells need the program file name 596 ;; Windows shells need the program file name
597 ;; after the pipe symbol be quoted if they use 597 ;; after the pipe symbol be quoted if they use
598 ;; forward slashes as directory separators. 598 ;; forward slashes as directory separators.
599 (format "%s . -type f -print0 | \"%s\" -0 -e %s" 599 (format "%s . -type f -print0 | \"%s\" -0 %s"
600 find-program xargs-program grep-command)) 600 find-program xargs-program grep-command))
601 ((memq grep-find-use-xargs '(exec exec-plus)) 601 ((memq grep-find-use-xargs '(exec exec-plus))
602 (let ((cmd0 (format "%s . -type f -exec %s" 602 (let ((cmd0 (format "%s . -type f -exec %s"
@@ -621,7 +621,7 @@ This function is called from `compilation-filter-hook'."
621 (format "%s " null-device) 621 (format "%s " null-device)
622 ""))) 622 "")))
623 (cond ((eq grep-find-use-xargs 'gnu) 623 (cond ((eq grep-find-use-xargs 'gnu)
624 (format "%s . <X> -type f <F> -print0 | \"%s\" -0 -e %s" 624 (format "%s . <X> -type f <F> -print0 | \"%s\" -0 %s"
625 find-program xargs-program gcmd)) 625 find-program xargs-program gcmd))
626 ((eq grep-find-use-xargs 'exec) 626 ((eq grep-find-use-xargs 'exec)
627 (format "%s . <X> -type f <F> -exec %s {} %s%s" 627 (format "%s . <X> -type f <F> -exec %s {} %s%s"
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 33ef7607671..e6bba6a6609 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3306,29 +3306,21 @@ If one hasn't been set, or if it's stale, prompt for a new one."
3306(define-derived-mode js-mode prog-mode "Javascript" 3306(define-derived-mode js-mode prog-mode "Javascript"
3307 "Major mode for editing JavaScript." 3307 "Major mode for editing JavaScript."
3308 :group 'js 3308 :group 'js
3309 (setq-local indent-line-function 'js-indent-line)
3310 (setq-local beginning-of-defun-function 'js-beginning-of-defun)
3311 (setq-local end-of-defun-function 'js-end-of-defun)
3312 (setq-local open-paren-in-column-0-is-defun-start nil)
3313 (setq-local font-lock-defaults (list js--font-lock-keywords))
3314 (setq-local syntax-propertize-function #'js-syntax-propertize)
3309 3315
3310 (set (make-local-variable 'indent-line-function) 'js-indent-line) 3316 (setq-local parse-sexp-ignore-comments t)
3311 (set (make-local-variable 'beginning-of-defun-function) 3317 (setq-local parse-sexp-lookup-properties t)
3312 'js-beginning-of-defun) 3318 (setq-local which-func-imenu-joiner-function #'js--which-func-joiner)
3313 (set (make-local-variable 'end-of-defun-function)
3314 'js-end-of-defun)
3315
3316 (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil)
3317 (set (make-local-variable 'font-lock-defaults)
3318 (list js--font-lock-keywords))
3319 (set (make-local-variable 'syntax-propertize-function)
3320 #'js-syntax-propertize)
3321
3322 (set (make-local-variable 'parse-sexp-ignore-comments) t)
3323 (set (make-local-variable 'parse-sexp-lookup-properties) t)
3324 (set (make-local-variable 'which-func-imenu-joiner-function)
3325 #'js--which-func-joiner)
3326 3319
3327 ;; Comments 3320 ;; Comments
3328 (set (make-local-variable 'comment-start) "// ") 3321 (setq-local comment-start "// ")
3329 (set (make-local-variable 'comment-end) "") 3322 (setq-local comment-end "")
3330 (set (make-local-variable 'fill-paragraph-function) 3323 (setq-local fill-paragraph-function 'js-c-fill-paragraph)
3331 'js-c-fill-paragraph)
3332 3324
3333 ;; Parse cache 3325 ;; Parse cache
3334 (add-hook 'before-change-functions #'js--flush-caches t t) 3326 (add-hook 'before-change-functions #'js--flush-caches t t)
@@ -3338,8 +3330,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
3338 3330
3339 ;; Imenu 3331 ;; Imenu
3340 (setq imenu-case-fold-search nil) 3332 (setq imenu-case-fold-search nil)
3341 (set (make-local-variable 'imenu-create-index-function) 3333 (setq imenu-create-index-function #'js--imenu-create-index)
3342 #'js--imenu-create-index)
3343 3334
3344 ;; for filling, pretend we're cc-mode 3335 ;; for filling, pretend we're cc-mode
3345 (setq c-comment-prefix-regexp "//+\\|\\**" 3336 (setq c-comment-prefix-regexp "//+\\|\\**"
@@ -3350,10 +3341,10 @@ If one hasn't been set, or if it's stale, prompt for a new one."
3350 c-comment-start-regexp "/[*/]\\|\\s!" 3341 c-comment-start-regexp "/[*/]\\|\\s!"
3351 comment-start-skip "\\(//+\\|/\\*+\\)\\s *") 3342 comment-start-skip "\\(//+\\|/\\*+\\)\\s *")
3352 3343
3353 (set (make-local-variable 'electric-indent-chars) 3344 (setq-local electric-indent-chars
3354 (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds "[]*". 3345 (append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds "[]*".
3355 (set (make-local-variable 'electric-layout-rules) 3346 (setq-local electric-layout-rules
3356 '((?\; . after) (?\{ . after) (?\} . before))) 3347 '((?\; . after) (?\{ . after) (?\} . before)))
3357 3348
3358 (let ((c-buffer-is-cc-mode t)) 3349 (let ((c-buffer-is-cc-mode t))
3359 ;; FIXME: These are normally set by `c-basic-common-init'. Should 3350 ;; FIXME: These are normally set by `c-basic-common-init'. Should
@@ -3365,8 +3356,7 @@ If one hasn't been set, or if it's stale, prompt for a new one."
3365 (make-local-variable 'adaptive-fill-regexp) 3356 (make-local-variable 'adaptive-fill-regexp)
3366 (c-setup-paragraph-variables)) 3357 (c-setup-paragraph-variables))
3367 3358
3368 (set (make-local-variable 'syntax-begin-function) 3359 (setq-local syntax-begin-function #'js--syntax-begin-function)
3369 #'js--syntax-begin-function)
3370 3360
3371 ;; Important to fontify the whole buffer syntactically! If we don't, 3361 ;; Important to fontify the whole buffer syntactically! If we don't,
3372 ;; then we might have regular expression literals that aren't marked 3362 ;; then we might have regular expression literals that aren't marked
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index 20f91ce2d9e..7904033e68e 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -141,13 +141,21 @@
141 "*m4-output*" nil) 141 "*m4-output*" nil)
142 (switch-to-buffer-other-window "*m4-output*")) 142 (switch-to-buffer-other-window "*m4-output*"))
143 143
144(defun m4-current-defun-name ()
145 "Return the name of the M4 function at point, or nil."
146 (save-excursion
147 (if (re-search-backward
148 "^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
149 (match-string-no-properties 3))))
150
144;;;###autoload 151;;;###autoload
145(define-derived-mode m4-mode prog-mode "m4" 152(define-derived-mode m4-mode prog-mode "m4"
146 "A major mode to edit m4 macro files." 153 "A major mode to edit m4 macro files."
147 :abbrev-table m4-mode-abbrev-table 154 :abbrev-table m4-mode-abbrev-table
148 (set (make-local-variable 'comment-start) "#") 155 (setq-local comment-start "#")
149 (set (make-local-variable 'parse-sexp-ignore-comments) t) 156 (setq-local parse-sexp-ignore-comments t)
150 (set (make-local-variable 'font-lock-defaults) '(m4-font-lock-keywords nil))) 157 (setq-local add-log-current-defun-function #'m4-current-defun-name)
158 (setq font-lock-defaults '(m4-font-lock-keywords nil)))
151 159
152(provide 'm4-mode) 160(provide 'm4-mode)
153;;stuff to play with for debugging 161;;stuff to play with for debugging
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 2f4419ba2ea..8e8cd74c7be 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -879,41 +879,42 @@ Makefile mode can be configured by modifying the following variables:
879 (make-local-variable 'makefile-need-macro-pickup) 879 (make-local-variable 'makefile-need-macro-pickup)
880 880
881 ;; Font lock. 881 ;; Font lock.
882 (set (make-local-variable 'font-lock-defaults) 882 (setq-local font-lock-defaults
883 ;; SYNTAX-BEGIN set to backward-paragraph to avoid slow-down 883 ;; Set SYNTAX-BEGIN to backward-paragraph to avoid
884 ;; near the end of a large buffer, due to parse-partial-sexp's 884 ;; slow-down near the end of a large buffer, due to
885 ;; trying to parse all the way till the beginning of buffer. 885 ;; `parse-partial-sexp' trying to parse all the way till
886 '(makefile-font-lock-keywords 886 ;; the beginning of buffer.
887 nil nil 887 '(makefile-font-lock-keywords
888 ((?$ . ".")) 888 nil nil
889 backward-paragraph)) 889 ((?$ . "."))
890 (set (make-local-variable 'syntax-propertize-function) 890 backward-paragraph))
891 makefile-syntax-propertize-function) 891 (setq-local syntax-propertize-function
892 makefile-syntax-propertize-function)
892 893
893 ;; Add-log. 894 ;; Add-log.
894 (set (make-local-variable 'add-log-current-defun-function) 895 (setq-local add-log-current-defun-function
895 'makefile-add-log-defun) 896 'makefile-add-log-defun)
896 897
897 ;; Imenu. 898 ;; Imenu.
898 (set (make-local-variable 'imenu-generic-expression) 899 (setq-local imenu-generic-expression
899 makefile-imenu-generic-expression) 900 makefile-imenu-generic-expression)
900 901
901 ;; Dabbrev. 902 ;; Dabbrev.
902 (set (make-local-variable 'dabbrev-abbrev-skip-leading-regexp) "\\$") 903 (setq-local dabbrev-abbrev-skip-leading-regexp "\\$")
903 904
904 ;; Other abbrevs. 905 ;; Other abbrevs.
905 (setq local-abbrev-table makefile-mode-abbrev-table) 906 (setq local-abbrev-table makefile-mode-abbrev-table)
906 907
907 ;; Filling. 908 ;; Filling.
908 (set (make-local-variable 'fill-paragraph-function) 'makefile-fill-paragraph) 909 (setq-local fill-paragraph-function 'makefile-fill-paragraph)
909 910
910 ;; Comment stuff. 911 ;; Comment stuff.
911 (set (make-local-variable 'comment-start) "#") 912 (setq-local comment-start "#")
912 (set (make-local-variable 'comment-end) "") 913 (setq-local comment-end "")
913 (set (make-local-variable 'comment-start-skip) "#+[ \t]*") 914 (setq-local comment-start-skip "#+[ \t]*")
914 915
915 ;; Make sure TAB really inserts \t. 916 ;; Make sure TAB really inserts \t.
916 (set (make-local-variable 'indent-line-function) 'indent-to-left-margin) 917 (setq-local indent-line-function 'indent-to-left-margin)
917 918
918 ;; Real TABs are important in makefiles 919 ;; Real TABs are important in makefiles
919 (setq indent-tabs-mode t)) 920 (setq indent-tabs-mode t))
@@ -934,8 +935,7 @@ Makefile mode can be configured by modifying the following variables:
934;;;###autoload 935;;;###autoload
935(define-derived-mode makefile-makepp-mode makefile-mode "Makeppfile" 936(define-derived-mode makefile-makepp-mode makefile-mode "Makeppfile"
936 "An adapted `makefile-mode' that knows about makepp." 937 "An adapted `makefile-mode' that knows about makepp."
937 (set (make-local-variable 'makefile-rule-action-regex) 938 (setq-local makefile-rule-action-regex makefile-makepp-rule-action-regex)
938 makefile-makepp-rule-action-regex)
939 (setq font-lock-defaults 939 (setq font-lock-defaults
940 `(makefile-makepp-font-lock-keywords ,@(cdr font-lock-defaults)) 940 `(makefile-makepp-font-lock-keywords ,@(cdr font-lock-defaults))
941 imenu-generic-expression 941 imenu-generic-expression
@@ -945,11 +945,9 @@ Makefile mode can be configured by modifying the following variables:
945;;;###autoload 945;;;###autoload
946(define-derived-mode makefile-bsdmake-mode makefile-mode "BSDmakefile" 946(define-derived-mode makefile-bsdmake-mode makefile-mode "BSDmakefile"
947 "An adapted `makefile-mode' that knows about BSD make." 947 "An adapted `makefile-mode' that knows about BSD make."
948 (set (make-local-variable 'makefile-dependency-regex) 948 (setq-local makefile-dependency-regex makefile-bsdmake-dependency-regex)
949 makefile-bsdmake-dependency-regex) 949 (setq-local makefile-dependency-skip "^:!")
950 (set (make-local-variable 'makefile-dependency-skip) "^:!") 950 (setq-local makefile-rule-action-regex makefile-bsdmake-rule-action-regex)
951 (set (make-local-variable 'makefile-rule-action-regex)
952 makefile-bsdmake-rule-action-regex)
953 (setq font-lock-defaults 951 (setq font-lock-defaults
954 `(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults)))) 952 `(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults))))
955 953
@@ -957,7 +955,7 @@ Makefile mode can be configured by modifying the following variables:
957(define-derived-mode makefile-imake-mode makefile-mode "Imakefile" 955(define-derived-mode makefile-imake-mode makefile-mode "Imakefile"
958 "An adapted `makefile-mode' that knows about imake." 956 "An adapted `makefile-mode' that knows about imake."
959 :syntax-table makefile-imake-mode-syntax-table 957 :syntax-table makefile-imake-mode-syntax-table
960 (set (make-local-variable 'syntax-propertize-function) nil) 958 (setq-local syntax-propertize-function nil)
961 (setq font-lock-defaults 959 (setq font-lock-defaults
962 `(makefile-imake-font-lock-keywords ,@(cdr font-lock-defaults)))) 960 `(makefile-imake-font-lock-keywords ,@(cdr font-lock-defaults))))
963 961
@@ -1501,8 +1499,8 @@ Insertion takes place at point."
1501 (pop-to-buffer browser-buffer) 1499 (pop-to-buffer browser-buffer)
1502 (makefile-browser-fill targets macros) 1500 (makefile-browser-fill targets macros)
1503 (shrink-window-if-larger-than-buffer) 1501 (shrink-window-if-larger-than-buffer)
1504 (set (make-local-variable 'makefile-browser-selection-vector) 1502 (setq-local makefile-browser-selection-vector
1505 (make-vector (+ (length targets) (length macros)) nil)) 1503 (make-vector (+ (length targets) (length macros)) nil))
1506 (makefile-browser-start-interaction)))) 1504 (makefile-browser-start-interaction))))
1507 1505
1508(defun makefile-switch-to-browser () 1506(defun makefile-switch-to-browser ()
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el
index ab5a19f8a2f..da40cf51be9 100644
--- a/lisp/progmodes/octave-mod.el
+++ b/lisp/progmodes/octave-mod.el
@@ -794,11 +794,14 @@ does not end in `...' or `\\' or is inside an open parenthesis list."
794 "Put point at the beginning of this Octave block, mark at the end. 794 "Put point at the beginning of this Octave block, mark at the end.
795The block marked is the one that contains point or follows point." 795The block marked is the one that contains point or follows point."
796 (interactive) 796 (interactive)
797 (if (and (looking-at "\\sw\\|\\s_")
798 (looking-back "\\sw\\|\\s_" (1- (point))))
799 (skip-syntax-forward "w_"))
797 (unless (or (looking-at "\\s(") 800 (unless (or (looking-at "\\s(")
798 (save-excursion 801 (save-excursion
799 (let* ((token (funcall smie-forward-token-function)) 802 (let* ((token (funcall smie-forward-token-function))
800 (level (assoc token smie-grammar))) 803 (level (assoc token smie-grammar)))
801 (and level (null (cadr level)))))) 804 (and level (not (numberp (cadr level)))))))
802 (backward-up-list 1)) 805 (backward-up-list 1))
803 (mark-sexp)) 806 (mark-sexp))
804 807
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index d2f7fc7a059..46940457d36 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -578,6 +578,13 @@ create a new comment."
578 ((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0)) 578 ((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0))
579 ((looking-at "=cut") 1) 579 ((looking-at "=cut") 1)
580 (t 3))) 580 (t 3)))
581
582(defun perl-current-defun-name ()
583 "The `add-log-current-defun' function in Perl mode."
584 (save-excursion
585 (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
586 (match-string-no-properties 1))))
587
581 588
582(defvar perl-mode-hook nil 589(defvar perl-mode-hook nil
583 "Normal hook to run when entering Perl mode.") 590 "Normal hook to run when entering Perl mode.")
@@ -631,15 +638,15 @@ Various indentation styles: K&R BSD BLK GNU LW
631 638
632Turning on Perl mode runs the normal hook `perl-mode-hook'." 639Turning on Perl mode runs the normal hook `perl-mode-hook'."
633 :abbrev-table perl-mode-abbrev-table 640 :abbrev-table perl-mode-abbrev-table
634 (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter)) 641 (setq-local paragraph-start (concat "$\\|" page-delimiter))
635 (set (make-local-variable 'paragraph-separate) paragraph-start) 642 (setq-local paragraph-separate paragraph-start)
636 (set (make-local-variable 'paragraph-ignore-fill-prefix) t) 643 (setq-local paragraph-ignore-fill-prefix t)
637 (set (make-local-variable 'indent-line-function) #'perl-indent-line) 644 (setq-local indent-line-function #'perl-indent-line)
638 (set (make-local-variable 'comment-start) "# ") 645 (setq-local comment-start "# ")
639 (set (make-local-variable 'comment-end) "") 646 (setq-local comment-end "")
640 (set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-\\);?#+ *") 647 (setq-local comment-start-skip "\\(^\\|\\s-\\);?#+ *")
641 (set (make-local-variable 'comment-indent-function) #'perl-comment-indent) 648 (setq-local comment-indent-function #'perl-comment-indent)
642 (set (make-local-variable 'parse-sexp-ignore-comments) t) 649 (setq-local parse-sexp-ignore-comments t)
643 ;; Tell font-lock.el how to handle Perl. 650 ;; Tell font-lock.el how to handle Perl.
644 (setq font-lock-defaults '((perl-font-lock-keywords 651 (setq font-lock-defaults '((perl-font-lock-keywords
645 perl-font-lock-keywords-1 652 perl-font-lock-keywords-1
@@ -647,22 +654,21 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'."
647 nil nil ((?\_ . "w")) nil 654 nil nil ((?\_ . "w")) nil
648 (font-lock-syntactic-face-function 655 (font-lock-syntactic-face-function
649 . perl-font-lock-syntactic-face-function))) 656 . perl-font-lock-syntactic-face-function)))
650 (set (make-local-variable 'syntax-propertize-function) 657 (setq-local syntax-propertize-function #'perl-syntax-propertize-function)
651 #'perl-syntax-propertize-function)
652 (add-hook 'syntax-propertize-extend-region-functions 658 (add-hook 'syntax-propertize-extend-region-functions
653 #'syntax-propertize-multiline 'append 'local) 659 #'syntax-propertize-multiline 'append 'local)
654 ;; Electricity. 660 ;; Electricity.
655 ;; FIXME: setup electric-layout-rules. 661 ;; FIXME: setup electric-layout-rules.
656 (set (make-local-variable 'electric-indent-chars) 662 (setq-local electric-indent-chars
657 (append '(?\{ ?\} ?\; ?\:) electric-indent-chars)) 663 (append '(?\{ ?\} ?\; ?\:) electric-indent-chars))
658 (add-hook 'electric-indent-functions #'perl-electric-noindent-p nil t) 664 (add-hook 'electric-indent-functions #'perl-electric-noindent-p nil t)
659 ;; Tell imenu how to handle Perl. 665 ;; Tell imenu how to handle Perl.
660 (set (make-local-variable 'imenu-generic-expression) 666 (setq-local imenu-generic-expression perl-imenu-generic-expression)
661 perl-imenu-generic-expression)
662 (setq imenu-case-fold-search nil) 667 (setq imenu-case-fold-search nil)
663 ;; Setup outline-minor-mode. 668 ;; Setup outline-minor-mode.
664 (set (make-local-variable 'outline-regexp) perl-outline-regexp) 669 (setq-local outline-regexp perl-outline-regexp)
665 (set (make-local-variable 'outline-level) 'perl-outline-level)) 670 (setq-local outline-level 'perl-outline-level)
671 (setq-local add-log-current-defun-function #'perl-current-defun-name))
666 672
667;; This is used by indent-for-comment 673;; This is used by indent-for-comment
668;; to decide how much to indent a comment in Perl code 674;; to decide how much to indent a comment in Perl code
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 949b0252bf1..a2c8453a011 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -33,7 +33,7 @@
33;; Implements Syntax highlighting, Indentation, Movement, Shell 33;; Implements Syntax highlighting, Indentation, Movement, Shell
34;; interaction, Shell completion, Shell virtualenv support, Pdb 34;; interaction, Shell completion, Shell virtualenv support, Pdb
35;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc, 35;; tracking, Symbol completion, Skeletons, FFAP, Code Check, Eldoc,
36;; imenu. 36;; Imenu.
37 37
38;; Syntax highlighting: Fontification of code is provided and supports 38;; Syntax highlighting: Fontification of code is provided and supports
39;; python's triple quoted strings properly. 39;; python's triple quoted strings properly.
@@ -169,10 +169,12 @@
169;; might guessed you should run `python-shell-send-buffer' from time 169;; might guessed you should run `python-shell-send-buffer' from time
170;; to time to get better results too. 170;; to time to get better results too.
171 171
172;; imenu: This mode supports imenu in its most basic form, letting it 172;; Imenu: This mode supports Imenu in its most basic form, letting it
173;; build the necessary alist via `imenu-default-create-index-function' 173;; build the necessary alist via `imenu-default-create-index-function'
174;; by having set `imenu-extract-index-name-function' to 174;; by having set `imenu-extract-index-name-function' to
175;; `python-info-current-defun'. 175;; `python-info-current-defun' and
176;; `imenu-prev-index-position-function' to
177;; `python-imenu-prev-index-position'.
176 178
177;; If you used python-mode.el you probably will miss auto-indentation 179;; If you used python-mode.el you probably will miss auto-indentation
178;; when inserting newlines. To achieve the same behavior you have 180;; when inserting newlines. To achieve the same behavior you have
@@ -202,13 +204,12 @@
202 204
203(require 'ansi-color) 205(require 'ansi-color)
204(require 'comint) 206(require 'comint)
207(eval-when-compile (require 'cl-lib))
205 208
206(eval-when-compile 209;; Avoid compiler warnings
207 (require 'cl) 210(defvar view-return-to-alist)
208 ;; Avoid compiler warnings 211(defvar compilation-error-regexp-alist)
209 (defvar view-return-to-alist) 212(defvar outline-heading-end-regexp)
210 (defvar compilation-error-regexp-alist)
211 (defvar outline-heading-end-regexp))
212 213
213(autoload 'comint-mode "comint") 214(autoload 'comint-mode "comint")
214 215
@@ -364,12 +365,24 @@ This variant of `rx' supports common python named REGEXPS."
364 "Return non-nil if point is on TYPE using SYNTAX-PPSS. 365 "Return non-nil if point is on TYPE using SYNTAX-PPSS.
365TYPE can be `comment', `string' or `paren'. It returns the start 366TYPE can be `comment', `string' or `paren'. It returns the start
366character address of the specified TYPE." 367character address of the specified TYPE."
368 (declare (compiler-macro
369 (lambda (form)
370 (pcase type
371 (`'comment
372 `(let ((ppss (or ,syntax-ppss (syntax-ppss))))
373 (and (nth 4 ppss) (nth 8 ppss))))
374 (`'string
375 `(let ((ppss (or ,syntax-ppss (syntax-ppss))))
376 (and (nth 3 ppss) (nth 8 ppss))))
377 (`'paren
378 `(nth 1 (or ,syntax-ppss (syntax-ppss))))
379 (_ form)))))
367 (let ((ppss (or syntax-ppss (syntax-ppss)))) 380 (let ((ppss (or syntax-ppss (syntax-ppss))))
368 (case type 381 (pcase type
369 (comment (and (nth 4 ppss) (nth 8 ppss))) 382 (`comment (and (nth 4 ppss) (nth 8 ppss)))
370 (string (and (not (nth 4 ppss)) (nth 8 ppss))) 383 (`string (and (nth 3 ppss) (nth 8 ppss)))
371 (paren (nth 1 ppss)) 384 (`paren (nth 1 ppss))
372 (t nil)))) 385 (_ nil))))
373 386
374(defun python-syntax-context-type (&optional syntax-ppss) 387(defun python-syntax-context-type (&optional syntax-ppss)
375 "Return the context type using SYNTAX-PPSS. 388 "Return the context type using SYNTAX-PPSS.
@@ -481,8 +494,8 @@ The type returned can be `comment', `string' or `paren'."
481 (when (re-search-forward re limit t) 494 (when (re-search-forward re limit t)
482 (while (and (python-syntax-context 'paren) 495 (while (and (python-syntax-context 'paren)
483 (re-search-forward re limit t))) 496 (re-search-forward re limit t)))
484 (if (and (not (python-syntax-context 'paren)) 497 (if (not (or (python-syntax-context 'paren)
485 (not (equal (char-after (point-marker)) ?=))) 498 (equal (char-after (point-marker)) ?=)))
486 t 499 t
487 (set-match-data nil))))) 500 (set-match-data nil)))))
488 (1 font-lock-variable-name-face nil nil)) 501 (1 font-lock-variable-name-face nil nil))
@@ -516,7 +529,7 @@ is used to limit the scan."
516 (while (and (< i 3) 529 (while (and (< i 3)
517 (or (not limit) (< (+ point i) limit)) 530 (or (not limit) (< (+ point i) limit))
518 (eq (char-after (+ point i)) quote-char)) 531 (eq (char-after (+ point i)) quote-char))
519 (incf i)) 532 (cl-incf i))
520 i)) 533 i))
521 534
522(defun python-syntax-stringify () 535(defun python-syntax-stringify ()
@@ -645,7 +658,7 @@ These make `python-indent-calculate-indentation' subtract the value of
645 (python-util-forward-comment) 658 (python-util-forward-comment)
646 (current-indentation)))) 659 (current-indentation))))
647 (if indentation 660 (if indentation
648 (setq python-indent-offset indentation) 661 (set (make-local-variable 'python-indent-offset) indentation)
649 (message "Can't guess python-indent-offset, using defaults: %s" 662 (message "Can't guess python-indent-offset, using defaults: %s"
650 python-indent-offset))))))) 663 python-indent-offset)))))))
651 664
@@ -723,17 +736,17 @@ START is the buffer position where the sexp starts."
723 (save-restriction 736 (save-restriction
724 (widen) 737 (widen)
725 (save-excursion 738 (save-excursion
726 (case context-status 739 (pcase context-status
727 ('no-indent 0) 740 (`no-indent 0)
728 ;; When point is after beginning of block just add one level 741 ;; When point is after beginning of block just add one level
729 ;; of indentation relative to the context-start 742 ;; of indentation relative to the context-start
730 ('after-beginning-of-block 743 (`after-beginning-of-block
731 (goto-char context-start) 744 (goto-char context-start)
732 (+ (current-indentation) python-indent-offset)) 745 (+ (current-indentation) python-indent-offset))
733 ;; When after a simple line just use previous line 746 ;; When after a simple line just use previous line
734 ;; indentation, in the case current line starts with a 747 ;; indentation, in the case current line starts with a
735 ;; `python-indent-dedenters' de-indent one level. 748 ;; `python-indent-dedenters' de-indent one level.
736 ('after-line 749 (`after-line
737 (- 750 (-
738 (save-excursion 751 (save-excursion
739 (goto-char context-start) 752 (goto-char context-start)
@@ -746,11 +759,11 @@ START is the buffer position where the sexp starts."
746 ;; When inside of a string, do nothing. just use the current 759 ;; When inside of a string, do nothing. just use the current
747 ;; indentation. XXX: perhaps it would be a good idea to 760 ;; indentation. XXX: perhaps it would be a good idea to
748 ;; invoke standard text indentation here 761 ;; invoke standard text indentation here
749 ('inside-string 762 (`inside-string
750 (goto-char context-start) 763 (goto-char context-start)
751 (current-indentation)) 764 (current-indentation))
752 ;; After backslash we have several possibilities. 765 ;; After backslash we have several possibilities.
753 ('after-backslash 766 (`after-backslash
754 (cond 767 (cond
755 ;; Check if current line is a dot continuation. For this 768 ;; Check if current line is a dot continuation. For this
756 ;; the current line must start with a dot and previous 769 ;; the current line must start with a dot and previous
@@ -816,7 +829,7 @@ START is the buffer position where the sexp starts."
816 (+ (current-indentation) python-indent-offset))))) 829 (+ (current-indentation) python-indent-offset)))))
817 ;; When inside a paren there's a need to handle nesting 830 ;; When inside a paren there's a need to handle nesting
818 ;; correctly 831 ;; correctly
819 ('inside-paren 832 (`inside-paren
820 (cond 833 (cond
821 ;; If current line closes the outermost open paren use the 834 ;; If current line closes the outermost open paren use the
822 ;; current indentation of the context-start line. 835 ;; current indentation of the context-start line.
@@ -1087,12 +1100,12 @@ With positive ARG search backwards, else search forwards."
1087 (beg-indentation 1100 (beg-indentation
1088 (and (> arg 0) 1101 (and (> arg 0)
1089 (save-excursion 1102 (save-excursion
1090 (and (python-info-current-line-empty-p) 1103 (while (and
1091 (python-util-forward-comment -1)) 1104 (not (python-info-looking-at-beginning-of-defun))
1092 (python-nav-beginning-of-statement) 1105 (python-nav-backward-block)))
1093 (if (python-info-looking-at-beginning-of-defun) 1106 (or (and (python-info-looking-at-beginning-of-defun)
1094 (+ (current-indentation) python-indent-offset) 1107 (+ (current-indentation) python-indent-offset))
1095 (current-indentation))))) 1108 0))))
1096 (found 1109 (found
1097 (progn 1110 (progn
1098 (when (and (< arg 0) 1111 (when (and (< arg 0)
@@ -2164,11 +2177,11 @@ INPUT."
2164 'default) 2177 'default)
2165 (t nil))) 2178 (t nil)))
2166 (completion-code 2179 (completion-code
2167 (case completion-context 2180 (pcase completion-context
2168 (pdb python-shell-completion-pdb-string-code) 2181 (`pdb python-shell-completion-pdb-string-code)
2169 (import python-shell-completion-module-string-code) 2182 (`import python-shell-completion-module-string-code)
2170 (default python-shell-completion-string-code) 2183 (`default python-shell-completion-string-code)
2171 (t nil))) 2184 (_ nil)))
2172 (input 2185 (input
2173 (if (eq completion-context 'import) 2186 (if (eq completion-context 'import)
2174 (replace-regexp-in-string "^[ \t]+" "" line) 2187 (replace-regexp-in-string "^[ \t]+" "" line)
@@ -2492,17 +2505,17 @@ JUSTIFY should be used (if applicable) as in `fill-paragraph'."
2492 ;; Docstring styles may vary for oneliners and multi-liners. 2505 ;; Docstring styles may vary for oneliners and multi-liners.
2493 (> (count-matches "\n" str-start-pos str-end-pos) 0)) 2506 (> (count-matches "\n" str-start-pos str-end-pos) 0))
2494 (delimiters-style 2507 (delimiters-style
2495 (case python-fill-docstring-style 2508 (pcase python-fill-docstring-style
2496 ;; delimiters-style is a cons cell with the form 2509 ;; delimiters-style is a cons cell with the form
2497 ;; (START-NEWLINES . END-NEWLINES). When any of the sexps 2510 ;; (START-NEWLINES . END-NEWLINES). When any of the sexps
2498 ;; is NIL means to not add any newlines for start or end 2511 ;; is NIL means to not add any newlines for start or end
2499 ;; of docstring. See `python-fill-docstring-style' for a 2512 ;; of docstring. See `python-fill-docstring-style' for a
2500 ;; graphic idea of each style. 2513 ;; graphic idea of each style.
2501 (django (cons 1 1)) 2514 (`django (cons 1 1))
2502 (onetwo (and multi-line-p (cons 1 2))) 2515 (`onetwo (and multi-line-p (cons 1 2)))
2503 (pep-257 (and multi-line-p (cons nil 2))) 2516 (`pep-257 (and multi-line-p (cons nil 2)))
2504 (pep-257-nn (and multi-line-p (cons nil 1))) 2517 (`pep-257-nn (and multi-line-p (cons nil 1)))
2505 (symmetric (and multi-line-p (cons 1 1))))) 2518 (`symmetric (and multi-line-p (cons 1 1)))))
2506 (docstring-p (save-excursion 2519 (docstring-p (save-excursion
2507 ;; Consider docstrings those strings which 2520 ;; Consider docstrings those strings which
2508 ;; start on a line by themselves. 2521 ;; start on a line by themselves.
@@ -2703,7 +2716,7 @@ The skeleton will be bound to python-skeleton-NAME."
2703 (easy-menu-add-item 2716 (easy-menu-add-item
2704 nil '("Python" "Skeletons") 2717 nil '("Python" "Skeletons")
2705 `[,(format 2718 `[,(format
2706 "Insert %s" (caddr (split-string (symbol-name skeleton) "-"))) 2719 "Insert %s" (nth 2 (split-string (symbol-name skeleton) "-")))
2707 ,skeleton t])))) 2720 ,skeleton t]))))
2708 2721
2709;;; FFAP 2722;;; FFAP
@@ -2870,6 +2883,19 @@ Interactively, prompt for symbol."
2870 "^Eldoc needs an inferior Python process running.") 2883 "^Eldoc needs an inferior Python process running.")
2871 2884
2872 2885
2886;;; Imenu
2887
2888(defun python-imenu-prev-index-position ()
2889 "Python mode's `imenu-prev-index-position-function'."
2890 (let ((found))
2891 (while (and (setq found
2892 (re-search-backward python-nav-beginning-of-defun-regexp nil t))
2893 (not (python-info-looking-at-beginning-of-defun))))
2894 (and found
2895 (python-info-looking-at-beginning-of-defun)
2896 (python-info-current-defun))))
2897
2898
2873;;; Misc helpers 2899;;; Misc helpers
2874 2900
2875(defun python-info-current-defun (&optional include-type) 2901(defun python-info-current-defun (&optional include-type)
@@ -3214,6 +3240,9 @@ if that value is non-nil."
3214 (set (make-local-variable 'imenu-extract-index-name-function) 3240 (set (make-local-variable 'imenu-extract-index-name-function)
3215 #'python-info-current-defun) 3241 #'python-info-current-defun)
3216 3242
3243 (set (make-local-variable 'imenu-prev-index-position-function)
3244 #'python-imenu-prev-index-position)
3245
3217 (set (make-local-variable 'add-log-current-defun-function) 3246 (set (make-local-variable 'add-log-current-defun-function)
3218 #'python-info-current-defun) 3247 #'python-info-current-defun)
3219 3248
diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el
index 7cab07fe387..1a15f9eda3c 100644
--- a/lisp/progmodes/scheme.el
+++ b/lisp/progmodes/scheme.el
@@ -126,44 +126,44 @@
126(defun scheme-mode-variables () 126(defun scheme-mode-variables ()
127 (set-syntax-table scheme-mode-syntax-table) 127 (set-syntax-table scheme-mode-syntax-table)
128 (setq local-abbrev-table scheme-mode-abbrev-table) 128 (setq local-abbrev-table scheme-mode-abbrev-table)
129 (set (make-local-variable 'paragraph-start) (concat "$\\|" page-delimiter)) 129 (setq-local paragraph-start (concat "$\\|" page-delimiter))
130 (set (make-local-variable 'paragraph-separate) paragraph-start) 130 (setq-local paragraph-separate paragraph-start)
131 (set (make-local-variable 'paragraph-ignore-fill-prefix) t) 131 (setq-local paragraph-ignore-fill-prefix t)
132 (set (make-local-variable 'fill-paragraph-function) 'lisp-fill-paragraph) 132 (setq-local fill-paragraph-function 'lisp-fill-paragraph)
133 ;; Adaptive fill mode gets in the way of auto-fill, 133 ;; Adaptive fill mode gets in the way of auto-fill,
134 ;; and should make no difference for explicit fill 134 ;; and should make no difference for explicit fill
135 ;; because lisp-fill-paragraph should do the job. 135 ;; because lisp-fill-paragraph should do the job.
136 (set (make-local-variable 'adaptive-fill-mode) nil) 136 (setq-local adaptive-fill-mode nil)
137 (set (make-local-variable 'indent-line-function) 'lisp-indent-line) 137 (setq-local indent-line-function 'lisp-indent-line)
138 (set (make-local-variable 'parse-sexp-ignore-comments) t) 138 (setq-local parse-sexp-ignore-comments t)
139 (set (make-local-variable 'outline-regexp) ";;; \\|(....") 139 (setq-local outline-regexp ";;; \\|(....")
140 (set (make-local-variable 'comment-start) ";") 140 (setq-local add-log-current-defun-function #'lisp-current-defun-name)
141 (set (make-local-variable 'comment-add) 1) 141 (setq-local comment-start ";")
142 (setq-local comment-add 1)
142 ;; Look within the line for a ; following an even number of backslashes 143 ;; Look within the line for a ; following an even number of backslashes
143 ;; after either a non-backslash or the line beginning. 144 ;; after either a non-backslash or the line beginning.
144 (set (make-local-variable 'comment-start-skip) 145 (setq-local comment-start-skip
145 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+[ \t]*") 146 "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+[ \t]*")
146 (set (make-local-variable 'font-lock-comment-start-skip) ";+ *") 147 (setq-local font-lock-comment-start-skip ";+ *")
147 (set (make-local-variable 'comment-column) 40) 148 (setq-local comment-column 40)
148 (set (make-local-variable 'parse-sexp-ignore-comments) t) 149 (setq-local parse-sexp-ignore-comments t)
149 (set (make-local-variable 'lisp-indent-function) 'scheme-indent-function) 150 (setq-local lisp-indent-function 'scheme-indent-function)
150 (setq mode-line-process '("" scheme-mode-line-process)) 151 (setq mode-line-process '("" scheme-mode-line-process))
151 (set (make-local-variable 'imenu-case-fold-search) t) 152 (setq-local imenu-case-fold-search t)
152 (setq imenu-generic-expression scheme-imenu-generic-expression) 153 (setq imenu-generic-expression scheme-imenu-generic-expression)
153 (set (make-local-variable 'imenu-syntax-alist) 154 (setq-local imenu-syntax-alist
154 '(("+-*/.<>=?!$%_&~^:" . "w"))) 155 '(("+-*/.<>=?!$%_&~^:" . "w")))
155 (set (make-local-variable 'font-lock-defaults) 156 (setq font-lock-defaults
156 '((scheme-font-lock-keywords 157 '((scheme-font-lock-keywords
157 scheme-font-lock-keywords-1 scheme-font-lock-keywords-2) 158 scheme-font-lock-keywords-1 scheme-font-lock-keywords-2)
158 nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14")) 159 nil t (("+-*/.<>=!?$%_&~^:" . "w") (?#. "w 14"))
159 beginning-of-defun 160 beginning-of-defun
160 (font-lock-mark-block-function . mark-defun) 161 (font-lock-mark-block-function . mark-defun)
161 (font-lock-syntactic-face-function 162 (font-lock-syntactic-face-function
162 . scheme-font-lock-syntactic-face-function) 163 . scheme-font-lock-syntactic-face-function)
163 (parse-sexp-lookup-properties . t) 164 (parse-sexp-lookup-properties . t)
164 (font-lock-extra-managed-props syntax-table))) 165 (font-lock-extra-managed-props syntax-table)))
165 (set (make-local-variable 'lisp-doc-string-elt-property) 166 (setq-local lisp-doc-string-elt-property 'scheme-doc-string-elt))
166 'scheme-doc-string-elt))
167 167
168(defvar scheme-mode-line-process "") 168(defvar scheme-mode-line-process "")
169 169
@@ -386,7 +386,7 @@ Blank lines separate paragraphs. Semicolons start comments.
386Entering this mode runs the hooks `scheme-mode-hook' and then 386Entering this mode runs the hooks `scheme-mode-hook' and then
387`dsssl-mode-hook' and inserts the value of `dsssl-sgml-declaration' if 387`dsssl-mode-hook' and inserts the value of `dsssl-sgml-declaration' if
388that variable's value is a string." 388that variable's value is a string."
389 (set (make-local-variable 'page-delimiter) "^;;;") ; ^L not valid SGML char 389 (setq-local page-delimiter "^;;;") ; ^L not valid SGML char
390 ;; Insert a suitable SGML declaration into an empty buffer. 390 ;; Insert a suitable SGML declaration into an empty buffer.
391 ;; FIXME: This should use `auto-insert-alist' instead. 391 ;; FIXME: This should use `auto-insert-alist' instead.
392 (and (zerop (buffer-size)) 392 (and (zerop (buffer-size))
@@ -397,10 +397,10 @@ that variable's value is a string."
397 nil t (("+-*/.<>=?$%_&~^:" . "w")) 397 nil t (("+-*/.<>=?$%_&~^:" . "w"))
398 beginning-of-defun 398 beginning-of-defun
399 (font-lock-mark-block-function . mark-defun))) 399 (font-lock-mark-block-function . mark-defun)))
400 (set (make-local-variable 'imenu-case-fold-search) nil) 400 (setq-local add-log-current-defun-function #'lisp-current-defun-name)
401 (setq-local imenu-case-fold-search nil)
401 (setq imenu-generic-expression dsssl-imenu-generic-expression) 402 (setq imenu-generic-expression dsssl-imenu-generic-expression)
402 (set (make-local-variable 'imenu-syntax-alist) 403 (setq-local imenu-syntax-alist '(("+-*/.<>=?$%_&~^:" . "w"))))
403 '(("+-*/.<>=?$%_&~^:" . "w"))))
404 404
405;; Extra syntax for DSSSL. This isn't separated from Scheme, but 405;; Extra syntax for DSSSL. This isn't separated from Scheme, but
406;; shouldn't cause much trouble in scheme-mode. 406;; shouldn't cause much trouble in scheme-mode.
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 5af14e51f49..243b712febb 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1497,42 +1497,41 @@ with your script for an edit-interpret-debug cycle."
1497 (make-local-variable 'sh-shell-file) 1497 (make-local-variable 'sh-shell-file)
1498 (make-local-variable 'sh-shell) 1498 (make-local-variable 'sh-shell)
1499 1499
1500 (set (make-local-variable 'skeleton-pair-default-alist) 1500 (setq-local skeleton-pair-default-alist
1501 sh-skeleton-pair-default-alist) 1501 sh-skeleton-pair-default-alist)
1502 (set (make-local-variable 'skeleton-end-hook) 1502 (setq-local skeleton-end-hook
1503 (lambda () (or (eolp) (newline) (indent-relative)))) 1503 (lambda () (or (eolp) (newline) (indent-relative))))
1504 1504
1505 (set (make-local-variable 'paragraph-start) (concat page-delimiter "\\|$")) 1505 (setq-local paragraph-start (concat page-delimiter "\\|$"))
1506 (set (make-local-variable 'paragraph-separate) paragraph-start) 1506 (setq-local paragraph-separate paragraph-start)
1507 (set (make-local-variable 'comment-start) "# ") 1507 (setq-local comment-start "# ")
1508 (set (make-local-variable 'comment-start-skip) "#+[\t ]*") 1508 (setq-local comment-start-skip "#+[\t ]*")
1509 (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table) 1509 (setq-local local-abbrev-table sh-mode-abbrev-table)
1510 (set (make-local-variable 'comint-dynamic-complete-functions) 1510 (setq-local comint-dynamic-complete-functions
1511 sh-dynamic-complete-functions) 1511 sh-dynamic-complete-functions)
1512 (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t) 1512 (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t)
1513 ;; we can't look if previous line ended with `\' 1513 ;; we can't look if previous line ended with `\'
1514 (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*") 1514 (setq-local comint-prompt-regexp "^[ \t]*")
1515 (set (make-local-variable 'imenu-case-fold-search) nil) 1515 (setq-local imenu-case-fold-search nil)
1516 (set (make-local-variable 'font-lock-defaults) 1516 (setq font-lock-defaults
1517 `((sh-font-lock-keywords 1517 `((sh-font-lock-keywords
1518 sh-font-lock-keywords-1 sh-font-lock-keywords-2) 1518 sh-font-lock-keywords-1 sh-font-lock-keywords-2)
1519 nil nil 1519 nil nil
1520 ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil 1520 ((?/ . "w") (?~ . "w") (?. . "w") (?- . "w") (?_ . "w")) nil
1521 (font-lock-syntactic-face-function 1521 (font-lock-syntactic-face-function
1522 . sh-font-lock-syntactic-face-function))) 1522 . sh-font-lock-syntactic-face-function)))
1523 (set (make-local-variable 'syntax-propertize-function) 1523 (setq-local syntax-propertize-function #'sh-syntax-propertize-function)
1524 #'sh-syntax-propertize-function)
1525 (add-hook 'syntax-propertize-extend-region-functions 1524 (add-hook 'syntax-propertize-extend-region-functions
1526 #'syntax-propertize-multiline 'append 'local) 1525 #'syntax-propertize-multiline 'append 'local)
1527 (sh-electric-here-document-mode 1) 1526 (sh-electric-here-document-mode 1)
1528 (set (make-local-variable 'skeleton-pair-alist) '((?` _ ?`))) 1527 (setq-local skeleton-pair-alist '((?` _ ?`)))
1529 (set (make-local-variable 'skeleton-pair-filter-function) 'sh-quoted-p) 1528 (setq-local skeleton-pair-filter-function 'sh-quoted-p)
1530 (set (make-local-variable 'skeleton-further-elements) 1529 (setq-local skeleton-further-elements
1531 '((< '(- (min sh-indentation (current-column)))))) 1530 '((< '(- (min sh-indentation (current-column))))))
1532 (set (make-local-variable 'skeleton-filter-function) 'sh-feature) 1531 (setq-local skeleton-filter-function 'sh-feature)
1533 (set (make-local-variable 'skeleton-newline-indent-rigidly) t) 1532 (setq-local skeleton-newline-indent-rigidly t)
1534 (set (make-local-variable 'defun-prompt-regexp) 1533 (setq-local defun-prompt-regexp
1535 (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)")) 1534 (concat "^\\(function[ \t]\\|[[:alnum:]]+[ \t]+()[ \t]+\\)"))
1536 ;; Parse or insert magic number for exec, and set all variables depending 1535 ;; Parse or insert magic number for exec, and set all variables depending
1537 ;; on the shell thus determined. 1536 ;; on the shell thus determined.
1538 (sh-set-shell 1537 (sh-set-shell
@@ -2104,19 +2103,19 @@ Calls the value of `sh-set-shell-hook' if set."
2104 (executable-set-magic shell (sh-feature sh-shell-arg) 2103 (executable-set-magic shell (sh-feature sh-shell-arg)
2105 no-query-flag insert-flag))) 2104 no-query-flag insert-flag)))
2106 (setq mode-line-process (format "[%s]" sh-shell)) 2105 (setq mode-line-process (format "[%s]" sh-shell))
2107 (set (make-local-variable 'sh-shell-variables) nil) 2106 (setq-local sh-shell-variables nil)
2108 (set (make-local-variable 'sh-shell-variables-initialized) nil) 2107 (setq-local sh-shell-variables-initialized nil)
2109 (set (make-local-variable 'imenu-generic-expression) 2108 (setq-local imenu-generic-expression
2110 (sh-feature sh-imenu-generic-expression)) 2109 (sh-feature sh-imenu-generic-expression))
2111 (let ((tem (sh-feature sh-mode-syntax-table-input))) 2110 (let ((tem (sh-feature sh-mode-syntax-table-input)))
2112 (when tem 2111 (when tem
2113 (set (make-local-variable 'sh-mode-syntax-table) 2112 (setq-local sh-mode-syntax-table
2114 (apply 'sh-mode-syntax-table tem)) 2113 (apply 'sh-mode-syntax-table tem))
2115 (set-syntax-table sh-mode-syntax-table))) 2114 (set-syntax-table sh-mode-syntax-table)))
2116 (dolist (var (sh-feature sh-variables)) 2115 (dolist (var (sh-feature sh-variables))
2117 (sh-remember-variable var)) 2116 (sh-remember-variable var))
2118 (if (set (make-local-variable 'sh-indent-supported-here) 2117 (if (setq-local sh-indent-supported-here
2119 (sh-feature sh-indent-supported)) 2118 (sh-feature sh-indent-supported))
2120 (progn 2119 (progn
2121 (message "Setting up indent for shell type %s" sh-shell) 2120 (message "Setting up indent for shell type %s" sh-shell)
2122 (if sh-use-smie 2121 (if sh-use-smie
@@ -2127,16 +2126,16 @@ Calls the value of `sh-set-shell-hook' if set."
2127 (funcall mksym "rules") 2126 (funcall mksym "rules")
2128 :forward-token (funcall mksym "forward-token") 2127 :forward-token (funcall mksym "forward-token")
2129 :backward-token (funcall mksym "backward-token"))) 2128 :backward-token (funcall mksym "backward-token")))
2130 (set (make-local-variable 'parse-sexp-lookup-properties) t) 2129 (setq-local parse-sexp-lookup-properties t)
2131 (set (make-local-variable 'sh-kw-alist) (sh-feature sh-kw)) 2130 (setq-local sh-kw-alist (sh-feature sh-kw))
2132 (let ((regexp (sh-feature sh-kws-for-done))) 2131 (let ((regexp (sh-feature sh-kws-for-done)))
2133 (if regexp 2132 (if regexp
2134 (set (make-local-variable 'sh-regexp-for-done) 2133 (setq-local sh-regexp-for-done
2135 (sh-mkword-regexpr (regexp-opt regexp t))))) 2134 (sh-mkword-regexpr (regexp-opt regexp t)))))
2136 (message "setting up indent stuff") 2135 (message "setting up indent stuff")
2137 ;; sh-mode has already made indent-line-function local 2136 ;; sh-mode has already made indent-line-function local
2138 ;; but do it in case this is called before that. 2137 ;; but do it in case this is called before that.
2139 (set (make-local-variable 'indent-line-function) 'sh-indent-line)) 2138 (setq-local indent-line-function 'sh-indent-line))
2140 (if sh-make-vars-local 2139 (if sh-make-vars-local
2141 (sh-make-vars-local)) 2140 (sh-make-vars-local))
2142 (message "Indentation setup for shell type %s" sh-shell)) 2141 (message "Indentation setup for shell type %s" sh-shell))
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 64b87d9e436..22ba55d9a08 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -1,4 +1,4 @@
1;;; sql.el --- specialized comint.el for SQL interpreters 1;;; sql.el --- specialized comint.el for SQL interpreters -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1998-2012 Free Software Foundation, Inc. 3;; Copyright (C) 1998-2012 Free Software Foundation, Inc.
4 4
@@ -80,14 +80,6 @@
80;; Hint for newbies: take a look at `dabbrev-expand', `abbrev-mode', and 80;; Hint for newbies: take a look at `dabbrev-expand', `abbrev-mode', and
81;; `imenu-add-menubar-index'. 81;; `imenu-add-menubar-index'.
82 82
83;;; Requirements for Emacs 19.34:
84
85;; If you are using Emacs 19.34, you will have to get and install
86;; the file regexp-opt.el
87;; <URL:ftp://ftp.ifi.uio.no/pub/emacs/emacs-20.3/lisp/emacs-lisp/regexp-opt.el>
88;; and the custom package
89;; <URL:http://www.dina.kvl.dk/~abraham/custom/>.
90
91;;; Bugs: 83;;; Bugs:
92 84
93;; sql-ms now uses osql instead of isql. Osql flushes its error 85;; sql-ms now uses osql instead of isql. Osql flushes its error
@@ -169,15 +161,17 @@
169;; 161;;
170;; ;; Do something with `sql-user', `sql-password', 162;; ;; Do something with `sql-user', `sql-password',
171;; ;; `sql-database', and `sql-server'. 163;; ;; `sql-database', and `sql-server'.
172;; (let ((params options)) 164;; (let ((params
173;; (if (not (string= "" sql-server)) 165;; (append
174;; (setq params (append (list "-S" sql-server) params)))
175;; (if (not (string= "" sql-database))
176;; (setq params (append (list "-D" sql-database) params)))
177;; (if (not (string= "" sql-password))
178;; (setq params (append (list "-P" sql-password) params)))
179;; (if (not (string= "" sql-user)) 166;; (if (not (string= "" sql-user))
180;; (setq params (append (list "-U" sql-user) params))) 167;; (list "-U" sql-user))
168;; (if (not (string= "" sql-password))
169;; (list "-P" sql-password))
170;; (if (not (string= "" sql-database))
171;; (list "-D" sql-database))
172;; (if (not (string= "" sql-server))
173;; (list "-S" sql-server))
174;; options)))
181;; (sql-comint product params))) 175;; (sql-comint product params)))
182;; 176;;
183;; (sql-set-product-feature 'xyz 177;; (sql-set-product-feature 'xyz
@@ -229,22 +223,13 @@
229 223
230;;; Code: 224;;; Code:
231 225
226(require 'cl-lib)
232(require 'comint) 227(require 'comint)
233;; Need the following to allow GNU Emacs 19 to compile the file. 228;; Need the following to allow GNU Emacs 19 to compile the file.
234(eval-when-compile 229(eval-when-compile
235 (require 'regexp-opt)) 230 (require 'regexp-opt))
236(require 'custom) 231(require 'custom)
237(require 'thingatpt) 232(require 'thingatpt)
238(eval-when-compile ;; needed in Emacs 19, 20
239 (setq max-specpdl-size (max max-specpdl-size 2000)))
240
241(defun sql-signum (n)
242 "Return 1, 0, or -1 to identify the sign of N."
243 (cond
244 ((not (numberp n)) nil)
245 ((< n 0) -1)
246 ((> n 0) 1)
247 (t 0)))
248 233
249(defvar font-lock-keyword-face) 234(defvar font-lock-keyword-face)
250(defvar font-lock-set-defaults) 235(defvar font-lock-set-defaults)
@@ -636,12 +621,14 @@ making new SQLi sessions."
636 (set 621 (set
637 (group (const :tag "Product" sql-product) 622 (group (const :tag "Product" sql-product)
638 (choice 623 (choice
639 ,@(mapcar (lambda (prod-info) 624 ,@(mapcar
640 `(const :tag 625 (lambda (prod-info)
641 ,(or (plist-get (cdr prod-info) :name) 626 `(const :tag
642 (capitalize (symbol-name (car prod-info)))) 627 ,(or (plist-get (cdr prod-info) :name)
643 (quote ,(car prod-info)))) 628 (capitalize
644 sql-product-alist))) 629 (symbol-name (car prod-info))))
630 (quote ,(car prod-info))))
631 sql-product-alist)))
645 (group (const :tag "Username" sql-user) string) 632 (group (const :tag "Username" sql-user) string)
646 (group (const :tag "Password" sql-password) string) 633 (group (const :tag "Password" sql-password) string)
647 (group (const :tag "Server" sql-server) string) 634 (group (const :tag "Server" sql-server) string)
@@ -655,8 +642,8 @@ making new SQLi sessions."
655 :group 'SQL) 642 :group 'SQL)
656 643
657(defcustom sql-product 'ansi 644(defcustom sql-product 'ansi
658 "Select the SQL database product used so that buffers can be 645 "Select the SQL database product used.
659highlighted properly when you open them." 646This allows highlighting buffers properly when you open them."
660 :type `(choice 647 :type `(choice
661 ,@(mapcar (lambda (prod-info) 648 ,@(mapcar (lambda (prod-info)
662 `(const :tag 649 `(const :tag
@@ -736,15 +723,15 @@ this variable is nil, that buffer is shown using
736 723
737(defvar sql-imenu-generic-expression 724(defvar sql-imenu-generic-expression
738 ;; Items are in reverse order because they are rendered in reverse. 725 ;; Items are in reverse order because they are rendered in reverse.
739 '(("Rules/Defaults" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*\\(rule\\|default\\)\\s-+\\(\\w+\\)" 3) 726 '(("Rules/Defaults" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:rule\\|default\\)\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\s-+\\(\\w+\\)" 1)
740 ("Sequences" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*sequence\\s-+\\(\\w+\\)" 2) 727 ("Sequences" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*sequence\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
741 ("Triggers" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*trigger\\s-+\\(\\w+\\)" 2) 728 ("Triggers" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*trigger\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
742 ("Functions" "^\\s-*\\(create\\s-+\\(\\w+\\s-+\\)*\\)?function\\s-+\\(\\w+\\)" 3) 729 ("Functions" "^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?function\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
743 ("Procedures" "^\\s-*\\(create\\s-+\\(\\w+\\s-+\\)*\\)?proc\\(edure\\)?\\s-+\\(\\w+\\)" 4) 730 ("Procedures" "^\\s-*\\(?:create\\s-+\\(?:\\w+\\s-+\\)*\\)?proc\\(?:edure\\)?\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
744 ("Packages" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*package\\s-+\\(body\\s-+\\)?\\(\\w+\\)" 3) 731 ("Packages" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*package\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
745 ("Types" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*type\\s-+\\(body\\s-+\\)?\\(\\w+\\)" 3) 732 ("Types" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*type\\s-+\\(?:body\\s-+\\)?\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
746 ("Indexes" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*index\\s-+\\(\\w+\\)" 2) 733 ("Indexes" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*index\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1)
747 ("Tables/Views" "^\\s-*create\\s-+\\(\\w+\\s-+\\)*\\(table\\|view\\)\\s-+\\(\\w+\\)" 3)) 734 ("Tables/Views" "^\\s-*create\\s-+\\(?:\\w+\\s-+\\)*\\(?:table\\|view\\)\\s-+\\(?:if\\s-+not\\s-+exists\\s-+\\)?\\(\\w+\\)" 1))
748 "Define interesting points in the SQL buffer for `imenu'. 735 "Define interesting points in the SQL buffer for `imenu'.
749 736
750This is used to set `imenu-generic-expression' when SQL mode is 737This is used to set `imenu-generic-expression' when SQL mode is
@@ -818,12 +805,11 @@ for the first time."
818 805
819;; Customization for ANSI 806;; Customization for ANSI
820 807
821(defcustom sql-ansi-statement-starters (regexp-opt '( 808(defcustom sql-ansi-statement-starters
822 "create" "alter" "drop" 809 (regexp-opt '("create" "alter" "drop"
823 "select" "insert" "update" "delete" "merge" 810 "select" "insert" "update" "delete" "merge"
824 "grant" "revoke" 811 "grant" "revoke"))
825)) 812 "Regexp of keywords that start SQL commands.
826 "Regexp of keywords that start SQL commands
827 813
828All products share this list; products should define a regexp to 814All products share this list; products should define a regexp to
829identify additional keywords in a variable defined by 815identify additional keywords in a variable defined by
@@ -1167,10 +1153,10 @@ You can change `sql-prompt-length' on `sql-interactive-mode-hook'.")
1167Used by `sql-rename-buffer'.") 1153Used by `sql-rename-buffer'.")
1168 1154
1169(defun sql-buffer-live-p (buffer &optional product connection) 1155(defun sql-buffer-live-p (buffer &optional product connection)
1170 "Returns non-nil if the process associated with buffer is live. 1156 "Return non-nil if the process associated with buffer is live.
1171 1157
1172BUFFER can be a buffer object or a buffer name. The buffer must 1158BUFFER can be a buffer object or a buffer name. The buffer must
1173be a live buffer, have an running process attached to it, be in 1159be a live buffer, have a running process attached to it, be in
1174`sql-interactive-mode', and, if PRODUCT or CONNECTION are 1160`sql-interactive-mode', and, if PRODUCT or CONNECTION are
1175specified, it's `sql-product' or `sql-connection' must match." 1161specified, it's `sql-product' or `sql-connection' must match."
1176 1162
@@ -1178,7 +1164,6 @@ specified, it's `sql-product' or `sql-connection' must match."
1178 (setq buffer (get-buffer buffer)) 1164 (setq buffer (get-buffer buffer))
1179 (and buffer 1165 (and buffer
1180 (buffer-live-p buffer) 1166 (buffer-live-p buffer)
1181 (get-buffer-process buffer)
1182 (comint-check-proc buffer) 1167 (comint-check-proc buffer)
1183 (with-current-buffer buffer 1168 (with-current-buffer buffer
1184 (and (derived-mode-p 'sql-interactive-mode) 1169 (and (derived-mode-p 'sql-interactive-mode)
@@ -1287,27 +1272,15 @@ Based on `comint-mode-map'.")
1287;; Abbreviations -- if you want more of them, define them in your init 1272;; Abbreviations -- if you want more of them, define them in your init
1288;; file. Abbrevs have to be enabled in your init file, too. 1273;; file. Abbrevs have to be enabled in your init file, too.
1289 1274
1290(defvar sql-mode-abbrev-table nil 1275(define-abbrev-table 'sql-mode-abbrev-table
1276 '(("ins" "insert" nil nil t)
1277 ("upd" "update" nil nil t)
1278 ("del" "delete" nil nil t)
1279 ("sel" "select" nil nil t)
1280 ("proc" "procedure" nil nil t)
1281 ("func" "function" nil nil t)
1282 ("cr" "create" nil nil t))
1291 "Abbrev table used in `sql-mode' and `sql-interactive-mode'.") 1283 "Abbrev table used in `sql-mode' and `sql-interactive-mode'.")
1292(unless sql-mode-abbrev-table
1293 (define-abbrev-table 'sql-mode-abbrev-table nil))
1294
1295(mapc
1296 ;; In Emacs 22+, provide SYSTEM-FLAG to define-abbrev.
1297 (lambda (abbrev)
1298 (let ((name (car abbrev))
1299 (expansion (cdr abbrev)))
1300 (condition-case nil
1301 (define-abbrev sql-mode-abbrev-table name expansion nil 0 t)
1302 (error
1303 (define-abbrev sql-mode-abbrev-table name expansion)))))
1304 '(("ins" . "insert")
1305 ("upd" . "update")
1306 ("del" . "delete")
1307 ("sel" . "select")
1308 ("proc" . "procedure")
1309 ("func" . "function")
1310 ("cr" . "create")))
1311 1284
1312;; Syntax Table 1285;; Syntax Table
1313 1286
@@ -1339,6 +1312,7 @@ Based on `comint-mode-map'.")
1339 "\\(?:\\w+\\s-+\\)*" ;; optional intervening keywords 1312 "\\(?:\\w+\\s-+\\)*" ;; optional intervening keywords
1340 "\\(?:table\\|view\\|\\(?:package\\|type\\)\\(?:\\s-+body\\)?\\|proc\\(?:edure\\)?" 1313 "\\(?:table\\|view\\|\\(?:package\\|type\\)\\(?:\\s-+body\\)?\\|proc\\(?:edure\\)?"
1341 "\\|function\\|trigger\\|sequence\\|rule\\|default\\)\\s-+" 1314 "\\|function\\|trigger\\|sequence\\|rule\\|default\\)\\s-+"
1315 "\\(?:if\\s-+not\\s-+exists\\s-+\\)?" ;; IF NOT EXISTS
1342 "\\(\\w+\\)") 1316 "\\(\\w+\\)")
1343 1 'font-lock-function-name-face)) 1317 1 'font-lock-function-name-face))
1344 1318
@@ -1529,9 +1503,8 @@ function `regexp-opt'. Therefore, take a look at the source before
1529you define your own `sql-mode-ansi-font-lock-keywords'. You may want 1503you define your own `sql-mode-ansi-font-lock-keywords'. You may want
1530to add functions and PL/SQL keywords.") 1504to add functions and PL/SQL keywords.")
1531 1505
1532(defun sql-oracle-show-reserved-words () 1506(defun sql--oracle-show-reserved-words ()
1533 ;; This function is for use by the maintainer of SQL.EL only. 1507 ;; This function is for use by the maintainer of SQL.EL only.
1534 (interactive)
1535 (if (or (and (not (derived-mode-p 'sql-mode)) 1508 (if (or (and (not (derived-mode-p 'sql-mode))
1536 (not (derived-mode-p 'sql-interactive-mode))) 1509 (not (derived-mode-p 'sql-interactive-mode)))
1537 (not sql-buffer) 1510 (not sql-buffer)
@@ -2610,14 +2583,12 @@ adds a fontification pattern to fontify identifiers ending in
2610 (append keywords old-val)))))) 2583 (append keywords old-val))))))
2611 2584
2612(defun sql-for-each-login (login-params body) 2585(defun sql-for-each-login (login-params body)
2613 "Iterates through login parameters and returns a list of results." 2586 "Iterate through login parameters and return a list of results."
2614
2615 (delq nil 2587 (delq nil
2616 (mapcar 2588 (mapcar
2617 (lambda (param) 2589 (lambda (param)
2618 (let ((token (or (and (listp param) (car param)) param)) 2590 (let ((token (or (car-safe param) param))
2619 (plist (or (and (listp param) (cdr param)) nil))) 2591 (plist (cdr-safe param)))
2620
2621 (funcall body token plist))) 2592 (funcall body token plist)))
2622 login-params))) 2593 login-params)))
2623 2594
@@ -2681,6 +2652,34 @@ matching the regular expression `comint-prompt-regexp', a buffer
2681local variable." 2652local variable."
2682 (save-excursion (comint-bol nil) (point)))) 2653 (save-excursion (comint-bol nil) (point))))
2683 2654
2655;;; SMIE support
2656
2657;; Needs a lot more love than I can provide. --Stef
2658
2659;; (require 'smie)
2660
2661;; (defconst sql-smie-grammar
2662;; (smie-prec2->grammar
2663;; (smie-bnf->prec2
2664;; ;; Partly based on http://www.h2database.com/html/grammar.html
2665;; '((cmd ("SELECT" select-exp "FROM" select-table-exp)
2666;; )
2667;; (select-exp ("*") (exp) (exp "AS" column-alias))
2668;; (column-alias)
2669;; (select-table-exp (table-exp "WHERE" exp) (table-exp))
2670;; (table-exp)
2671;; (exp ("CASE" exp "WHEN" exp "THEN" exp "ELSE" exp "END")
2672;; ("CASE" exp "WHEN" exp "THEN" exp "END"))
2673;; ;; Random ad-hoc additions.
2674;; (foo (foo "," foo))
2675;; )
2676;; '((assoc ",")))))
2677
2678;; (defun sql-smie-rules (kind token)
2679;; (pcase (cons kind token)
2680;; (`(:list-intro . ,_) t)
2681;; (`(:before . "(") (smie-rule-parent))))
2682
2684;;; Motion Functions 2683;;; Motion Functions
2685 2684
2686(defun sql-statement-regexp (prod) 2685(defun sql-statement-regexp (prod)
@@ -2693,7 +2692,7 @@ local variable."
2693 "\\>"))) 2692 "\\>")))
2694 2693
2695(defun sql-beginning-of-statement (arg) 2694(defun sql-beginning-of-statement (arg)
2696 "Moves the cursor to the beginning of the current SQL statement." 2695 "Move to the beginning of the current SQL statement."
2697 (interactive "p") 2696 (interactive "p")
2698 2697
2699 (let ((here (point)) 2698 (let ((here (point))
@@ -2720,10 +2719,10 @@ local variable."
2720 (beginning-of-line) 2719 (beginning-of-line)
2721 ;; If we didn't move, try again 2720 ;; If we didn't move, try again
2722 (when (= here (point)) 2721 (when (= here (point))
2723 (sql-beginning-of-statement (* 2 (sql-signum arg)))))) 2722 (sql-beginning-of-statement (* 2 (cl-signum arg))))))
2724 2723
2725(defun sql-end-of-statement (arg) 2724(defun sql-end-of-statement (arg)
2726 "Moves the cursor to the end of the current SQL statement." 2725 "Move to the end of the current SQL statement."
2727 (interactive "p") 2726 (interactive "p")
2728 (let ((term (sql-get-product-feature sql-product :terminator)) 2727 (let ((term (sql-get-product-feature sql-product :terminator))
2729 (re-search (if (> 0 arg) 're-search-backward 're-search-forward)) 2728 (re-search (if (> 0 arg) 're-search-backward 're-search-forward))
@@ -2732,7 +2731,7 @@ local variable."
2732 (when (consp term) 2731 (when (consp term)
2733 (setq term (car term))) 2732 (setq term (car term)))
2734 ;; Iterate until we've moved the desired number of stmt ends 2733 ;; Iterate until we've moved the desired number of stmt ends
2735 (while (not (= (sql-signum arg) 0)) 2734 (while (not (= (cl-signum arg) 0))
2736 ;; if we're looking at the terminator, jump by 2 2735 ;; if we're looking at the terminator, jump by 2
2737 (if (or (and (> 0 arg) (looking-back term)) 2736 (if (or (and (> 0 arg) (looking-back term))
2738 (and (< 0 arg) (looking-at term))) 2737 (and (< 0 arg) (looking-at term)))
@@ -2743,7 +2742,7 @@ local variable."
2743 (setq arg 0) 2742 (setq arg 0)
2744 ;; count it if we're not in a comment 2743 ;; count it if we're not in a comment
2745 (unless (nth 7 (syntax-ppss)) 2744 (unless (nth 7 (syntax-ppss))
2746 (setq arg (- arg (sql-signum arg)))))) 2745 (setq arg (- arg (cl-signum arg))))))
2747 (goto-char (if (match-data) 2746 (goto-char (if (match-data)
2748 (match-end 0) 2747 (match-end 0)
2749 here)))) 2748 here))))
@@ -2856,10 +2855,6 @@ appended to the SQLi buffer without disturbing your SQL buffer."
2856 t t doc 0))) 2855 t t doc 0)))
2857 doc) 2856 doc)
2858 2857
2859(defun sql-read-passwd (prompt &optional default)
2860 "Read a password using PROMPT. Optional DEFAULT is password to start with."
2861 (read-passwd prompt nil default))
2862
2863(defun sql-get-login-ext (symbol prompt history-var plist) 2858(defun sql-get-login-ext (symbol prompt history-var plist)
2864 "Prompt user with extended login parameters. 2859 "Prompt user with extended login parameters.
2865 2860
@@ -2911,8 +2906,7 @@ value. (The property value is used as the PREDICATE argument to
2911 (read-number prompt (or default last-value 0))) 2906 (read-number prompt (or default last-value 0)))
2912 2907
2913 (t 2908 (t
2914 (let ((r (read-from-minibuffer prompt-def last-value nil nil history-var nil))) 2909 (read-string prompt-def last-value history-var default))))))
2915 (if (string= "" r) (or default "") r)))))))
2916 2910
2917(defun sql-get-login (&rest what) 2911(defun sql-get-login (&rest what)
2918 "Get username, password and database from the user. 2912 "Get username, password and database from the user.
@@ -2942,32 +2936,29 @@ supported:
2942 2936
2943In order to ask the user for username, password and database, call the 2937In order to ask the user for username, password and database, call the
2944function like this: (sql-get-login 'user 'password 'database)." 2938function like this: (sql-get-login 'user 'password 'database)."
2945 (interactive) 2939 (dolist (w what)
2946 (mapcar 2940 (let ((plist (cdr-safe w)))
2947 (lambda (w) 2941 (pcase (or (car-safe w) w)
2948 (let ((token (or (and (consp w) (car w)) w)) 2942 (`user
2949 (plist (or (and (consp w) (cdr w)) nil))) 2943 (sql-get-login-ext 'sql-user "User: " 'sql-user-history plist))
2950
2951 (cond
2952 ((eq token 'user) ; user
2953 (sql-get-login-ext 'sql-user "User: " 'sql-user-history plist))
2954 2944
2955 ((eq token 'password) ; password 2945 (`password
2956 (setq-default sql-password 2946 (setq-default sql-password
2957 (sql-read-passwd "Password: " sql-password))) 2947 (read-passwd "Password: " nil sql-password)))
2958 2948
2959 ((eq token 'server) ; server 2949 (`server
2960 (sql-get-login-ext 'sql-server "Server: " 'sql-server-history plist)) 2950 (sql-get-login-ext 'sql-server "Server: " 'sql-server-history plist))
2961 2951
2962 ((eq token 'database) ; database 2952 (`database
2963 (sql-get-login-ext 'sql-database "Database: " 'sql-database-history plist)) 2953 (sql-get-login-ext 'sql-database "Database: "
2954 'sql-database-history plist))
2964 2955
2965 ((eq token 'port) ; port 2956 (`port
2966 (sql-get-login-ext 'sql-port "Port: " nil (append '(:number t) plist)))))) 2957 (sql-get-login-ext 'sql-port "Port: "
2967 what)) 2958 nil (append '(:number t) plist)))))))
2968 2959
2969(defun sql-find-sqli-buffer (&optional product connection) 2960(defun sql-find-sqli-buffer (&optional product connection)
2970 "Returns the name of the current default SQLi buffer or nil. 2961 "Return the name of the current default SQLi buffer or nil.
2971In order to qualify, the SQLi buffer must be alive, be in 2962In order to qualify, the SQLi buffer must be alive, be in
2972`sql-interactive-mode' and have a process." 2963`sql-interactive-mode' and have a process."
2973 (let ((buf sql-buffer) 2964 (let ((buf sql-buffer)
@@ -3071,29 +3062,29 @@ server/database name."
3071 (sql-for-each-login 3062 (sql-for-each-login
3072 (sql-get-product-feature sql-product :sqli-login) 3063 (sql-get-product-feature sql-product :sqli-login)
3073 (lambda (token plist) 3064 (lambda (token plist)
3074 (cond 3065 (pcase token
3075 ((eq token 'user) 3066 (`user
3076 (unless (string= "" sql-user) 3067 (unless (string= "" sql-user)
3077 (list "/" sql-user))) 3068 (list "/" sql-user)))
3078 ((eq token 'port) 3069 (`port
3079 (unless (or (not (numberp sql-port)) 3070 (unless (or (not (numberp sql-port))
3080 (= 0 sql-port)) 3071 (= 0 sql-port))
3081 (list ":" (number-to-string sql-port)))) 3072 (list ":" (number-to-string sql-port))))
3082 ((eq token 'server) 3073 (`server
3083 (unless (string= "" sql-server) 3074 (unless (string= "" sql-server)
3084 (list "." 3075 (list "."
3085 (if (plist-member plist :file) 3076 (if (plist-member plist :file)
3086 (file-name-nondirectory sql-server) 3077 (file-name-nondirectory sql-server)
3087 sql-server)))) 3078 sql-server))))
3088 ((eq token 'database) 3079 (`database
3089 (unless (string= "" sql-database) 3080 (unless (string= "" sql-database)
3090 (list "@" 3081 (list "@"
3091 (if (plist-member plist :file) 3082 (if (plist-member plist :file)
3092 (file-name-nondirectory sql-database) 3083 (file-name-nondirectory sql-database)
3093 sql-database)))) 3084 sql-database))))
3094 3085
3095 ((eq token 'password) nil) 3086 ;; (`password nil)
3096 (t nil)))))))) 3087 (_ nil))))))))
3097 3088
3098 ;; If there's a connection, use it and the name thus far 3089 ;; If there's a connection, use it and the name thus far
3099 (if sql-connection 3090 (if sql-connection
@@ -3526,7 +3517,7 @@ for each match."
3526 (nreverse results))) 3517 (nreverse results)))
3527 3518
3528(defun sql-execute (sqlbuf outbuf command enhanced arg) 3519(defun sql-execute (sqlbuf outbuf command enhanced arg)
3529 "Executes a command in a SQL interactive buffer and captures the output. 3520 "Execute a command in a SQL interactive buffer and capture the output.
3530 3521
3531The commands are run in SQLBUF and the output saved in OUTBUF. 3522The commands are run in SQLBUF and the output saved in OUTBUF.
3532COMMAND must be a string, a function or a list of such elements. 3523COMMAND must be a string, a function or a list of such elements.
@@ -3534,7 +3525,7 @@ Functions are called with SQLBUF, OUTBUF and ARG as parameters;
3534strings are formatted with ARG and executed. 3525strings are formatted with ARG and executed.
3535 3526
3536If the results are empty the OUTBUF is deleted, otherwise the 3527If the results are empty the OUTBUF is deleted, otherwise the
3537buffer is popped into a view window. " 3528buffer is popped into a view window."
3538 (mapc 3529 (mapc
3539 (lambda (c) 3530 (lambda (c)
3540 (cond 3531 (cond
@@ -3599,43 +3590,35 @@ The list is maintained in SQL interactive buffers.")
3599 3590
3600(defvar sql-completion-sqlbuf nil) 3591(defvar sql-completion-sqlbuf nil)
3601 3592
3602(defun sql-try-completion (string collection &optional predicate) 3593(defun sql--completion-table (string pred action)
3603 (when sql-completion-sqlbuf 3594 (when sql-completion-sqlbuf
3604 (with-current-buffer sql-completion-sqlbuf 3595 (with-current-buffer sql-completion-sqlbuf
3605 (let ((schema (and (string-match "\\`\\(\\sw\\(:?\\sw\\|\\s_\\)*\\)[.]" string) 3596 (let ((schema (and (string-match "\\`\\(\\sw\\(:?\\sw\\|\\s_\\)*\\)[.]" string)
3606 (downcase (match-string 1 string))))) 3597 (downcase (match-string 1 string)))))
3607 3598
3608 ;; If we haven't loaded any object name yet, load local schema 3599 ;; If we haven't loaded any object name yet, load local schema
3609 (unless sql-completion-object 3600 (unless sql-completion-object
3610 (sql-build-completions nil)) 3601 (sql-build-completions nil))
3611 3602
3612 ;; If they want another schema, load it if we haven't yet 3603 ;; If they want another schema, load it if we haven't yet
3613 (when schema 3604 (when schema
3614 (let ((schema-dot (concat schema ".")) 3605 (let ((schema-dot (concat schema "."))
3615 (schema-len (1+ (length schema))) 3606 (schema-len (1+ (length schema)))
3616 (names sql-completion-object) 3607 (names sql-completion-object)
3617 has-schema) 3608 has-schema)
3618 3609
3619 (while (and (not has-schema) names) 3610 (while (and (not has-schema) names)
3620 (setq has-schema (and 3611 (setq has-schema (and
3621 (>= (length (car names)) schema-len) 3612 (>= (length (car names)) schema-len)
3622 (string= schema-dot 3613 (string= schema-dot
3623 (downcase (substring (car names) 3614 (downcase (substring (car names)
3624 0 schema-len)))) 3615 0 schema-len))))
3625 names (cdr names))) 3616 names (cdr names)))
3626 (unless has-schema 3617 (unless has-schema
3627 (sql-build-completions schema))))) 3618 (sql-build-completions schema)))))
3628 3619
3629 ;; Try to find the completion 3620 ;; Try to find the completion
3630 (cond 3621 (complete-with-action action sql-completion-object string pred))))
3631 ((not predicate)
3632 (try-completion string sql-completion-object))
3633 ((eq predicate t)
3634 (all-completions string sql-completion-object))
3635 ((eq predicate 'lambda)
3636 (test-completion string sql-completion-object))
3637 ((eq (car predicate) 'boundaries)
3638 (completion-boundaries string sql-completion-object nil (cdr predicate)))))))
3639 3622
3640(defun sql-read-table-name (prompt) 3623(defun sql-read-table-name (prompt)
3641 "Read the name of a database table." 3624 "Read the name of a database table."
@@ -3651,7 +3634,7 @@ The list is maintained in SQL interactive buffers.")
3651 (completion-ignore-case t)) 3634 (completion-ignore-case t))
3652 3635
3653 (if (sql-get-product-feature product :completion-object) 3636 (if (sql-get-product-feature product :completion-object)
3654 (completing-read prompt (function sql-try-completion) 3637 (completing-read prompt #'sql--completion-table
3655 nil nil tname) 3638 nil nil tname)
3656 (read-from-minibuffer prompt tname)))) 3639 (read-from-minibuffer prompt tname))))
3657 3640
@@ -3719,6 +3702,7 @@ must tell Emacs. Here's how to do that in your init file:
3719 (if sql-mode-menu 3702 (if sql-mode-menu
3720 (easy-menu-add sql-mode-menu)); XEmacs 3703 (easy-menu-add sql-mode-menu)); XEmacs
3721 3704
3705 ;; (smie-setup sql-smie-grammar #'sql-smie-rules)
3722 (set (make-local-variable 'comment-start) "--") 3706 (set (make-local-variable 'comment-start) "--")
3723 ;; Make each buffer in sql-mode remember the "current" SQLi buffer. 3707 ;; Make each buffer in sql-mode remember the "current" SQLi buffer.
3724 (make-local-variable 'sql-buffer) 3708 (make-local-variable 'sql-buffer)
@@ -3732,7 +3716,7 @@ must tell Emacs. Here's how to do that in your init file:
3732 (set (make-local-variable 'paragraph-separate) "[\f]*$") 3716 (set (make-local-variable 'paragraph-separate) "[\f]*$")
3733 (set (make-local-variable 'paragraph-start) "[\n\f]") 3717 (set (make-local-variable 'paragraph-start) "[\n\f]")
3734 ;; Abbrevs 3718 ;; Abbrevs
3735 (setq abbrev-all-caps 1) 3719 (setq-local abbrev-all-caps 1)
3736 ;; Contains the name of database objects 3720 ;; Contains the name of database objects
3737 (set (make-local-variable 'sql-contains-names) t) 3721 (set (make-local-variable 'sql-contains-names) t)
3738 ;; Catch changes to sql-product and highlight accordingly 3722 ;; Catch changes to sql-product and highlight accordingly
@@ -3958,13 +3942,13 @@ is specified in the connection settings."
3958 (setq set-params 3942 (setq set-params
3959 (mapcar 3943 (mapcar
3960 (lambda (v) 3944 (lambda (v)
3961 (cond 3945 (pcase (car v)
3962 ((eq (car v) 'sql-user) 'user) 3946 (`sql-user 'user)
3963 ((eq (car v) 'sql-password) 'password) 3947 (`sql-password 'password)
3964 ((eq (car v) 'sql-server) 'server) 3948 (`sql-server 'server)
3965 ((eq (car v) 'sql-database) 'database) 3949 (`sql-database 'database)
3966 ((eq (car v) 'sql-port) 'port) 3950 (`sql-port 'port)
3967 (t (car v)))) 3951 (s s)))
3968 (cdr connect-set))) 3952 (cdr connect-set)))
3969 3953
3970 ;; the remaining params (w/o the connection params) 3954 ;; the remaining params (w/o the connection params)
@@ -3983,7 +3967,7 @@ is specified in the connection settings."
3983 3967
3984 ;; Start the SQLi session with revised list of login parameters 3968 ;; Start the SQLi session with revised list of login parameters
3985 (eval `(let ((,param-var ',rem-params)) 3969 (eval `(let ((,param-var ',rem-params))
3986 (sql-product-interactive sql-product new-name)))) 3970 (sql-product-interactive ',sql-product ',new-name))))
3987 3971
3988 (message "SQL Connection <%s> does not exist" connection) 3972 (message "SQL Connection <%s> does not exist" connection)
3989 nil))) 3973 nil)))
@@ -4027,16 +4011,16 @@ optionally is saved to the user's init file."
4027 (if (assoc name alist) 4011 (if (assoc name alist)
4028 (message "Connection <%s> already exists" name) 4012 (message "Connection <%s> already exists" name)
4029 (setq connect 4013 (setq connect
4030 (append (list name) 4014 (cons name
4031 (sql-for-each-login 4015 (sql-for-each-login
4032 `(product ,@login) 4016 `(product ,@login)
4033 (lambda (token _plist) 4017 (lambda (token _plist)
4034 (cond 4018 (pcase token
4035 ((eq token 'product) `(sql-product ',product)) 4019 (`product `(sql-product ',product))
4036 ((eq token 'user) `(sql-user ,user)) 4020 (`user `(sql-user ,user))
4037 ((eq token 'database) `(sql-database ,database)) 4021 (`database `(sql-database ,database))
4038 ((eq token 'server) `(sql-server ,server)) 4022 (`server `(sql-server ,server))
4039 ((eq token 'port) `(sql-port ,port))))))) 4023 (`port `(sql-port ,port)))))))
4040 4024
4041 (setq alist (append alist (list connect))) 4025 (setq alist (append alist (list connect)))
4042 4026
@@ -4046,7 +4030,7 @@ optionally is saved to the user's init file."
4046 (customize-set-variable 'sql-connection-alist alist))))))) 4030 (customize-set-variable 'sql-connection-alist alist)))))))
4047 4031
4048(defun sql-connection-menu-filter (tail) 4032(defun sql-connection-menu-filter (tail)
4049 "Generates menu entries for using each connection." 4033 "Generate menu entries for using each connection."
4050 (append 4034 (append
4051 (mapcar 4035 (mapcar
4052 (lambda (conn) 4036 (lambda (conn)
@@ -4113,7 +4097,8 @@ the call to \\[sql-product-interactive] with
4113 new-sqli-buffer) 4097 new-sqli-buffer)
4114 4098
4115 ;; Get credentials. 4099 ;; Get credentials.
4116 (apply 'sql-get-login (sql-get-product-feature product :sqli-login)) 4100 (apply #'sql-get-login
4101 (sql-get-product-feature product :sqli-login))
4117 4102
4118 ;; Connect to database. 4103 ;; Connect to database.
4119 (message "Login...") 4104 (message "Login...")
@@ -4224,7 +4209,7 @@ The default comes from `process-coding-system-alist' and
4224 (sql-comint product parameter))) 4209 (sql-comint product parameter)))
4225 4210
4226(defun sql-oracle-save-settings (sqlbuf) 4211(defun sql-oracle-save-settings (sqlbuf)
4227 "Saves most SQL*Plus settings so they may be reset by \\[sql-redirect]." 4212 "Save most SQL*Plus settings so they may be reset by \\[sql-redirect]."
4228 ;; Note: does not capture the following settings: 4213 ;; Note: does not capture the following settings:
4229 ;; 4214 ;;
4230 ;; APPINFO 4215 ;; APPINFO
@@ -4296,7 +4281,7 @@ The default comes from `process-coding-system-alist' and
4296 ;; Restore the changed settings 4281 ;; Restore the changed settings
4297 (sql-redirect sqlbuf saved-settings)) 4282 (sql-redirect sqlbuf saved-settings))
4298 4283
4299(defun sql-oracle-list-all (sqlbuf outbuf enhanced table-name) 4284(defun sql-oracle-list-all (sqlbuf outbuf enhanced _table-name)
4300 ;; Query from USER_OBJECTS or ALL_OBJECTS 4285 ;; Query from USER_OBJECTS or ALL_OBJECTS
4301 (let ((settings (sql-oracle-save-settings sqlbuf)) 4286 (let ((settings (sql-oracle-save-settings sqlbuf))
4302 (simple-sql 4287 (simple-sql
@@ -4335,7 +4320,7 @@ The default comes from `process-coding-system-alist' and
4335 4320
4336 (sql-oracle-restore-settings sqlbuf settings))) 4321 (sql-oracle-restore-settings sqlbuf settings)))
4337 4322
4338(defun sql-oracle-list-table (sqlbuf outbuf enhanced table-name) 4323(defun sql-oracle-list-table (sqlbuf outbuf _enhanced table-name)
4339 "Implements :list-table under Oracle." 4324 "Implements :list-table under Oracle."
4340 (let ((settings (sql-oracle-save-settings sqlbuf))) 4325 (let ((settings (sql-oracle-save-settings sqlbuf)))
4341 4326
@@ -4412,15 +4397,17 @@ The default comes from `process-coding-system-alist' and
4412 "Create comint buffer and connect to Sybase." 4397 "Create comint buffer and connect to Sybase."
4413 ;; Put all parameters to the program (if defined) in a list and call 4398 ;; Put all parameters to the program (if defined) in a list and call
4414 ;; make-comint. 4399 ;; make-comint.
4415 (let ((params options)) 4400 (let ((params
4416 (if (not (string= "" sql-server)) 4401 (append
4417 (setq params (append (list "-S" sql-server) params))) 4402 (if (not (string= "" sql-user))
4418 (if (not (string= "" sql-database)) 4403 (list "-U" sql-user))
4419 (setq params (append (list "-D" sql-database) params))) 4404 (if (not (string= "" sql-password))
4420 (if (not (string= "" sql-password)) 4405 (list "-P" sql-password))
4421 (setq params (append (list "-P" sql-password) params))) 4406 (if (not (string= "" sql-database))
4422 (if (not (string= "" sql-user)) 4407 (list "-D" sql-database))
4423 (setq params (append (list "-U" sql-user) params))) 4408 (if (not (string= "" sql-server))
4409 (list "-S" sql-server))
4410 options)))
4424 (sql-comint product params))) 4411 (sql-comint product params)))
4425 4412
4426 4413
@@ -4505,14 +4492,13 @@ The default comes from `process-coding-system-alist' and
4505 "Create comint buffer and connect to SQLite." 4492 "Create comint buffer and connect to SQLite."
4506 ;; Put all parameters to the program (if defined) in a list and call 4493 ;; Put all parameters to the program (if defined) in a list and call
4507 ;; make-comint. 4494 ;; make-comint.
4508 (let ((params)) 4495 (let ((params
4509 (if (not (string= "" sql-database)) 4496 (append options
4510 (setq params (append (list (expand-file-name sql-database)) 4497 (if (not (string= "" sql-database))
4511 params))) 4498 `(,(expand-file-name sql-database))))))
4512 (setq params (append options params))
4513 (sql-comint product params))) 4499 (sql-comint product params)))
4514 4500
4515(defun sql-sqlite-completion-object (sqlbuf schema) 4501(defun sql-sqlite-completion-object (sqlbuf _schema)
4516 (sql-redirect-value sqlbuf ".tables" "\\sw\\(?:\\sw\\|\\s_\\)*" 0)) 4502 (sql-redirect-value sqlbuf ".tables" "\\sw\\(?:\\sw\\|\\s_\\)*" 0))
4517 4503
4518 4504
@@ -4555,18 +4541,19 @@ The default comes from `process-coding-system-alist' and
4555 "Create comint buffer and connect to MySQL." 4541 "Create comint buffer and connect to MySQL."
4556 ;; Put all parameters to the program (if defined) in a list and call 4542 ;; Put all parameters to the program (if defined) in a list and call
4557 ;; make-comint. 4543 ;; make-comint.
4558 (let ((params)) 4544 (let ((params
4559 (if (not (string= "" sql-database)) 4545 (append
4560 (setq params (append (list sql-database) params))) 4546 options
4561 (if (not (string= "" sql-server)) 4547 (if (not (string= "" sql-user))
4562 (setq params (append (list (concat "--host=" sql-server)) params))) 4548 (list (concat "--user=" sql-user)))
4563 (if (not (= 0 sql-port)) 4549 (if (not (string= "" sql-password))
4564 (setq params (append (list (concat "--port=" (number-to-string sql-port))) params))) 4550 (list (concat "--password=" sql-password)))
4565 (if (not (string= "" sql-password)) 4551 (if (not (= 0 sql-port))
4566 (setq params (append (list (concat "--password=" sql-password)) params))) 4552 (list (concat "--port=" (number-to-string sql-port))))
4567 (if (not (string= "" sql-user)) 4553 (if (not (string= "" sql-server))
4568 (setq params (append (list (concat "--user=" sql-user)) params))) 4554 (list (concat "--host=" sql-server)))
4569 (setq params (append options params)) 4555 (if (not (string= "" sql-database))
4556 (list sql-database)))))
4570 (sql-comint product params))) 4557 (sql-comint product params)))
4571 4558
4572 4559
@@ -4606,13 +4593,15 @@ The default comes from `process-coding-system-alist' and
4606 "Create comint buffer and connect to Solid." 4593 "Create comint buffer and connect to Solid."
4607 ;; Put all parameters to the program (if defined) in a list and call 4594 ;; Put all parameters to the program (if defined) in a list and call
4608 ;; make-comint. 4595 ;; make-comint.
4609 (let ((params options)) 4596 (let ((params
4610 ;; It only makes sense if both username and password are there. 4597 (append
4611 (if (not (or (string= "" sql-user) 4598 (if (not (string= "" sql-server))
4612 (string= "" sql-password))) 4599 (list sql-server))
4613 (setq params (append (list sql-user sql-password) params))) 4600 ;; It only makes sense if both username and password are there.
4614 (if (not (string= "" sql-server)) 4601 (if (not (or (string= "" sql-user)
4615 (setq params (append (list sql-server) params))) 4602 (string= "" sql-password)))
4603 (list sql-user sql-password))
4604 options)))
4616 (sql-comint product params))) 4605 (sql-comint product params)))
4617 4606
4618 4607
@@ -4694,22 +4683,25 @@ The default comes from `process-coding-system-alist' and
4694 "Create comint buffer and connect to Microsoft SQL Server." 4683 "Create comint buffer and connect to Microsoft SQL Server."
4695 ;; Put all parameters to the program (if defined) in a list and call 4684 ;; Put all parameters to the program (if defined) in a list and call
4696 ;; make-comint. 4685 ;; make-comint.
4697 (let ((params options)) 4686 (let ((params
4698 (if (not (string= "" sql-server)) 4687 (append
4699 (setq params (append (list "-S" sql-server) params))) 4688 (if (not (string= "" sql-user))
4700 (if (not (string= "" sql-database)) 4689 (list "-U" sql-user))
4701 (setq params (append (list "-d" sql-database) params))) 4690 (if (not (string= "" sql-database))
4702 (if (not (string= "" sql-user)) 4691 (list "-d" sql-database))
4703 (setq params (append (list "-U" sql-user) params))) 4692 (if (not (string= "" sql-server))
4704 (if (not (string= "" sql-password)) 4693 (list "-S" sql-server))
4705 (setq params (append (list "-P" sql-password) params)) 4694 options)))
4706 (if (string= "" sql-user) 4695 (setq params
4707 ;; if neither user nor password is provided, use system 4696 (if (not (string= "" sql-password))
4708 ;; credentials. 4697 `("-P" ,sql-password ,@params)
4709 (setq params (append (list "-E") params)) 4698 (if (string= "" sql-user)
4710 ;; If -P is passed to ISQL as the last argument without a 4699 ;; If neither user nor password is provided, use system
4711 ;; password, it's considered null. 4700 ;; credentials.
4712 (setq params (append params (list "-P"))))) 4701 `("-E" ,@params)
4702 ;; If -P is passed to ISQL as the last argument without a
4703 ;; password, it's considered null.
4704 `(,@params "-P"))))
4713 (sql-comint product params))) 4705 (sql-comint product params)))
4714 4706
4715 4707
@@ -4753,48 +4745,58 @@ Try to set `comint-output-filter-functions' like this:
4753 4745
4754(defun sql-comint-postgres (product options) 4746(defun sql-comint-postgres (product options)
4755 "Create comint buffer and connect to Postgres." 4747 "Create comint buffer and connect to Postgres."
4756 ;; username and password are ignored. Mark Stosberg suggest to add 4748 ;; username and password are ignored. Mark Stosberg suggests to add
4757 ;; the database at the end. Jason Beegan suggest using --pset and 4749 ;; the database at the end. Jason Beegan suggests using --pset and
4758 ;; pager=off instead of \\o|cat. The later was the solution by 4750 ;; pager=off instead of \\o|cat. The later was the solution by
4759 ;; Gregor Zych. Jason's suggestion is the default value for 4751 ;; Gregor Zych. Jason's suggestion is the default value for
4760 ;; sql-postgres-options. 4752 ;; sql-postgres-options.
4761 (let ((params options)) 4753 (let ((params
4762 (if (not (string= "" sql-database)) 4754 (append
4763 (setq params (append params (list sql-database)))) 4755 (if (not (= 0 sql-port))
4764 (if (not (string= "" sql-server)) 4756 (list "-p" (number-to-string sql-port)))
4765 (setq params (append (list "-h" sql-server) params))) 4757 (if (not (string= "" sql-user))
4766 (if (not (string= "" sql-user)) 4758 (list "-U" sql-user))
4767 (setq params (append (list "-U" sql-user) params))) 4759 (if (not (string= "" sql-server))
4768 (if (not (= 0 sql-port)) 4760 (list "-h" sql-server))
4769 (setq params (append (list "-p" (number-to-string sql-port)) params))) 4761 options
4762 (if (not (string= "" sql-database))
4763 (list sql-database)))))
4770 (sql-comint product params))) 4764 (sql-comint product params)))
4771 4765
4772(defun sql-postgres-completion-object (sqlbuf schema) 4766(defun sql-postgres-completion-object (sqlbuf schema)
4773 (let (cl re fs a r) 4767 (sql-redirect sqlbuf "\\t on")
4774 (sql-redirect sqlbuf "\\t on") 4768 (let ((aligned
4775 (setq a (car (sql-redirect-value sqlbuf "\\a" "Output format is \\(.*\\)[.]$" 1))) 4769 (string= "aligned"
4776 (when (string= a "aligned") 4770 (car (sql-redirect-value
4777 (sql-redirect sqlbuf "\\a")) 4771 sqlbuf "\\a"
4778 (setq fs (or (car (sql-redirect-value sqlbuf "\\f" "Field separator is \"\\(.\\)[.]$" 1)) "|")) 4772 "Output format is \\(.*\\)[.]$" 1)))))
4779 4773 (when aligned
4780 (setq re (concat "^\\([^" fs "]*\\)" fs "\\([^" fs "]*\\)" fs "[^" fs "]*" fs "[^" fs "]*$"))
4781 (setq cl (if (not schema)
4782 (sql-redirect-value sqlbuf "\\d" re '(1 2))
4783 (append (sql-redirect-value sqlbuf (format "\\dt %s.*" schema) re '(1 2))
4784 (sql-redirect-value sqlbuf (format "\\dv %s.*" schema) re '(1 2))
4785 (sql-redirect-value sqlbuf (format "\\ds %s.*" schema) re '(1 2)))))
4786
4787 ;; Restore tuples and alignment to what they were
4788 (sql-redirect sqlbuf "\\t off")
4789 (when (not (string= a "aligned"))
4790 (sql-redirect sqlbuf "\\a")) 4774 (sql-redirect sqlbuf "\\a"))
4791 4775 (let* ((fs (or (car (sql-redirect-value
4792 ;; Return the list of table names (public schema name can be omitted) 4776 sqlbuf "\\f" "Field separator is \"\\(.\\)[.]$" 1))
4793 (mapcar (lambda (tbl) 4777 "|"))
4794 (if (string= (car tbl) "public") 4778 (re (concat "^\\([^" fs "]*\\)" fs "\\([^" fs "]*\\)"
4795 (cadr tbl) 4779 fs "[^" fs "]*" fs "[^" fs "]*$"))
4796 (format "%s.%s" (car tbl) (cadr tbl)))) 4780 (cl (if (not schema)
4797 cl))) 4781 (sql-redirect-value sqlbuf "\\d" re '(1 2))
4782 (append (sql-redirect-value
4783 sqlbuf (format "\\dt %s.*" schema) re '(1 2))
4784 (sql-redirect-value
4785 sqlbuf (format "\\dv %s.*" schema) re '(1 2))
4786 (sql-redirect-value
4787 sqlbuf (format "\\ds %s.*" schema) re '(1 2))))))
4788
4789 ;; Restore tuples and alignment to what they were.
4790 (sql-redirect sqlbuf "\\t off")
4791 (when (not aligned)
4792 (sql-redirect sqlbuf "\\a"))
4793
4794 ;; Return the list of table names (public schema name can be omitted)
4795 (mapcar (lambda (tbl)
4796 (if (string= (car tbl) "public")
4797 (cadr tbl)
4798 (format "%s.%s" (car tbl) (cadr tbl))))
4799 cl))))
4798 4800
4799 4801
4800 4802
@@ -4833,13 +4835,15 @@ The default comes from `process-coding-system-alist' and
4833 "Create comint buffer and connect to Interbase." 4835 "Create comint buffer and connect to Interbase."
4834 ;; Put all parameters to the program (if defined) in a list and call 4836 ;; Put all parameters to the program (if defined) in a list and call
4835 ;; make-comint. 4837 ;; make-comint.
4836 (let ((params options)) 4838 (let ((params
4837 (if (not (string= "" sql-user)) 4839 (append
4838 (setq params (append (list "-u" sql-user) params))) 4840 (if (not (string= "" sql-database))
4839 (if (not (string= "" sql-password)) 4841 (list sql-database)) ; Add to the front!
4840 (setq params (append (list "-p" sql-password) params))) 4842 (if (not (string= "" sql-password))
4841 (if (not (string= "" sql-database)) 4843 (list "-p" sql-password))
4842 (setq params (cons sql-database params))) ; add to the front! 4844 (if (not (string= "" sql-user))
4845 (list "-u" sql-user))
4846 options)))
4843 (sql-comint product params))) 4847 (sql-comint product params)))
4844 4848
4845 4849
@@ -4921,19 +4925,18 @@ buffer.
4921 "Create comint buffer and connect to Linter." 4925 "Create comint buffer and connect to Linter."
4922 ;; Put all parameters to the program (if defined) in a list and call 4926 ;; Put all parameters to the program (if defined) in a list and call
4923 ;; make-comint. 4927 ;; make-comint.
4924 (let ((params options) 4928 (let* ((login
4925 (login nil) 4929 (if (not (string= "" sql-user))
4926 (old-mbx (getenv "LINTER_MBX"))) 4930 (concat sql-user "/" sql-password)))
4927 (if (not (string= "" sql-user)) 4931 (params
4928 (setq login (concat sql-user "/" sql-password))) 4932 (append
4929 (setq params (append (list "-u" login) params)) 4933 (if (not (string= "" sql-server))
4930 (if (not (string= "" sql-server)) 4934 (list "-n" sql-server))
4931 (setq params (append (list "-n" sql-server) params))) 4935 (list "-u" login)
4932 (if (string= "" sql-database) 4936 options)))
4933 (setenv "LINTER_MBX" nil) 4937 (cl-letf (((getenv "LINTER_MBX")
4934 (setenv "LINTER_MBX" sql-database)) 4938 (unless (string= "" sql-database) sql-database)))
4935 (sql-comint product params) 4939 (sql-comint product params))))
4936 (setenv "LINTER_MBX" old-mbx)))
4937 4940
4938 4941
4939 4942
diff --git a/lisp/ps-bdf.el b/lisp/ps-bdf.el
index a82e03ceda7..477aee1b2da 100644
--- a/lisp/ps-bdf.el
+++ b/lisp/ps-bdf.el
@@ -70,20 +70,15 @@ for BDFNAME."
70 70
71(defsubst bdf-file-mod-time (filename) 71(defsubst bdf-file-mod-time (filename)
72 "Return modification time of FILENAME. 72 "Return modification time of FILENAME.
73The value is a list of two integers, the first integer has high-order 73The value is a list of integers in the same format as `current-time'."
7416 bits, the second has low 16 bits."
75 (nth 5 (file-attributes filename))) 74 (nth 5 (file-attributes filename)))
76 75
77(defun bdf-file-newer-than-time (filename mod-time) 76(defun bdf-file-newer-than-time (filename mod-time)
78 "Return non-nil if and only if FILENAME is newer than MOD-TIME. 77 "Return non-nil if and only if FILENAME is newer than MOD-TIME.
79MOD-TIME is a modification time as a list of two integers, the first 78MOD-TIME is a modification time as a list of integers in the same
80integer has high-order 16 bits, the second has low 16 bits." 79format as `current-time'."
81 (let* ((new-mod-time (bdf-file-mod-time filename)) 80 (let ((new-mod-time (bdf-file-mod-time filename)))
82 (new-time (car new-mod-time)) 81 (time-less-p mod-time new-mod-time)))
83 (time (car mod-time)))
84 (or (> new-time time)
85 (and (= new-time time)
86 (> (nth 1 new-mod-time) (nth 1 mod-time))))))
87 82
88(defun bdf-find-file (bdfname) 83(defun bdf-find-file (bdfname)
89 "Return a buffer visiting a bdf file BDFNAME. 84 "Return a buffer visiting a bdf file BDFNAME.
@@ -178,8 +173,8 @@ FONT-INFO is a list of the following format:
178 (BDFFILE MOD-TIME FONT-BOUNDING-BOX 173 (BDFFILE MOD-TIME FONT-BOUNDING-BOX
179 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR) 174 RELATIVE-COMPOSE BASELINE-OFFSET CODE-RANGE MAXLEN OFFSET-VECTOR)
180 175
181MOD-TIME is last modification time as a list of two integers, the 176MOD-TIME is last modification time as a list of integers in the
182first integer has high-order 16 bits, the second has low 16 bits. 177same format as `current-time'.
183 178
184SIZE is a size of the font on 72 dpi device. This value is got 179SIZE is a size of the font on 72 dpi device. This value is got
185from SIZE record of the font. 180from SIZE record of the font.
diff --git a/lisp/ses.el b/lisp/ses.el
index 27b906d22e3..80260185942 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -2718,8 +2718,9 @@ inserts a new row if at bottom of print area. Repeat COUNT times."
2718;; Cut and paste, import and export 2718;; Cut and paste, import and export
2719;;---------------------------------------------------------------------------- 2719;;----------------------------------------------------------------------------
2720 2720
2721(defadvice copy-region-as-kill (around ses-copy-region-as-kill 2721(defun ses--advice-copy-region-as-kill (crak-fun beg end &rest args)
2722 activate preactivate) 2722 ;; FIXME: Why doesn't it make sense to copy read-only or
2723 ;; intangible attributes? They're removed upon yank!
2723 "It doesn't make sense to copy read-only or intangible attributes into the 2724 "It doesn't make sense to copy read-only or intangible attributes into the
2724kill ring. It probably doesn't make sense to copy keymap properties. 2725kill ring. It probably doesn't make sense to copy keymap properties.
2725We'll assume copying front-sticky properties doesn't make sense, either. 2726We'll assume copying front-sticky properties doesn't make sense, either.
@@ -2730,14 +2731,15 @@ hard to override how mouse-1 works."
2730 (let ((temp beg)) 2731 (let ((temp beg))
2731 (setq beg end 2732 (setq beg end
2732 end temp))) 2733 end temp)))
2733 (if (not (and (eq major-mode 'ses-mode) 2734 (if (not (and (derived-mode-p 'ses-mode)
2734 (eq (get-text-property beg 'read-only) 'ses) 2735 (eq (get-text-property beg 'read-only) 'ses)
2735 (eq (get-text-property (1- end) 'read-only) 'ses))) 2736 (eq (get-text-property (1- end) 'read-only) 'ses)))
2736 ad-do-it ; Normal copy-region-as-kill. 2737 (apply crak-fun beg end args) ; Normal copy-region-as-kill.
2737 (kill-new (ses-copy-region beg end)) 2738 (kill-new (ses-copy-region beg end))
2738 (if transient-mark-mode 2739 (if transient-mark-mode
2739 (setq deactivate-mark t)) 2740 (setq deactivate-mark t))
2740 nil)) 2741 nil))
2742(advice-add 'copy-region-as-kill :around #'ses--advice-copy-region-as-kill)
2741 2743
2742(defun ses-copy-region (beg end) 2744(defun ses-copy-region (beg end)
2743 "Treat the region as rectangular. Convert the intangible attributes to 2745 "Treat the region as rectangular. Convert the intangible attributes to
@@ -2801,7 +2803,7 @@ We clear the killed cells instead of deleting them."
2801 (ses-clear-cell row col)) 2803 (ses-clear-cell row col))
2802 (ses-jump (car ses--curcell))) 2804 (ses-jump (car ses--curcell)))
2803 2805
2804(defadvice yank (around ses-yank activate preactivate) 2806(defun ses--advice-yank (yank-fun &optional arg &rest args)
2805 "In SES mode, the yanked text is inserted as cells. 2807 "In SES mode, the yanked text is inserted as cells.
2806 2808
2807If the text contains 'ses attributes (meaning it went to the kill-ring from a 2809If the text contains 'ses attributes (meaning it went to the kill-ring from a
@@ -2819,9 +2821,9 @@ When inserting formulas, the text is treated as a string constant if it doesn't
2819make sense as a sexp or would otherwise be considered a symbol. Use 'sym to 2821make sense as a sexp or would otherwise be considered a symbol. Use 'sym to
2820explicitly insert a symbol, or use the C-u prefix to treat all unmarked words 2822explicitly insert a symbol, or use the C-u prefix to treat all unmarked words
2821as symbols." 2823as symbols."
2822 (if (not (and (eq major-mode 'ses-mode) 2824 (if (not (and (derived-mode-p 'ses-mode)
2823 (eq (get-text-property (point) 'keymap) 'ses-mode-print-map))) 2825 (eq (get-text-property (point) 'keymap) 'ses-mode-print-map)))
2824 ad-do-it ; Normal non-SES yank. 2826 (apply yank-fun arg args) ; Normal non-SES yank.
2825 (ses-check-curcell 'end) 2827 (ses-check-curcell 'end)
2826 (push-mark (point)) 2828 (push-mark (point))
2827 (let ((text (current-kill (cond 2829 (let ((text (current-kill (cond
@@ -2839,6 +2841,7 @@ as symbols."
2839 arg))) 2841 arg)))
2840 (if (consp arg) 2842 (if (consp arg)
2841 (exchange-point-and-mark)))) 2843 (exchange-point-and-mark))))
2844(advice-add 'yank :around #'ses--advice-yank)
2842 2845
2843(defun ses-yank-pop (arg) 2846(defun ses-yank-pop (arg)
2844 "Replace just-yanked stretch of killed text with a different stretch. 2847 "Replace just-yanked stretch of killed text with a different stretch.
@@ -3313,7 +3316,7 @@ highlighted range in the spreadsheet."
3313 (put-text-property pos end 'intangible new-name)) 3316 (put-text-property pos end 'intangible new-name))
3314 ;; update mode line 3317 ;; update mode line
3315 (setq mode-line-process (list " cell " 3318 (setq mode-line-process (list " cell "
3316 (symbol-name sym))) 3319 (symbol-name new-name)))
3317 (force-mode-line-update))) 3320 (force-mode-line-update)))
3318 3321
3319;;---------------------------------------------------------------------------- 3322;;----------------------------------------------------------------------------
@@ -3586,10 +3589,9 @@ current column and continues until the next nonblank column."
3586 3589
3587(defun ses-unload-function () 3590(defun ses-unload-function ()
3588 "Unload the Simple Emacs Spreadsheet." 3591 "Unload the Simple Emacs Spreadsheet."
3589 (dolist (fun '(copy-region-as-kill yank)) 3592 (advice-remove 'yank #'ses--advice-yank)
3590 (ad-remove-advice fun 'around (intern (concat "ses-" (symbol-name fun)))) 3593 (advice-remove 'copy-region-as-kill #'ses--advice-copy-region-as-kill)
3591 (ad-update fun)) 3594 ;; Continue standard unloading.
3592 ;; continue standard unloading
3593 nil) 3595 nil)
3594 3596
3595(provide 'ses) 3597(provide 'ses)
diff --git a/lisp/shell.el b/lisp/shell.el
index 77a42389785..fc8f3dfb940 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -561,10 +561,8 @@ buffer."
561 ;; very inefficient in Shell buffers (e.g. Bug#10835). We use a 561 ;; very inefficient in Shell buffers (e.g. Bug#10835). We use a
562 ;; custom `ansi-color-apply-face-function' to convert color escape 562 ;; custom `ansi-color-apply-face-function' to convert color escape
563 ;; sequences into `font-lock-face' properties. 563 ;; sequences into `font-lock-face' properties.
564 (set (make-local-variable 'ansi-color-apply-face-function) 564 (setq-local ansi-color-apply-face-function #'shell-apply-ansi-color)
565 (lambda (beg end face) 565 (shell-reapply-ansi-color)
566 (when face
567 (put-text-property beg end 'font-lock-face face))))
568 566
569 ;; This is not really correct, since the shell buffer does not really 567 ;; This is not really correct, since the shell buffer does not really
570 ;; edit this directory. But it is useful in the buffer list and menus. 568 ;; edit this directory. But it is useful in the buffer list and menus.
@@ -603,6 +601,27 @@ buffer."
603 'shell-filter-ctrl-a-ctrl-b nil t))) 601 'shell-filter-ctrl-a-ctrl-b nil t)))
604 (comint-read-input-ring t))) 602 (comint-read-input-ring t)))
605 603
604(defun shell-apply-ansi-color (beg end face)
605 "Apply FACE as the ansi-color face for the text between BEG and END."
606 (when face
607 (put-text-property beg end 'ansi-color-face face)
608 (put-text-property beg end 'font-lock-face face)))
609
610(defun shell-reapply-ansi-color ()
611 "Reapply ansi-color faces to the existing contents of the buffer."
612 (save-restriction
613 (widen)
614 (let* ((pos (point-min))
615 (end (or (next-single-property-change pos 'ansi-color-face)
616 (point-max)))
617 face)
618 (while end
619 (if (setq face (get-text-property pos 'ansi-color-face))
620 (put-text-property pos (or end (point-max))
621 'font-lock-face face))
622 (setq pos end
623 end (next-single-property-change pos 'ansi-color-face))))))
624
606(defun shell-filter-ctrl-a-ctrl-b (string) 625(defun shell-filter-ctrl-a-ctrl-b (string)
607 "Remove `^A' and `^B' characters from comint output. 626 "Remove `^A' and `^B' characters from comint output.
608 627
@@ -671,7 +690,12 @@ Otherwise, one argument `-i' is passed to the shell.
671 (and current-prefix-arg 690 (and current-prefix-arg
672 (prog1 691 (prog1
673 (read-buffer "Shell buffer: " 692 (read-buffer "Shell buffer: "
674 (generate-new-buffer-name "*shell*")) 693 ;; If the current buffer is an inactive
694 ;; shell buffer, use it as the default.
695 (if (and (eq major-mode 'shell-mode)
696 (null (get-buffer-process (current-buffer))))
697 (buffer-name)
698 (generate-new-buffer-name "*shell*")))
675 (if (file-remote-p default-directory) 699 (if (file-remote-p default-directory)
676 ;; It must be possible to declare a local default-directory. 700 ;; It must be possible to declare a local default-directory.
677 ;; FIXME: This can't be right: it changes the default-directory 701 ;; FIXME: This can't be right: it changes the default-directory
diff --git a/lisp/simple.el b/lisp/simple.el
index aed945d6e13..78b76579584 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -744,7 +744,7 @@ If BACKWARD-ONLY is non-nil, only delete them before point."
744 744
745(defun just-one-space (&optional n) 745(defun just-one-space (&optional n)
746 "Delete all spaces and tabs around point, leaving one space (or N spaces). 746 "Delete all spaces and tabs around point, leaving one space (or N spaces).
747If N is negative, delete newlines as well." 747If N is negative, delete newlines as well, leaving -N spaces."
748 (interactive "*p") 748 (interactive "*p")
749 (unless n (setq n 1)) 749 (unless n (setq n 1))
750 (let ((orig-pos (point)) 750 (let ((orig-pos (point))
@@ -4012,7 +4012,8 @@ run `deactivate-mark-hook'."
4012 (when (mark t) 4012 (when (mark t)
4013 (setq mark-active t) 4013 (setq mark-active t)
4014 (unless transient-mark-mode 4014 (unless transient-mark-mode
4015 (setq transient-mark-mode 'lambda)))) 4015 (setq transient-mark-mode 'lambda))
4016 (run-hooks 'activate-mark-hook)))
4016 4017
4017(defun set-mark (pos) 4018(defun set-mark (pos)
4018 "Set this buffer's mark to POS. Don't use this function! 4019 "Set this buffer's mark to POS. Don't use this function!
@@ -4133,14 +4134,6 @@ after C-u \\[set-mark-command]."
4133 :type 'boolean 4134 :type 'boolean
4134 :group 'editing-basics) 4135 :group 'editing-basics)
4135 4136
4136(defcustom set-mark-default-inactive nil
4137 "If non-nil, setting the mark does not activate it.
4138This causes \\[set-mark-command] and \\[exchange-point-and-mark] to
4139behave the same whether or not `transient-mark-mode' is enabled."
4140 :type 'boolean
4141 :group 'editing-basics
4142 :version "23.1")
4143
4144(defun set-mark-command (arg) 4137(defun set-mark-command (arg)
4145 "Set the mark where point is, or jump to the mark. 4138 "Set the mark where point is, or jump to the mark.
4146Setting the mark also alters the region, which is the text 4139Setting the mark also alters the region, which is the text
@@ -4202,8 +4195,7 @@ purposes. See the documentation of `set-mark' for more information."
4202 (activate-mark) 4195 (activate-mark)
4203 (message "Mark activated"))) 4196 (message "Mark activated")))
4204 (t 4197 (t
4205 (push-mark-command nil) 4198 (push-mark-command nil))))
4206 (if set-mark-default-inactive (deactivate-mark)))))
4207 4199
4208(defun push-mark (&optional location nomsg activate) 4200(defun push-mark (&optional location nomsg activate)
4209 "Set mark at LOCATION (point, by default) and push old mark on mark ring. 4201 "Set mark at LOCATION (point, by default) and push old mark on mark ring.
@@ -4267,7 +4259,6 @@ mode temporarily."
4267 (deactivate-mark) 4259 (deactivate-mark)
4268 (set-mark (point)) 4260 (set-mark (point))
4269 (goto-char omark) 4261 (goto-char omark)
4270 (if set-mark-default-inactive (deactivate-mark))
4271 (cond (temp-highlight 4262 (cond (temp-highlight
4272 (setq transient-mark-mode (cons 'only transient-mark-mode))) 4263 (setq transient-mark-mode (cons 'only transient-mark-mode)))
4273 ((or (and arg (region-active-p)) ; (xor arg (not (region-active-p))) 4264 ((or (and arg (region-active-p)) ; (xor arg (not (region-active-p)))
@@ -4332,14 +4323,14 @@ else--for example, incremental search, \\[beginning-of-buffer], and \\[end-of-bu
4332You can also deactivate the mark by typing \\[keyboard-quit] or 4323You can also deactivate the mark by typing \\[keyboard-quit] or
4333\\[keyboard-escape-quit]. 4324\\[keyboard-escape-quit].
4334 4325
4335Many commands change their behavior when Transient Mark mode is in effect 4326Many commands change their behavior when Transient Mark mode is
4336and the mark is active, by acting on the region instead of their usual 4327in effect and the mark is active, by acting on the region instead
4337default part of the buffer's text. Examples of such commands include 4328of their usual default part of the buffer's text. Examples of
4338\\[comment-dwim], \\[flush-lines], \\[keep-lines], \ 4329such commands include \\[comment-dwim], \\[flush-lines], \\[keep-lines],
4339\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo]. 4330\\[query-replace], \\[query-replace-regexp], \\[ispell], and \\[undo].
4340Invoke \\[apropos-documentation] and type \"transient\" or 4331To see the documentation of commands which are sensitive to the
4341\"mark.*active\" at the prompt, to see the documentation of 4332Transient Mark mode, invoke \\[apropos-documentation] and type \"transient\"
4342commands which are sensitive to the Transient Mark mode." 4333or \"mark.*active\" at the prompt."
4343 :global t 4334 :global t
4344 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again. 4335 ;; It's defined in C/cus-start, this stops the d-m-m macro defining it again.
4345 :variable transient-mark-mode) 4336 :variable transient-mark-mode)
@@ -4583,6 +4574,9 @@ lines."
4583 (unless (and auto-window-vscroll try-vscroll 4574 (unless (and auto-window-vscroll try-vscroll
4584 ;; Only vscroll for single line moves 4575 ;; Only vscroll for single line moves
4585 (= (abs arg) 1) 4576 (= (abs arg) 1)
4577 ;; Under scroll-conservatively, the display engine
4578 ;; does this better.
4579 (zerop scroll-conservatively)
4586 ;; But don't vscroll in a keyboard macro. 4580 ;; But don't vscroll in a keyboard macro.
4587 (not defining-kbd-macro) 4581 (not defining-kbd-macro)
4588 (not executing-kbd-macro) 4582 (not executing-kbd-macro)
diff --git a/lisp/sort.el b/lisp/sort.el
index 44f90fff379..cd0b4433ab3 100644
--- a/lisp/sort.el
+++ b/lisp/sort.el
@@ -562,6 +562,62 @@ From a program takes two point or marker arguments, BEG and END."
562 (setq ll (cdr ll))) 562 (setq ll (cdr ll)))
563 (insert (car ll))))) 563 (insert (car ll)))))
564 564
565;;;###autoload
566(defun delete-duplicate-lines (beg end &optional reverse adjacent interactive)
567 "Delete duplicate lines in the region between BEG and END.
568
569If REVERSE is nil, search and delete duplicates forward keeping the first
570occurrence of duplicate lines. If REVERSE is non-nil (when called
571interactively with C-u prefix), search and delete duplicates backward
572keeping the last occurrence of duplicate lines.
573
574If ADJACENT is non-nil (when called interactively with two C-u prefixes),
575delete repeated lines only if they are adjacent. It works like the utility
576`uniq' and is useful when lines are already sorted in a large file since
577this is more efficient in performance and memory usage than when ADJACENT
578is nil that uses additional memory to remember previous lines.
579
580When called from Lisp and INTERACTIVE is omitted or nil, return the number
581of deleted duplicate lines, do not print it; if INTERACTIVE is t, the
582function behaves in all respects as if it had been called interactively."
583 (interactive
584 (progn
585 (barf-if-buffer-read-only)
586 (list (region-beginning) (region-end)
587 (equal current-prefix-arg '(4))
588 (equal current-prefix-arg '(16))
589 t)))
590 (let ((lines (unless adjacent (make-hash-table :weakness 'key :test 'equal)))
591 line prev-line
592 (count 0)
593 (beg (copy-marker beg))
594 (end (copy-marker end)))
595 (save-excursion
596 (goto-char (if reverse end beg))
597 (if (and reverse (bolp)) (forward-char -1))
598 (while (if reverse
599 (and (> (point) beg) (not (bobp)))
600 (and (< (point) end) (not (eobp))))
601 (setq line (buffer-substring-no-properties
602 (line-beginning-position) (line-end-position)))
603 (if (if adjacent (equal line prev-line) (gethash line lines))
604 (progn
605 (delete-region (progn (forward-line 0) (point))
606 (progn (forward-line 1) (point)))
607 (if reverse (forward-line -1))
608 (setq count (1+ count)))
609 (if adjacent (setq prev-line line) (puthash line t lines))
610 (forward-line (if reverse -1 1)))))
611 (set-marker beg nil)
612 (set-marker end nil)
613 (when interactive
614 (message "Deleted %d %sduplicate line%s%s"
615 count
616 (if adjacent "adjacent " "")
617 (if (= count 1) "" "s")
618 (if reverse " backward" "")))
619 count))
620
565(provide 'sort) 621(provide 'sort)
566 622
567;;; sort.el ends here 623;;; sort.el ends here
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 25a6fbfd998..dd104d436b5 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -3608,6 +3608,7 @@ functions to do caching and flushing if appropriate."
3608 nil 3608 nil
3609 3609
3610(eval-when-compile (condition-case nil (require 'imenu) (error nil))) 3610(eval-when-compile (condition-case nil (require 'imenu) (error nil)))
3611(declare-function imenu--make-index-alist "imenu" (&optional no-error))
3611 3612
3612(defun speedbar-fetch-dynamic-imenu (file) 3613(defun speedbar-fetch-dynamic-imenu (file)
3613 "Load FILE into a buffer, and generate tags using Imenu. 3614 "Load FILE into a buffer, and generate tags using Imenu.
diff --git a/lisp/startup.el b/lisp/startup.el
index 2e8b6b7f8c4..ec6d45a294d 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1569,27 +1569,24 @@ a face or button specification."
1569 :face '(variable-pitch (:height 0.8)) 1569 :face '(variable-pitch (:height 0.8))
1570 emacs-copyright 1570 emacs-copyright
1571 "\n") 1571 "\n")
1572 (and auto-save-list-file-prefix 1572 (when auto-save-list-file-prefix
1573 ;; Don't signal an error if the 1573 (let ((dir (file-name-directory auto-save-list-file-prefix))
1574 ;; directory for auto-save-list files 1574 (name (file-name-nondirectory auto-save-list-file-prefix))
1575 ;; does not yet exist. 1575 files)
1576 (file-directory-p (file-name-directory 1576 ;; Don't warn if the directory for auto-save-list files does not
1577 auto-save-list-file-prefix)) 1577 ;; yet exist.
1578 (directory-files 1578 (and (file-directory-p dir)
1579 (file-name-directory auto-save-list-file-prefix) 1579 (setq files (directory-files dir nil (concat "\\`" name) t))
1580 nil 1580 (fancy-splash-insert :face '(variable-pitch font-lock-comment-face)
1581 (concat "\\`" 1581 (if (= (length files) 1)
1582 (regexp-quote (file-name-nondirectory 1582 "\nAn auto-save file list was found. "
1583 auto-save-list-file-prefix))) 1583 "\nAuto-save file lists were found. ")
1584 t) 1584 "If an Emacs session crashed recently,\ntype "
1585 (fancy-splash-insert :face '(variable-pitch font-lock-comment-face) 1585 :link `("M-x recover-session RET"
1586 "\nIf an Emacs session crashed recently, " 1586 ,(lambda (_button)
1587 "type " 1587 (call-interactively
1588 :face '(fixed-pitch font-lock-comment-face) 1588 'recover-session)))
1589 "Meta-x recover-session RET" 1589 " to recover the files you were editing."))))
1590 :face '(variable-pitch font-lock-comment-face)
1591 "\nto recover"
1592 " the files you were editing."))
1593 1590
1594 (when concise 1591 (when concise
1595 (fancy-splash-insert 1592 (fancy-splash-insert
diff --git a/lisp/subr.el b/lisp/subr.el
index 1a850b1eabf..1e509036cd1 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1159,17 +1159,6 @@ The return value has the form (WIDTH . HEIGHT). POSITION should
1159be a list of the form returned by `event-start' and `event-end'." 1159be a list of the form returned by `event-start' and `event-end'."
1160 (nth 9 position)) 1160 (nth 9 position))
1161 1161
1162(defun w32notify-handle-event (event)
1163 "Handle file system monitoring event.
1164If EVENT is a file-notification event, then its callback is called.
1165Otherwise, a `filewatch-error' is signaled."
1166 (interactive "e")
1167
1168 (if (and (eq (car event) 'file-notify)
1169 (= (length event) 3))
1170 (funcall (nth 2 event) (nth 1 event))
1171 (signal 'filewatch-error (cons "Not a valid file-notify event" event))))
1172
1173 1162
1174;;;; Obsolescent names for functions. 1163;;;; Obsolescent names for functions.
1175 1164
@@ -1202,8 +1191,6 @@ is converted into a string by expressing it in decimal."
1202(make-obsolete 'unfocus-frame "it does nothing." "22.1") 1191(make-obsolete 'unfocus-frame "it does nothing." "22.1")
1203(make-obsolete 'make-variable-frame-local 1192(make-obsolete 'make-variable-frame-local
1204 "explicitly check for a frame-parameter instead." "22.2") 1193 "explicitly check for a frame-parameter instead." "22.2")
1205(make-obsolete 'interactive-p 'called-interactively-p "23.2")
1206(set-advertised-calling-convention 'called-interactively-p '(kind) "23.1")
1207(set-advertised-calling-convention 1194(set-advertised-calling-convention
1208 'all-completions '(string collection &optional predicate) "23.1") 1195 'all-completions '(string collection &optional predicate) "23.1")
1209(set-advertised-calling-convention 'unintern '(name obarray) "23.3") 1196(set-advertised-calling-convention 'unintern '(name obarray) "23.3")
@@ -2635,13 +2622,14 @@ When the hook runs, the temporary buffer is current.
2635This hook is normally set up with a function to put the buffer in Help 2622This hook is normally set up with a function to put the buffer in Help
2636mode.") 2623mode.")
2637 2624
2638;; Avoid compiler warnings about this variable, 2625(defvar-local buffer-file-type nil
2639;; which has a special meaning on certain system types.
2640(defvar buffer-file-type nil
2641 "Non-nil if the visited file is a binary file. 2626 "Non-nil if the visited file is a binary file.
2642This variable is meaningful on MS-DOG and Windows NT. 2627This variable is meaningful on MS-DOG and MS-Windows.
2643On those systems, it is automatically local in every buffer. 2628On those systems, it is automatically local in every buffer.
2644On other systems, this variable is normally always nil.") 2629On other systems, this variable is normally always nil.
2630
2631WARNING: This variable is obsolete and will disappear Real Soon Now.
2632Don't use it!")
2645 2633
2646;; The `assert' macro from the cl package signals 2634;; The `assert' macro from the cl package signals
2647;; `cl-assertion-failed' at runtime so always define it. 2635;; `cl-assertion-failed' at runtime so always define it.
@@ -3200,6 +3188,7 @@ in which case `save-window-excursion' cannot help."
3200 ;; Return nil. 3188 ;; Return nil.
3201 nil) 3189 nil)
3202 3190
3191;; Doc is very similar to with-temp-buffer-window.
3203(defmacro with-output-to-temp-buffer (bufname &rest body) 3192(defmacro with-output-to-temp-buffer (bufname &rest body)
3204 "Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer. 3193 "Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.
3205 3194
@@ -3225,7 +3214,9 @@ with the buffer BUFNAME temporarily current. It runs the hook
3225`temp-buffer-show-hook' after displaying buffer BUFNAME, with that 3214`temp-buffer-show-hook' after displaying buffer BUFNAME, with that
3226buffer temporarily current, and the window that was used to display it 3215buffer temporarily current, and the window that was used to display it
3227temporarily selected. But it doesn't run `temp-buffer-show-hook' 3216temporarily selected. But it doesn't run `temp-buffer-show-hook'
3228if it uses `temp-buffer-show-function'." 3217if it uses `temp-buffer-show-function'.
3218
3219See the related form `with-temp-buffer-window'."
3229 (declare (debug t)) 3220 (declare (debug t))
3230 (let ((old-dir (make-symbol "old-dir")) 3221 (let ((old-dir (make-symbol "old-dir"))
3231 (buf (make-symbol "buf"))) 3222 (buf (make-symbol "buf")))
@@ -3856,7 +3847,7 @@ This is used on the `modification-hooks' property of text clones."
3856 (if (not (re-search-forward 3847 (if (not (re-search-forward
3857 (overlay-get ol1 'text-clone-syntax) cend t)) 3848 (overlay-get ol1 'text-clone-syntax) cend t))
3858 ;; Mark the overlay for deletion. 3849 ;; Mark the overlay for deletion.
3859 (overlay-put ol1 'text-clones nil) 3850 (setq end cbeg)
3860 (when (< (match-end 0) cend) 3851 (when (< (match-end 0) cend)
3861 ;; Shrink the clone at its end. 3852 ;; Shrink the clone at its end.
3862 (setq end (min end (match-end 0))) 3853 (setq end (min end (match-end 0)))
@@ -3971,6 +3962,152 @@ The properties used on SYMBOL are `composefunc', `sendfunc',
3971 (put symbol 'abortfunc (or abortfunc 'kill-buffer)) 3962 (put symbol 'abortfunc (or abortfunc 'kill-buffer))
3972 (put symbol 'hookvar (or hookvar 'mail-send-hook))) 3963 (put symbol 'hookvar (or hookvar 'mail-send-hook)))
3973 3964
3965(defvar called-interactively-p-functions nil
3966 "Special hook called to skip special frames in `called-interactively-p'.
3967The functions are called with 3 arguments: (I FRAME1 FRAME2),
3968where FRAME1 is a \"current frame\", FRAME2 is the next frame,
3969I is the index of the frame after FRAME2. It should return nil
3970if those frames don't seem special and otherwise, it should return
3971the number of frames to skip (minus 1).")
3972
3973(defmacro internal--called-interactively-p--get-frame (n)
3974 ;; `sym' will hold a global variable, which will be used kind of like C's
3975 ;; "static" variables.
3976 (let ((sym (make-symbol "base-index")))
3977 `(progn
3978 (defvar ,sym
3979 (let ((i 1))
3980 (while (not (eq (nth 1 (backtrace-frame i))
3981 'called-interactively-p))
3982 (setq i (1+ i)))
3983 i))
3984 ;; (unless (eq (nth 1 (backtrace-frame ,sym)) 'called-interactively-p)
3985 ;; (error "called-interactively-p: %s is out-of-sync!" ,sym))
3986 (backtrace-frame (+ ,sym ,n)))))
3987
3988(defun called-interactively-p (&optional kind)
3989 "Return t if the containing function was called by `call-interactively'.
3990If KIND is `interactive', then only return t if the call was made
3991interactively by the user, i.e. not in `noninteractive' mode nor
3992when `executing-kbd-macro'.
3993If KIND is `any', on the other hand, it will return t for any kind of
3994interactive call, including being called as the binding of a key or
3995from a keyboard macro, even in `noninteractive' mode.
3996
3997This function is very brittle, it may fail to return the intended result when
3998the code is debugged, advised, or instrumented in some form. Some macros and
3999special forms (such as `condition-case') may also sometimes wrap their bodies
4000in a `lambda', so any call to `called-interactively-p' from those bodies will
4001indicate whether that lambda (rather than the surrounding function) was called
4002interactively.
4003
4004Instead of using this function, it is cleaner and more reliable to give your
4005function an extra optional argument whose `interactive' spec specifies
4006non-nil unconditionally (\"p\" is a good way to do this), or via
4007\(not (or executing-kbd-macro noninteractive)).
4008
4009The only known proper use of `interactive' for KIND is in deciding
4010whether to display a helpful message, or how to display it. If you're
4011thinking of using it for any other purpose, it is quite likely that
4012you're making a mistake. Think: what do you want to do when the
4013command is called from a keyboard macro?"
4014 (declare (advertised-calling-convention (kind) "23.1"))
4015 (when (not (and (eq kind 'interactive)
4016 (or executing-kbd-macro noninteractive)))
4017 (let* ((i 1) ;; 0 is the called-interactively-p frame.
4018 frame nextframe
4019 (get-next-frame
4020 (lambda ()
4021 (setq frame nextframe)
4022 (setq nextframe (internal--called-interactively-p--get-frame i))
4023 ;; (message "Frame %d = %S" i nextframe)
4024 (setq i (1+ i)))))
4025 (funcall get-next-frame) ;; Get the first frame.
4026 (while
4027 ;; FIXME: The edebug and advice handling should be made modular and
4028 ;; provided directly by edebug.el and nadvice.el.
4029 (progn
4030 ;; frame =(backtrace-frame i-2)
4031 ;; nextframe=(backtrace-frame i-1)
4032 (funcall get-next-frame)
4033 ;; `pcase' would be a fairly good fit here, but it sometimes moves
4034 ;; branches within local functions, which then messes up the
4035 ;; `backtrace-frame' data we get,
4036 (or
4037 ;; Skip special forms (from non-compiled code).
4038 (and frame (null (car frame)))
4039 ;; Skip also `interactive-p' (because we don't want to know if
4040 ;; interactive-p was called interactively but if it's caller was)
4041 ;; and `byte-code' (idem; this appears in subexpressions of things
4042 ;; like condition-case, which are wrapped in a separate bytecode
4043 ;; chunk).
4044 ;; FIXME: For lexical-binding code, this is much worse,
4045 ;; because the frames look like "byte-code -> funcall -> #[...]",
4046 ;; which is not a reliable signature.
4047 (memq (nth 1 frame) '(interactive-p 'byte-code))
4048 ;; Skip package-specific stack-frames.
4049 (let ((skip (run-hook-with-args-until-success
4050 'called-interactively-p-functions
4051 i frame nextframe)))
4052 (pcase skip
4053 (`nil nil)
4054 (`0 t)
4055 (_ (setq i (+ i skip -1)) (funcall get-next-frame)))))))
4056 ;; Now `frame' should be "the function from which we were called".
4057 (pcase (cons frame nextframe)
4058 ;; No subr calls `interactive-p', so we can rule that out.
4059 (`((,_ ,(pred (lambda (f) (subrp (indirect-function f)))) . ,_) . ,_) nil)
4060 ;; Somehow, I sometimes got `command-execute' rather than
4061 ;; `call-interactively' on my stacktrace !?
4062 ;;(`(,_ . (t command-execute . ,_)) t)
4063 (`(,_ . (t call-interactively . ,_)) t)))))
4064
4065(defun interactive-p ()
4066 "Return t if the containing function was run directly by user input.
4067This means that the function was called with `call-interactively'
4068\(which includes being called as the binding of a key)
4069and input is currently coming from the keyboard (not a keyboard macro),
4070and Emacs is not running in batch mode (`noninteractive' is nil).
4071
4072The only known proper use of `interactive-p' is in deciding whether to
4073display a helpful message, or how to display it. If you're thinking
4074of using it for any other purpose, it is quite likely that you're
4075making a mistake. Think: what do you want to do when the command is
4076called from a keyboard macro or in batch mode?
4077
4078To test whether your function was called with `call-interactively',
4079either (i) add an extra optional argument and give it an `interactive'
4080spec that specifies non-nil unconditionally (such as \"p\"); or (ii)
4081use `called-interactively-p'."
4082 (declare (obsolete called-interactively-p "23.2"))
4083 (called-interactively-p 'interactive))
4084
4085(defun function-arity (f &optional num)
4086 "Return the (MIN . MAX) arity of F.
4087If the maximum arity is infinite, MAX is `many'.
4088F can be a function or a macro.
4089If NUM is non-nil, return non-nil iff F can be called with NUM args."
4090 (if (symbolp f) (setq f (indirect-function f)))
4091 (if (eq (car-safe f) 'macro) (setq f (cdr f)))
4092 (let ((res
4093 (if (subrp f)
4094 (let ((x (subr-arity f)))
4095 (if (eq (cdr x) 'unevalled) (cons (car x) 'many)))
4096 (let* ((args (if (consp f) (cadr f) (aref f 0)))
4097 (max (length args))
4098 (opt (memq '&optional args))
4099 (rest (memq '&rest args))
4100 (min (- max (length opt))))
4101 (if opt
4102 (cons min (if rest 'many (1- max)))
4103 (if rest
4104 (cons (- max (length rest)) 'many)
4105 (cons min max)))))))
4106 (if (not num)
4107 res
4108 (and (>= num (car res))
4109 (or (eq 'many (cdr res)) (<= num (cdr res)))))))
4110
3974(defun set-temporary-overlay-map (map &optional keep-pred) 4111(defun set-temporary-overlay-map (map &optional keep-pred)
3975 "Set MAP as a temporary keymap taking precedence over most other keymaps. 4112 "Set MAP as a temporary keymap taking precedence over most other keymaps.
3976Note that this does NOT take precedence over the \"overriding\" maps 4113Note that this does NOT take precedence over the \"overriding\" maps
@@ -4186,6 +4323,36 @@ convenience wrapper around `make-progress-reporter' and friends.
4186 nil ,@(cdr (cdr spec))))) 4323 nil ,@(cdr (cdr spec)))))
4187 4324
4188 4325
4326;;;; Support for watching filesystem events.
4327
4328(defun inotify-event-p (event)
4329 "Check if EVENT is an inotify event."
4330 (and (listp event)
4331 (>= (length event) 3)
4332 (eq (car event) 'file-inotify)))
4333
4334;;;###autoload
4335(defun inotify-handle-event (event)
4336 "Handle inotify file system monitoring event.
4337If EVENT is an inotify filewatch event, call its callback.
4338Otherwise, signal a `filewatch-error'."
4339 (interactive "e")
4340 (unless (inotify-event-p event)
4341 (signal 'filewatch-error (cons "Not a valid inotify event" event)))
4342 (funcall (nth 2 event) (nth 1 event)))
4343
4344(defun w32notify-handle-event (event)
4345 "Handle MS-Windows file system monitoring event.
4346If EVENT is an MS-Windows filewatch event, call its callback.
4347Otherwise, signal a `filewatch-error'."
4348 (interactive "e")
4349 (if (and (eq (car event) 'file-w32notify)
4350 (= (length event) 3))
4351 (funcall (nth 2 event) (nth 1 event))
4352 (signal 'filewatch-error
4353 (cons "Not a valid MS-Windows file-notify event" event))))
4354
4355
4189;;;; Comparing version strings. 4356;;;; Comparing version strings.
4190 4357
4191(defconst version-separator "." 4358(defconst version-separator "."
diff --git a/lisp/term.el b/lisp/term.el
index d6acaef1ae9..a7c50d65562 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -397,6 +397,12 @@
397(require 'ring) 397(require 'ring)
398(require 'ehelp) 398(require 'ehelp)
399 399
400(declare-function ring-empty-p "ring" (ring))
401(declare-function ring-ref "ring" (ring index))
402(declare-function ring-insert-at-beginning "ring" (ring item))
403(declare-function ring-length "ring" (ring))
404(declare-function ring-insert "ring" (ring item))
405
400(defgroup term nil 406(defgroup term nil
401 "General command interpreter in a window." 407 "General command interpreter in a window."
402 :group 'processes) 408 :group 'processes)
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index e31362b8313..e255fec1240 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -656,18 +656,6 @@ This defines a fontset consisting of the Courier and other fonts that
656come with OS X. 656come with OS X.
657See the documentation of `create-fontset-from-fontset-spec' for the format.") 657See the documentation of `create-fontset-from-fontset-spec' for the format.")
658 658
659;; Conditional on new-fontset so bootstrapping works on non-GUI compiles.
660(when (fboundp 'new-fontset)
661 ;; Setup the default fontset.
662 (create-default-fontset)
663 ;; Create the standard fontset.
664 (condition-case err
665 (create-fontset-from-fontset-spec ns-standard-fontset-spec t)
666 (error (display-warning
667 'initialization
668 (format "Creation of the standard fontset failed: %s" err)
669 :error))))
670
671(defvar ns-reg-to-script) ; nsfont.m 659(defvar ns-reg-to-script) ; nsfont.m
672 660
673;; This maps font registries (not exposed by NS APIs for font selection) to 661;; This maps font registries (not exposed by NS APIs for font selection) to
@@ -914,6 +902,16 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
914 ;; PENDING: not needed? 902 ;; PENDING: not needed?
915 (setq command-line-args (x-handle-args command-line-args)) 903 (setq command-line-args (x-handle-args command-line-args))
916 904
905 ;; Setup the default fontset.
906 (create-default-fontset)
907 ;; Create the standard fontset.
908 (condition-case err
909 (create-fontset-from-fontset-spec ns-standard-fontset-spec t)
910 (error (display-warning
911 'initialization
912 (format "Creation of the standard fontset failed: %s" err)
913 :error)))
914
917 (x-open-connection (system-name) nil t) 915 (x-open-connection (system-name) nil t)
918 916
919 (dolist (service (ns-list-services)) 917 (dolist (service (ns-list-services))
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index 224fb7c1442..95dab10101b 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -91,6 +91,9 @@
91(declare-function w32-send-sys-command "w32fns.c") 91(declare-function w32-send-sys-command "w32fns.c")
92(declare-function set-message-beep "w32fns.c") 92(declare-function set-message-beep "w32fns.c")
93 93
94(declare-function cygwin-convert-file-name-from-windows "cygw32.c"
95 (path &optional absolute_p))
96
94;; Conditional on new-fontset so bootstrapping works on non-GUI compiles 97;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
95(if (fboundp 'new-fontset) 98(if (fboundp 'new-fontset)
96 (require 'fontset)) 99 (require 'fontset))
@@ -105,7 +108,7 @@
105 108
106(defun w32-handle-dropped-file (window file-name) 109(defun w32-handle-dropped-file (window file-name)
107 (let ((f (if (eq system-type 'cygwin) 110 (let ((f (if (eq system-type 'cygwin)
108 (cygwin-convert-path-from-windows file-name t) 111 (cygwin-convert-file-name-from-windows file-name t)
109 (subst-char-in-string ?\\ ?/ file-name))) 112 (subst-char-in-string ?\\ ?/ file-name)))
110 (coding (or file-name-coding-system 113 (coding (or file-name-coding-system
111 default-file-name-coding-system))) 114 default-file-name-coding-system)))
@@ -116,7 +119,11 @@
116 "/") 119 "/")
117 "/"))) 120 "/")))
118 (dnd-handle-one-url window 'private 121 (dnd-handle-one-url window 'private
119 (concat "file://" file-name))) 122 (concat
123 (if (eq system-type 'cygwin)
124 "file://"
125 "file:")
126 file-name)))
120 127
121(defun w32-drag-n-drop (event &optional new-frame) 128(defun w32-drag-n-drop (event &optional new-frame)
122 "Edit the files listed in the drag-n-drop EVENT. 129 "Edit the files listed in the drag-n-drop EVENT.
diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el
index d50aadef25b..7130e1c9cee 100644
--- a/lisp/textmodes/css-mode.el
+++ b/lisp/textmodes/css-mode.el
@@ -266,22 +266,22 @@
266;;;###autoload 266;;;###autoload
267(define-derived-mode css-mode fundamental-mode "CSS" 267(define-derived-mode css-mode fundamental-mode "CSS"
268 "Major mode to edit Cascading Style Sheets." 268 "Major mode to edit Cascading Style Sheets."
269 (set (make-local-variable 'font-lock-defaults) css-font-lock-defaults) 269 (setq-local font-lock-defaults css-font-lock-defaults)
270 (set (make-local-variable 'comment-start) "/*") 270 (setq-local comment-start "/*")
271 (set (make-local-variable 'comment-start-skip) "/\\*+[ \t]*") 271 (setq-local comment-start-skip "/\\*+[ \t]*")
272 (set (make-local-variable 'comment-end) "*/") 272 (setq-local comment-end "*/")
273 (set (make-local-variable 'comment-end-skip) "[ \t]*\\*+/") 273 (setq-local comment-end-skip "[ \t]*\\*+/")
274 (set (make-local-variable 'forward-sexp-function) 'css-forward-sexp) 274 (setq-local forward-sexp-function 'css-forward-sexp)
275 (set (make-local-variable 'parse-sexp-ignore-comments) t) 275 (setq-local parse-sexp-ignore-comments t)
276 (set (make-local-variable 'indent-line-function) 'css-indent-line) 276 (setq-local indent-line-function 'css-indent-line)
277 (set (make-local-variable 'fill-paragraph-function) 277 (setq-local fill-paragraph-function 'css-fill-paragraph)
278 'css-fill-paragraph) 278 (setq-local add-log-current-defun-function #'css-current-defun-name)
279 (when css-electric-keys 279 (when css-electric-keys
280 (let ((fc (make-char-table 'auto-fill-chars))) 280 (let ((fc (make-char-table 'auto-fill-chars)))
281 (set-char-table-parent fc auto-fill-chars) 281 (set-char-table-parent fc auto-fill-chars)
282 (dolist (c css-electric-keys) 282 (dolist (c css-electric-keys)
283 (aset fc c 'indent-according-to-mode)) 283 (aset fc c 'indent-according-to-mode))
284 (set (make-local-variable 'auto-fill-chars) fc)))) 284 (setq-local auto-fill-chars fc))))
285 285
286(defvar comment-continue) 286(defvar comment-continue)
287 287
@@ -481,5 +481,15 @@
481 (save-excursion (indent-line-to indent)) 481 (save-excursion (indent-line-to indent))
482 (indent-line-to indent))))) 482 (indent-line-to indent)))))
483 483
484(defun css-current-defun-name ()
485 "Return the name of the CSS section at point, or nil."
486 (save-excursion
487 (let ((max (max (point-min) (- (point) 1600)))) ; approx 20 lines back
488 (when (search-backward "{" max t)
489 (skip-chars-backward " \t\r\n")
490 (beginning-of-line)
491 (if (looking-at "^[ \t]*\\([^{\r\n]*[^ {\t\r\n]\\)")
492 (match-string-no-properties 1))))))
493
484(provide 'css-mode) 494(provide 'css-mode)
485;;; css-mode.el ends here 495;;; css-mode.el ends here
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el
index d0e90c99516..86a1736783d 100644
--- a/lisp/textmodes/fill.el
+++ b/lisp/textmodes/fill.el
@@ -721,7 +721,11 @@ space does not end a sentence, so don't break a line there."
721 (move-to-column (current-fill-column)) 721 (move-to-column (current-fill-column))
722 (if (when (< (point) to) 722 (if (when (< (point) to)
723 ;; Find the position where we'll break the line. 723 ;; Find the position where we'll break the line.
724 (forward-char 1) ;Use an immediately following space, if any. 724 ;; Use an immediately following space, if any.
725 ;; However, note that `move-to-column' may overshoot
726 ;; if there are wide characters (Bug#3234).
727 (unless (> (current-column) (current-fill-column))
728 (forward-char 1))
725 (fill-move-to-break-point linebeg) 729 (fill-move-to-break-point linebeg)
726 ;; Check again to see if we got to the end of 730 ;; Check again to see if we got to the end of
727 ;; the paragraph. 731 ;; the paragraph.
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index f667525397c..961fb1bad83 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -2649,11 +2649,8 @@ When asynchronous processes are not supported, `run' is always returned."
2649(defun ispell-start-process () 2649(defun ispell-start-process ()
2650 "Start the Ispell process, with support for no asynchronous processes. 2650 "Start the Ispell process, with support for no asynchronous processes.
2651Keeps argument list for future Ispell invocations for no async support." 2651Keeps argument list for future Ispell invocations for no async support."
2652 ;; Local dictionary becomes the global dictionary in use. 2652 ;; `ispell-current-dictionary' and `ispell-current-personal-dictionary'
2653 (setq ispell-current-dictionary 2653 ;; are properly set in `ispell-internal-change-dictionary'.
2654 (or ispell-local-dictionary ispell-dictionary))
2655 (setq ispell-current-personal-dictionary
2656 (or ispell-local-pdict ispell-personal-dictionary))
2657 (let* ((default-directory 2654 (let* ((default-directory
2658 (if (and (file-directory-p default-directory) 2655 (if (and (file-directory-p default-directory)
2659 (file-readable-p default-directory)) 2656 (file-readable-p default-directory))
@@ -2668,8 +2665,7 @@ Keeps argument list for future Ispell invocations for no async support."
2668 (list "-d" ispell-current-dictionary)) 2665 (list "-d" ispell-current-dictionary))
2669 orig-args 2666 orig-args
2670 (if ispell-current-personal-dictionary ; Use specified pers dict. 2667 (if ispell-current-personal-dictionary ; Use specified pers dict.
2671 (list "-p" 2668 (list "-p" ispell-current-personal-dictionary))
2672 (expand-file-name ispell-current-personal-dictionary)))
2673 ;; If we are using recent aspell or hunspell, make sure we use the 2669 ;; If we are using recent aspell or hunspell, make sure we use the
2674 ;; right encoding for communication. ispell or older aspell/hunspell 2670 ;; right encoding for communication. ispell or older aspell/hunspell
2675 ;; does not support this. 2671 ;; does not support this.
@@ -2706,6 +2702,9 @@ Keeps argument list for future Ispell invocations for no async support."
2706 (let* (;; Basename of dictionary used by the spell-checker 2702 (let* (;; Basename of dictionary used by the spell-checker
2707 (dict-bname (or (car (cdr (member "-d" (ispell-get-ispell-args)))) 2703 (dict-bname (or (car (cdr (member "-d" (ispell-get-ispell-args))))
2708 ispell-current-dictionary)) 2704 ispell-current-dictionary))
2705 ;; The directory where process was started.
2706 (current-ispell-directory default-directory)
2707 ;; The default directory for the process.
2709 ;; Use "~/" as default-directory unless using Ispell with per-dir 2708 ;; Use "~/" as default-directory unless using Ispell with per-dir
2710 ;; personal dictionaries and not in a minibuffer under XEmacs 2709 ;; personal dictionaries and not in a minibuffer under XEmacs
2711 (default-directory 2710 (default-directory
@@ -2896,13 +2895,15 @@ By just answering RET you can find out what the current dictionary is."
2896 "Update the dictionary and the personal dictionary used by Ispell. 2895 "Update the dictionary and the personal dictionary used by Ispell.
2897This may kill the Ispell process; if so, a new one will be started 2896This may kill the Ispell process; if so, a new one will be started
2898when needed." 2897when needed."
2899 (let ((dict (or ispell-local-dictionary ispell-dictionary)) 2898 (let* ((dict (or ispell-local-dictionary ispell-dictionary))
2900 (pdict (or ispell-local-pdict ispell-personal-dictionary))) 2899 (pdict (or ispell-local-pdict ispell-personal-dictionary))
2900 (expanded-pdict (if pdict (expand-file-name pdict))))
2901 (unless (and (equal ispell-current-dictionary dict) 2901 (unless (and (equal ispell-current-dictionary dict)
2902 (equal ispell-current-personal-dictionary pdict)) 2902 (equal ispell-current-personal-dictionary
2903 expanded-pdict))
2903 (ispell-kill-ispell t) 2904 (ispell-kill-ispell t)
2904 (setq ispell-current-dictionary dict 2905 (setq ispell-current-dictionary dict
2905 ispell-current-personal-dictionary pdict)))) 2906 ispell-current-personal-dictionary expanded-pdict))))
2906 2907
2907;; Avoid error messages when compiling for these dynamic variables. 2908;; Avoid error messages when compiling for these dynamic variables.
2908(defvar ispell-start) 2909(defvar ispell-start)
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index 791b5d7b945..7169e70d6c4 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -251,7 +251,7 @@ of master file."
251 ;; the next parsing iteration. 251 ;; the next parsing iteration.
252 (when (eq (char-before) ?\\) (backward-char)) 252 (when (eq (char-before) ?\\) (backward-char))
253 ;; Insert in List 253 ;; Insert in List
254 (setq toc-entry (reftex-section-info file)) 254 (setq toc-entry (funcall reftex-section-info-function file))
255 (when toc-entry 255 (when toc-entry
256 ;; It can happen that section info returns nil 256 ;; It can happen that section info returns nil
257 (setq level (nth 5 toc-entry)) 257 (setq level (nth 5 toc-entry))
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 4f73322d3f5..eec15be4d83 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -785,7 +785,7 @@ PRO-OR-DE is assumed to be dynamically scoped into this function."
785 (marker (nth 4 data))) 785 (marker (nth 4 data)))
786 (with-current-buffer (marker-buffer marker) 786 (with-current-buffer (marker-buffer marker)
787 (goto-char (marker-position marker)) 787 (goto-char (marker-position marker))
788 (if (looking-at (concat "\\([ \t]*\\\\\\)" (regexp-quote name))) 788 (if (looking-at (concat "\\([ \t]*" reftex-section-pre-regexp "\\)" (regexp-quote name)))
789 (replace-match (concat "\\1" newname)) 789 (replace-match (concat "\\1" newname))
790 (error "Fatal error during %smotion" pro-or-de))))) 790 (error "Fatal error during %smotion" pro-or-de)))))
791 791
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index bdee0fcf1d4..dfbeda38fd9 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -301,7 +301,9 @@ on the menu bar.
301 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib) 301 (modify-syntax-entry ?\' "." reftex-syntax-table-for-bib)
302 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib) 302 (modify-syntax-entry ?\" "." reftex-syntax-table-for-bib)
303 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib) 303 (modify-syntax-entry ?\[ "." reftex-syntax-table-for-bib)
304 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)) 304 (modify-syntax-entry ?\] "." reftex-syntax-table-for-bib)
305
306 (run-hooks 'reftex-mode-hook))
305 ;; Mode was turned off 307 ;; Mode was turned off
306 (easy-menu-remove reftex-mode-menu))) 308 (easy-menu-remove reftex-mode-menu)))
307 309
@@ -664,6 +666,16 @@ will deactivate it."
664(defvar reftex-find-label-regexp-format nil) 666(defvar reftex-find-label-regexp-format nil)
665(defvar reftex-find-label-regexp-format2 nil) 667(defvar reftex-find-label-regexp-format2 nil)
666 668
669;; Constants for making RefTeX open to Texinfo hooking
670(defvar reftex-section-pre-regexp "\\\\")
671;; Including `\' as a character to be matched at the end of the regexp
672;; will allow stuff like \begin{foo}\label{bar} to be matched. This
673;; will make the parser to advance one char too much. Therefore
674;; `reftex-parse-from-file' will step one char back if a section is
675;; found.
676(defvar reftex-section-post-regexp "\\*?\\(\\[[^]]*\\]\\)?[[{ \t\r\n\\]")
677(defvar reftex-section-info-function 'reftex-section-info)
678
667(defvar reftex-memory nil 679(defvar reftex-memory nil
668 "Memorizes old variable values to indicate changes in these variables.") 680 "Memorizes old variable values to indicate changes in these variables.")
669 681
@@ -1083,16 +1095,10 @@ This enforces rescanning the buffer on next use."
1083 reftex-include-file-commands "\\|") 1095 reftex-include-file-commands "\\|")
1084 "\\)[{ \t]+\\([^} \t\n\r]+\\)")) 1096 "\\)[{ \t]+\\([^} \t\n\r]+\\)"))
1085 (section-re 1097 (section-re
1086 ;; Including `\' as a character to be matched at the end 1098 (concat wbol reftex-section-pre-regexp "\\("
1087 ;; of the regexp will allow stuff like
1088 ;; \begin{foo}\label{bar} to be matched. This will make
1089 ;; the parser to advance one char too much. Therefore
1090 ;; `reftex-parse-from-file' will step one char back if a
1091 ;; section is found.
1092 (concat wbol "\\\\\\("
1093 (mapconcat (lambda (x) (regexp-quote (car x))) 1099 (mapconcat (lambda (x) (regexp-quote (car x)))
1094 reftex-section-levels-all "\\|") 1100 reftex-section-levels-all "\\|")
1095 "\\)\\*?\\(\\[[^]]*\\]\\)?[[{ \t\r\n\\]")) 1101 "\\)" reftex-section-post-regexp))
1096 (appendix-re (concat wbol "\\(\\\\appendix\\)")) 1102 (appendix-re (concat wbol "\\(\\\\appendix\\)"))
1097 (macro-re 1103 (macro-re
1098 (if macros-with-labels 1104 (if macros-with-labels
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index 46c65b25b37..97faa3afb36 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -463,47 +463,39 @@ Do \\[describe-key] on the following bindings to discover what they do.
463 ;; A start or end tag by itself on a line separates a paragraph. 463 ;; A start or end tag by itself on a line separates a paragraph.
464 ;; This is desirable because SGML discards a newline that appears 464 ;; This is desirable because SGML discards a newline that appears
465 ;; immediately after a start tag or immediately before an end tag. 465 ;; immediately after a start tag or immediately before an end tag.
466 (set (make-local-variable 'paragraph-start) (concat "[ \t]*$\\|\ 466 (setq-local paragraph-start (concat "[ \t]*$\\|\
467\[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>")) 467\[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
468 (set (make-local-variable 'paragraph-separate) 468 (setq-local paragraph-separate (concat paragraph-start "$"))
469 (concat paragraph-start "$")) 469 (setq-local adaptive-fill-regexp "[ \t]*")
470 (set (make-local-variable 'adaptive-fill-regexp) "[ \t]*")
471 (add-hook 'fill-nobreak-predicate 'sgml-fill-nobreak nil t) 470 (add-hook 'fill-nobreak-predicate 'sgml-fill-nobreak nil t)
472 (set (make-local-variable 'indent-line-function) 'sgml-indent-line) 471 (setq-local indent-line-function 'sgml-indent-line)
473 (set (make-local-variable 'comment-start) "<!-- ") 472 (setq-local comment-start "<!-- ")
474 (set (make-local-variable 'comment-end) " -->") 473 (setq-local comment-end " -->")
475 (set (make-local-variable 'comment-indent-function) 'sgml-comment-indent) 474 (setq-local comment-indent-function 'sgml-comment-indent)
476 (set (make-local-variable 'comment-line-break-function) 475 (setq-local comment-line-break-function 'sgml-comment-indent-new-line)
477 'sgml-comment-indent-new-line) 476 (setq-local skeleton-further-elements '((completion-ignore-case t)))
478 (set (make-local-variable 'skeleton-further-elements) 477 (setq-local skeleton-end-hook
479 '((completion-ignore-case t))) 478 (lambda ()
480 (set (make-local-variable 'skeleton-end-hook) 479 (or (eolp)
481 (lambda () 480 (not (or (eq v2 '\n) (eq (car-safe v2) '\n)))
482 (or (eolp) 481 (newline-and-indent))))
483 (not (or (eq v2 '\n) (eq (car-safe v2) '\n))) 482 (setq font-lock-defaults '((sgml-font-lock-keywords
484 (newline-and-indent)))) 483 sgml-font-lock-keywords-1
485 (set (make-local-variable 'font-lock-defaults) 484 sgml-font-lock-keywords-2)
486 '((sgml-font-lock-keywords 485 nil t))
487 sgml-font-lock-keywords-1 486 (setq-local syntax-propertize-function sgml-syntax-propertize-function)
488 sgml-font-lock-keywords-2) 487 (setq-local facemenu-add-face-function 'sgml-mode-facemenu-add-face-function)
489 nil t)) 488 (setq-local sgml-xml-mode (sgml-xml-guess))
490 (set (make-local-variable 'syntax-propertize-function) 489 (unless sgml-xml-mode
491 sgml-syntax-propertize-function) 490 (setq-local skeleton-transformation-function sgml-transformation-function))
492 (set (make-local-variable 'facemenu-add-face-function)
493 'sgml-mode-facemenu-add-face-function)
494 (set (make-local-variable 'sgml-xml-mode) (sgml-xml-guess))
495 (if sgml-xml-mode
496 ()
497 (set (make-local-variable 'skeleton-transformation-function)
498 sgml-transformation-function))
499 ;; This will allow existing comments within declarations to be 491 ;; This will allow existing comments within declarations to be
500 ;; recognized. 492 ;; recognized.
501 ;; I can't find a clear description of SGML/XML comments, but it seems that 493 ;; I can't find a clear description of SGML/XML comments, but it seems that
502 ;; the only reliable ones are <!-- ... --> although it's not clear what 494 ;; the only reliable ones are <!-- ... --> although it's not clear what
503 ;; "..." can contain. It used to accept -- ... -- as well, but that was 495 ;; "..." can contain. It used to accept -- ... -- as well, but that was
504 ;; apparently a mistake. 496 ;; apparently a mistake.
505 (set (make-local-variable 'comment-start-skip) "<!--[ \t]*") 497 (setq-local comment-start-skip "<!--[ \t]*")
506 (set (make-local-variable 'comment-end-skip) "[ \t]*--[ \t\n]*>") 498 (setq-local comment-end-skip "[ \t]*--[ \t\n]*>")
507 ;; This definition has an HTML leaning but probably fits well for other modes. 499 ;; This definition has an HTML leaning but probably fits well for other modes.
508 (setq imenu-generic-expression 500 (setq imenu-generic-expression
509 `((nil 501 `((nil
@@ -671,13 +663,13 @@ in your `.emacs':
671 (if (eq v2 t) (setq v2 nil)) 663 (if (eq v2 t) (setq v2 nil))
672 ;; We use `identity' to prevent skeleton from passing 664 ;; We use `identity' to prevent skeleton from passing
673 ;; `str' through `skeleton-transformation-function' a second time. 665 ;; `str' through `skeleton-transformation-function' a second time.
674 '(("") v2 _ v2 "</" (identity ',str) ?>)) 666 '(("") v2 _ v2 "</" (identity ',str) ?> >))
675 ((eq (car v2) t) 667 ((eq (car v2) t)
676 (cons '("") (cdr v2))) 668 (cons '("") (cdr v2)))
677 (t 669 (t
678 (append '(("") (car v2)) 670 (append '(("") (car v2))
679 (cdr v2) 671 (cdr v2)
680 '(resume: (car v2) _ "</" (identity ',str) ?>)))))) 672 '(resume: (car v2) _ "</" (identity ',str) ?> >))))))
681 673
682(autoload 'skeleton-read "skeleton") 674(autoload 'skeleton-read "skeleton")
683 675
@@ -982,10 +974,10 @@ With prefix argument ARG, repeat this ARG times."
982 (unwind-protect 974 (unwind-protect
983 (save-excursion 975 (save-excursion
984 (goto-char (point-min)) 976 (goto-char (point-min))
985 (if (set (make-local-variable 'sgml-tags-invisible) 977 (if (setq-local sgml-tags-invisible
986 (if arg 978 (if arg
987 (>= (prefix-numeric-value arg) 0) 979 (>= (prefix-numeric-value arg) 0)
988 (not sgml-tags-invisible))) 980 (not sgml-tags-invisible)))
989 (while (re-search-forward sgml-tag-name-re nil t) 981 (while (re-search-forward sgml-tag-name-re nil t)
990 (setq string 982 (setq string
991 (cdr (assq (intern-soft (downcase (match-string 1))) 983 (cdr (assq (intern-soft (downcase (match-string 1)))
@@ -1564,8 +1556,7 @@ Add this to `sgml-mode-hook' for convenience."
1564 (goto-char (point-min)) 1556 (goto-char (point-min))
1565 (if (re-search-forward "^\\([ \t]+\\)<" 500 'noerror) 1557 (if (re-search-forward "^\\([ \t]+\\)<" 500 'noerror)
1566 (progn 1558 (progn
1567 (set (make-local-variable 'sgml-basic-offset) 1559 (setq-local sgml-basic-offset (1- (current-column)))
1568 (1- (current-column)))
1569 (message "Guessed sgml-basic-offset = %d" 1560 (message "Guessed sgml-basic-offset = %d"
1570 sgml-basic-offset) 1561 sgml-basic-offset)
1571 )))) 1562 ))))
@@ -1941,6 +1932,19 @@ This takes effect when first loading the library.")
1941(defvar outline-heading-end-regexp) 1932(defvar outline-heading-end-regexp)
1942(defvar outline-level) 1933(defvar outline-level)
1943 1934
1935(defun html-current-defun-name ()
1936 "Return the name of the last HTML title or heading, or nil."
1937 (save-excursion
1938 (if (re-search-backward
1939 (concat
1940 "<[ \t\r\n]*"
1941 "\\(?:[hH][0-6]\\|title\\|TITLE\\|Title\\)"
1942 "[^>]*>"
1943 "[ \t\r\n]*"
1944 "\\([^<\r\n]*[^ <\t\r\n]+\\)")
1945 nil t)
1946 (match-string-no-properties 1))))
1947
1944 1948
1945;;;###autoload 1949;;;###autoload
1946(define-derived-mode html-mode sgml-mode '(sgml-xml-mode "XHTML" "HTML") 1950(define-derived-mode html-mode sgml-mode '(sgml-xml-mode "XHTML" "HTML")
@@ -1979,33 +1983,29 @@ To work around that, do:
1979 (eval-after-load \"sgml-mode\" '(aset sgml-char-names ?' nil)) 1983 (eval-after-load \"sgml-mode\" '(aset sgml-char-names ?' nil))
1980 1984
1981\\{html-mode-map}" 1985\\{html-mode-map}"
1982 (set (make-local-variable 'sgml-display-text) html-display-text) 1986 (setq-local sgml-display-text html-display-text)
1983 (set (make-local-variable 'sgml-tag-face-alist) html-tag-face-alist) 1987 (setq-local sgml-tag-face-alist html-tag-face-alist)
1984 (make-local-variable 'sgml-tag-alist) 1988 (setq-local sgml-tag-alist html-tag-alist)
1985 (make-local-variable 'sgml-face-tag-alist) 1989 (setq-local sgml-face-tag-alist html-face-tag-alist)
1986 (make-local-variable 'sgml-tag-help) 1990 (setq-local sgml-tag-help html-tag-help)
1987 (make-local-variable 'outline-regexp) 1991 (setq-local outline-regexp "^.*<[Hh][1-6]\\>")
1988 (make-local-variable 'outline-heading-end-regexp) 1992 (setq-local outline-heading-end-regexp "</[Hh][1-6]>")
1989 (make-local-variable 'outline-level) 1993 (setq-local outline-level
1990 (make-local-variable 'sentence-end-base) 1994 (lambda () (char-before (match-end 0))))
1991 (setq sentence-end-base "[.?!][]\"'”)}]*\\(<[^>]*>\\)*" 1995 (setq-local add-log-current-defun-function #'html-current-defun-name)
1992 sgml-tag-alist html-tag-alist 1996 (setq-local sentence-end-base "[.?!][]\"'”)}]*\\(<[^>]*>\\)*")
1993 sgml-face-tag-alist html-face-tag-alist 1997
1994 sgml-tag-help html-tag-help
1995 outline-regexp "^.*<[Hh][1-6]\\>"
1996 outline-heading-end-regexp "</[Hh][1-6]>"
1997 outline-level (lambda ()
1998 (char-before (match-end 0))))
1999 (setq imenu-create-index-function 'html-imenu-index) 1998 (setq imenu-create-index-function 'html-imenu-index)
2000 (set (make-local-variable 'sgml-empty-tags) 1999
2001 ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd', 2000 (setq-local sgml-empty-tags
2002 ;; plus manual addition of "wbr". 2001 ;; From HTML-4.01's loose.dtd, parsed with
2003 '("area" "base" "basefont" "br" "col" "frame" "hr" "img" "input" 2002 ;; `sgml-parse-dtd', plus manual addition of "wbr".
2004 "isindex" "link" "meta" "param" "wbr")) 2003 '("area" "base" "basefont" "br" "col" "frame" "hr" "img" "input"
2005 (set (make-local-variable 'sgml-unclosed-tags) 2004 "isindex" "link" "meta" "param" "wbr"))
2006 ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd'. 2005 (setq-local sgml-unclosed-tags
2007 '("body" "colgroup" "dd" "dt" "head" "html" "li" "option" 2006 ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd'.
2008 "p" "tbody" "td" "tfoot" "th" "thead" "tr")) 2007 '("body" "colgroup" "dd" "dt" "head" "html" "li" "option"
2008 "p" "tbody" "td" "tfoot" "th" "thead" "tr"))
2009 ;; It's for the user to decide if it defeats it or not -stef 2009 ;; It's for the user to decide if it defeats it or not -stef
2010 ;; (make-local-variable 'imenu-sort-function) 2010 ;; (make-local-variable 'imenu-sort-function)
2011 ;; (setq imenu-sort-function nil) ; sorting the menu defeats the purpose 2011 ;; (setq imenu-sort-function nil) ; sorting the menu defeats the purpose
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 3d9f88a43c9..cbfc746dc56 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -1570,8 +1570,7 @@ results.
1570 1570
1571Inside a table cell has a special keymap. 1571Inside a table cell has a special keymap.
1572 1572
1573\\{table-cell-map} 1573\\{table-cell-map}"
1574"
1575 (interactive 1574 (interactive
1576 (progn 1575 (progn
1577 (barf-if-buffer-read-only) 1576 (barf-if-buffer-read-only)
@@ -1583,41 +1582,47 @@ Inside a table cell has a special keymap.
1583 ("Cell width(s)" . table-cell-width-history) 1582 ("Cell width(s)" . table-cell-width-history)
1584 ("Cell height(s)" . table-cell-height-history))))) 1583 ("Cell height(s)" . table-cell-height-history)))))
1585 (table--make-cell-map) 1584 (table--make-cell-map)
1586 ;; reform the arguments. 1585 ;; Reform the arguments.
1587 (if (null cell-width) (setq cell-width (car table-cell-width-history))) 1586 (if (null cell-width) (setq cell-width (car table-cell-width-history)))
1588 (if (null cell-height) (setq cell-height (car table-cell-height-history))) 1587 (if (null cell-height) (setq cell-height (car table-cell-height-history)))
1589 (if (stringp columns) (setq columns (string-to-number columns))) 1588 (if (stringp columns) (setq columns (string-to-number columns)))
1590 (if (stringp rows) (setq rows (string-to-number rows))) 1589 (if (stringp rows) (setq rows (string-to-number rows)))
1591 (if (stringp cell-width) (setq cell-width (table--string-to-number-list cell-width))) 1590 (if (stringp cell-width)
1592 (if (stringp cell-height) (setq cell-height (table--string-to-number-list cell-height))) 1591 (setq cell-width (table--string-to-number-list cell-width)))
1592 (if (stringp cell-height)
1593 (setq cell-height (table--string-to-number-list cell-height)))
1593 (if (numberp cell-width) (setq cell-width (cons cell-width nil))) 1594 (if (numberp cell-width) (setq cell-width (cons cell-width nil)))
1594 (if (numberp cell-height) (setq cell-height (cons cell-height nil))) 1595 (if (numberp cell-height) (setq cell-height (cons cell-height nil)))
1595 ;; test validity of the arguments. 1596 ;; Test validity of the arguments.
1596 (mapc (lambda (arg) 1597 (dolist (arg `((columns . ,columns)
1597 (let* ((value (symbol-value arg)) 1598 (rows . ,rows)
1598 (error-handler 1599 (cell-width . ,cell-width)
1599 (function (lambda () 1600 (cell-height . ,cell-height)))
1600 (error "%s must be a positive integer%s" arg 1601 (let* ((value (cdr arg))
1601 (if (listp value) " or a list of positive integers" "")))))) 1602 (error-handler
1602 (if (null value) (funcall error-handler)) 1603 (lambda ()
1603 (mapcar (function (lambda (arg1) 1604 (error "%s must be a positive integer%s" (car arg)
1604 (if (or (not (integerp arg1)) 1605 (if (listp value)
1605 (< arg1 1)) 1606 " or a list of positive integers" "")))))
1606 (funcall error-handler)))) 1607 (if (null value) (funcall error-handler))
1607 (if (listp value) value 1608 (dolist (arg1 (if (listp value) value
1608 (cons value nil))))) 1609 (cons value nil)))
1609 '(columns rows cell-width cell-height)) 1610 (if (or (not (integerp arg1))
1611 (< arg1 1))
1612 (funcall error-handler)))))
1610 (let ((orig-coord (table--get-coordinate)) 1613 (let ((orig-coord (table--get-coordinate))
1611 (coord (table--get-coordinate)) 1614 (coord (table--get-coordinate))
1612 r i cw ch cell-str border-str) 1615 r i cw ch cell-str border-str)
1613 ;; prefabricate the building blocks border-str and cell-str. 1616 ;; Prefabricate the building blocks border-str and cell-str.
1614 (with-temp-buffer 1617 (with-temp-buffer
1615 ;; construct border-str 1618 ;; Construct border-str.
1616 (insert table-cell-intersection-char) 1619 (insert table-cell-intersection-char)
1617 (setq cw cell-width) 1620 (setq cw cell-width)
1618 (setq i 0) 1621 (setq i 0)
1619 (while (< i columns) 1622 (while (< i columns)
1620 (insert (make-string (car cw) (string-to-char table-cell-horizontal-chars)) table-cell-intersection-char) 1623 (insert (make-string (car cw)
1624 (string-to-char table-cell-horizontal-chars))
1625 table-cell-intersection-char)
1621 (if (cdr cw) (setq cw (cdr cw))) 1626 (if (cdr cw) (setq cw (cdr cw)))
1622 (setq i (1+ i))) 1627 (setq i (1+ i)))
1623 (setq border-str (buffer-substring (point-min) (point-max))) 1628 (setq border-str (buffer-substring (point-min) (point-max)))
@@ -5210,7 +5215,7 @@ instead of the current buffer and returns the OBJECT."
5210 "Update cell face according to the current mode." 5215 "Update cell face according to the current mode."
5211 (if (featurep 'xemacs) 5216 (if (featurep 'xemacs)
5212 (set-face-property 'table-cell 'underline table-fixed-width-mode) 5217 (set-face-property 'table-cell 'underline table-fixed-width-mode)
5213 (set-face-inverse-video-p 'table-cell table-fixed-width-mode))) 5218 (set-face-inverse-video 'table-cell table-fixed-width-mode)))
5214 5219
5215(table--update-cell-face) 5220(table--update-cell-face)
5216 5221
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 062f43be57b..16689b1ad02 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -421,6 +421,17 @@ An alternative value is \" . \", if you use a font with a narrow period."
421 (if (looking-at latex-outline-regexp) 421 (if (looking-at latex-outline-regexp)
422 (1+ (or (cdr (assoc (match-string 1) latex-section-alist)) -1)) 422 (1+ (or (cdr (assoc (match-string 1) latex-section-alist)) -1))
423 1000)) 423 1000))
424
425(defun tex-current-defun-name ()
426 "Return the name of the TeX section/paragraph/chapter at point, or nil."
427 (save-excursion
428 (when (re-search-backward
429 "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
430 nil t)
431 (goto-char (match-beginning 0))
432 (buffer-substring-no-properties
433 (1+ (point)) ; without initial backslash
434 (line-end-position)))))
424 435
425;;;; 436;;;;
426;;;; Font-Lock support 437;;;; Font-Lock support
@@ -1062,10 +1073,10 @@ tex-show-queue-command
1062Entering Plain-tex mode runs the hook `text-mode-hook', then the hook 1073Entering Plain-tex mode runs the hook `text-mode-hook', then the hook
1063`tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the 1074`tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the
1064special subshell is initiated, the hook `tex-shell-hook' is run." 1075special subshell is initiated, the hook `tex-shell-hook' is run."
1065 (set (make-local-variable 'tex-command) tex-run-command) 1076 (setq-local tex-command tex-run-command)
1066 (set (make-local-variable 'tex-start-of-header) "%\\*\\*start of header") 1077 (setq-local tex-start-of-header "%\\*\\*start of header")
1067 (set (make-local-variable 'tex-end-of-header) "%\\*\\*end of header") 1078 (setq-local tex-end-of-header "%\\*\\*end of header")
1068 (set (make-local-variable 'tex-trailer) "\\bye\n")) 1079 (setq-local tex-trailer "\\bye\n"))
1069 1080
1070;;;###autoload 1081;;;###autoload
1071(define-derived-mode latex-mode tex-mode "LaTeX" 1082(define-derived-mode latex-mode tex-mode "LaTeX"
@@ -1108,11 +1119,10 @@ tex-show-queue-command
1108Entering Latex mode runs the hook `text-mode-hook', then 1119Entering Latex mode runs the hook `text-mode-hook', then
1109`tex-mode-hook', and finally `latex-mode-hook'. When the special 1120`tex-mode-hook', and finally `latex-mode-hook'. When the special
1110subshell is initiated, `tex-shell-hook' is run." 1121subshell is initiated, `tex-shell-hook' is run."
1111 (set (make-local-variable 'tex-command) latex-run-command) 1122 (setq-local tex-command latex-run-command)
1112 (set (make-local-variable 'tex-start-of-header) 1123 (setq-local tex-start-of-header "\\\\document\\(style\\|class\\)")
1113 "\\\\document\\(style\\|class\\)") 1124 (setq-local tex-end-of-header "\\\\begin\\s-*{document}")
1114 (set (make-local-variable 'tex-end-of-header) "\\\\begin\\s-*{document}") 1125 (setq-local tex-trailer "\\end{document}\n")
1115 (set (make-local-variable 'tex-trailer) "\\end{document}\n")
1116 ;; A line containing just $$ is treated as a paragraph separator. 1126 ;; A line containing just $$ is treated as a paragraph separator.
1117 ;; A line starting with $$ starts a paragraph, 1127 ;; A line starting with $$ starts a paragraph,
1118 ;; but does not separate paragraphs if it has more stuff on it. 1128 ;; but does not separate paragraphs if it has more stuff on it.
@@ -1138,18 +1148,17 @@ subshell is initiated, `tex-shell-hook' is run."
1138 "marginpar" "parbox" "caption")) 1148 "marginpar" "parbox" "caption"))
1139 "\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)" 1149 "\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)"
1140 "\\>\\)[ \t]*\\($\\|%\\)\\)")) 1150 "\\>\\)[ \t]*\\($\\|%\\)\\)"))
1141 (set (make-local-variable 'imenu-create-index-function) 1151 (setq-local imenu-create-index-function 'latex-imenu-create-index)
1142 'latex-imenu-create-index) 1152 (setq-local tex-face-alist tex-latex-face-alist)
1143 (set (make-local-variable 'tex-face-alist) tex-latex-face-alist)
1144 (add-hook 'fill-nobreak-predicate 'latex-fill-nobreak-predicate nil t) 1153 (add-hook 'fill-nobreak-predicate 'latex-fill-nobreak-predicate nil t)
1145 (set (make-local-variable 'indent-line-function) 'latex-indent) 1154 (setq-local indent-line-function 'latex-indent)
1146 (set (make-local-variable 'fill-indent-according-to-mode) t) 1155 (setq-local fill-indent-according-to-mode t)
1147 (add-hook 'completion-at-point-functions 1156 (add-hook 'completion-at-point-functions
1148 'latex-complete-data nil 'local) 1157 'latex-complete-data nil 'local)
1149 (set (make-local-variable 'outline-regexp) latex-outline-regexp) 1158 (setq-local outline-regexp latex-outline-regexp)
1150 (set (make-local-variable 'outline-level) 'latex-outline-level) 1159 (setq-local outline-level 'latex-outline-level)
1151 (set (make-local-variable 'forward-sexp-function) 'latex-forward-sexp) 1160 (setq-local forward-sexp-function 'latex-forward-sexp)
1152 (set (make-local-variable 'skeleton-end-hook) nil)) 1161 (setq-local skeleton-end-hook nil))
1153 1162
1154;;;###autoload 1163;;;###autoload
1155(define-derived-mode slitex-mode latex-mode "SliTeX" 1164(define-derived-mode slitex-mode latex-mode "SliTeX"
@@ -1198,39 +1207,36 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook
1198 1207
1199(defun tex-common-initialization () 1208(defun tex-common-initialization ()
1200 ;; Regexp isearch should accept newline and formfeed as whitespace. 1209 ;; Regexp isearch should accept newline and formfeed as whitespace.
1201 (set (make-local-variable 'search-whitespace-regexp) "[ \t\r\n\f]+") 1210 (setq-local search-whitespace-regexp "[ \t\r\n\f]+")
1202 ;; A line containing just $$ is treated as a paragraph separator. 1211 ;; A line containing just $$ is treated as a paragraph separator.
1203 (set (make-local-variable 'paragraph-start) 1212 (setq-local paragraph-start "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$")
1204 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$")
1205 ;; A line starting with $$ starts a paragraph, 1213 ;; A line starting with $$ starts a paragraph,
1206 ;; but does not separate paragraphs if it has more stuff on it. 1214 ;; but does not separate paragraphs if it has more stuff on it.
1207 (set (make-local-variable 'paragraph-separate) 1215 (setq-local paragraph-separate "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$")
1208 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$") 1216 (setq-local add-log-current-defun-function #'tex-current-defun-name)
1209 (set (make-local-variable 'comment-start) "%") 1217 (setq-local comment-start "%")
1210 (set (make-local-variable 'comment-add) 1) 1218 (setq-local comment-add 1)
1211 (set (make-local-variable 'comment-start-skip) 1219 (setq-local comment-start-skip
1212 "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)") 1220 "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
1213 (set (make-local-variable 'parse-sexp-ignore-comments) t) 1221 (setq-local parse-sexp-ignore-comments t)
1214 (set (make-local-variable 'compare-windows-whitespace) 1222 (setq-local compare-windows-whitespace 'tex-categorize-whitespace)
1215 'tex-categorize-whitespace) 1223 (setq-local facemenu-add-face-function 'tex-facemenu-add-face-function)
1216 (set (make-local-variable 'facemenu-add-face-function) 1224 (setq-local facemenu-end-add-face "}")
1217 'tex-facemenu-add-face-function) 1225 (setq-local facemenu-remove-face-function t)
1218 (set (make-local-variable 'facemenu-end-add-face) "}") 1226 (setq-local font-lock-defaults
1219 (set (make-local-variable 'facemenu-remove-face-function) t) 1227 '((tex-font-lock-keywords tex-font-lock-keywords-1
1220 (set (make-local-variable 'font-lock-defaults) 1228 tex-font-lock-keywords-2 tex-font-lock-keywords-3)
1221 '((tex-font-lock-keywords tex-font-lock-keywords-1 1229 nil nil nil nil
1222 tex-font-lock-keywords-2 tex-font-lock-keywords-3) 1230 ;; Who ever uses that anyway ???
1223 nil nil nil nil 1231 (font-lock-mark-block-function . mark-paragraph)
1224 ;; Who ever uses that anyway ??? 1232 (font-lock-syntactic-face-function
1225 (font-lock-mark-block-function . mark-paragraph) 1233 . tex-font-lock-syntactic-face-function)
1226 (font-lock-syntactic-face-function 1234 (font-lock-unfontify-region-function
1227 . tex-font-lock-syntactic-face-function) 1235 . tex-font-lock-unfontify-region)))
1228 (font-lock-unfontify-region-function 1236 (setq-local syntax-propertize-function
1229 . tex-font-lock-unfontify-region))) 1237 (syntax-propertize-rules latex-syntax-propertize-rules))
1230 (set (make-local-variable 'syntax-propertize-function)
1231 (syntax-propertize-rules latex-syntax-propertize-rules))
1232 ;; TABs in verbatim environments don't do what you think. 1238 ;; TABs in verbatim environments don't do what you think.
1233 (set (make-local-variable 'indent-tabs-mode) nil) 1239 (setq-local indent-tabs-mode nil)
1234 ;; Other vars that should be buffer-local. 1240 ;; Other vars that should be buffer-local.
1235 (make-local-variable 'tex-command) 1241 (make-local-variable 'tex-command)
1236 (make-local-variable 'tex-start-of-header) 1242 (make-local-variable 'tex-start-of-header)
@@ -1523,8 +1529,7 @@ Puts point on a blank line between them."
1523 (looking-at bibtex-reference-key)) 1529 (looking-at bibtex-reference-key))
1524 (push (match-string-no-properties 0) keys))))) 1530 (push (match-string-no-properties 0) keys)))))
1525 ;; Fill the cache. 1531 ;; Fill the cache.
1526 (set (make-local-variable 'latex-complete-bibtex-cache) 1532 (setq-local latex-complete-bibtex-cache (list files key keys)))
1527 (list files key keys)))
1528 (complete-with-action action keys key pred))))) 1533 (complete-with-action action keys key pred)))))
1529 1534
1530(defun latex-complete-envnames () 1535(defun latex-complete-envnames ()
@@ -1885,8 +1890,7 @@ Mark is left at original location."
1885;; The utility functions: 1890;; The utility functions:
1886 1891
1887(define-derived-mode tex-shell shell-mode "TeX-Shell" 1892(define-derived-mode tex-shell shell-mode "TeX-Shell"
1888 (set (make-local-variable 'compilation-error-regexp-alist) 1893 (setq-local compilation-error-regexp-alist tex-error-regexp-alist)
1889 tex-error-regexp-alist)
1890 (compilation-shell-minor-mode t)) 1894 (compilation-shell-minor-mode t))
1891 1895
1892;;;###autoload 1896;;;###autoload
@@ -2099,8 +2103,7 @@ of the current buffer."
2099 (with-no-warnings 2103 (with-no-warnings
2100 (when (boundp 'TeX-master) 2104 (when (boundp 'TeX-master)
2101 (cond ((stringp TeX-master) 2105 (cond ((stringp TeX-master)
2102 (make-local-variable 'tex-main-file) 2106 (setq-local tex-main-file TeX-master))
2103 (setq tex-main-file TeX-master))
2104 ((and (eq TeX-master t) buffer-file-name) 2107 ((and (eq TeX-master t) buffer-file-name)
2105 (file-relative-name buffer-file-name))))) 2108 (file-relative-name buffer-file-name)))))
2106 ;; Try to guess the main file. 2109 ;; Try to guess the main file.
@@ -2870,8 +2873,8 @@ There might be text before point."
2870 (cons (car x) 'doctex-font-lock-syntactic-face-function)) 2873 (cons (car x) 'doctex-font-lock-syntactic-face-function))
2871 (_ x))) 2874 (_ x)))
2872 (cdr font-lock-defaults)))) 2875 (cdr font-lock-defaults))))
2873 (set (make-local-variable 'syntax-propertize-function) 2876 (setq-local syntax-propertize-function
2874 (syntax-propertize-rules doctex-syntax-propertize-rules))) 2877 (syntax-propertize-rules doctex-syntax-propertize-rules)))
2875 2878
2876(run-hooks 'tex-mode-load-hook) 2879(run-hooks 'tex-mode-load-hook)
2877 2880
diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el
index 4e7715dcea9..263d875a5f0 100644
--- a/lisp/textmodes/texinfo.el
+++ b/lisp/textmodes/texinfo.el
@@ -33,6 +33,15 @@
33;;; Code: 33;;; Code:
34 34
35(eval-when-compile (require 'tex-mode)) 35(eval-when-compile (require 'tex-mode))
36(declare-function tex-buffer "tex-mode" ())
37(declare-function tex-region "tex-mode" (beg end))
38(declare-function tex-send-command "tex-mode")
39(declare-function tex-recenter-output-buffer "tex-mode" (linenum))
40(declare-function tex-print "tex-mode" (&optional alt))
41(declare-function tex-view "tex-mode" ())
42(declare-function tex-shell-running "tex-mode" ())
43(declare-function tex-kill-job "tex-mode" ())
44
36(defvar outline-heading-alist) 45(defvar outline-heading-alist)
37 46
38(defgroup texinfo nil 47(defgroup texinfo nil
@@ -502,6 +511,12 @@ Subexpression 1 is what goes into the corresponding `@end' statement.")
502 (regexp-opt (texinfo-filter 2 texinfo-section-list)) 511 (regexp-opt (texinfo-filter 2 texinfo-section-list))
503 "Regular expression matching just the Texinfo chapter level headings.") 512 "Regular expression matching just the Texinfo chapter level headings.")
504 513
514(defun texinfo-current-defun-name ()
515 "Return the name of the Texinfo node at point, or nil."
516 (save-excursion
517 (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
518 (match-string-no-properties 1))))
519
505;;; Texinfo mode 520;;; Texinfo mode
506 521
507;;;###autoload 522;;;###autoload
@@ -571,66 +586,53 @@ be the first node in the file.
571 586
572Entering Texinfo mode calls the value of `text-mode-hook', and then the 587Entering Texinfo mode calls the value of `text-mode-hook', and then the
573value of `texinfo-mode-hook'." 588value of `texinfo-mode-hook'."
574 (set (make-local-variable 'page-delimiter) 589 (setq-local page-delimiter
575 (concat 590 (concat "^@node [ \t]*[Tt]op\\|^@\\("
576 "^@node [ \t]*[Tt]op\\|^@\\(" 591 texinfo-chapter-level-regexp
577 texinfo-chapter-level-regexp 592 "\\)\\>"))
578 "\\)\\>")) 593 (setq-local require-final-newline mode-require-final-newline)
579 (make-local-variable 'require-final-newline) 594 (setq-local indent-tabs-mode nil)
580 (setq require-final-newline mode-require-final-newline) 595 (setq-local paragraph-separate
581 (make-local-variable 'indent-tabs-mode) 596 (concat "\b\\|@[a-zA-Z]*[ \n]\\|"
582 (setq indent-tabs-mode nil) 597 paragraph-separate))
583 (make-local-variable 'paragraph-separate) 598 (setq-local paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|"
584 (setq paragraph-separate 599 paragraph-start))
585 (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-separate)) 600 (setq-local sentence-end-base "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'”)}]*")
586 (make-local-variable 'paragraph-start) 601 (setq-local fill-column 70)
587 (setq paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-start)) 602 (setq-local comment-start "@c ")
588 (set (make-local-variable 'sentence-end-base) 603 (setq-local comment-start-skip "@c +\\|@comment +")
589 "\\(@\\(end\\)?dots{}\\|[.?!]\\)[]\"'”)}]*") 604 (setq-local words-include-escapes t)
590 (make-local-variable 'fill-column) 605 (setq-local imenu-generic-expression texinfo-imenu-generic-expression)
591 (setq fill-column 70)
592 (make-local-variable 'comment-start)
593 (setq comment-start "@c ")
594 (make-local-variable 'comment-start-skip)
595 (setq comment-start-skip "@c +\\|@comment +")
596 (make-local-variable 'words-include-escapes)
597 (setq words-include-escapes t)
598 (make-local-variable 'imenu-generic-expression)
599 (setq imenu-generic-expression texinfo-imenu-generic-expression)
600 (setq imenu-case-fold-search nil) 606 (setq imenu-case-fold-search nil)
601 (make-local-variable 'font-lock-defaults)
602 (setq font-lock-defaults 607 (setq font-lock-defaults
603 '(texinfo-font-lock-keywords nil nil nil backward-paragraph)) 608 '(texinfo-font-lock-keywords nil nil nil backward-paragraph))
604 (set (make-local-variable 'syntax-propertize-function) 609 (setq-local syntax-propertize-function texinfo-syntax-propertize-function)
605 texinfo-syntax-propertize-function) 610 (setq-local parse-sexp-lookup-properties t)
606 (set (make-local-variable 'parse-sexp-lookup-properties) t) 611 (setq-local add-log-current-defun-function #'texinfo-current-defun-name)
607 612
608 ;; Outline settings. 613 ;; Outline settings.
609 (set (make-local-variable 'outline-heading-alist) 614 (setq-local outline-heading-alist
610 ;; We should merge outline-heading-alist and texinfo-section-list 615 ;; We should merge `outline-heading-alist' and
611 ;; but in the mean time, let's just generate one from the other. 616 ;; `texinfo-section-list'. But in the mean time, let's
612 (mapcar (lambda (x) (cons (concat "@" (car x)) (cadr x))) 617 ;; just generate one from the other.
613 texinfo-section-list)) 618 (mapcar (lambda (x) (cons (concat "@" (car x)) (cadr x)))
614 (set (make-local-variable 'outline-regexp) 619 texinfo-section-list))
615 (concat (regexp-opt (mapcar 'car outline-heading-alist) t) 620 (setq-local outline-regexp
616 "\\>")) 621 (concat (regexp-opt (mapcar 'car outline-heading-alist) t)
617 622 "\\>"))
618 (make-local-variable 'tex-start-of-header) 623
619 (setq tex-start-of-header "%\\*\\*start") 624 (setq-local tex-start-of-header "%\\*\\*start")
620 (make-local-variable 'tex-end-of-header) 625 (setq-local tex-end-of-header "%\\*\\*end")
621 (setq tex-end-of-header "%\\*\\*end") 626 (setq-local tex-first-line-header-regexp "^\\\\input")
622 (make-local-variable 'tex-first-line-header-regexp) 627 (setq-local tex-trailer "@bye\n")
623 (setq tex-first-line-header-regexp "^\\\\input") 628
624 (make-local-variable 'tex-trailer) 629 ;; Prevent filling certain lines, in addition to ones specified by
625 (setq tex-trailer "@bye\n") 630 ;; the user.
626 631 (setq-local auto-fill-inhibit-regexp
627 ;; Prevent filling certain lines, in addition to ones specified 632 (let ((prevent-filling "^@\\(def\\|multitable\\)"))
628 ;; by the user. 633 (if (null auto-fill-inhibit-regexp)
629 (let ((prevent-filling "^@\\(def\\|multitable\\)")) 634 prevent-filling
630 (set (make-local-variable 'auto-fill-inhibit-regexp) 635 (concat auto-fill-inhibit-regexp "\\|" prevent-filling)))))
631 (if (null auto-fill-inhibit-regexp)
632 prevent-filling
633 (concat auto-fill-inhibit-regexp "\\|" prevent-filling)))))
634 636
635 637
636 638
@@ -676,7 +678,8 @@ Puts point on a blank line between them."
676 (not (match-end 1))))) 678 (not (match-end 1)))))
677 679
678(defvar texinfo-enable-quote-macros "@\\(code\\|samp\\|kbd\\)\\>") 680(defvar texinfo-enable-quote-macros "@\\(code\\|samp\\|kbd\\)\\>")
679(defvar texinfo-enable-quote-envs '("example\\>" "lisp\\>")) 681(defvar texinfo-enable-quote-envs
682 '("example\\>" "smallexample\\>" "lisp\\>"))
680(defun texinfo-insert-quote (&optional arg) 683(defun texinfo-insert-quote (&optional arg)
681 "Insert the appropriate quote mark for Texinfo. 684 "Insert the appropriate quote mark for Texinfo.
682Usually inserts the value of `texinfo-open-quote' (normally ``) or 685Usually inserts the value of `texinfo-open-quote' (normally ``) or
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index 3619d499419..2b4794c9cc2 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -183,10 +183,9 @@ contains the name of the directory which the buffer is visiting.")
183;; Internal variables used free 183;; Internal variables used free
184(defvar uniquify-possibly-resolvable nil) 184(defvar uniquify-possibly-resolvable nil)
185 185
186(defvar uniquify-managed nil 186(defvar-local uniquify-managed nil
187 "Non-nil if the name of this buffer is managed by uniquify. 187 "Non-nil if the name of this buffer is managed by uniquify.
188It actually holds the list of `uniquify-item's corresponding to the conflict.") 188It actually holds the list of `uniquify-item's corresponding to the conflict.")
189(make-variable-buffer-local 'uniquify-managed)
190(put 'uniquify-managed 'permanent-local t) 189(put 'uniquify-managed 'permanent-local t)
191 190
192;; Used in desktop.el to save the non-uniquified buffer name 191;; Used in desktop.el to save the non-uniquified buffer name
@@ -464,27 +463,34 @@ For use on `kill-buffer-hook'."
464;; rename-buffer and create-file-buffer. (Setting find-file-hook isn't 463;; rename-buffer and create-file-buffer. (Setting find-file-hook isn't
465;; sufficient.) 464;; sufficient.)
466 465
467(defadvice rename-buffer (after rename-buffer-uniquify activate) 466(advice-add 'rename-buffer :around #'uniquify--rename-buffer-advice)
467(defun uniquify--rename-buffer-advice (rb-fun newname &optional unique &rest args)
468 "Uniquify buffer names with parts of directory name." 468 "Uniquify buffer names with parts of directory name."
469 (let ((retval (apply rb-fun newname unique args)))
469 (uniquify-maybe-rerationalize-w/o-cb) 470 (uniquify-maybe-rerationalize-w/o-cb)
470 (if (null (ad-get-arg 1)) ; no UNIQUE argument. 471 (if (null unique)
471 ;; Mark this buffer so it won't be renamed by uniquify. 472 ;; Mark this buffer so it won't be renamed by uniquify.
472 (setq uniquify-managed nil) 473 (setq uniquify-managed nil)
473 (when uniquify-buffer-name-style 474 (when uniquify-buffer-name-style
474 ;; Rerationalize w.r.t the new name. 475 ;; Rerationalize w.r.t the new name.
475 (uniquify-rationalize-file-buffer-names 476 (uniquify-rationalize-file-buffer-names
476 (ad-get-arg 0) 477 newname
477 (uniquify-buffer-file-name (current-buffer)) 478 (uniquify-buffer-file-name (current-buffer))
478 (current-buffer)) 479 (current-buffer))
479 (setq ad-return-value (buffer-name (current-buffer)))))) 480 (setq retval (buffer-name (current-buffer)))))
481 retval))
480 482
481(defadvice create-file-buffer (after create-file-buffer-uniquify activate) 483
484(advice-add 'create-file-buffer :around #'uniquify--create-file-buffer-advice)
485(defun uniquify--create-file-buffer-advice (cfb-fun filename &rest args)
482 "Uniquify buffer names with parts of directory name." 486 "Uniquify buffer names with parts of directory name."
487 (let ((retval (apply cfb-fun filename args)))
483 (if uniquify-buffer-name-style 488 (if uniquify-buffer-name-style
484 (let ((filename (expand-file-name (directory-file-name (ad-get-arg 0))))) 489 (let ((filename (expand-file-name (directory-file-name filename))))
485 (uniquify-rationalize-file-buffer-names 490 (uniquify-rationalize-file-buffer-names
486 (file-name-nondirectory filename) 491 (file-name-nondirectory filename)
487 (file-name-directory filename) ad-return-value)))) 492 (file-name-directory filename) retval)))
493 retval))
488 494
489;;; The End 495;;; The End
490 496
@@ -496,9 +502,8 @@ For use on `kill-buffer-hook'."
496 (set-buffer buf) 502 (set-buffer buf)
497 (when uniquify-managed 503 (when uniquify-managed
498 (push (cons buf (uniquify-item-base (car uniquify-managed))) buffers))) 504 (push (cons buf (uniquify-item-base (car uniquify-managed))) buffers)))
499 (dolist (fun '(rename-buffer create-file-buffer)) 505 (advice-remove 'rename-buffer #'uniquify--rename-buffer-advice)
500 (ad-remove-advice fun 'after (intern (concat (symbol-name fun) "-uniquify"))) 506 (advice-remove 'create-file-buffer #'uniquify--create-file-buffer-advice)
501 (ad-update fun))
502 (dolist (buf buffers) 507 (dolist (buf buffers)
503 (set-buffer (car buf)) 508 (set-buffer (car buf))
504 (rename-buffer (cdr buf) t)))) 509 (rename-buffer (cdr buf) t))))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 59222bcc957..fb4839358b9 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,8 @@
12012-12-03 Chong Yidong <cyd@gnu.org>
2
3 * url-misc.el (url-do-terminal-emulator): Use make-term instead of
4 terminal-emulator.
5
12012-10-13 Liam Stitt <stittl@cuug.ab.ca> (tiny change) 62012-10-13 Liam Stitt <stittl@cuug.ab.ca> (tiny change)
2 7
3 * url-vars.el (url-uncompressor-alist): 8 * url-vars.el (url-uncompressor-alist):
diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el
index dd521ccd690..8cf9cffdf6b 100644
--- a/lisp/url/url-misc.el
+++ b/lisp/url/url-misc.el
@@ -44,27 +44,21 @@
44 nil)) 44 nil))
45 45
46(defun url-do-terminal-emulator (type server port user) 46(defun url-do-terminal-emulator (type server port user)
47 (terminal-emulator 47 (switch-to-buffer
48 (generate-new-buffer (format "%s%s" (if user (concat user "@") "") server)) 48 (apply
49 (pcase type 49 'make-term
50 (`rlogin "rlogin") 50 (format "%s%s" (if user (concat user "@") "") server)
51 (`telnet "telnet") 51 (cond ((eq type 'rlogin) "rlogin")
52 (`tn3270 "tn3270") 52 ((eq type 'telnet) "telnet")
53 (_ 53 ((eq type 'tn3270) "tn3270")
54 (error "Unknown terminal emulator required: %s" type))) 54 (t (error "Unknown terminal emulator required: %s" type)))
55 (pcase type 55 nil
56 (`rlogin 56 (cond ((eq type 'rlogin)
57 (if user 57 (if user (list server "-l" user) (list server)))
58 (list server "-l" user) 58 ((eq type 'telnet)
59 (list server))) 59 (if port (list server port) (list server)))
60 (`telnet 60 ((eq type 'tn3270)
61 (if user (message "Please log in as user: %s" user)) 61 (list server))))))
62 (if port
63 (list server port)
64 (list server)))
65 (`tn3270
66 (if user (message "Please log in as user: %s" user))
67 (list server)))))
68 62
69;;;###autoload 63;;;###autoload
70(defun url-generic-emulator-loader (url) 64(defun url-generic-emulator-loader (url)
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index cb61a021251..2efabed5cd8 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -48,7 +48,7 @@
48 48
49(defun url-path-and-query (urlobj) 49(defun url-path-and-query (urlobj)
50 "Return the path and query components of URLOBJ. 50 "Return the path and query components of URLOBJ.
51These two components are store together in the FILENAME slot of 51These two components are stored together in the FILENAME slot of
52the object. The return value of this function is (PATH . QUERY), 52the object. The return value of this function is (PATH . QUERY),
53where each of PATH and QUERY are strings or nil." 53where each of PATH and QUERY are strings or nil."
54 (let ((name (url-filename urlobj)) 54 (let ((name (url-filename urlobj))
diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el
index 5a378df6513..0d2b82cb9a7 100644
--- a/lisp/vc/add-log.el
+++ b/lisp/vc/add-log.el
@@ -61,8 +61,9 @@
61;;;###autoload 61;;;###autoload
62(defcustom add-log-current-defun-function nil 62(defcustom add-log-current-defun-function nil
63 "If non-nil, function to guess name of surrounding function. 63 "If non-nil, function to guess name of surrounding function.
64It is used by `add-log-current-defun' in preference to built-in rules. 64It is called by `add-log-current-defun' with no argument, and
65Returns function's name as a string, or nil if outside a function." 65should return the function's name as a string, or nil if point is
66outside a function."
66 :type '(choice (const nil) function) 67 :type '(choice (const nil) function)
67 :group 'change-log) 68 :group 'change-log)
68 69
@@ -1118,21 +1119,6 @@ parentheses."
1118 :type 'regexp 1119 :type 'regexp
1119 :group 'change-log) 1120 :group 'change-log)
1120 1121
1121;;;###autoload
1122(defvar add-log-lisp-like-modes
1123 '(emacs-lisp-mode lisp-mode scheme-mode dsssl-mode lisp-interaction-mode)
1124 "Modes that look like Lisp to `add-log-current-defun'.")
1125
1126;;;###autoload
1127(defvar add-log-c-like-modes
1128 '(c-mode c++-mode c++-c-mode objc-mode)
1129 "Modes that look like C to `add-log-current-defun'.")
1130
1131;;;###autoload
1132(defvar add-log-tex-like-modes
1133 '(TeX-mode plain-TeX-mode LaTeX-mode tex-mode)
1134 "Modes that look like TeX to `add-log-current-defun'.")
1135
1136(declare-function c-cpp-define-name "cc-cmds" ()) 1122(declare-function c-cpp-define-name "cc-cmds" ())
1137(declare-function c-defun-name "cc-cmds" ()) 1123(declare-function c-defun-name "cc-cmds" ())
1138 1124
@@ -1152,75 +1138,21 @@ identifiers followed by `:' or `='. See variables
1152Has a preference of looking backwards." 1138Has a preference of looking backwards."
1153 (condition-case nil 1139 (condition-case nil
1154 (save-excursion 1140 (save-excursion
1155 (let ((location (point))) 1141 (if add-log-current-defun-function
1156 (cond (add-log-current-defun-function 1142 (funcall add-log-current-defun-function)
1157 (funcall add-log-current-defun-function)) 1143 ;; If all else fails, try heuristics
1158 ((apply 'derived-mode-p add-log-lisp-like-modes) 1144 (let (case-fold-search
1159 ;; If we are now precisely at the beginning of a defun, 1145 result)
1160 ;; make sure beginning-of-defun finds that one 1146 (end-of-line)
1161 ;; rather than the previous one. 1147 (when (re-search-backward add-log-current-defun-header-regexp
1162 (or (eobp) (forward-char 1)) 1148 (- (point) 10000) t)
1163 (beginning-of-defun) 1149 (setq result (or (match-string-no-properties 1)
1164 ;; Make sure we are really inside the defun found, 1150 (match-string-no-properties 0)))
1165 ;; not after it. 1151 ;; Strip whitespace away
1166 (when (and (looking-at "\\s(") 1152 (when (string-match "\\([^ \t\n\r\f].*[^ \t\n\r\f]\\)"
1167 (progn (end-of-defun) 1153 result)
1168 (< location (point))) 1154 (setq result (match-string-no-properties 1 result)))
1169 (progn (forward-sexp -1) 1155 result))))
1170 (>= location (point))))
1171 (if (looking-at "\\s(")
1172 (forward-char 1))
1173 ;; Skip the defining construct name, typically "defun"
1174 ;; or "defvar".
1175 (forward-sexp 1)
1176 ;; The second element is usually a symbol being defined.
1177 ;; If it is not, use the first symbol in it.
1178 (skip-chars-forward " \t\n'(")
1179 (buffer-substring-no-properties (point)
1180 (progn (forward-sexp 1)
1181 (point)))))
1182 ((apply 'derived-mode-p add-log-c-like-modes)
1183 (or (c-cpp-define-name)
1184 (c-defun-name)))
1185 ((apply #'derived-mode-p add-log-tex-like-modes)
1186 (if (re-search-backward
1187 "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)"
1188 nil t)
1189 (progn
1190 (goto-char (match-beginning 0))
1191 (buffer-substring-no-properties
1192 (1+ (point)) ; without initial backslash
1193 (line-end-position)))))
1194 ((derived-mode-p 'texinfo-mode)
1195 (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
1196 (match-string-no-properties 1)))
1197 ((derived-mode-p 'perl-mode 'cperl-mode)
1198 (if (re-search-backward "^sub[ \t]+\\([^({ \t\n]+\\)" nil t)
1199 (match-string-no-properties 1)))
1200 ;; Emacs's autoconf-mode installs its own
1201 ;; `add-log-current-defun-function'. This applies to
1202 ;; a different mode apparently for editing .m4
1203 ;; autoconf source.
1204 ((derived-mode-p 'autoconf-mode)
1205 (if (re-search-backward
1206 "^\\(\\(m4_\\)?define\\|A._DEFUN\\)(\\[?\\([A-Za-z0-9_]+\\)" nil t)
1207 (match-string-no-properties 3)))
1208 (t
1209 ;; If all else fails, try heuristics
1210 (let (case-fold-search
1211 result)
1212 (end-of-line)
1213 (when (re-search-backward
1214 add-log-current-defun-header-regexp
1215 (- (point) 10000)
1216 t)
1217 (setq result (or (match-string-no-properties 1)
1218 (match-string-no-properties 0)))
1219 ;; Strip whitespace away
1220 (when (string-match "\\([^ \t\n\r\f].*[^ \t\n\r\f]\\)"
1221 result)
1222 (setq result (match-string-no-properties 1 result)))
1223 result))))))
1224 (error nil))) 1156 (error nil)))
1225 1157
1226(defvar change-log-get-method-definition-md) 1158(defvar change-log-get-method-definition-md)
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 26c64ce2ad3..0c023b0f7f4 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -575,19 +575,21 @@ next hunk if TRY-HARDER is non-nil; otherwise signal an error."
575(easy-mmode-define-navigation 575(easy-mmode-define-navigation
576 diff-hunk diff-hunk-header-re "hunk" diff-end-of-hunk diff-restrict-view 576 diff-hunk diff-hunk-header-re "hunk" diff-end-of-hunk diff-restrict-view
577 (when diff-auto-refine-mode 577 (when diff-auto-refine-mode
578 (setq diff--auto-refine-data (cons (current-buffer) (point-marker))) 578 (unless (prog1 diff--auto-refine-data
579 (run-at-time 0.0 nil 579 (setq diff--auto-refine-data
580 (lambda () 580 (cons (current-buffer) (point-marker))))
581 (when diff--auto-refine-data 581 (run-at-time 0.0 nil
582 (let ((buffer (car diff--auto-refine-data)) 582 (lambda ()
583 (point (cdr diff--auto-refine-data))) 583 (when diff--auto-refine-data
584 (setq diff--auto-refine-data nil) 584 (let ((buffer (car diff--auto-refine-data))
585 (with-local-quit 585 (point (cdr diff--auto-refine-data)))
586 (when (buffer-live-p buffer) 586 (setq diff--auto-refine-data nil)
587 (with-current-buffer buffer 587 (with-local-quit
588 (save-excursion 588 (when (buffer-live-p buffer)
589 (goto-char point) 589 (with-current-buffer buffer
590 (diff-refine-hunk))))))))))) 590 (save-excursion
591 (goto-char point)
592 (diff-refine-hunk))))))))))))
591 593
592(easy-mmode-define-navigation 594(easy-mmode-define-navigation
593 diff-file diff-file-header-re "file" diff-end-of-file) 595 diff-file diff-file-header-re "file" diff-end-of-file)
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 5b31e625a00..aa7c9007200 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -453,52 +453,30 @@ one optional arguments, diff-number to refine.")
453 c-prev c-end) 453 c-prev c-end)
454 ;; else convert lines to points 454 ;; else convert lines to points
455 (ediff-with-current-buffer A-buffer 455 (ediff-with-current-buffer A-buffer
456 (let ((longlines-mode-val 456 (goto-char (or a-prev-pt shift-A (point-min)))
457 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 457 (forward-line (- a-begin a-prev))
458 ;; we must disable and then restore longlines-mode 458 (setq a-begin-pt (point))
459 (if (eq longlines-mode-val 1) 459 (forward-line (- a-end a-begin))
460 (longlines-mode 0)) 460 (setq a-end-pt (point)
461 (goto-char (or a-prev-pt shift-A (point-min))) 461 a-prev a-end
462 (forward-line (- a-begin a-prev)) 462 a-prev-pt a-end-pt))
463 (setq a-begin-pt (point))
464 (forward-line (- a-end a-begin))
465 (setq a-end-pt (point)
466 a-prev a-end
467 a-prev-pt a-end-pt)
468 (if (eq longlines-mode-val 1)
469 (longlines-mode longlines-mode-val))
470 ))
471 (ediff-with-current-buffer B-buffer 463 (ediff-with-current-buffer B-buffer
472 (let ((longlines-mode-val 464 (goto-char (or b-prev-pt shift-B (point-min)))
473 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 465 (forward-line (- b-begin b-prev))
474 (if (eq longlines-mode-val 1) 466 (setq b-begin-pt (point))
475 (longlines-mode 0)) 467 (forward-line (- b-end b-begin))
476 (goto-char (or b-prev-pt shift-B (point-min))) 468 (setq b-end-pt (point)
477 (forward-line (- b-begin b-prev)) 469 b-prev b-end
478 (setq b-begin-pt (point)) 470 b-prev-pt b-end-pt))
479 (forward-line (- b-end b-begin))
480 (setq b-end-pt (point)
481 b-prev b-end
482 b-prev-pt b-end-pt)
483 (if (eq longlines-mode-val 1)
484 (longlines-mode longlines-mode-val))
485 ))
486 (if (ediff-buffer-live-p C-buffer) 471 (if (ediff-buffer-live-p C-buffer)
487 (ediff-with-current-buffer C-buffer 472 (ediff-with-current-buffer C-buffer
488 (let ((longlines-mode-val 473 (goto-char (or c-prev-pt (point-min)))
489 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 474 (forward-line (- c-begin c-prev))
490 (if (eq longlines-mode-val 1) 475 (setq c-begin-pt (point))
491 (longlines-mode 0)) 476 (forward-line (- c-end c-begin))
492 (goto-char (or c-prev-pt (point-min))) 477 (setq c-end-pt (point)
493 (forward-line (- c-begin c-prev)) 478 c-prev c-end
494 (setq c-begin-pt (point)) 479 c-prev-pt c-end-pt)))
495 (forward-line (- c-end c-begin))
496 (setq c-end-pt (point)
497 c-prev c-end
498 c-prev-pt c-end-pt)
499 (if (eq longlines-mode-val 1)
500 (longlines-mode longlines-mode-val))
501 )))
502 (setq diff-list 480 (setq diff-list
503 (nconc 481 (nconc
504 diff-list 482 diff-list
@@ -1085,65 +1063,36 @@ delimiter regions"))
1085 c-prev c-end) 1063 c-prev c-end)
1086 ;; else convert lines to points 1064 ;; else convert lines to points
1087 (ediff-with-current-buffer A-buffer 1065 (ediff-with-current-buffer A-buffer
1088 (let ((longlines-mode-val 1066 (goto-char (or a-prev-pt shift-A (point-min)))
1089 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 1067 (forward-line (- a-begin a-prev))
1090 ;; we must disable and then restore longlines-mode 1068 (setq a-begin-pt (point))
1091 (if (eq longlines-mode-val 1) 1069 (forward-line (- a-end a-begin))
1092 (longlines-mode 0)) 1070 (setq a-end-pt (point)
1093 (goto-char (or a-prev-pt shift-A (point-min))) 1071 a-prev a-end
1094 (forward-line (- a-begin a-prev)) 1072 a-prev-pt a-end-pt))
1095 (setq a-begin-pt (point))
1096 (forward-line (- a-end a-begin))
1097 (setq a-end-pt (point)
1098 a-prev a-end
1099 a-prev-pt a-end-pt)
1100 (if (eq longlines-mode-val 1)
1101 (longlines-mode longlines-mode-val))
1102 ))
1103 (ediff-with-current-buffer B-buffer 1073 (ediff-with-current-buffer B-buffer
1104 (let ((longlines-mode-val 1074 (goto-char (or b-prev-pt shift-B (point-min)))
1105 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 1075 (forward-line (- b-begin b-prev))
1106 (if (eq longlines-mode-val 1) 1076 (setq b-begin-pt (point))
1107 (longlines-mode 0)) 1077 (forward-line (- b-end b-begin))
1108 (goto-char (or b-prev-pt shift-B (point-min))) 1078 (setq b-end-pt (point)
1109 (forward-line (- b-begin b-prev)) 1079 b-prev b-end
1110 (setq b-begin-pt (point)) 1080 b-prev-pt b-end-pt))
1111 (forward-line (- b-end b-begin))
1112 (setq b-end-pt (point)
1113 b-prev b-end
1114 b-prev-pt b-end-pt)
1115 (if (eq longlines-mode-val 1)
1116 (longlines-mode longlines-mode-val))
1117 ))
1118 (ediff-with-current-buffer C-buffer 1081 (ediff-with-current-buffer C-buffer
1119 (let ((longlines-mode-val 1082 (goto-char (or c-prev-pt shift-C (point-min)))
1120 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 1083 (forward-line (- c-begin c-prev))
1121 (if (eq longlines-mode-val 1) 1084 (setq c-begin-pt (point))
1122 (longlines-mode 0)) 1085 (forward-line (- c-end c-begin))
1123 (goto-char (or c-prev-pt shift-C (point-min))) 1086 (setq c-end-pt (point)
1124 (forward-line (- c-begin c-prev)) 1087 c-prev c-end
1125 (setq c-begin-pt (point)) 1088 c-prev-pt c-end-pt))
1126 (forward-line (- c-end c-begin))
1127 (setq c-end-pt (point)
1128 c-prev c-end
1129 c-prev-pt c-end-pt)
1130 (if (eq longlines-mode-val 1)
1131 (longlines-mode longlines-mode-val))
1132 ))
1133 (if (ediff-buffer-live-p anc-buffer) 1089 (if (ediff-buffer-live-p anc-buffer)
1134 (ediff-with-current-buffer anc-buffer 1090 (ediff-with-current-buffer anc-buffer
1135 (let ((longlines-mode-val 1091 (forward-line (- c-or-anc-begin anc-prev))
1136 (if (and (boundp 'longlines-mode) longlines-mode) 1 0))) 1092 (setq anc-begin-pt (point))
1137 (if (eq longlines-mode-val 1) 1093 (forward-line (- c-or-anc-end c-or-anc-begin))
1138 (longlines-mode 0)) 1094 (setq anc-end-pt (point)
1139 (forward-line (- c-or-anc-begin anc-prev)) 1095 anc-prev c-or-anc-end)))
1140 (setq anc-begin-pt (point))
1141 (forward-line (- c-or-anc-end c-or-anc-begin))
1142 (setq anc-end-pt (point)
1143 anc-prev c-or-anc-end)
1144 (if (eq longlines-mode-val 1)
1145 (longlines-mode longlines-mode-val))
1146 )))
1147 (setq diff-list 1096 (setq diff-list
1148 (nconc 1097 (nconc
1149 diff-list 1098 diff-list
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 455f48c50d3..a9df6fdee8d 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -930,6 +930,8 @@ If it is a file, return the corresponding cons for the file itself."
930 930
931(defvar use-vc-backend) ;; dynamically bound 931(defvar use-vc-backend) ;; dynamically bound
932 932
933;; Autoload cookie needed by desktop.el.
934;;;###autoload
933(define-derived-mode vc-dir-mode special-mode "VC dir" 935(define-derived-mode vc-dir-mode special-mode "VC dir"
934 "Major mode for VC directory buffers. 936 "Major mode for VC directory buffers.
935Marking/Unmarking key bindings and actions: 937Marking/Unmarking key bindings and actions:
@@ -967,6 +969,8 @@ the *vc-dir* buffer.
967 969
968\\{vc-dir-mode-map}" 970\\{vc-dir-mode-map}"
969 (set (make-local-variable 'vc-dir-backend) use-vc-backend) 971 (set (make-local-variable 'vc-dir-backend) use-vc-backend)
972 (set (make-local-variable 'desktop-save-buffer)
973 'vc-dir-desktop-buffer-misc-data)
970 (setq buffer-read-only t) 974 (setq buffer-read-only t)
971 (when (boundp 'tool-bar-map) 975 (when (boundp 'tool-bar-map)
972 (set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map)) 976 (set (make-local-variable 'tool-bar-map) vc-dir-tool-bar-map))
@@ -1288,6 +1292,31 @@ These are the commands available for use in the file status buffer:
1288 "Default absence of extra information returned for a file." 1292 "Default absence of extra information returned for a file."
1289 nil) 1293 nil)
1290 1294
1295
1296;;; Support for desktop.el (adapted from what dired.el does).
1297
1298(declare-function desktop-file-name "desktop" (filename dirname))
1299
1300(defun vc-dir-desktop-buffer-misc-data (dirname)
1301 "Auxiliary information to be saved in desktop file."
1302 (cons (desktop-file-name default-directory dirname) vc-dir-backend))
1303
1304(defun vc-dir-restore-desktop-buffer (_filename _buffername misc-data)
1305 "Restore a `vc-dir' buffer specified in a desktop file."
1306 (let ((dir (car misc-data))
1307 (backend (cdr misc-data)))
1308 (if (file-directory-p dir)
1309 (progn
1310 (vc-dir dir backend)
1311 (current-buffer))
1312 (message "Desktop: Directory %s no longer exists." dir)
1313 (when desktop-missing-file-warning (sit-for 1))
1314 nil)))
1315
1316(add-to-list 'desktop-buffer-mode-handlers
1317 '(vc-dir-mode . vc-dir-restore-desktop-buffer))
1318
1319
1291(provide 'vc-dir) 1320(provide 'vc-dir)
1292 1321
1293;;; vc-dir.el ends here 1322;;; vc-dir.el ends here
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 5d7cb366e82..08b48fa7b40 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1148,7 +1148,7 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
1148The difference to vc-do-command is that this function always invokes 1148The difference to vc-do-command is that this function always invokes
1149`vc-git-program'." 1149`vc-git-program'."
1150 (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program 1150 (apply 'vc-do-command (or buffer "*vc*") okstatus vc-git-program
1151 file-or-list flags)) 1151 file-or-list (cons "--no-pager" flags)))
1152 1152
1153(defun vc-git--empty-db-p () 1153(defun vc-git--empty-db-p ()
1154 "Check if the git db is empty (no commit done yet)." 1154 "Check if the git db is empty (no commit done yet)."
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index 727fb08e388..a240fdeb658 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -93,7 +93,7 @@
93;; - clear-headers () ?? 93;; - clear-headers () ??
94;; - delete-file (file) TEST IT 94;; - delete-file (file) TEST IT
95;; - rename-file (old new) OK 95;; - rename-file (old new) OK
96;; - find-file-hook () PROBABLY NOT NEEDED 96;; - find-file-hook () added for bug#10709
97 97
98;; 2) Implement Stefan Monnier's advice: 98;; 2) Implement Stefan Monnier's advice:
99;; vc-hg-registered and vc-hg-state 99;; vc-hg-registered and vc-hg-state
@@ -384,7 +384,7 @@ Optional arg REVISION is a revision to annotate from."
384 (let ((newrev (1+ (string-to-number rev))) 384 (let ((newrev (1+ (string-to-number rev)))
385 (tip-revision 385 (tip-revision
386 (with-temp-buffer 386 (with-temp-buffer
387 (vc-hg-command t 0 nil "tip") 387 (vc-hg-command t 0 nil "tip" "--style=default")
388 (goto-char (point-min)) 388 (goto-char (point-min))
389 (re-search-forward "^changeset:[ \t]*\\([0-9]+\\):") 389 (re-search-forward "^changeset:[ \t]*\\([0-9]+\\):")
390 (string-to-number (match-string-no-properties 1))))) 390 (string-to-number (match-string-no-properties 1)))))
@@ -464,6 +464,35 @@ REV is the revision to check out into WORKFILE."
464 (vc-hg-command t 0 file "cat" "-r" rev) 464 (vc-hg-command t 0 file "cat" "-r" rev)
465 (vc-hg-command t 0 file "cat"))))) 465 (vc-hg-command t 0 file "cat")))))
466 466
467(defun vc-hg-resolve-when-done ()
468 "Call \"hg resolve -m\" if the conflict markers have been removed."
469 (save-excursion
470 (goto-char (point-min))
471 (unless (re-search-forward "^<<<<<<< " nil t)
472 (vc-hg-command nil 0 buffer-file-name "resolve" "-m")
473 ;; Remove the hook so that it is not called multiple times.
474 (remove-hook 'after-save-hook 'vc-hg-resolve-when-done t))))
475
476(defun vc-hg-find-file-hook ()
477 (when (and buffer-file-name
478 (file-exists-p (concat buffer-file-name ".orig"))
479 ;; Hg does not seem to have a "conflict" status, eg
480 ;; hg http://bz.selenic.com/show_bug.cgi?id=2724
481 (memq (vc-file-getprop buffer-file-name 'vc-state)
482 '(edited conflict))
483 ;; Maybe go on to check that "hg resolve -l" says "U"?
484 ;; If "hg resolve -l" says there's a conflict but there are no
485 ;; conflict markers, it's not clear what we should do.
486 (save-excursion
487 (goto-char (point-min))
488 (re-search-forward "^<<<<<<< " nil t)))
489 ;; Hg may not recognize "conflict" as a state, but we can do better.
490 (vc-file-setprop buffer-file-name 'vc-state 'conflict)
491 (smerge-start-session)
492 (add-hook 'after-save-hook 'vc-hg-resolve-when-done nil t)
493 (message "There are unresolved conflicts in this file")))
494
495
467;; Modeled after the similar function in vc-bzr.el 496;; Modeled after the similar function in vc-bzr.el
468(defun vc-hg-workfile-unchanged-p (file) 497(defun vc-hg-workfile-unchanged-p (file)
469 (eq 'up-to-date (vc-hg-state file))) 498 (eq 'up-to-date (vc-hg-state file)))
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 07a292ae435..a5eb2932af8 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -107,10 +107,12 @@ control systems."
107 :type 'boolean 107 :type 'boolean
108 :group 'vc) 108 :group 'vc)
109 109
110(defcustom vc-mistrust-permissions nil 110;; If you fix bug#11490, probably you can set this back to nil.
111(defcustom vc-mistrust-permissions t
111 "If non-nil, don't assume permissions/ownership track version-control status. 112 "If non-nil, don't assume permissions/ownership track version-control status.
112If nil, do rely on the permissions. 113If nil, do rely on the permissions.
113See also variable `vc-consult-headers'." 114See also variable `vc-consult-headers'."
115 :version "24.3" ; nil->t, bug#11490
114 :type 'boolean 116 :type 'boolean
115 :group 'vc) 117 :group 'vc)
116 118
@@ -436,8 +438,8 @@ For registered files, the possible values are:
436(defun vc-state (file &optional backend) 438(defun vc-state (file &optional backend)
437 "Return the version control state of FILE. 439 "Return the version control state of FILE.
438 440
439If FILE is not registered, this function always returns nil. 441A return of nil from this function means we have no information on the
440For registered files, the value returned is one of: 442status of this file. Otherwise, the value returned is one of:
441 443
442 'up-to-date The working file is unmodified with respect to the 444 'up-to-date The working file is unmodified with respect to the
443 latest version on the current branch, and not locked. 445 latest version on the current branch, and not locked.
@@ -489,10 +491,8 @@ For registered files, the value returned is one of:
489 that any file with vc-state nil might be ignorable 491 that any file with vc-state nil might be ignorable
490 without VC knowing it. 492 without VC knowing it.
491 493
492 'unregistered The file is not under version control. 494 'unregistered The file is not under version control."
493 495
494A return of nil from this function means we have no information on the
495status of this file."
496 ;; Note: in Emacs 22 and older, return of nil meant the file was 496 ;; Note: in Emacs 22 and older, return of nil meant the file was
497 ;; unregistered. This is potentially a source of 497 ;; unregistered. This is potentially a source of
498 ;; backward-compatibility bugs. 498 ;; backward-compatibility bugs.
@@ -856,8 +856,9 @@ current, and kill the buffer that visits the link."
856 (set (make-local-variable 'backup-inhibited) t)) 856 (set (make-local-variable 'backup-inhibited) t))
857 ;; Let the backend setup any buffer-local things he needs. 857 ;; Let the backend setup any buffer-local things he needs.
858 (vc-call-backend backend 'find-file-hook)) 858 (vc-call-backend backend 'find-file-hook))
859 ((let ((link-type (and (not (equal buffer-file-name buffer-file-truename)) 859 ((let* ((truename (expand-file-name buffer-file-truename))
860 (vc-backend buffer-file-truename)))) 860 (link-type (and (not (equal buffer-file-name truename))
861 (vc-backend truename))))
861 (cond ((not link-type) nil) ;Nothing to do. 862 (cond ((not link-type) nil) ;Nothing to do.
862 ((eq vc-follow-symlinks nil) 863 ((eq vc-follow-symlinks nil)
863 (message 864 (message
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 3becd8950f1..370cd0a9dca 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -414,7 +414,7 @@ The changes are between FIRST-VERSION and SECOND-VERSION."
414 ;; We also used to match the filename in column 0 without any 414 ;; We also used to match the filename in column 0 without any
415 ;; meta-info before it, but I believe this can never happen. 415 ;; meta-info before it, but I believe this can never happen.
416 (concat "^\\(\\([ACGDU]\\)\\(.[B ]\\)? \\)" 416 (concat "^\\(\\([ACGDU]\\)\\(.[B ]\\)? \\)"
417 (regexp-quote (file-name-nondirectory file))) 417 (regexp-quote (file-relative-name file)))
418 nil t) 418 nil t)
419 (cond 419 (cond
420 ;; Merge successful, we are in sync with repository now 420 ;; Merge successful, we are in sync with repository now
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index a909aca5bca..d001df87d5c 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1271,12 +1271,10 @@ first backend that could register the file is used."
1271 ;; many VCS allow that as well. 1271 ;; many VCS allow that as well.
1272 (dolist (fname files) 1272 (dolist (fname files)
1273 (let ((bname (get-file-buffer fname))) 1273 (let ((bname (get-file-buffer fname)))
1274 (unless fname (setq fname buffer-file-name)) 1274 (unless fname
1275 (when (vc-backend fname) 1275 (setq fname buffer-file-name))
1276 (if (vc-registered fname) 1276 (when (vc-call-backend backend 'registered fname)
1277 (error "This file is already registered") 1277 (error "This file is already registered"))
1278 (unless (y-or-n-p "Previous master file has vanished. Make a new one? ")
1279 (error "Aborted"))))
1280 ;; Watch out for new buffers of size 0: the corresponding file 1278 ;; Watch out for new buffers of size 0: the corresponding file
1281 ;; does not exist yet, even though buffer-modified-p is nil. 1279 ;; does not exist yet, even though buffer-modified-p is nil.
1282 (when bname 1280 (when bname
@@ -2556,8 +2554,12 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
2556 2554
2557;;;###autoload 2555;;;###autoload
2558(defun vc-delete-file (file) 2556(defun vc-delete-file (file)
2559 "Delete file and mark it as such in the version control system." 2557 "Delete file and mark it as such in the version control system.
2560 (interactive "fVC delete file: ") 2558If called interactively, read FILE, defaulting to the current
2559buffer's file name if it's under version control."
2560 (interactive (list (read-file-name "VC delete file: " nil
2561 (when (vc-backend buffer-file-name)
2562 buffer-file-name) t)))
2561 (setq file (expand-file-name file)) 2563 (setq file (expand-file-name file))
2562 (let ((buf (get-file-buffer file)) 2564 (let ((buf (get-file-buffer file))
2563 (backend (vc-backend file))) 2565 (backend (vc-backend file)))
@@ -2595,8 +2597,13 @@ backend to NEW-BACKEND, and unregister FILE from the current backend.
2595 2597
2596;;;###autoload 2598;;;###autoload
2597(defun vc-rename-file (old new) 2599(defun vc-rename-file (old new)
2598 "Rename file OLD to NEW in both work area and repository." 2600 "Rename file OLD to NEW in both work area and repository.
2599 (interactive "fVC rename file: \nFRename to: ") 2601If called interactively, read OLD and NEW, defaulting OLD to the
2602current buffer's file name if it's under version control."
2603 (interactive (list (read-file-name "VC rename file: " nil
2604 (when (vc-backend buffer-file-name)
2605 buffer-file-name) t)
2606 (read-file-name "Rename to: ")))
2600 ;; in CL I would have said (setq new (merge-pathnames new old)) 2607 ;; in CL I would have said (setq new (merge-pathnames new old))
2601 (let ((old-base (file-name-nondirectory old))) 2608 (let ((old-base (file-name-nondirectory old)))
2602 (when (and (not (string= "" old-base)) 2609 (when (and (not (string= "" old-base))
diff --git a/lisp/vcursor.el b/lisp/vcursor.el
index 19cb7a9df8d..a277abcad9b 100644
--- a/lisp/vcursor.el
+++ b/lisp/vcursor.el
@@ -881,6 +881,8 @@ ALL-FRAMES is also used to decide whether to split the window."
881 (vcursor-disable -1)))) 881 (vcursor-disable -1))))
882 ) 882 )
883 883
884(declare-function compare-windows-skip-whitespace "compare-w" (start))
885
884;; vcursor-compare-windows is copied from compare-w.el with only 886;; vcursor-compare-windows is copied from compare-w.el with only
885;; minor modifications; these are too bound up with the function 887;; minor modifications; these are too bound up with the function
886;; to make it really useful to call compare-windows itself. 888;; to make it really useful to call compare-windows itself.
diff --git a/lisp/wdired.el b/lisp/wdired.el
index 9851b2046d9..5183b5639c3 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -399,6 +399,15 @@ non-nil means return old filename."
399 (setq changes t) 399 (setq changes t)
400 (if (not file-new) ;empty filename! 400 (if (not file-new) ;empty filename!
401 (push file-old files-deleted) 401 (push file-old files-deleted)
402 (when wdired-keep-marker-rename
403 (let ((mark (cond ((integerp wdired-keep-marker-rename)
404 wdired-keep-marker-rename)
405 (wdired-keep-marker-rename
406 (cdr (assoc file-old wdired-old-marks)))
407 (t nil))))
408 (when mark
409 (push (cons (substitute-in-file-name file-new) mark)
410 wdired-old-marks))))
402 (push (cons file-old (substitute-in-file-name file-new)) 411 (push (cons file-old (substitute-in-file-name file-new))
403 files-renamed)))) 412 files-renamed))))
404 (forward-line -1))) 413 (forward-line -1)))
@@ -416,7 +425,9 @@ non-nil means return old filename."
416 (= (length files-renamed) 1)) 425 (= (length files-renamed) 1))
417 (setq dired-directory (cdr (car files-renamed)))) 426 (setq dired-directory (cdr (car files-renamed))))
418 ;; Re-sort the buffer. 427 ;; Re-sort the buffer.
419 (revert-buffer)) 428 (revert-buffer)
429 (let ((inhibit-read-only t))
430 (dired-mark-remembered wdired-old-marks)))
420 (let ((inhibit-read-only t)) 431 (let ((inhibit-read-only t))
421 (remove-text-properties (point-min) (point-max) 432 (remove-text-properties (point-min) (point-max)
422 '(old-name nil end-name nil old-link nil 433 '(old-name nil end-name nil old-link nil
@@ -430,8 +441,6 @@ non-nil means return old filename."
430 (set-buffer-modified-p nil) 441 (set-buffer-modified-p nil)
431 (setq buffer-undo-list nil)) 442 (setq buffer-undo-list nil))
432 443
433(declare-function dired-add-entry "dired-aux" (filename &optional marker-char relative))
434
435(defun wdired-do-renames (renames) 444(defun wdired-do-renames (renames)
436 "Perform RENAMES in parallel." 445 "Perform RENAMES in parallel."
437 (let ((residue ()) 446 (let ((residue ())
@@ -473,8 +482,7 @@ non-nil means return old filename."
473 (push (cons tmp file-new) residue)))) 482 (push (cons tmp file-new) residue))))
474 (t 483 (t
475 (setq progress t) 484 (setq progress t)
476 (let* ((file-ori (car rename)) 485 (let ((file-ori (car rename)))
477 (old-mark (cdr (assoc file-ori wdired-old-marks))))
478 (if wdired-use-interactive-rename 486 (if wdired-use-interactive-rename
479 (wdired-search-and-rename file-ori file-new) 487 (wdired-search-and-rename file-ori file-new)
480 ;; If dired-rename-file autoloads dired-aux while 488 ;; If dired-rename-file autoloads dired-aux while
@@ -485,20 +493,12 @@ non-nil means return old filename."
485 (condition-case err 493 (condition-case err
486 (let ((dired-backup-overwrite nil)) 494 (let ((dired-backup-overwrite nil))
487 (dired-rename-file file-ori file-new 495 (dired-rename-file file-ori file-new
488 overwrite) 496 overwrite))
489 (dired-remove-file file-ori)
490 (dired-add-file
491 file-new
492 (cond ((integerp wdired-keep-marker-rename)
493 wdired-keep-marker-rename)
494 (wdired-keep-marker-rename old-mark)
495 (t nil))))
496 (error 497 (error
497 (setq errors (1+ errors)) 498 (setq errors (1+ errors))
498 (dired-log (concat "Rename `" file-ori "' to `" 499 (dired-log (concat "Rename `" file-ori "' to `"
499 file-new "' failed:\n%s\n") 500 file-new "' failed:\n%s\n")
500 err) 501 err)))))))))
501 (dired-add-entry file-ori old-mark)))))))))
502 errors)) 502 errors))
503 503
504 504
diff --git a/lisp/window.el b/lisp/window.el
index 9ac3a4ecda0..52909fa9e5f 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -142,41 +142,46 @@ to `display-buffer'."
142 ;; Return the window. 142 ;; Return the window.
143 window)))) 143 window))))
144 144
145;; Doc is very similar to with-output-to-temp-buffer.
145(defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body) 146(defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body)
146 "Evaluate BODY and display the buffer specified by BUFFER-OR-NAME. 147 "Bind `standard-output' to BUFFER-OR-NAME, eval BODY, show the buffer.
147BUFFER-OR-NAME must specify either a live buffer, or the name of a 148BUFFER-OR-NAME must specify either a live buffer, or the name of a
148buffer (if it does not exist, this macro creates it). 149buffer (if it does not exist, this macro creates it).
149 150
150Make sure the specified buffer is empty before evaluating BODY. 151This construct makes buffer BUFFER-OR-NAME empty before running BODY.
151Do not make that buffer current for BODY. Instead, bind 152It does not make the buffer current for BODY.
152`standard-output' to that buffer, so that output generated with 153Instead it binds `standard-output' to that buffer, so that output
153`prin1' and similar functions in BODY goes into that buffer. 154generated with `prin1' and similar functions in BODY goes into
155the buffer.
154 156
155After evaluating BODY, this marks the specified buffer unmodified and 157At the end of BODY, this marks the specified buffer unmodified and
156read-only, and displays it in a window via `display-buffer', passing 158read-only, and displays it in a window (but does not select it, or make
157ACTION as the action argument to `display-buffer'. It automatically 159the buffer current). The display happens by calling `display-buffer'
158shrinks the relevant window if `temp-buffer-resize-mode' is enabled. 160with the ACTION argument. If `temp-buffer-resize-mode' is enabled,
161the relevant window shrinks automatically.
159 162
160Returns the value returned by BODY, unless QUIT-FUNCTION specifies 163This returns the value returned by BODY, unless QUIT-FUNCTION specifies
161a function. In that case, runs the function with two arguments - 164a function. In that case, it runs the function with two arguments -
162the window showing the specified buffer and the value returned by 165the window showing the specified buffer and the value returned by
163BODY - and returns the value returned by that function. 166BODY - and returns the value returned by that function.
164 167
165If the buffer is displayed on a new frame, the window manager may 168If the buffer is displayed on a new frame, the window manager may
166decide to select that frame. In that case, it's usually a good 169decide to select that frame. In that case, it's usually a good
167strategy if the function specified by QUIT-FUNCTION selects the 170strategy if QUIT-FUNCTION selects the window showing the buffer
168window showing the buffer before reading a value from the 171before reading any value from the minibuffer; for example, when
169minibuffer; for example, when asking a `yes-or-no-p' question. 172asking a `yes-or-no-p' question.
170 173
171This construct is similar to `with-output-to-temp-buffer', but does 174This runs the hook `temp-buffer-window-setup-hook' before BODY,
172not put the buffer in help mode, or call `temp-buffer-show-function'. 175with the specified buffer temporarily current. It runs the
173It also runs different hooks, namely `temp-buffer-window-setup-hook' 176hook `temp-buffer-window-show-hook' after displaying the buffer,
174\(with the specified buffer current) and `temp-buffer-window-show-hook' 177with that buffer temporarily current, and the window that was used to
175\(with the specified buffer current and the window showing it selected). 178display it temporarily selected.
176 179
177Since this macro calls `display-buffer', the window displaying 180This construct is similar to `with-output-to-temp-buffer', but
178the buffer is usually not selected and the specified buffer 181runs different hooks. In particular, it does not run
179usually not made current. QUIT-FUNCTION can override that." 182`temp-buffer-setup-hook', which usually puts the buffer in Help mode.
183Also, it does not call `temp-buffer-show-function' (the ACTION
184argument replaces this)."
180 (declare (debug t)) 185 (declare (debug t))
181 (let ((buffer (make-symbol "buffer")) 186 (let ((buffer (make-symbol "buffer"))
182 (window (make-symbol "window")) 187 (window (make-symbol "window"))
@@ -5865,7 +5870,12 @@ the selected window or never appeared in it before, or if
5865 :version "24.3") 5870 :version "24.3")
5866 5871
5867(defun switch-to-buffer (buffer-or-name &optional norecord force-same-window) 5872(defun switch-to-buffer (buffer-or-name &optional norecord force-same-window)
5868 "Switch to buffer BUFFER-OR-NAME in the selected window. 5873 "Display buffer BUFFER-OR-NAME in the selected window.
5874
5875WARNING: This is NOT the way to work on another buffer temporarily
5876within a Lisp program! Use `set-buffer' instead. That avoids
5877messing with the window-buffer correspondences.
5878
5869If the selected window cannot display the specified 5879If the selected window cannot display the specified
5870buffer (e.g. if it is a minibuffer window or strongly dedicated 5880buffer (e.g. if it is a minibuffer window or strongly dedicated
5871to another buffer), call `pop-to-buffer' to select the buffer in 5881to another buffer), call `pop-to-buffer' to select the buffer in
diff --git a/lisp/woman.el b/lisp/woman.el
index 46b6b680440..c7f9b08d404 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -949,6 +949,7 @@ or different fonts."
949 949
950(defun woman-default-faces () 950(defun woman-default-faces ()
951 "Set foreground colors of italic and bold faces to their default values." 951 "Set foreground colors of italic and bold faces to their default values."
952 (declare (obsolete choose-completion-guess-base-position "23.2"))
952 (interactive) 953 (interactive)
953 (face-spec-set 'woman-italic (face-user-default-spec 'woman-italic)) 954 (face-spec-set 'woman-italic (face-user-default-spec 'woman-italic))
954 (face-spec-set 'woman-bold (face-user-default-spec 'woman-bold))) 955 (face-spec-set 'woman-bold (face-user-default-spec 'woman-bold)))
@@ -956,6 +957,7 @@ or different fonts."
956(defun woman-monochrome-faces () 957(defun woman-monochrome-faces ()
957 "Set foreground colors of italic and bold faces to that of the default face. 958 "Set foreground colors of italic and bold faces to that of the default face.
958This is usually either black or white." 959This is usually either black or white."
960 (declare (obsolete choose-completion-guess-base-position "23.2"))
959 (interactive) 961 (interactive)
960 (set-face-foreground 'woman-italic 'unspecified) 962 (set-face-foreground 'woman-italic 'unspecified)
961 (set-face-foreground 'woman-bold 'unspecified)) 963 (set-face-foreground 'woman-bold 'unspecified))
@@ -1550,11 +1552,13 @@ Also make each path-info component into a list.
1550 (woman-dired-define-keys) 1552 (woman-dired-define-keys)
1551 (add-hook 'dired-mode-hook 'woman-dired-define-keys)) 1553 (add-hook 'dired-mode-hook 'woman-dired-define-keys))
1552 1554
1555(declare-function dired-get-filename "dired"
1556 (&optional localp no-error-if-not-filep))
1557
1553;;;###autoload 1558;;;###autoload
1554(defun woman-dired-find-file () 1559(defun woman-dired-find-file ()
1555 "In dired, run the WoMan man-page browser on this file." 1560 "In dired, run the WoMan man-page browser on this file."
1556 (interactive) 1561 (interactive)
1557 ;; dired-get-filename is defined in dired.el
1558 (woman-find-file (dired-get-filename))) 1562 (woman-find-file (dired-get-filename)))
1559 1563
1560 1564
@@ -1826,8 +1830,6 @@ Argument EVENT is the invoking mouse event."
1826 ["Use Full Frame Width" woman-toggle-fill-frame 1830 ["Use Full Frame Width" woman-toggle-fill-frame
1827 :active t :style toggle :selected woman-fill-frame] 1831 :active t :style toggle :selected woman-fill-frame]
1828 ["Reformat Last Man Page" woman-reformat-last-file t] 1832 ["Reformat Last Man Page" woman-reformat-last-file t]
1829 ["Use Monochrome Main Faces" woman-monochrome-faces t]
1830 ["Use Default Main Faces" woman-default-faces t]
1831 ["Make Contents Menu" (woman-imenu t) (not woman-imenu-done)] 1833 ["Make Contents Menu" (woman-imenu t) (not woman-imenu-done)]
1832 "--" 1834 "--"
1833 ["Describe (Wo)Man Mode" describe-mode t] 1835 ["Describe (Wo)Man Mode" describe-mode t]
@@ -1947,6 +1949,9 @@ Optional argument REDRAW, if non-nil, forces mode line to be updated."
1947 (message "Woman fill column set to %s." 1949 (message "Woman fill column set to %s."
1948 (if woman-fill-frame "frame width" woman-fill-column))) 1950 (if woman-fill-frame "frame width" woman-fill-column)))
1949 1951
1952(declare-function apropos-print "apropos"
1953 (do-keys spacing &optional text nosubst))
1954
1950(defun woman-mini-help () 1955(defun woman-mini-help ()
1951 "Display WoMan commands and user options in an `apropos' buffer." 1956 "Display WoMan commands and user options in an `apropos' buffer."
1952 ;; Based on apropos-command in apropos.el 1957 ;; Based on apropos-command in apropos.el
@@ -2191,7 +2196,7 @@ To be called on original buffer and any .so insertions."
2191 (face-underline-p face)) 2196 (face-underline-p face))
2192 (let ((face-no-ul (intern (concat face-name "-no-ul")))) 2197 (let ((face-no-ul (intern (concat face-name "-no-ul"))))
2193 (copy-face face face-no-ul) 2198 (copy-face face face-no-ul)
2194 (set-face-underline-p face-no-ul nil))))))) 2199 (set-face-underline face-no-ul nil)))))))
2195 2200
2196;; Preprocessors 2201;; Preprocessors
2197;; ============= 2202;; =============