aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorJoakim Verona2012-09-03 17:30:17 +0200
committerJoakim Verona2012-09-03 17:30:17 +0200
commit4a37733c693d59a9b83a3fb2d0c7f9461d149f60 (patch)
treea33402e09342f748baebf0e4f5a1e40538e620f4 /lisp
parent5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (diff)
parentdcde497f27945c3ca4ce8c21f655ef6f627acdd2 (diff)
downloademacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.tar.gz
emacs-4a37733c693d59a9b83a3fb2d0c7f9461d149f60.zip
upstream
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog483
-rw-r--r--lisp/allout-widgets.el1
-rw-r--r--lisp/calc/calc-comb.el15
-rw-r--r--lisp/calc/calccomp.el2
-rw-r--r--lisp/calendar/cal-tex.el505
-rw-r--r--lisp/calendar/diary-lib.el31
-rw-r--r--lisp/calendar/holidays.el13
-rw-r--r--lisp/cus-face.el34
-rw-r--r--lisp/descr-text.el2
-rw-r--r--lisp/dired.el79
-rw-r--r--lisp/emacs-lisp/cl-lib.el2
-rw-r--r--lisp/emacs-lisp/gv.el5
-rw-r--r--lisp/erc/ChangeLog26
-rw-r--r--lisp/erc/erc-join.el4
-rw-r--r--lisp/erc/erc-match.el2
-rw-r--r--lisp/erc/erc.el174
-rw-r--r--lisp/eshell/em-unix.el2
-rw-r--r--lisp/eshell/esh-ext.el11
-rw-r--r--lisp/faces.el2
-rw-r--r--lisp/ffap.el2
-rw-r--r--lisp/files.el104
-rw-r--r--lisp/font-lock.el16
-rw-r--r--lisp/gnus/ChangeLog70
-rw-r--r--lisp/gnus/auth-source.el4
-rw-r--r--lisp/gnus/gnus-cus.el24
-rw-r--r--lisp/gnus/gnus-int.el7
-rw-r--r--lisp/gnus/gnus-msg.el23
-rw-r--r--lisp/gnus/gnus-notifications.el181
-rw-r--r--lisp/gnus/gnus-range.el12
-rw-r--r--lisp/gnus/gnus-registry.el7
-rw-r--r--lisp/gnus/gnus-sum.el24
-rw-r--r--lisp/gnus/gnus-sync.el2
-rw-r--r--lisp/gnus/message.el5
-rw-r--r--lisp/gnus/qp.el22
-rw-r--r--lisp/help-fns.el8
-rw-r--r--lisp/help.el44
-rw-r--r--lisp/ibuffer.el2
-rw-r--r--lisp/info.el65
-rw-r--r--lisp/isearch.el153
-rw-r--r--lisp/json.el19
-rw-r--r--lisp/ldefs-boot.el502
-rw-r--r--lisp/mail/rmailout.el53
-rw-r--r--lisp/minibuffer.el4
-rw-r--r--lisp/misc.el4
-rw-r--r--lisp/net/rcirc.el40
-rw-r--r--lisp/net/sasl.el2
-rw-r--r--lisp/net/tramp-sh.el6
-rw-r--r--lisp/net/tramp.el2
-rw-r--r--lisp/obsolete/vc-mcvs.el2
-rw-r--r--lisp/org/ChangeLog6
-rw-r--r--lisp/org/org-id.el2
-rw-r--r--lisp/paren.el11
-rw-r--r--lisp/play/5x5.el2
-rw-r--r--lisp/play/animate.el2
-rw-r--r--lisp/play/blackbox.el3
-rw-r--r--lisp/play/cookie1.el3
-rw-r--r--lisp/play/dissociate.el2
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/play/dunnet.el1
-rw-r--r--lisp/play/gomoku.el2
-rw-r--r--lisp/play/landmark.el2
-rw-r--r--lisp/play/life.el6
-rw-r--r--lisp/play/mpuz.el2
-rw-r--r--lisp/play/tetris.el2
-rw-r--r--lisp/play/zone.el2
-rw-r--r--lisp/progmodes/bug-reference.el13
-rw-r--r--lisp/progmodes/compile.el13
-rw-r--r--lisp/progmodes/executable.el3
-rw-r--r--lisp/progmodes/gdb-mi.el241
-rw-r--r--lisp/progmodes/gud.el6
-rw-r--r--lisp/progmodes/hideif.el2
-rw-r--r--lisp/progmodes/hideshow.el2
-rw-r--r--lisp/progmodes/js.el5
-rw-r--r--lisp/progmodes/sh-script.el30
-rw-r--r--lisp/server.el1
-rw-r--r--lisp/simple.el34
-rw-r--r--lisp/skeleton.el2
-rw-r--r--lisp/term.el284
-rw-r--r--lisp/type-break.el1
-rw-r--r--lisp/vc/vc-cvs.el8
-rw-r--r--lisp/vc/vc.el4
-rw-r--r--lisp/window.el992
-rw-r--r--lisp/woman.el2
-rw-r--r--lisp/xml.el26
84 files changed, 3129 insertions, 1392 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ec89b3784d9..87904b8313b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,11 +1,479 @@
12012-09-03 Martin Rudalics <rudalics@gmx.at>
2
3 * window.el (temp-buffer-window-setup-hook)
4 (temp-buffer-window-show-hook): New hooks.
5 (temp-buffer-window-setup, temp-buffer-window-show)
6 (with-temp-buffer-window): New functions.
7 (fit-window-to-buffer): Remove unused optional argument
8 OVERRIDE.
9 (special-display-popup-frame): Make sure the window used shows
10 BUFFER.
11
12 * help.el (temp-buffer-resize-mode): Fix doc-string.
13 (resize-temp-buffer-window): New optional argument WINDOW.
14
15 * files.el (recover-file, save-buffers-kill-emacs):
16 * dired.el (dired-mark-pop-up): Use with-temp-buffer-window.
17
182012-09-02 Michael Albinus <michael.albinus@gmx.de>
19
20 * eshell/em-unix.el (eshell/sudo): When we have an ad-hoc
21 remote definition of `default-directory', ensure we can connect.
22
232012-09-02 Juri Linkov <juri@jurta.org>
24
25 Toggle whitespace matching mode with M-s SPC.
26 http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00008.html
27
28 * isearch.el (search-whitespace-regexp): Doc fix.
29 Remove cons cell customization.
30 (isearch-mode-map): Bind "\M-s " to isearch-toggle-lax-whitespace.
31 (isearch-lax-whitespace, isearch-regexp-lax-whitespace):
32 New variables.
33 (isearch-forward, isearch-forward-regexp): Doc fix.
34 (isearch-toggle-lax-whitespace): New command.
35 (search-forward-lax-whitespace, search-backward-lax-whitespace)
36 (re-search-forward-lax-whitespace)
37 (re-search-backward-lax-whitespace): New functions.
38 (isearch-whitespace-regexp): Remove function.
39 (isearch-query-replace): Let-bind replace-search-function and
40 replace-re-search-function.
41 (isearch-occur): Let-bind search-spaces-regexp according to the
42 value of isearch-lax-whitespace and isearch-regexp-lax-whitespace.
43 (isearch-quote-char): Check isearch-regexp-lax-whitespace in the
44 condition for C-q SPC.
45 (isearch-search-fun-default): Use new functions mentioned above.
46 (isearch-search-forward, isearch-search-backward): Remove functions.
47 (isearch-search): Don't let-bind search-spaces-regexp.
48 (isearch-lazy-highlight-space-regexp): Remove variable.
49 (isearch-lazy-highlight-lax-whitespace)
50 (isearch-lazy-highlight-regexp-lax-whitespace): New variables.
51 (isearch-lazy-highlight-new-loop): Use them.
52 (isearch-lazy-highlight-search): Don't let-bind search-spaces-regexp.
53
542012-09-02 Chong Yidong <cyd@gnu.org>
55
56 * dired.el (dired-mode-map): Menu string fixes (Bug#11616).
57
582012-09-02 Glenn Morris <rgm@gnu.org>
59
60 * simple.el (undo): Tweak message in undo-only case. (Bug#12283)
61
622012-09-01 Glenn Morris <rgm@gnu.org>
63
64 * term.el: Tidy up menu definitions.
65 (term-mode-map): Use easymenu for In/Out, Complete menus.
66 (term-pager-break-map): Initialize in the defvar.
67 (term-terminal-menu, term-signals-menu): Define with easymenu.
68 (term-terminal-menu): Also show it in line-mode. (Bug#11957)
69 (term-pager-menu): New, extracted from term-process-pager.
70 (term-mode, term-char-mode, term-process-pager): Use easymenu-add.
71 (term-update-mode-line): Propertize line/char and page items.
72 (term-process-pager): Move keymap initialization elsewhere.
73
742012-09-01 Martin Rudalics <rudalics@gmx.at>
75
76 * window.el (switch-to-prev-buffer): Handle additional values of
77 BURY-OR-KILL argument. Don't switch in minibuffer window.
78 (switch-to-next-buffer): Don't switch in minibuffer window.
79 (quit-restore-window): New function based on quit-window.
80 Handle additional values of former KILL argument.
81 (quit-window): Call quit-restore-window with appropriate
82 interpretation of KILL argument.
83 (display-buffer-below-selected): New buffer display action
84 function.
85
862012-09-01 Stefan Monnier <monnier@iro.umontreal.ca>
87
88 * minibuffer.el (completion-at-point-functions): Complete docstring
89 (bug#12254).
90
912012-09-01 Paul Eggert <eggert@cs.ucla.edu>
92
93 Better seed support for (random).
94 * play/5x5.el, play/animate.el, play/cookie1.el, play/dissociate.el:
95 * play/doctor.el, play/dunnet.el, play/gomoku.el, play/landmark.el:
96 * play/mpuz.el, play/tetris.el, play/zone.el:
97 * calc/calc-comb.el (math-init-random-base):
98 * play/blackbox.el (bb-init-board):
99 * play/life.el (life):
100 * server.el (server-use-tcp):
101 * type-break.el (type-break):
102 Remove unnecessary call to (random t).
103 * net/sasl.el (sasl-unique-id-function):
104 Change (random t) to (random), now that the latter is more random.
105 * play/life.el (life-initialized): Remove no-longer-needed var.
106
1072012-08-31 Alp Aker <alp.tekin.aker@gmail.com>
108
109 * window.el (switch-to-prev-buffer, switch-to-next-buffer):
110 Consider frame's buffer predicate when choosing the buffer.
111 (Bug#12081)
112
1132012-08-30 Richard Stallman <rms@gnu.org>
114
115 * simple.el (special-mode-map): Delete binding for `z'.
116
1172012-08-30 Andreas Schwab <schwab@linux-m68k.org>
118
119 * progmodes/compile.el (compilation-always-kill): Doc fix.
120
1212012-08-30 Chong Yidong <cyd@gnu.org>
122
123 * window.el (display-buffer-reuse-frames): Make the obsolescence
124 message more informative.
125
1262012-08-30 Glenn Morris <rgm@gnu.org>
127
128 * paren.el (show-paren-delay):
129 Add a :set function. Doc fix. (Bug#12297)
130
1312012-08-29 Martin Blais <blais@furius.ca> (tiny change)
132
133 * progmodes/compile.el (compilation-always-kill): New var.
134 (compilation-start): Use it.
135
1362012-08-29 Stefan Monnier <monnier@iro.umontreal.ca>
137
138 * simple.el (read-only-mode): Move from files.el for bootstrapping.
139 * files.el (read-only-mode): Move to simple.el.
140
141 * files.el (read-only-mode): New minor mode.
142 (toggle-read-only): Use it and mark obsolete.
143 (find-file--read-only):
144 * vc/vc.el (vc-next-action, vc-checkout):
145 * vc/vc-cvs.el (vc-cvs-checkout):
146 * obsolete/vc-mcvs.el (vc-mcvs-update):
147 * ffap.el (ffap--toggle-read-only): Update callers.
148
1492012-08-29 Michael Albinus <michael.albinus@gmx.de>
150
151 * eshell/esh-ext.el (eshell-external-command): Do not examine
152 remote shell scripts. See
153 <https://bugs.launchpad.net/ubuntu/+source/emacs23/+bug/1035790>.
154
155 * net/tramp-sh.el (tramp-remote-path): Add "/sbin" and
156 "/usr/local/sbin".
157
1582012-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
159
160 * emacs-lisp/cl-lib.el (buffer-string): Fix setter macro (bug#12293).
161
1622012-08-28 Leo Liu <sdl.web@gmail.com>
163
164 * progmodes/sh-script.el (sh-dynamic-complete-functions): Adapt to
165 completion-at-point. (Bug#12220)
166
167 * skeleton.el (skeleton-untabify): Change to nil (bug#12223).
168
169 * progmodes/sh-script.el (sh-indent-comment): Change to t (bug#12267).
170
1712012-08-28 Stefan Monnier <monnier@iro.umontreal.ca>
172
173 * files.el (safe-local-eval-forms): Fix before-save-hook entry to
174 be buffer-local; add delete-trailing-whitespace (bug#12259).
175
1762012-08-28 Jeremy Moore <jmoore@ieee.org> (tiny change)
177
178 * progmodes/hideif.el (hif-compress-define-list):
179 Fix typo. (Bug#11951)
180
1812012-08-28 Dan Nicolaescu <dann@gnu.org>
182
183 * progmodes/hideshow.el (hs-block-end-regexp): Restore lost
184 buffer local setting.
185
186 * net/rcirc.el (rcirc-split-message): Fix for buffer-local
187 rcirc-encode-coding-system.
188
1892012-08-28 Leo Liu <sdl.web@gmail.com>
190
191 * net/rcirc.el (rcirc-split-message): New function.
192 (rcirc-send-message): Use it. (Bug#12051)
193
1942012-08-28 Juri Linkov <juri@jurta.org>
195
196 * info.el (Info-fontify-node): Hide empty lines at the end of
197 the node. (Bug#12272)
198
1992012-08-27 Drew Adams <drew.adams@oracle.com>
200
201 * dired.el (dired-pop-to-buffer): Make window start at beginning
202 of buffer (Bug#12281).
203
2042012-08-26 Chong Yidong <cyd@gnu.org>
205
206 * window.el (special-display-regexps, special-display-frame-alist)
207 (special-display-buffer-names, special-display-function)
208 (display-buffer-reuse-frames): Mark as obsolete.
209
210 * progmodes/compile.el: Don't use display-buffer-reuse-frames.
211
212 * help.el (help-print-return-message): Don't treat
213 display-buffer-reuse-frames specially.
214
2152012-08-26 Chong Yidong <cyd@gnu.org>
216
217 * progmodes/gdb-mi.el (gdb-display-buffer-other-frame-action):
218 New variable, replacing gdb-frame-parameters.
219 (gdb-frame-io-buffer, gdb-frame-breakpoints-buffer)
220 (gdb-frame-threads-buffer, gdb-frame-memory-buffer)
221 (gdb-frame-disassembly-buffer, gdb-frame-stack-buffer)
222 (gdb-frame-locals-buffer, gdb-frame-registers-buffer): Use it.
223 (def-gdb-frame-for-buffer): Macro deleted. It is easier to define
224 the functions directly with gdb-display-buffer-other-frame-action.
225 (gdb-display-breakpoints-buffer, gdb-display-threads-buffer)
226 (gdb-display-memory-buffer, gdb-display-disassembly-buffer)
227 (gdb-display-stack-buffer, gdb-display-locals-buffer)
228 (gdb-display-registers-buffer): Define directly.
229 (def-gdb-display-buffer): Macro deleted.
230 (gdb-display-buffer): Remove second and third args, callers don't
231 use them. Defer to the default display-buffer behavior, apart
232 from making windows dedicated.
233 (gdb-setup-windows): Don't call display-buffer unnecessarily.
234
235 * progmodes/gud.el (gud-display-line): Just use display-buffer.
236
237 * window.el (display-buffer-pop-up-frame): Handle a
238 pop-up-frame-parameters alist entry.
239 (display-buffer): Document it.
240
2412012-08-26 Chong Yidong <cyd@gnu.org>
242
243 * isearch.el (search-whitespace-regexp): Make string and nil
244 values apply to both ordinary and regexp search. Allow a cons
245 cell value to distinguish between the two.
246 (isearch-whitespace-regexp, isearch-search-forward)
247 (isearch-search-backward): New functions.
248 (isearch-occur, isearch-search-fun-default, isearch-search)
249 (isearch-lazy-highlight-new-loop): Use them.
250 (isearch-forward, isearch-forward-regexp): Doc fix.
251
2522012-08-26 Chong Yidong <cyd@gnu.org>
253
254 * faces.el (help-argument-name): Always inherit from italic
255 (Bug#12213).
256
2572012-08-25 Martin Rudalics <rudalics@gmx.at>
258
259 * window.el (window--even-window-heights): Even heights when
260 WINDOW and the selected window form a vertical combination.
261 (display-buffer-use-some-window): Provide that window used gets
262 sized back by quit-window. (Bug#11880) and (Bug#12091)
263
2642012-08-24 Paul Eggert <eggert@cs.ucla.edu>
265
266 Fix file time stamp problem with bzr and CVS (Bug#12001).
267 * vc/vc-cvs.el (vc-cvs-parse-entry): Ignore subsecond information
268 in the file's time stamp, since the version control system loses
269 that information.
270
2712012-08-22 Juri Linkov <juri@jurta.org>
272
273 * info.el (Info-fontify-node): Hide the suffix of the
274 Info file name in the header line. (Bug#12187)
275
2762012-08-22 Glenn Morris <rgm@gnu.org>
277
278 * calendar/cal-tex.el (cal-tex-weekly-common):
279 Restore leading blank page.
280
2812012-08-22 Le Wang <l26wang@gmail.com> (tiny change)
282
283 * misc.el (forward-to-word, backward-to-word): Activate or extend
284 the region under `shift-select-mode'. (Bug#12231)
285
2862012-08-22 Bastien Guerry <bzg@gnu.org>
287
288 * progmodes/executable.el (executable-prefix): Set to "#!" instead
289 of "#! ". http://www.in-ulm.de/~mascheck/various/shebang/#details
290 gives details on why the space is never needed.
291
2922012-08-22 Martin Rudalics <rudalics@gmx.at>
293
294 * window.el (walk-window-tree, window-with-parameter):
295 New optional argument MINIBUF to control whether these functions
296 should run on the minibuffer window.
297 (window-at-side-list): Don't operate on minibuffer window.
298 (window-in-direction): Simplify and rewrite doc-string.
299 (window--size-ignore): Rename to window--size-ignore-p.
300 Update callers.
301 (display-buffer-in-atom-window, window--major-non-side-window)
302 (window--major-side-window, display-buffer-in-major-side-window)
303 (delete-side-window, display-buffer-in-side-window):
304 New functions.
305 (window--side-check, window-deletable-p, delete-window)
306 (delete-other-windows, split-window): Handle side windows and
307 atomic windows appropriately.
308 (window--display-buffer): Call display-buffer-record-window also
309 when the window buffer did not change.
310
3112012-08-22 Christopher Schmidt <christopher@ch.ristopher.com>
312
313 * help-fns.el (help-fns--key-bindings):
314 Abbreviate non-symbol remap targets. (Bug#12174)
315
3162012-08-22 Martin Rudalics <rudalics@gmx.at>
317
318 * dired.el (dired-mark-remembered): Don't clobber point.
319 (Bug#11795)
320
3212012-08-22 Glenn Morris <rgm@gnu.org>
322
323 * progmodes/bug-reference.el (bug-reference): New custom group.
324 (bug-reference-bug-regexp): Make it a defcustom.
325
3262012-08-22 Daiki Ueno <ueno@unixuser.org>
327
328 * progmodes/js.el (js-indent-level, js-expr-indent-offset)
329 (js-paren-indent-offset, js-square-indent-offset)
330 (js-curly-indent-offset): Add :safe (Bug#12257).
331
3322012-08-22 Edward O'Connor <hober0@gmail.com>
333
334 * json.el (json-key-format): Add error properties.
335 (json-encode-key): New function.
336 (json-encode-hash-table, json-encode-alist, json-encode-plist):
337 Use json-encode-key.
338
3392012-08-22 Glenn Morris <rgm@gnu.org>
340
341 * calendar/cal-tex.el (cal-tex-longday): New function, replacing...
342 (cal-tex-leftday, cal-tex-rightday): Remove functions.
343 (cal-tex-weekly-common, cal-tex-cursor-filofax-2week):
344 Update for above change.
345
3462012-08-21 Andreas Schwab <schwab@linux-m68k.org>
347
348 * cus-face.el (custom-face-attributes): Fix customize type for the
349 :underline attribute. (Bug#11805)
350
3512012-08-21 Martin Rudalics <rudalics@gmx.at>
352
353 * window.el (window-point-1, set-window-point-1): Remove.
354 (window-in-direction, record-window-buffer)
355 (set-window-buffer-start-and-point, split-window-below)
356 (window--state-get-1, display-buffer-record-window):
357 Replace calls to window-point-1 and set-window-point-1 by calls to
358 window-point and set-window-point respectively.
359
3602012-08-21 Glenn Morris <rgm@gnu.org>
361
362 * calendar/cal-tex.el (cal-tex-weekly-common): New function.
363 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week):
364 Use it.
365
366 * calendar/cal-tex.el (cal-tex-rightday): Add optional funcname arg.
367 (cal-tex-shortday): New function.
368 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-week)
369 (cal-tex-cursor-filofax-daily): Use the above.
370
371 * calendar/cal-tex.el (cal-tex-leftday, cal-tex-rightday):
372 New functions.
373 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-2week)
374 (cal-tex-cursor-filofax-week): Use them.
375
376 * calendar/cal-tex.el (cal-tex-lefthead, cal-tex-righthead):
377 New constants.
378 (cal-tex-cursor-week-at-a-glance, cal-tex-cursor-filofax-2week)
379 (cal-tex-cursor-filofax-week, cal-tex-cursor-filofax-daily): Use them.
380
381 * calendar/cal-tex.el (cal-tex-preamble): Generate new buffers.
382 (cal-tex-end-document): Don't rely on buffer name.
383
384 * calendar/cal-tex.el (cal-tex-cursor-filofax-year):
385 Use cal-tex-vspace.
386 (cal-tex-vspace, cal-tex-hspace, cal-tex-em, cal-tex-bf)
387 (cal-tex-Huge-bf, cal-tex-large-bf): Use cal-tex-cmd.
388 (cal-tex-scriptsize, cal-tex-huge, cal-tex-Huge, cal-tex-large):
389 Use cal-tex-arg.
390
391 * calendar/cal-tex.el (cal-tex-cursor-filofax-year)
392 (cal-tex-cursor-week, cal-tex-cursor-week2)
393 (cal-tex-cursor-week-iso, cal-tex-cursor-week-at-a-glance)
394 (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
395 (cal-tex-cursor-filofax-daily, cal-tex-cursor-day)
396 (cal-tex-insert-preamble, cal-tex-b-document)
397 (cal-tex-e-document, cal-tex-b-center, cal-tex-e-center):
398 Improve cal-tex-cmd usage.
399
400 * calendar/cal-tex.el (cal-tex-filofax-paper): New function.
401 (cal-tex-cursor-filofax-year, cal-tex-cursor-filofax-2week)
402 (cal-tex-cursor-filofax-week, cal-tex-cursor-filofax-daily): Use it.
403 (cal-tex-weekly-paper): New function.
404 (cal-tex-cursor-week, cal-tex-cursor-week2)
405 (cal-tex-cursor-week-iso, cal-tex-cursor-week-monday)
406 (cal-tex-cursor-day): Use it.
407
408 * calendar/cal-tex.el (cal-tex-cursor-week-at-a-glance)
409 (cal-tex-cursor-filofax-week): Remove leading blank page.
410
411 * calendar/cal-tex.el (cal-tex-cursor-week-at-a-glance):
412 Add autoload cookie. For now at least, don't use color, since
413 no other cal-tex function does.
414
415 * calendar/cal-tex.el (cal-tex-cursor-week-iso)
416 (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
417 (cal-tex-cursor-filofax-daily): Correct start date for diary entries.
418
4192012-08-21 Juri Linkov <juri@jurta.org>
420
421 * info.el (Info-file-attributes): New variable.
422 (info-insert-file-contents): Add file attributes to
423 `Info-file-attributes'. Clear the caches `Info-index-nodes' and
424 `Info-toc-nodes' when previous modtime of the Info file is less
425 than new modtime.
426 (Info-toc-nodes, Info-index-nodes): Move definitions up to the top
427 of info.el. (Bug#12230)
428
4292012-08-20 Glenn Morris <rgm@gnu.org>
430
431 * calendar/diary-lib.el (diary-include-files, diary-sexp-entry):
432 * calendar/holidays.el (calendar-holiday-list):
433 Report errors with display-warning rather than beep'n'sleep.
434
4352012-08-20 Michael Albinus <michael.albinus@gmx.de>
436
437 * net/tramp.el (tramp-accept-process-output): Accept only output
438 from PROC. Otherwise, process filters and sentinels might be
439 confused. (Bug#12145)
440
4412012-08-20 Chong Yidong <cyd@gnu.org>
442
443 * descr-text.el (describe-text-properties-1): Use overlays-in to
444 report on empty overlays (Bug#3322).
445
4462012-08-20 Glenn Morris <rgm@gnu.org>
447
448 * mail/rmailout.el (rmail-output-read-file-name):
449 Trap and report errors in rmail-output-file-alist elements.
450
451 * font-lock.el (font-lock-add-keywords): Doc fix (quote face names
452 since most non-font-lock faces are not also variables).
453
4542012-08-20 Edward Reingold <reingold@iit.edu>
455
456 * calendar/cal-tex.el (cal-tex-cursor-week-at-a-glance):
457 New function. (Bug12160)
458
4592012-08-19 Glenn Morris <rgm@gnu.org>
460
461 * mail/rmailout.el (rmail-output-read-file-name):
462 Fix previous change (when the alist is nil or does not match).
463
4642012-08-19 Chong Yidong <cyd@gnu.org>
465
466 * xml.el (xml-escape-string): Don't refer to xml-entity-alist
467 (Bug#12228).
468
12012-08-18 Chong Yidong <cyd@gnu.org> 4692012-08-18 Chong Yidong <cyd@gnu.org>
2 470
3 * simple.el (yank-handled-properties): New defcustom. 471 * simple.el (yank-handled-properties): New defcustom.
4 (yank-excluded-properties): Add font-lock-face and category. 472 (yank-excluded-properties): Add font-lock-face and category.
5 (yank): Doc fix. 473 (yank): Doc fix.
6 474
7 * subr.el (remove-yank-excluded-properties): Obey 475 * subr.el (remove-yank-excluded-properties):
8 yank-handled-properties. The special handling of font-lock-face 476 Obey yank-handled-properties. The special handling of font-lock-face
9 and category is now done this way, instead of being hard-coded. 477 and category is now done this way, instead of being hard-coded.
10 (insert-for-yank-1): Remove font-lock-face handling. 478 (insert-for-yank-1): Remove font-lock-face handling.
11 (yank-handle-font-lock-face-property) 479 (yank-handle-font-lock-face-property)
@@ -19,8 +487,8 @@
19 487
202012-08-17 Michael Albinus <michael.albinus@gmx.de> 4882012-08-17 Michael Albinus <michael.albinus@gmx.de>
21 489
22 * net/tramp-sh.el (tramp-sh-handle-start-file-process): Eliminate 490 * net/tramp-sh.el (tramp-sh-handle-start-file-process):
23 superfluous prompt. (Bug#12203) 491 Eliminate superfluous prompt. (Bug#12203)
24 492
252012-08-17 Chong Yidong <cyd@gnu.org> 4932012-08-17 Chong Yidong <cyd@gnu.org>
26 494
@@ -47,8 +515,8 @@
47 (next-buffer, previous-buffer, split-window, balance-windows-2) 515 (next-buffer, previous-buffer, split-window, balance-windows-2)
48 (set-window-text-height, window-buffer-height) 516 (set-window-text-height, window-buffer-height)
49 (fit-window-to-buffer, shrink-window-if-larger-than-buffer) 517 (fit-window-to-buffer, shrink-window-if-larger-than-buffer)
50 (truncated-partial-width-window-p): Minor code adjustments. In 518 (truncated-partial-width-window-p): Minor code adjustments.
51 doc-strings state whether the argument window has to denote a 519 In doc-strings state whether the argument window has to denote a
52 live, valid or any window. 520 live, valid or any window.
53 521
542012-08-16 Phil Sainty <psainty@orcon.net.nz> (tiny change) 5222012-08-16 Phil Sainty <psainty@orcon.net.nz> (tiny change)
@@ -223,7 +691,7 @@
223 691
2242012-08-13 Bastien Guerry <bzg@gnu.org> 6922012-08-13 Bastien Guerry <bzg@gnu.org>
225 693
226 * window.el (special-display-popup-frame): Small docstring 694 * window.el (special-display-popup-frame): Minor docstring
227 enhancement. (Bug#12172) 695 enhancement. (Bug#12172)
228 696
2292012-08-13 Andreas Schwab <schwab@linux-m68k.org> 6972012-08-13 Andreas Schwab <schwab@linux-m68k.org>
@@ -291,6 +759,7 @@
291 * files.el (hack-local-variables-filter): If an eval: form is not 759 * files.el (hack-local-variables-filter): If an eval: form is not
292 known to be safe, and enable-local-variables is :safe, then ignore 760 known to be safe, and enable-local-variables is :safe, then ignore
293 the form totally, as is done for non-eval forms. (Bug#12155) 761 the form totally, as is done for non-eval forms. (Bug#12155)
762 This is CVE-2012-3479.
294 763
2952012-08-10 Stefan Monnier <monnier@iro.umontreal.ca> 7642012-08-10 Stefan Monnier <monnier@iro.umontreal.ca>
296 765
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index 962a8fb557a..c5790603d11 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -1374,7 +1374,6 @@ FROM and TO must be in increasing order, as must be the pairs in RANGES."
1374;; (time-trial 1374;; (time-trial
1375;; '(let ((size 10000) 1375;; '(let ((size 10000)
1376;; doing) 1376;; doing)
1377;; (random t)
1378;; (dotimes (count size) 1377;; (dotimes (count size)
1379;; (setq doing (random size)) 1378;; (setq doing (random size))
1380;; (funcall try doing (+ doing (random 5))) 1379;; (funcall try doing (+ doing (random 5)))
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el
index 199bbf0ae35..431ea18f580 100644
--- a/lisp/calc/calc-comb.el
+++ b/lisp/calc/calc-comb.el
@@ -77,7 +77,7 @@
77 4877 4889 4903 4909 4919 4931 4933 4937 4943 4951 4957 4967 4969 4973 77 4877 4889 4903 4909 4919 4931 4933 4937 4943 4951 4957 4967 4969 4973
78 4987 4993 4999 5003]) 78 4987 4993 4999 5003])
79 79
80;; The variable math-prime-factors-finished is set by calcFunc-prfac to 80;; The variable math-prime-factors-finished is set by calcFunc-prfac to
81;; indicate whether factoring is complete, and used by calcFunc-factors, 81;; indicate whether factoring is complete, and used by calcFunc-factors,
82;; calcFunc-totient and calcFunc-moebius. 82;; calcFunc-totient and calcFunc-moebius.
83(defvar math-prime-factors-finished) 83(defvar math-prime-factors-finished)
@@ -510,8 +510,8 @@
510 (while (<= (length math-stirling-local-cache) n) 510 (while (<= (length math-stirling-local-cache) n)
511 (let ((i (1- (length math-stirling-local-cache))) 511 (let ((i (1- (length math-stirling-local-cache)))
512 row) 512 row)
513 (setq math-stirling-local-cache 513 (setq math-stirling-local-cache
514 (vconcat math-stirling-local-cache 514 (vconcat math-stirling-local-cache
515 (make-vector (length math-stirling-local-cache) nil))) 515 (make-vector (length math-stirling-local-cache) nil)))
516 (aset math-stirling-cache k math-stirling-local-cache) 516 (aset math-stirling-cache k math-stirling-local-cache)
517 (while (< (setq i (1+ i)) (length math-stirling-local-cache)) 517 (while (< (setq i (1+ i)) (length math-stirling-local-cache))
@@ -572,7 +572,6 @@
572 (let ((i 200)) 572 (let ((i 200))
573 (while (> (setq i (1- i)) 0) 573 (while (> (setq i (1- i)) 0)
574 (math-random-base)))) 574 (math-random-base))))
575 (random t)
576 (setq var-RandSeed nil 575 (setq var-RandSeed nil
577 math-random-cache nil 576 math-random-cache nil
578 math-random-shift -4) ; assume RAND_MAX >= 16383 577 math-random-shift -4) ; assume RAND_MAX >= 16383
@@ -629,7 +628,7 @@
629 (i (/ (+ n slop) 3)) 628 (i (/ (+ n slop) 3))
630 (rnum 0)) 629 (rnum 0))
631 (while (> i 0) 630 (while (> i 0)
632 (setq rnum 631 (setq rnum
633 (math-add 632 (math-add
634 (math-random-three-digit-number) 633 (math-random-three-digit-number)
635 (math-mul rnum 1000))) 634 (math-mul rnum 1000)))
@@ -823,11 +822,11 @@
823 (setq sum (% 822 (setq sum (%
824 (+ 823 (+
825 sum 824 sum
826 (calcFunc-mod 825 (calcFunc-mod
827 q 1000000)) 826 q 1000000))
828 111111)) 827 111111))
829 (setq q 828 (setq q
830 (math-quotient 829 (math-quotient
831 q 1000000))) 830 q 1000000)))
832 (cond ((= (% sum 3) 0) '(nil 3)) 831 (cond ((= (% sum 3) 0) '(nil 3))
833 ((= (% sum 7) 0) '(nil 7)) 832 ((= (% sum 7) 0) '(nil 7))
diff --git a/lisp/calc/calccomp.el b/lisp/calc/calccomp.el
index 51ea8e7b7a3..2f1c95b7668 100644
--- a/lisp/calc/calccomp.el
+++ b/lisp/calc/calccomp.el
@@ -86,7 +86,7 @@
86 (setq sn (math-to-underscores sn))) 86 (setq sn (math-to-underscores sn)))
87 sn))) 87 sn)))
88 88
89;;; Give multiplication precendence when composing to avoid 89;;; Give multiplication precedence when composing to avoid
90;;; writing a*(b c) instead of a b c 90;;; writing a*(b c) instead of a b c
91(defun math-compose-expr (a prec &optional div) 91(defun math-compose-expr (a prec &optional div)
92 (let ((calc-multiplication-has-precedence t) 92 (let ((calc-multiplication-has-precedence t)
diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el
index a40c05f45ca..9c01ab40c0c 100644
--- a/lisp/calendar/cal-tex.el
+++ b/lisp/calendar/cal-tex.el
@@ -237,6 +237,14 @@ The names are taken from `calendar-day-name-array'.")
237 "LaTeX code to insert one box with date info in calendar. 237 "LaTeX code to insert one box with date info in calendar.
238This definition is the heart of the calendar!") 238This definition is the heart of the calendar!")
239 239
240(defconst cal-tex-lefthead
241 "\\def\\lefthead#1{\\noindent {\\normalsize \\bf #1}\\hfill\\\\[-6pt]}\n"
242 "LaTeX code for left header.")
243
244(defconst cal-tex-righthead
245 "\\def\\righthead#1{\\hfill {\\normalsize \\bf #1}\\\\[-6pt]}\n"
246 "LaTeX code for right header.")
247
240(autoload 'holiday-in-range "holidays") 248(autoload 'holiday-in-range "holidays")
241 249
242(define-obsolete-function-alias 'cal-tex-list-holidays 'holiday-in-range "24.3") 250(define-obsolete-function-alias 'cal-tex-list-holidays 'holiday-in-range "24.3")
@@ -253,14 +261,14 @@ This definition is the heart of the calendar!")
253 "Insert the LaTeX calendar preamble into `cal-tex-buffer'. 261 "Insert the LaTeX calendar preamble into `cal-tex-buffer'.
254Preamble includes initial definitions for various LaTeX commands. 262Preamble includes initial definitions for various LaTeX commands.
255Optional string ARGS are included as options for the article document class." 263Optional string ARGS are included as options for the article document class."
256 ;; FIXME use generate-new-buffer, and adjust cal-tex-end-document. 264 (set-buffer (generate-new-buffer cal-tex-buffer))
257 (set-buffer (get-buffer-create cal-tex-buffer))
258 (insert (format "\\documentclass%s{article}\n" 265 (insert (format "\\documentclass%s{article}\n"
259 (if (stringp args) 266 (if (stringp args)
260 (format "[%s]" args) 267 (format "[%s]" args)
261 ""))) 268 "")))
262 (if (stringp cal-tex-preamble-extra) 269 (if (stringp cal-tex-preamble-extra)
263 (insert cal-tex-preamble-extra "\n")) 270 (insert cal-tex-preamble-extra "\n"))
271 ;; FIXME boxwidth and boxheight unused?
264 (insert "\\hbadness 20000 272 (insert "\\hbadness 20000
265\\hfuzz=1000pt 273\\hfuzz=1000pt
266\\vbadness 20000 274\\vbadness 20000
@@ -344,6 +352,54 @@ landscape mode with three rows of four months each."
344 (run-hooks 'cal-tex-year-hook)) 352 (run-hooks 'cal-tex-year-hook))
345 (run-hooks 'cal-tex-hook)) 353 (run-hooks 'cal-tex-hook))
346 354
355
356(defun cal-tex-filofax-paper (&optional year)
357 "Insert some page size settings for filofax layouts."
358 (insert "\\textwidth 3.25in
359\\textheight 6.5in
360\\headheight -0.875in
361\\topmargin 0pt
362")
363 (insert
364 ;; Why is this one subtly different? Who knows...
365 (if year "\\oddsidemargin 1.675in
366\\evensidemargin 1.675in
367"
368 "\\oddsidemargin 1.75in
369\\evensidemargin 1.5in
370\\headsep 0.125in
371\\footskip 0.125in
372")))
373
374(defun cal-tex-longday (funcname height)
375 "Insert LaTeX code for a long day function."
376 (insert "\\long\\def\\" funcname "#1#2#3#4#5{%
377 \\rule{\\textwidth}{0.3pt}\\\\%
378 \\hbox to \\textwidth{%
379 \\vbox to " height "{%
380 \\vspace*{2pt}%
381 \\hbox to \\textwidth{"
382 (if (string-equal funcname "leftday")
383 "\\noindent {\\normalsize \\bf #2} \\small #1 \\hfill #5}%\n"
384 "\\small #5 \\hfill #1 {\\normalsize \\bf #2}}%\n")
385 " \\hbox to \\textwidth{\\vbox {\\"
386 (if (string-equal funcname "leftday") "noindent" "raggedleft")
387 " \\footnotesize \\em #4}}%
388 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}\n"))
389
390(defun cal-tex-shortday (funcname)
391 "Insert LaTeX code for a short day function."
392 (insert "\\long\\def\\" funcname "#1#2#3{%
393 \\rule{\\textwidth}{0.3pt}\\\\%
394 \\hbox to \\textwidth{%
395 \\vbox {%
396 \\vspace*{2pt}%
397 \\hbox to \\textwidth{\\hfill \\small #3 \\hfill}%
398 \\hbox to \\textwidth{\\vbox {\\"
399 (if (string-equal funcname "rightday") "raggedleft" "noindent")
400 " \\em #2}}%
401 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize #1}}}}}\n"))
402
347;;;###cal-autoload 403;;;###cal-autoload
348(defun cal-tex-cursor-filofax-year (&optional n event) 404(defun cal-tex-cursor-filofax-year (&optional n event)
349 "Make a Filofax one page yearly calendar of year indicated by cursor. 405 "Make a Filofax one page yearly calendar of year indicated by cursor.
@@ -354,16 +410,11 @@ Optional EVENT indicates a buffer position to use instead of point."
354 (or n (setq n 1)) 410 (or n (setq n 1))
355 (let ((year (calendar-extract-year (calendar-cursor-to-date t event)))) 411 (let ((year (calendar-extract-year (calendar-cursor-to-date t event))))
356 (cal-tex-preamble "twoside") 412 (cal-tex-preamble "twoside")
357 (cal-tex-cmd "\\textwidth 3.25in") 413 (cal-tex-filofax-paper 'year)
358 (cal-tex-cmd "\\textheight 6.5in")
359 (cal-tex-cmd "\\oddsidemargin 1.675in")
360 (cal-tex-cmd "\\evensidemargin 1.675in")
361 (cal-tex-cmd "\\topmargin 0pt")
362 (cal-tex-cmd "\\headheight -0.875in")
363 (cal-tex-cmd "\\fboxsep 0.5mm") 414 (cal-tex-cmd "\\fboxsep 0.5mm")
364 (cal-tex-cmd "\\pagestyle{empty}") 415 (cal-tex-cmd "\\pagestyle" "empty")
365 (cal-tex-b-document) 416 (cal-tex-b-document)
366 (cal-tex-cmd "\\vspace*{0.25in}") 417 (cal-tex-vspace "0.25in")
367 (dotimes (j n) 418 (dotimes (j n)
368 (insert (format "\\hfil \\textbf{\\Large %s} \\hfil\\\\\n" year)) 419 (insert (format "\\hfil \\textbf{\\Large %s} \\hfil\\\\\n" year))
369 (cal-tex-b-center) 420 (cal-tex-b-center)
@@ -391,7 +442,7 @@ Optional EVENT indicates a buffer position to use instead of point."
391 (if (= j (1- n)) 442 (if (= j (1- n))
392 (cal-tex-end-document) 443 (cal-tex-end-document)
393 (cal-tex-newpage) 444 (cal-tex-newpage)
394 (cal-tex-cmd "\\vspace*{0.25in}")) 445 (cal-tex-vspace "0.25in"))
395 (run-hooks 'cal-tex-year-hook)) 446 (run-hooks 'cal-tex-year-hook))
396 (run-hooks 'cal-tex-hook))) 447 (run-hooks 'cal-tex-hook)))
397 448
@@ -653,6 +704,15 @@ this is only an upper bound."
653{\\makebox[2em]{\\rule{0cm}{#2ex}#1}\\rule{3in}{.15mm}}\n" 704{\\makebox[2em]{\\rule{0cm}{#2ex}#1}\\rule{3in}{.15mm}}\n"
654 "One hour and a line on the right.") 705 "One hour and a line on the right.")
655 706
707(defun cal-tex-weekly-paper (&optional nomargins)
708 "Insert some page size settings for weekly layouts."
709 (insert "\\textwidth 6.5in
710\\textheight 10.5in
711")
712 (or nomargins (insert "\\oddsidemargin 0in
713\\evensidemargin 0in
714")))
715
656;; TODO cal-tex-diary-support. 716;; TODO cal-tex-diary-support.
657;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours). 717;; TODO respect cal-tex-daily-start,end (see cal-tex-week-hours).
658;;;###cal-autoload 718;;;###cal-autoload
@@ -677,13 +737,10 @@ entries are not shown). The calendar shows the hours 8-12am, 1-5pm."
677 (holidays (if cal-tex-holidays 737 (holidays (if cal-tex-holidays
678 (holiday-in-range d1 d2)))) 738 (holiday-in-range d1 d2))))
679 (cal-tex-preamble "11pt") 739 (cal-tex-preamble "11pt")
680 (cal-tex-cmd "\\textwidth 6.5in") 740 (cal-tex-weekly-paper)
681 (cal-tex-cmd "\\textheight 10.5in")
682 (cal-tex-cmd "\\oddsidemargin 0in")
683 (cal-tex-cmd "\\evensidemargin 0in")
684 (insert cal-tex-LaTeX-hourbox) 741 (insert cal-tex-LaTeX-hourbox)
685 (cal-tex-b-document) 742 (cal-tex-b-document)
686 (cal-tex-cmd "\\pagestyle{empty}") 743 (cal-tex-cmd "\\pagestyle" "empty")
687 (dotimes (i n) 744 (dotimes (i n)
688 (cal-tex-vspace "-1.5in") 745 (cal-tex-vspace "-1.5in")
689 (cal-tex-b-center) 746 (cal-tex-b-center)
@@ -732,13 +789,10 @@ Optional EVENT indicates a buffer position to use instead of point."
732 (holidays (if cal-tex-holidays 789 (holidays (if cal-tex-holidays
733 (holiday-in-range d1 d2)))) 790 (holiday-in-range d1 d2))))
734 (cal-tex-preamble "12pt") 791 (cal-tex-preamble "12pt")
735 (cal-tex-cmd "\\textwidth 6.5in") 792 (cal-tex-weekly-paper)
736 (cal-tex-cmd "\\textheight 10.5in")
737 (cal-tex-cmd "\\oddsidemargin 0in")
738 (cal-tex-cmd "\\evensidemargin 0in")
739 (insert cal-tex-LaTeX-hourbox) 793 (insert cal-tex-LaTeX-hourbox)
740 (cal-tex-b-document) 794 (cal-tex-b-document)
741 (cal-tex-cmd "\\pagestyle{empty}") 795 (cal-tex-cmd "\\pagestyle" "empty")
742 (dotimes (i n) 796 (dotimes (i n)
743 (cal-tex-vspace "-1.5in") 797 (cal-tex-vspace "-1.5in")
744 (cal-tex-b-center) 798 (cal-tex-b-center)
@@ -816,18 +870,12 @@ position to use instead of point."
816 (holidays (if cal-tex-holidays 870 (holidays (if cal-tex-holidays
817 (holiday-in-range d1 d2))) 871 (holiday-in-range d1 d2)))
818 (diary-list (if cal-tex-diary 872 (diary-list (if cal-tex-diary
819 (cal-tex-list-diary-entries 873 (cal-tex-list-diary-entries d1 d2)))
820 ;; FIXME d1?
821 (calendar-absolute-from-gregorian (list month 1 year))
822 d2)))
823 s) 874 s)
824 (cal-tex-preamble "11pt") 875 (cal-tex-preamble "11pt")
825 (cal-tex-cmd "\\textwidth 6.5in") 876 (cal-tex-weekly-paper)
826 (cal-tex-cmd "\\textheight 10.5in")
827 (cal-tex-cmd "\\oddsidemargin 0in")
828 (cal-tex-cmd "\\evensidemargin 0in")
829 (cal-tex-b-document) 877 (cal-tex-b-document)
830 (cal-tex-cmd "\\pagestyle{empty}") 878 (cal-tex-cmd "\\pagestyle" "empty")
831 (dotimes (i n) 879 (dotimes (i n)
832 (cal-tex-vspace "-1.5in") 880 (cal-tex-vspace "-1.5in")
833 (cal-tex-b-center) 881 (cal-tex-b-center)
@@ -944,10 +992,7 @@ to use instead of point."
944 (calendar-absolute-from-gregorian 992 (calendar-absolute-from-gregorian
945 (calendar-cursor-to-date t event)))))) 993 (calendar-cursor-to-date t event))))))
946 (cal-tex-preamble "11pt") 994 (cal-tex-preamble "11pt")
947 (cal-tex-cmd "\\textwidth 6.5in") 995 (cal-tex-weekly-paper)
948 (cal-tex-cmd "\\textheight 10.5in")
949 (cal-tex-cmd "\\oddsidemargin 0in")
950 (cal-tex-cmd "\\evensidemargin 0in")
951 (cal-tex-b-document) 996 (cal-tex-b-document)
952 (dotimes (i n) 997 (dotimes (i n)
953 (cal-tex-vspace "-1cm") 998 (cal-tex-vspace "-1cm")
@@ -1009,112 +1054,8 @@ shown are hard-coded to 8-12, 13-17."
1009 (cal-tex-e-framebox) 1054 (cal-tex-e-framebox)
1010 (cal-tex-hspace "1cm"))) 1055 (cal-tex-hspace "1cm")))
1011 1056
1012;;;###cal-autoload 1057(defun cal-tex-weekly-common (n event &optional filofax)
1013(defun cal-tex-cursor-filofax-2week (&optional n event) 1058 "Common code for weekly calendars."
1014 "Two-weeks-at-a-glance Filofax style calendar for week cursor is in.
1015Optional prefix argument N specifies number of weeks (default 1).
1016The calendar shows holiday and diary entries if
1017`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1018Optional EVENT indicates a buffer position to use instead of point."
1019 (interactive (list (prefix-numeric-value current-prefix-arg)
1020 last-nonmenu-event))
1021 (or n (setq n 1))
1022 (let* ((date (calendar-gregorian-from-absolute
1023 (calendar-dayname-on-or-before
1024 calendar-week-start-day
1025 (calendar-absolute-from-gregorian
1026 (calendar-cursor-to-date t event)))))
1027 (month (calendar-extract-month date))
1028 (year (calendar-extract-year date))
1029 (day (calendar-extract-day date))
1030 (d1 (calendar-absolute-from-gregorian date))
1031 (d2 (+ (* 7 n) d1))
1032 (holidays (if cal-tex-holidays
1033 (holiday-in-range d1 d2)))
1034 (diary-list (if cal-tex-diary
1035 (cal-tex-list-diary-entries
1036 ;; FIXME d1?
1037 (calendar-absolute-from-gregorian (list month 1 year))
1038 d2))))
1039 (cal-tex-preamble "twoside")
1040 (cal-tex-cmd "\\textwidth 3.25in")
1041 (cal-tex-cmd "\\textheight 6.5in")
1042 (cal-tex-cmd "\\oddsidemargin 1.75in")
1043 (cal-tex-cmd "\\evensidemargin 1.5in")
1044 (cal-tex-cmd "\\topmargin 0pt")
1045 (cal-tex-cmd "\\headheight -0.875in")
1046 (cal-tex-cmd "\\headsep 0.125in")
1047 (cal-tex-cmd "\\footskip .125in")
1048 (insert "\\def\\righthead#1{\\hfill {\\normalsize \\bf #1}\\\\[-6pt]}
1049\\long\\def\\rightday#1#2#3#4#5{%
1050 \\rule{\\textwidth}{0.3pt}\\\\%
1051 \\hbox to \\textwidth{%
1052 \\vbox to 0.7in{%
1053 \\vspace*{2pt}%
1054 \\hbox to \\textwidth{\\small #5 \\hfill #1 {\\normalsize \\bf #2}}%
1055 \\hbox to \\textwidth{\\vbox {\\raggedleft \\footnotesize \\em #4}}%
1056 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}
1057\\def\\lefthead#1{\\noindent {\\normalsize \\bf #1}\\hfill\\\\[-6pt]}
1058\\long\\def\\leftday#1#2#3#4#5{%
1059 \\rule{\\textwidth}{0.3pt}\\\\%
1060 \\hbox to \\textwidth{%
1061 \\vbox to 0.7in{%
1062 \\vspace*{2pt}%
1063 \\hbox to \\textwidth{\\noindent {\\normalsize \\bf #2} \\small #1 \\hfill #5}%
1064 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize \\em #4}}%
1065 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}
1066")
1067 (cal-tex-b-document)
1068 (cal-tex-cmd "\\pagestyle{empty}")
1069 (dotimes (i n)
1070 (if (zerop (mod i 2))
1071 (insert "\\righthead")
1072 (insert "\\lefthead"))
1073 (cal-tex-arg
1074 (let ((d (cal-tex-incr-date date 6)))
1075 (if (= (calendar-extract-month date)
1076 (calendar-extract-month d))
1077 (format "%s %s"
1078 (cal-tex-month-name (calendar-extract-month date))
1079 (calendar-extract-year date))
1080 (if (= (calendar-extract-year date)
1081 (calendar-extract-year d))
1082 (format "%s---%s %s"
1083 (cal-tex-month-name (calendar-extract-month date))
1084 (cal-tex-month-name (calendar-extract-month d))
1085 (calendar-extract-year date))
1086 (format "%s %s---%s %s"
1087 (cal-tex-month-name (calendar-extract-month date))
1088 (calendar-extract-year date)
1089 (cal-tex-month-name (calendar-extract-month d))
1090 (calendar-extract-year d))))))
1091 (insert "%\n")
1092 (dotimes (_jdummy 7)
1093 (if (zerop (mod i 2))
1094 (insert "\\rightday")
1095 (insert "\\leftday"))
1096 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1097 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1098 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1099 (cal-tex-arg (cal-tex-latexify-list holidays date))
1100 (cal-tex-arg (eval cal-tex-daily-string))
1101 (insert "%\n")
1102 (setq date (cal-tex-incr-date date)))
1103 (unless (= i (1- n))
1104 (run-hooks 'cal-tex-week-hook)
1105 (cal-tex-newpage)))
1106 (cal-tex-end-document)
1107 (run-hooks 'cal-tex-hook)))
1108
1109;;;###cal-autoload
1110(defun cal-tex-cursor-filofax-week (&optional n event)
1111 "One-week-at-a-glance Filofax style calendar for week indicated by cursor.
1112Optional prefix argument N specifies number of weeks (default 1),
1113starting on Mondays. The calendar shows holiday and diary entries
1114if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1115Optional EVENT indicates a buffer position to use instead of point."
1116 (interactive (list (prefix-numeric-value current-prefix-arg)
1117 last-nonmenu-event))
1118 (or n (setq n 1)) 1059 (or n (setq n 1))
1119 (let* ((date (calendar-gregorian-from-absolute 1060 (let* ((date (calendar-gregorian-from-absolute
1120 (calendar-dayname-on-or-before 1061 (calendar-dayname-on-or-before
@@ -1129,48 +1070,38 @@ Optional EVENT indicates a buffer position to use instead of point."
1129 (holidays (if cal-tex-holidays 1070 (holidays (if cal-tex-holidays
1130 (holiday-in-range d1 d2))) 1071 (holiday-in-range d1 d2)))
1131 (diary-list (if cal-tex-diary 1072 (diary-list (if cal-tex-diary
1132 (cal-tex-list-diary-entries 1073 (cal-tex-list-diary-entries d1 d2))))
1133 ;; FIXME d1? 1074 (if filofax
1134 (calendar-absolute-from-gregorian (list month 1 year)) 1075 (progn
1135 d2)))) 1076 (cal-tex-preamble "twoside")
1136 (cal-tex-preamble "twoside") 1077 (cal-tex-filofax-paper)
1137 (cal-tex-cmd "\\textwidth 3.25in") 1078 (insert cal-tex-righthead)
1138 (cal-tex-cmd "\\textheight 6.5in") 1079 (cal-tex-longday "rightday" "1.85in")
1139 (cal-tex-cmd "\\oddsidemargin 1.75in") 1080 (cal-tex-longday "weekend" "0.8in")
1140 (cal-tex-cmd "\\evensidemargin 1.5in") 1081 (insert cal-tex-lefthead)
1141 (cal-tex-cmd "\\topmargin 0pt") 1082 (cal-tex-longday "leftday" "1.85in"))
1142 (cal-tex-cmd "\\headheight -0.875in") 1083 (cal-tex-preamble "twoside,12pt")
1143 (cal-tex-cmd "\\headsep 0.125in") 1084 (insert "\\textwidth 7in
1144 (cal-tex-cmd "\\footskip .125in") 1085\\textheight 10.5in
1145 (insert "\\def\\righthead#1{\\hfill {\\normalsize \\bf #1}\\\\[-6pt]} 1086\\oddsidemargin 0in
1146\\long\\def\\rightday#1#2#3#4#5{% 1087\\evensidemargin 0in
1147 \\rule{\\textwidth}{0.3pt}\\\\% 1088\\topmargin 0pt
1148 \\hbox to \\textwidth{% 1089\\headheight -0.875in
1149 \\vbox to 1.85in{% 1090\\headsep 0.125in
1150 \\vspace*{2pt}% 1091\\footskip .125in
1151 \\hbox to \\textwidth{\\small #5 \\hfill #1 {\\normalsize \\bf #2}}%
1152 \\hbox to \\textwidth{\\vbox {\\raggedleft \\footnotesize \\em #4}}%
1153 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}
1154\\long\\def\\weekend#1#2#3#4#5{%
1155 \\rule{\\textwidth}{0.3pt}\\\\%
1156 \\hbox to \\textwidth{%
1157 \\vbox to .8in{%
1158 \\vspace*{2pt}%
1159 \\hbox to \\textwidth{\\small #5 \\hfill #1 {\\normalsize \\bf #2}}%
1160 \\hbox to \\textwidth{\\vbox {\\raggedleft \\footnotesize \\em #4}}%
1161 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}
1162\\def\\lefthead#1{\\noindent {\\normalsize \\bf #1}\\hfill\\\\[-6pt]}
1163\\long\\def\\leftday#1#2#3#4#5{%
1164 \\rule{\\textwidth}{0.3pt}\\\\%
1165 \\hbox to \\textwidth{%
1166 \\vbox to 1.85in{%
1167 \\vspace*{2pt}%
1168 \\hbox to \\textwidth{\\noindent {\\normalsize \\bf #2} \\small #1 \\hfill #5}%
1169 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize \\em #4}}%
1170 \\hbox to \\textwidth{\\vbox to 0pt {\\noindent \\footnotesize #3}}}}\\\\}
1171") 1092")
1093 (insert cal-tex-righthead)
1094 (cal-tex-longday "rightday" "2.75in")
1095 (cal-tex-longday "weekend" "1.8in")
1096 (insert cal-tex-lefthead)
1097 (cal-tex-longday "leftday" "2.75in"))
1172 (cal-tex-b-document) 1098 (cal-tex-b-document)
1173 (cal-tex-cmd "\\pagestyle{empty}\\ ") 1099 (cal-tex-cmd "\\pagestyle" "empty")
1100 ;; Let's assume this is something to with twopage documents.
1101 ;; It has the downside that we start with a blank page.
1102 ;; It doesn't make obvious sense when oddside and evenside margins
1103 ;; are the same (non-filofax), but consider the left and right
1104 ;; versions of various functions as applicable to even and odd pages.
1174 (cal-tex-newpage) 1105 (cal-tex-newpage)
1175 (dotimes (i n) 1106 (dotimes (i n)
1176 (insert "\\lefthead") 1107 (insert "\\lefthead")
@@ -1203,12 +1134,35 @@ Optional EVENT indicates a buffer position to use instead of point."
1203 (insert "%\n") 1134 (insert "%\n")
1204 (setq date (cal-tex-incr-date date))) 1135 (setq date (cal-tex-incr-date date)))
1205 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n") 1136 (insert "\\noindent\\rule{\\textwidth}{0.3pt}\\\\%\n")
1137 (unless filofax
1138 (cal-tex-nl)
1139 (insert (cal-tex-mini-calendar
1140 (calendar-extract-month (cal-tex-previous-month date))
1141 (calendar-extract-year (cal-tex-previous-month date))
1142 "lastmonth" "1.1in" "1in"))
1143 (insert (cal-tex-mini-calendar
1144 (calendar-extract-month date)
1145 (calendar-extract-year date)
1146 "thismonth" "1.1in" "1in"))
1147 (insert (cal-tex-mini-calendar
1148 (calendar-extract-month (cal-tex-next-month date))
1149 (calendar-extract-year (cal-tex-next-month date))
1150 "nextmonth" "1.1in" "1in"))
1151 (insert "\\hbox to \\textwidth{")
1152 (cal-tex-hfill)
1153 (insert "\\lastmonth")
1154 (cal-tex-hfill)
1155 (insert "\\thismonth")
1156 (cal-tex-hfill)
1157 (insert "\\nextmonth")
1158 (cal-tex-hfill)
1159 (insert "}"))
1206 (cal-tex-newpage) 1160 (cal-tex-newpage)
1207 (insert "\\righthead") 1161 (insert "\\righthead")
1208 (cal-tex-arg 1162 (cal-tex-arg
1209 (let ((d (cal-tex-incr-date date 3))) 1163 (let ((d (cal-tex-incr-date date 3)))
1210 (if (= (calendar-extract-month date) 1164 (if (= (calendar-extract-month date)
1211 (calendar-extract-month d)) 1165 (calendar-extract-month d))
1212 (format "%s %s" 1166 (format "%s %s"
1213 (cal-tex-month-name (calendar-extract-month date)) 1167 (cal-tex-month-name (calendar-extract-month date))
1214 (calendar-extract-year date)) 1168 (calendar-extract-year date))
@@ -1249,6 +1203,101 @@ Optional EVENT indicates a buffer position to use instead of point."
1249 (run-hooks 'cal-tex-hook))) 1203 (run-hooks 'cal-tex-hook)))
1250 1204
1251;;;###cal-autoload 1205;;;###cal-autoload
1206(defun cal-tex-cursor-week-at-a-glance (&optional n event)
1207 "One-week-at-a-glance full page calendar for week indicated by cursor.
1208Optional prefix argument N specifies number of weeks (default 1),
1209starting on Mondays. The calendar shows holiday and diary entries
1210if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1211It does not show hours of the day. Optional EVENT indicates a buffer
1212position to use instead of point."
1213 (interactive (list (prefix-numeric-value current-prefix-arg)
1214 last-nonmenu-event))
1215 (cal-tex-weekly-common n event))
1216
1217;;;###cal-autoload
1218(defun cal-tex-cursor-filofax-2week (&optional n event)
1219 "Two-weeks-at-a-glance Filofax style calendar for week cursor is in.
1220Optional prefix argument N specifies number of weeks (default 1).
1221The calendar shows holiday and diary entries if
1222`cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1223Optional EVENT indicates a buffer position to use instead of point."
1224 (interactive (list (prefix-numeric-value current-prefix-arg)
1225 last-nonmenu-event))
1226 (or n (setq n 1))
1227 (let* ((date (calendar-gregorian-from-absolute
1228 (calendar-dayname-on-or-before
1229 calendar-week-start-day
1230 (calendar-absolute-from-gregorian
1231 (calendar-cursor-to-date t event)))))
1232 (month (calendar-extract-month date))
1233 (year (calendar-extract-year date))
1234 (day (calendar-extract-day date))
1235 (d1 (calendar-absolute-from-gregorian date))
1236 (d2 (+ (* 7 n) d1))
1237 (holidays (if cal-tex-holidays
1238 (holiday-in-range d1 d2)))
1239 (diary-list (if cal-tex-diary
1240 (cal-tex-list-diary-entries d1 d2))))
1241 (cal-tex-preamble "twoside")
1242 (cal-tex-filofax-paper)
1243 (insert cal-tex-righthead)
1244 (cal-tex-longday "rightday" "0.7in")
1245 (insert cal-tex-lefthead)
1246 (cal-tex-longday "leftday" "0.7in")
1247 (cal-tex-b-document)
1248 (cal-tex-cmd "\\pagestyle" "empty")
1249 (dotimes (i n)
1250 (if (zerop (mod i 2))
1251 (insert "\\righthead")
1252 (insert "\\lefthead"))
1253 (cal-tex-arg
1254 (let ((d (cal-tex-incr-date date 6)))
1255 (if (= (calendar-extract-month date)
1256 (calendar-extract-month d))
1257 (format "%s %s"
1258 (cal-tex-month-name (calendar-extract-month date))
1259 (calendar-extract-year date))
1260 (if (= (calendar-extract-year date)
1261 (calendar-extract-year d))
1262 (format "%s---%s %s"
1263 (cal-tex-month-name (calendar-extract-month date))
1264 (cal-tex-month-name (calendar-extract-month d))
1265 (calendar-extract-year date))
1266 (format "%s %s---%s %s"
1267 (cal-tex-month-name (calendar-extract-month date))
1268 (calendar-extract-year date)
1269 (cal-tex-month-name (calendar-extract-month d))
1270 (calendar-extract-year d))))))
1271 (insert "%\n")
1272 (dotimes (_jdummy 7)
1273 (if (zerop (mod i 2))
1274 (insert "\\rightday")
1275 (insert "\\leftday"))
1276 (cal-tex-arg (cal-tex-LaTeXify-string (calendar-day-name date)))
1277 (cal-tex-arg (number-to-string (calendar-extract-day date)))
1278 (cal-tex-arg (cal-tex-latexify-list diary-list date))
1279 (cal-tex-arg (cal-tex-latexify-list holidays date))
1280 (cal-tex-arg (eval cal-tex-daily-string))
1281 (insert "%\n")
1282 (setq date (cal-tex-incr-date date)))
1283 (unless (= i (1- n))
1284 (run-hooks 'cal-tex-week-hook)
1285 (cal-tex-newpage)))
1286 (cal-tex-end-document)
1287 (run-hooks 'cal-tex-hook)))
1288
1289;;;###cal-autoload
1290(defun cal-tex-cursor-filofax-week (&optional n event)
1291 "One-week-at-a-glance Filofax style calendar for week indicated by cursor.
1292Optional prefix argument N specifies number of weeks (default 1),
1293starting on Mondays. The calendar shows holiday and diary entries
1294if `cal-tex-holidays' and `cal-tex-diary', respectively, are non-nil.
1295Optional EVENT indicates a buffer position to use instead of point."
1296 (interactive (list (prefix-numeric-value current-prefix-arg)
1297 last-nonmenu-event))
1298 (cal-tex-weekly-common n event t))
1299
1300;;;###cal-autoload
1252(defun cal-tex-cursor-filofax-daily (&optional n event) 1301(defun cal-tex-cursor-filofax-daily (&optional n event)
1253 "Day-per-page Filofax style calendar for week indicated by cursor. 1302 "Day-per-page Filofax style calendar for week indicated by cursor.
1254Optional prefix argument N specifies number of weeks (default 1), 1303Optional prefix argument N specifies number of weeks (default 1),
@@ -1272,52 +1321,21 @@ Optional EVENT indicates a buffer position to use instead of point."
1272 (holidays (if cal-tex-holidays 1321 (holidays (if cal-tex-holidays
1273 (holiday-in-range d1 d2))) 1322 (holiday-in-range d1 d2)))
1274 (diary-list (if cal-tex-diary 1323 (diary-list (if cal-tex-diary
1275 (cal-tex-list-diary-entries 1324 (cal-tex-list-diary-entries d1 d2))))
1276 ;; FIXME d1?
1277 (calendar-absolute-from-gregorian (list month 1 year))
1278 d2))))
1279 (cal-tex-preamble "twoside") 1325 (cal-tex-preamble "twoside")
1280 (cal-tex-cmd "\\textwidth 3.25in") 1326 (cal-tex-filofax-paper)
1281 (cal-tex-cmd "\\textheight 6.5in") 1327 (insert cal-tex-righthead)
1282 (cal-tex-cmd "\\oddsidemargin 1.75in") 1328 (cal-tex-shortday "rightday")
1283 (cal-tex-cmd "\\evensidemargin 1.5in") 1329 (cal-tex-shortday "weekend")
1284 (cal-tex-cmd "\\topmargin 0pt") 1330 (insert cal-tex-lefthead)
1285 (cal-tex-cmd "\\headheight -0.875in") 1331 (cal-tex-shortday "leftday")
1286 (cal-tex-cmd "\\headsep 0.125in") 1332 (insert "\\newbox\\LineBox
1287 (cal-tex-cmd "\\footskip .125in")
1288 (insert "\\def\\righthead#1{\\hfill {\\normalsize \\bf #1}\\\\[-6pt]}
1289\\long\\def\\rightday#1#2#3{%
1290 \\rule{\\textwidth}{0.3pt}\\\\%
1291 \\hbox to \\textwidth{%
1292 \\vbox {%
1293 \\vspace*{2pt}%
1294 \\hbox to \\textwidth{\\hfill \\small #3 \\hfill}%
1295 \\hbox to \\textwidth{\\vbox {\\raggedleft \\em #2}}%
1296 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize #1}}}}}
1297\\long\\def\\weekend#1#2#3{%
1298 \\rule{\\textwidth}{0.3pt}\\\\%
1299 \\hbox to \\textwidth{%
1300 \\vbox {%
1301 \\vspace*{2pt}%
1302 \\hbox to \\textwidth{\\hfill \\small #3 \\hfill}%
1303 \\hbox to \\textwidth{\\vbox {\\noindent \\em #2}}%
1304 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize #1}}}}}
1305\\def\\lefthead#1{\\noindent {\\normalsize \\bf #1}\\hfill\\\\[-6pt]}
1306\\long\\def\\leftday#1#2#3{%
1307 \\rule{\\textwidth}{0.3pt}\\\\%
1308 \\hbox to \\textwidth{%
1309 \\vbox {%
1310 \\vspace*{2pt}%
1311 \\hbox to \\textwidth{\\hfill \\small #3 \\hfill}%
1312 \\hbox to \\textwidth{\\vbox {\\noindent \\em #2}}%
1313 \\hbox to \\textwidth{\\vbox {\\noindent \\footnotesize #1}}}}}
1314\\newbox\\LineBox
1315\\setbox\\LineBox=\\hbox to\\textwidth{% 1333\\setbox\\LineBox=\\hbox to\\textwidth{%
1316\\vrule height.2in width0pt\\leaders\\hrule\\hfill} 1334\\vrule height.2in width0pt\\leaders\\hrule\\hfill}
1317\\def\\linesfill{\\par\\leaders\\copy\\LineBox\\vfill} 1335\\def\\linesfill{\\par\\leaders\\copy\\LineBox\\vfill}
1318") 1336")
1319 (cal-tex-b-document) 1337 (cal-tex-b-document)
1320 (cal-tex-cmd "\\pagestyle{empty}") 1338 (cal-tex-cmd "\\pagestyle" "empty")
1321 (dotimes (i n) 1339 (dotimes (i n)
1322 (dotimes (j 4) 1340 (dotimes (j 4)
1323 (let ((even (zerop (% j 2)))) 1341 (let ((even (zerop (% j 2))))
@@ -1377,10 +1395,9 @@ a buffer position to use instead of point."
1377 (let ((date (calendar-absolute-from-gregorian 1395 (let ((date (calendar-absolute-from-gregorian
1378 (calendar-cursor-to-date t event)))) 1396 (calendar-cursor-to-date t event))))
1379 (cal-tex-preamble "12pt") 1397 (cal-tex-preamble "12pt")
1380 (cal-tex-cmd "\\textwidth 6.5in") 1398 (cal-tex-weekly-paper 'nomargins)
1381 (cal-tex-cmd "\\textheight 10.5in")
1382 (cal-tex-b-document) 1399 (cal-tex-b-document)
1383 (cal-tex-cmd "\\pagestyle{empty}") 1400 (cal-tex-cmd "\\pagestyle" "empty")
1384 (dotimes (i n) 1401 (dotimes (i n)
1385 (cal-tex-vspace "-1.7in") 1402 (cal-tex-vspace "-1.7in")
1386 (cal-tex-daily-page (calendar-gregorian-from-absolute date)) 1403 (cal-tex-daily-page (calendar-gregorian-from-absolute date))
@@ -1574,7 +1591,7 @@ informative header, and run HOOK."
1574 ;; FIXME latin1 might not always be right. 1591 ;; FIXME latin1 might not always be right.
1575 (insert "\\usepackage[latin1]{inputenc}\n")))) 1592 (insert "\\usepackage[latin1]{inputenc}\n"))))
1576 (latex-mode) 1593 (latex-mode)
1577 (pop-to-buffer cal-tex-buffer) 1594 (pop-to-buffer (current-buffer))
1578 (goto-char (point-min)) 1595 (goto-char (point-min))
1579 ;; FIXME auctex equivalents? 1596 ;; FIXME auctex equivalents?
1580 (cal-tex-comment 1597 (cal-tex-comment
@@ -1599,16 +1616,16 @@ non-nil, means add to end of buffer without erasing current contents."
1599 (if (not landscape) 1616 (if (not landscape)
1600 (progn 1617 (progn
1601 (cal-tex-cmd "\\oddsidemargin -1.75cm") 1618 (cal-tex-cmd "\\oddsidemargin -1.75cm")
1602 (cal-tex-cmd "\\def\\holidaymult{.06}")) 1619 (cal-tex-cmd "\\def\\holidaymult" ".06"))
1603 (cal-tex-cmd "\\special{landscape}") 1620 (cal-tex-cmd "\\special" "landscape")
1604 (cal-tex-cmd "\\textwidth 9.5in") 1621 (cal-tex-cmd "\\textwidth 9.5in")
1605 (cal-tex-cmd "\\textheight 7in") 1622 (cal-tex-cmd "\\textheight 7in")
1606 (cal-tex-comment) 1623 (cal-tex-comment)
1607 (cal-tex-cmd "\\def\\holidaymult{.08}")) 1624 (cal-tex-cmd "\\def\\holidaymult" ".08"))
1608 (cal-tex-cmd cal-tex-caldate) 1625 (cal-tex-cmd cal-tex-caldate)
1609 (cal-tex-cmd cal-tex-myday) 1626 (cal-tex-cmd cal-tex-myday)
1610 (cal-tex-b-document) 1627 (cal-tex-b-document)
1611 (cal-tex-cmd "\\pagestyle{empty}")) 1628 (cal-tex-cmd "\\pagestyle" "empty"))
1612 (cal-tex-cmd "\\setlength{\\cellwidth}" width) 1629 (cal-tex-cmd "\\setlength{\\cellwidth}" width)
1613 (insert (format "\\setlength{\\cellwidth}{%f\\cellwidth}\n" 1630 (insert (format "\\setlength{\\cellwidth}{%f\\cellwidth}\n"
1614 (/ 1.1 (length cal-tex-which-days)))) 1631 (/ 1.1 (length cal-tex-which-days))))
@@ -1671,13 +1688,11 @@ non-nil, means add to end of buffer without erasing current contents."
1671 1688
1672(defun cal-tex-vspace (space) 1689(defun cal-tex-vspace (space)
1673 "Insert vspace command to move SPACE vertically." 1690 "Insert vspace command to move SPACE vertically."
1674 (insert "\\vspace*{" space "}") 1691 (cal-tex-cmd "\\vspace*" space))
1675 (cal-tex-comment))
1676 1692
1677(defun cal-tex-hspace (space) 1693(defun cal-tex-hspace (space)
1678 "Insert hspace command to move SPACE horizontally." 1694 "Insert hspace command to move SPACE horizontally."
1679 (insert "\\hspace*{" space "}") 1695 (cal-tex-cmd "\\hspace*" space))
1680 (cal-tex-comment))
1681 1696
1682(defun cal-tex-comment (&optional comment) 1697(defun cal-tex-comment (&optional comment)
1683 "Insert `% ', followed by optional string COMMENT, followed by newline. 1698 "Insert `% ', followed by optional string COMMENT, followed by newline.
@@ -1716,20 +1731,20 @@ Add trailing COMMENT if present."
1716 1731
1717(defun cal-tex-b-document () 1732(defun cal-tex-b-document ()
1718 "Insert beginning of document." 1733 "Insert beginning of document."
1719 (cal-tex-cmd "\\begin{document}")) 1734 (cal-tex-cmd "\\begin" "document"))
1720 1735
1721(defun cal-tex-e-document () 1736(defun cal-tex-e-document ()
1722 "Insert end of document." 1737 "Insert end of document."
1723 (cal-tex-cmd "\\end{document}")) 1738 (cal-tex-cmd "\\end" "document"))
1724 1739
1725(defun cal-tex-b-center () 1740(defun cal-tex-b-center ()
1726 "Insert beginning of centered block." 1741 "Insert beginning of centered block."
1727 (cal-tex-cmd "\\begin{center}")) 1742 (cal-tex-cmd "\\begin" "center"))
1728 1743
1729(defun cal-tex-e-center () 1744(defun cal-tex-e-center ()
1730 "Insert end of centered block." 1745 "Insert end of centered block."
1731 (cal-tex-comment) 1746 (cal-tex-comment)
1732 (cal-tex-cmd "\\end{center}")) 1747 (cal-tex-cmd "\\end" "center"))
1733 1748
1734 1749
1735;;; 1750;;;
@@ -1784,35 +1799,35 @@ Add trailing COMMENT if present."
1784 1799
1785(defun cal-tex-em (string) 1800(defun cal-tex-em (string)
1786 "Insert STRING in italic font." 1801 "Insert STRING in italic font."
1787 (insert "\\textit{" string "}")) 1802 (cal-tex-cmd "\\textit" string))
1788 1803
1789(defun cal-tex-bf (string) 1804(defun cal-tex-bf (string)
1790 "Insert STRING in bf font." 1805 "Insert STRING in bf font."
1791 (insert "\\textbf{ " string "}")) 1806 (cal-tex-cmd "\\textbf" string))
1792 1807
1793(defun cal-tex-scriptsize (string) 1808(defun cal-tex-scriptsize (string)
1794 "Insert STRING in scriptsize font." 1809 "Insert STRING in scriptsize font."
1795 (insert "{\\scriptsize " string "}")) 1810 (cal-tex-arg (concat "\\scriptsize " string)))
1796 1811
1797(defun cal-tex-huge (string) 1812(defun cal-tex-huge (string)
1798 "Insert STRING in huge font." 1813 "Insert STRING in huge font."
1799 (insert "{\\huge " string "}")) 1814 (cal-tex-arg (concat "\\huge " string)))
1800 1815
1801(defun cal-tex-Huge (string) 1816(defun cal-tex-Huge (string)
1802 "Insert STRING in Huge font." 1817 "Insert STRING in Huge font."
1803 (insert "{\\Huge " string "}")) 1818 (cal-tex-arg (concat "\\Huge " string)))
1804 1819
1805(defun cal-tex-Huge-bf (string) 1820(defun cal-tex-Huge-bf (string)
1806 "Insert STRING in Huge bf font." 1821 "Insert STRING in Huge bf font."
1807 (insert "\\textbf{\\Huge " string "}")) 1822 (cal-tex-cmd "\\textbf" (concat "\\Huge " string)))
1808 1823
1809(defun cal-tex-large (string) 1824(defun cal-tex-large (string)
1810 "Insert STRING in large font." 1825 "Insert STRING in large font."
1811 (insert "{\\large " string "}")) 1826 (cal-tex-arg (concat "\\large " string)))
1812 1827
1813(defun cal-tex-large-bf (string) 1828(defun cal-tex-large-bf (string)
1814 "Insert STRING in large bf font." 1829 "Insert STRING in large bf font."
1815 (insert "\\textbf{\\large " string "}")) 1830 (cal-tex-cmd "\\textbf" (concat "\\large " string)))
1816 1831
1817 1832
1818(provide 'cal-tex) 1833(provide 'cal-tex)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 2e073fd1267..8fa5b0ddb07 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -951,12 +951,12 @@ This is recursive; that is, included files may include other files."
951 (setq diary-entries-list 951 (setq diary-entries-list
952 (append diary-entries-list 952 (append diary-entries-list
953 (diary-list-entries original-date number t))))) 953 (diary-list-entries original-date number t)))))
954 (beep) 954 (display-warning
955 (message "Can't read included diary file %s" diary-file) 955 :error
956 (sleep-for 2)) 956 (format "Can't read included diary file %s\n" diary-file)))
957 (beep) 957 (display-warning
958 (message "Can't find included diary file %s" diary-file) 958 :error
959 (sleep-for 2)))) 959 (format "Can't find included diary file %s\n" diary-file)))))
960 (goto-char (point-min))) 960 (goto-char (point-min)))
961 961
962(defun diary-include-other-diary-files () 962(defun diary-include-other-diary-files ()
@@ -1456,14 +1456,17 @@ marks. This is intended to deal with deleted diary entries."
1456 (let ((result (if calendar-debug-sexp 1456 (let ((result (if calendar-debug-sexp
1457 (let ((debug-on-error t)) 1457 (let ((debug-on-error t))
1458 (eval (car (read-from-string sexp)))) 1458 (eval (car (read-from-string sexp))))
1459 (condition-case nil 1459 (let (err)
1460 (eval (car (read-from-string sexp))) 1460 (condition-case err
1461 (error 1461 (eval (car (read-from-string sexp)))
1462 (beep) 1462 (error
1463 (message "Bad sexp at line %d in %s: %s" 1463 (display-warning
1464 (count-lines (point-min) (point)) 1464 :error
1465 diary-file sexp) 1465 (format "Bad diary sexp at line %d in %s:\n%s\n\
1466 (sleep-for 2)))))) 1466Error: %s\n"
1467 (count-lines (point-min) (point))
1468 diary-file sexp err))
1469 nil))))))
1467 (cond ((stringp result) result) 1470 (cond ((stringp result) result)
1468 ((and (consp result) 1471 ((and (consp result)
1469 (stringp (cdr result))) result) 1472 (stringp (cdr result))) result)
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 0bb3c231840..043d402f612 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -458,17 +458,20 @@ with descriptive strings such as
458(defun calendar-holiday-list () 458(defun calendar-holiday-list ()
459 "Form the list of holidays that occur on dates in the calendar window. 459 "Form the list of holidays that occur on dates in the calendar window.
460The holidays are those in the list `calendar-holidays'." 460The holidays are those in the list `calendar-holidays'."
461 (let (res h) 461 (let (res h err)
462 (sort 462 (sort
463 (dolist (p calendar-holidays res) 463 (dolist (p calendar-holidays res)
464 (if (setq h (if calendar-debug-sexp 464 (if (setq h (if calendar-debug-sexp
465 (let ((debug-on-error t)) 465 (let ((debug-on-error t))
466 (eval p)) 466 (eval p))
467 (condition-case nil 467 (condition-case err
468 (eval p) 468 (eval p)
469 (error (beep) 469 (error
470 (message "Bad holiday list item: %s" p) 470 (display-warning
471 (sleep-for 2))))) 471 :error
472 (format "Bad holiday list item: %s\nError: %s\n"
473 p err))
474 nil))))
472 (setq res (append h res)))) 475 (setq res (append h res))))
473 'calendar-date-compare))) 476 'calendar-date-compare)))
474 477
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index 3680a2648ce..06fd10149d3 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -136,12 +136,36 @@
136 :help-echo "Control text underlining." 136 :help-echo "Control text underlining."
137 (const :tag "Off" nil) 137 (const :tag "Off" nil)
138 (list :tag "On" 138 (list :tag "On"
139 :value (:color foreground-color :style line)
139 (const :format "" :value :color) 140 (const :format "" :value :color)
140 (choice :tag "Color" (const :tag "Foreground Color" foreground-color) color) 141 (choice :tag "Color"
141 (const :format "" :value :style) 142 (const :tag "Foreground Color" foreground-color)
142 (choice :tag "Style" 143 color)
143 (const :tag "Line" line) 144 (const :format "" :value :style)
144 (const :tag "Wave" wave))))) 145 (choice :tag "Style"
146 (const :tag "Line" line)
147 (const :tag "Wave" wave))))
148 ;; filter to make value suitable for customize
149 (lambda (real-value)
150 (and real-value
151 (let ((color
152 (or (and (consp real-value) (plist-get real-value :color))
153 (and (stringp real-value) real-value)
154 'foreground-color))
155 (style
156 (or (and (consp real-value) (plist-get real-value :style))
157 'line)))
158 (list :color color :style style))))
159 ;; filter to make customized-value suitable for storing
160 (lambda (cus-value)
161 (and cus-value
162 (let ((color (plist-get cus-value :color))
163 (style (plist-get cus-value :style)))
164 (cond ((eq style 'line)
165 ;; Use simple value for default style
166 (if (eq color 'foreground-color) t color))
167 (t
168 `(:color ,color :style ,style)))))))
145 169
146 (:overline 170 (:overline
147 (choice :tag "Overline" 171 (choice :tag "Overline"
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index 34d61b80d66..0c7f82d516e 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -140,7 +140,7 @@ otherwise."
140 140
141(defun describe-text-properties-1 (pos output-buffer) 141(defun describe-text-properties-1 (pos output-buffer)
142 (let* ((properties (text-properties-at pos)) 142 (let* ((properties (text-properties-at pos))
143 (overlays (overlays-at pos)) 143 (overlays (overlays-in pos (1+ pos)))
144 (wid-field (get-char-property pos 'field)) 144 (wid-field (get-char-property pos 'field))
145 (wid-button (get-char-property pos 'button)) 145 (wid-button (get-char-property pos 'button))
146 (wid-doc (get-char-property pos 'widget-doc)) 146 (wid-doc (get-char-property pos 'widget-doc))
diff --git a/lisp/dired.el b/lisp/dired.el
index 6684be3356c..cd27b6b6404 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -1331,16 +1331,16 @@ DIRED-FILENAME WINDOW-POINT)."
1331 "Mark all files remembered in ALIST. 1331 "Mark all files remembered in ALIST.
1332Each element of ALIST looks like (FILE . MARKERCHAR)." 1332Each element of ALIST looks like (FILE . MARKERCHAR)."
1333 (let (elt fil chr) 1333 (let (elt fil chr)
1334 (while alist 1334 (save-excursion
1335 (setq elt (car alist) 1335 (while alist
1336 alist (cdr alist) 1336 (setq elt (car alist)
1337 fil (car elt) 1337 alist (cdr alist)
1338 chr (cdr elt)) 1338 fil (car elt)
1339 (if (dired-goto-file fil) 1339 chr (cdr elt))
1340 (save-excursion 1340 (when (dired-goto-file fil)
1341 (beginning-of-line) 1341 (beginning-of-line)
1342 (delete-char 1) 1342 (delete-char 1)
1343 (insert chr)))))) 1343 (insert chr))))))
1344 1344
1345(defun dired-remember-hidden () 1345(defun dired-remember-hidden ()
1346 "Return a list of names of subdirs currently hidden." 1346 "Return a list of names of subdirs currently hidden."
@@ -1739,7 +1739,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1739 1739
1740 (define-key map 1740 (define-key map
1741 [menu-bar operate epa-dired-do-decrypt] 1741 [menu-bar operate epa-dired-do-decrypt]
1742 '(menu-item "Decrypt" epa-dired-do-decrypt 1742 '(menu-item "Decrypt..." epa-dired-do-decrypt
1743 :help "Decrypt file at cursor")) 1743 :help "Decrypt file at cursor"))
1744 1744
1745 (define-key map 1745 (define-key map
@@ -1749,12 +1749,12 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1749 1749
1750 (define-key map 1750 (define-key map
1751 [menu-bar operate epa-dired-do-sign] 1751 [menu-bar operate epa-dired-do-sign]
1752 '(menu-item "Sign" epa-dired-do-sign 1752 '(menu-item "Sign..." epa-dired-do-sign
1753 :help "Create digital signature of file at cursor")) 1753 :help "Create digital signature of file at cursor"))
1754 1754
1755 (define-key map 1755 (define-key map
1756 [menu-bar operate epa-dired-do-encrypt] 1756 [menu-bar operate epa-dired-do-encrypt]
1757 '(menu-item "Encrypt" epa-dired-do-encrypt 1757 '(menu-item "Encrypt..." epa-dired-do-encrypt
1758 :help "Encrypt file at cursor")) 1758 :help "Encrypt file at cursor"))
1759 1759
1760 (define-key map [menu-bar operate dashes-3] 1760 (define-key map [menu-bar operate dashes-3]
@@ -2950,6 +2950,8 @@ or \"* [3 files]\"."
2950 (split-window-sensibly window)))) 2950 (split-window-sensibly window))))
2951 pop-up-frames) 2951 pop-up-frames)
2952 (pop-to-buffer (get-buffer-create buf))) 2952 (pop-to-buffer (get-buffer-create buf)))
2953 ;; See Bug#12281.
2954 (set-window-start nil (point-min))
2953 ;; If dired-shrink-to-fit is t, make its window fit its contents. 2955 ;; If dired-shrink-to-fit is t, make its window fit its contents.
2954 (when dired-shrink-to-fit 2956 (when dired-shrink-to-fit
2955 ;; Try to not delete window when we want to display less than 2957 ;; Try to not delete window when we want to display less than
@@ -2971,36 +2973,43 @@ If t, confirmation is never needed."
2971 (const shell) (const symlink) (const touch) 2973 (const shell) (const symlink) (const touch)
2972 (const uncompress)))) 2974 (const uncompress))))
2973 2975
2974(defun dired-mark-pop-up (bufname op-symbol files function &rest args) 2976(defun dired-mark-pop-up (buffer-or-name op-symbol files function &rest args)
2975 "Return FUNCTION's result on ARGS after showing which files are marked. 2977 "Return FUNCTION's result on ARGS after showing which files are marked.
2976Displays the file names in a buffer named BUFNAME; 2978Displays the file names in a window showing a buffer named
2977 nil gives \" *Marked Files*\". 2979BUFFER-OR-NAME; the default name being \" *Marked Files*\". The
2978This uses function `dired-pop-to-buffer' to do that. 2980window is not shown if there is just one file, `dired-no-confirm'
2979 2981is t, or OP-SYMBOL is a member of the list in `dired-no-confirm'.
2980FUNCTION should not manipulate files, just read input 2982
2981 (an argument or confirmation).
2982The window is not shown if there is just one file or
2983 OP-SYMBOL is a member of the list in `dired-no-confirm'.
2984FILES is the list of marked files. It can also be (t FILENAME) 2983FILES is the list of marked files. It can also be (t FILENAME)
2985in the case of one marked file, to distinguish that from using 2984in the case of one marked file, to distinguish that from using
2986just the current file." 2985just the current file.
2987 (or bufname (setq bufname " *Marked Files*")) 2986
2987FUNCTION should not manipulate files, just read input \(an
2988argument or confirmation)."
2988 (if (or (eq dired-no-confirm t) 2989 (if (or (eq dired-no-confirm t)
2989 (memq op-symbol dired-no-confirm) 2990 (memq op-symbol dired-no-confirm)
2990 ;; If FILES defaulted to the current line's file. 2991 ;; If FILES defaulted to the current line's file.
2991 (= (length files) 1)) 2992 (= (length files) 1))
2992 (apply function args) 2993 (apply function args)
2993 (with-current-buffer (get-buffer-create bufname) 2994 (let ((buffer (get-buffer-create (or buffer-or-name " *Marked Files*"))))
2994 (erase-buffer) 2995 (with-current-buffer buffer
2995 ;; Handle (t FILE) just like (FILE), here. 2996 (let ((split-height-threshold 0))
2996 ;; That value is used (only in some cases), to mean 2997 (with-temp-buffer-window
2997 ;; just one file that was marked, rather than the current line file. 2998 buffer
2998 (dired-format-columns-of-files (if (eq (car files) t) (cdr files) files)) 2999 (cons 'display-buffer-below-selected nil)
2999 (remove-text-properties (point-min) (point-max) 3000 #'(lambda (window _value)
3000 '(mouse-face nil help-echo nil))) 3001 (with-selected-window window
3001 (save-window-excursion 3002 (unwind-protect
3002 (dired-pop-to-buffer bufname) 3003 (apply function args)
3003 (apply function args)))) 3004 (when (window-live-p window)
3005 (quit-restore-window window 'kill)))))
3006 ;; Handle (t FILE) just like (FILE), here. That value is
3007 ;; used (only in some cases), to mean just one file that was
3008 ;; marked, rather than the current line file.
3009 (dired-format-columns-of-files
3010 (if (eq (car files) t) (cdr files) files))
3011 (remove-text-properties (point-min) (point-max)
3012 '(mouse-face nil help-echo nil))))))))
3004 3013
3005(defun dired-format-columns-of-files (files) 3014(defun dired-format-columns-of-files (files)
3006 (let ((beg (point))) 3015 (let ((beg (point)))
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 86497a3c73f..532c81c502c 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -635,7 +635,7 @@ If ALIST is non-nil, the new pairs are prepended to it."
635 (set-buffer-modified-p ,flag))) 635 (set-buffer-modified-p ,flag)))
636(gv-define-simple-setter buffer-name rename-buffer t) 636(gv-define-simple-setter buffer-name rename-buffer t)
637(gv-define-setter buffer-string (store) 637(gv-define-setter buffer-string (store)
638 `(progn (erase-buffer) (insert ,store))) 638 `(insert (prog1 ,store (erase-buffer))))
639(gv-define-simple-setter buffer-substring cl--set-buffer-substring) 639(gv-define-simple-setter buffer-substring cl--set-buffer-substring)
640(gv-define-simple-setter current-buffer set-buffer) 640(gv-define-simple-setter current-buffer set-buffer)
641(gv-define-simple-setter current-case-table set-case-table) 641(gv-define-simple-setter current-case-table set-case-table)
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index d1f997c99c4..4caa0a73866 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -191,8 +191,9 @@ well for simple place forms.
191Assignments of VAL to (NAME ARGS...) are expanded by binding the argument 191Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
192forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must 192forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
193return a Lisp form that does the assignment. 193return a Lisp form that does the assignment.
194Actually, ARGLIST may be bound to temporary variables which are introduced 194The first arg in ARLIST (the one that receives VAL) receives an expression
195automatically to preserve proper execution order of the arguments. Example: 195which can do arbitrary things, whereas the other arguments are all guaranteed
196to be pure and copyable. Example use:
196 (gv-define-setter aref (v a i) `(aset ,a ,i ,v))" 197 (gv-define-setter aref (v a i) `(aset ,a ,i ,v))"
197 (declare (indent 2) (debug (&define name sexp body))) 198 (declare (indent 2) (debug (&define name sexp body)))
198 `(gv-define-expander ,name 199 `(gv-define-expander ,name
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index b87cfd41f61..37e755e7655 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,29 @@
12012-08-21 Josh Feinstein <jlf@foxtail.org>
2
3 * erc-join.el (erc-autojoin-timing): Fix defcustom type.
4
52012-08-21 Julien Danjou <julien@danjou.info>
6
7 * erc-match.el (erc-match-message): Use
8 `erc-match-exclude-server-buffer' not
9 `erc-track-exclude-server-buffer'.
10
112012-08-20 Josh Feinstein <jlf@foxtail.org>
12
13 * erc.el (erc-display-message): Abstract message hiding decision
14 to new function erc-hide-current-message-p.
15 (erc-lurker): New customization group.
16 (erc-lurker-state, erc-lurker-trim-nicks, erc-lurker-ignore-chars)
17 (erc-lurker-hide-list, erc-lurker-cleanup-interval)
18 (erc-lurker-threshold-time): New variables.
19 (erc-lurker-maybe-trim, erc-lurker-initialize, erc-lurker-cleanup)
20 (erc-hide-current-message-p, erc-canonicalize-server-name)
21 (erc-lurker-update-status, erc-lurker-p): New functions. Together
22 they maintain state about which users have spoken in the last
23 erc-lurker-threshold-time, with all other users being considered
24 lurkers whose messages of types in erc-lurker-hide-list will not
25 be displayed by erc-display-message.
26
12012-08-06 Julien Danjou <julien@danjou.info> 272012-08-06 Julien Danjou <julien@danjou.info>
2 28
3 * erc-match.el (erc-match-exclude-server-buffer) 29 * erc-match.el (erc-match-exclude-server-buffer)
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index 85d1edf6427..ae7f90003a6 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -84,8 +84,8 @@ identification, or after `erc-autojoin-delay' seconds.
84Any other value means the same as `connect'." 84Any other value means the same as `connect'."
85 :group 'erc-autojoin 85 :group 'erc-autojoin
86 :version "24.1" 86 :version "24.1"
87 :type '(choice (const :tag "On Connection" 'connect) 87 :type '(choice (const :tag "On Connection" connect)
88 (const :tag "When Identified" 'ident))) 88 (const :tag "When Identified" ident)))
89 89
90(defcustom erc-autojoin-delay 30 90(defcustom erc-autojoin-delay 30
91 "Number of seconds to wait before attempting to autojoin channels. 91 "Number of seconds to wait before attempting to autojoin channels.
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 8daf9be2b14..cac042c0298 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -458,7 +458,7 @@ Use this defun with `erc-insert-modify-hook'."
458 (point-min)) 458 (point-min))
459 (point-max)))) 459 (point-max))))
460 (when (and vector 460 (when (and vector
461 (not (and erc-track-exclude-server-buffer 461 (not (and erc-match-exclude-server-buffer
462 (erc-server-buffer-p)))) 462 (erc-server-buffer-p))))
463 (mapc 463 (mapc
464 (lambda (match-type) 464 (lambda (match-type)
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 0fc308621b1..feef75940f3 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -100,6 +100,10 @@
100 "Ignoring certain messages" 100 "Ignoring certain messages"
101 :group 'erc) 101 :group 'erc)
102 102
103(defgroup erc-lurker nil
104 "Hide specified message types sent by lurkers"
105 :group 'erc-ignore)
106
103(defgroup erc-query nil 107(defgroup erc-query nil
104 "Using separate buffers for private discussions" 108 "Using separate buffers for private discussions"
105 :group 'erc) 109 :group 'erc)
@@ -2455,6 +2459,174 @@ See also `erc-make-notice'."
2455 string) 2459 string)
2456 string))) 2460 string)))
2457 2461
2462(defvar erc-lurker-state nil
2463 "Track the time of the last PRIVMSG for each (server,nick) pair.
2464
2465This is implemented as a hash of hashes, where the outer key is
2466the canonicalized server name (as returned by
2467`erc-canonicalize-server-name') and the outer value is a hash
2468table mapping nicks (as returned by `erc-lurker-maybe-trim') to
2469the times of their most recently received PRIVMSG on any channel
2470on the given server.")
2471
2472(defcustom erc-lurker-trim-nicks t
2473 "If t, trim trailing `erc-lurker-ignore-chars' from nicks.
2474
2475This causes e.g. nick and nick` to be considered as the same
2476individual for activity tracking and lurkiness detection
2477purposes."
2478 :group 'erc-lurker
2479 :type 'boolean)
2480
2481(defun erc-lurker-maybe-trim (nick)
2482 "Maybe trim trailing `erc-lurker-ignore-chars' from NICK.
2483
2484Returns NICK unmodified unless `erc-lurker-trim-nicks' is
2485non-nil."
2486 (if erc-lurker-trim-nicks
2487 (replace-regexp-in-string
2488 (format "[%s]"
2489 (mapconcat (lambda (char)
2490 (regexp-quote (char-to-string char)))
2491 erc-lurker-ignore-chars ""))
2492 "" nick)
2493 nick))
2494
2495(defcustom erc-lurker-ignore-chars "`_"
2496 "Characters at the end of a nick to strip for activity tracking purposes.
2497
2498See also `erc-lurker-trim-nicks'."
2499 :group 'erc-lurker
2500 :type 'string)
2501
2502(defcustom erc-lurker-hide-list nil
2503 "List of IRC type messages to hide when sent by lurkers.
2504
2505A typical value would be '(\"JOIN\" \"PART\" \"QUIT\").
2506See also `erc-lurker-p' and `erc-hide-list'."
2507 :group 'erc-lurker
2508 :type 'erc-message-type)
2509
2510(defcustom erc-lurker-threshold-time (* 60 60 24) ; 24h by default
2511 "Nicks from which no PRIVMSGs have been received within this
2512interval (in units of seconds) are considered lurkers by
2513`erc-lurker-p' and as a result their messages of types in
2514`erc-lurker-hide-list' will be hidden."
2515 :group 'erc-lurker
2516 :type 'integer)
2517
2518(defun erc-lurker-initialize ()
2519 "Initialize ERC lurker tracking functionality.
2520
2521This function adds `erc-lurker-update-status' to
2522`erc-insert-pre-hook' in order to record the time of each nick's
2523most recent PRIVMSG as well as initializing the state variable
2524storing this information."
2525 (setq erc-lurker-state (make-hash-table :test 'equal))
2526 (add-hook 'erc-insert-pre-hook 'erc-lurker-update-status))
2527
2528(defun erc-lurker-cleanup ()
2529 "Remove all last PRIVMSG state older than `erc-lurker-threshold-time'.
2530
2531This should be called regularly to avoid excessive resource
2532consumption for long-lived IRC or Emacs sessions."
2533 (maphash
2534 (lambda (server hash)
2535 (maphash
2536 (lambda (nick last-PRIVMSG-time)
2537 (when
2538 (> (time-to-seconds (time-subtract
2539 (current-time)
2540 last-PRIVMSG-time))
2541 erc-lurker-threshold-time)
2542 (remhash nick hash)))
2543 hash)
2544 (if (zerop (hash-table-count hash))
2545 (remhash server erc-lurker-state)))
2546 erc-lurker-state))
2547
2548(defvar erc-lurker-cleanup-count 0
2549 "Internal counter variable for use with `erc-lurker-cleanup-interval'.")
2550
2551(defvar erc-lurker-cleanup-interval 100
2552 "Specifies frequency of cleaning up stale erc-lurker state.
2553
2554`erc-lurker-update-status' calls `erc-lurker-cleanup' once for
2555every `erc-lurker-cleanup-interval' updates to
2556`erc-lurker-state'. This is designed to limit the memory
2557consumption of lurker state during long Emacs sessions and/or ERC
2558sessions with large numbers of incoming PRIVMSGs.")
2559
2560(defun erc-lurker-update-status (message)
2561 "Update `erc-lurker-state' if necessary.
2562
2563This function is called from `erc-insert-pre-hook'. If the
2564current message is a PRIVMSG, update `erc-lurker-state' to
2565reflect the fact that its sender has issued a PRIVMSG at the
2566current time. Otherwise, take no action.
2567
2568This function depends on the fact that `erc-display-message'
2569dynamically binds `parsed', which is used to check if the current
2570message is a PRIVMSG and to determine its sender. See also
2571`erc-lurker-trim-nicks' and `erc-lurker-ignore-chars'.
2572
2573In order to limit memory consumption, this function also calls
2574`erc-lurker-cleanup' once every `erc-lurker-cleanup-interval'
2575updates of `erc-lurker-state'."
2576 (when (and (boundp 'parsed) (erc-response-p parsed))
2577 (let* ((command (erc-response.command parsed))
2578 (sender
2579 (erc-lurker-maybe-trim
2580 (car (erc-parse-user (erc-response.sender parsed)))))
2581 (server
2582 (erc-canonicalize-server-name erc-server-announced-name)))
2583 (when (equal command "PRIVMSG")
2584 (when (>= (incf erc-lurker-cleanup-count) erc-lurker-cleanup-interval)
2585 (setq erc-lurker-cleanup-count 0)
2586 (erc-lurker-cleanup))
2587 (unless (gethash server erc-lurker-state)
2588 (puthash server (make-hash-table :test 'equal) erc-lurker-state))
2589 (puthash sender (current-time)
2590 (gethash server erc-lurker-state))))))
2591
2592(defun erc-lurker-p (nick)
2593 "Predicate indicating NICK's lurking status on the current server.
2594
2595Lurking is the condition where NICK has issued no PRIVMSG on this
2596server within `erc-lurker-threshold-time'. See also
2597`erc-lurker-trim-nicks' and `erc-lurker-ignore-chars'."
2598 (unless erc-lurker-state (erc-lurker-initialize))
2599 (let* ((server
2600 (erc-canonicalize-server-name erc-server-announced-name))
2601 (last-PRIVMSG-time
2602 (gethash (erc-lurker-maybe-trim nick)
2603 (gethash server erc-lurker-state (make-hash-table)))))
2604 (or (null last-PRIVMSG-time)
2605 (> (time-to-seconds
2606 (time-subtract (current-time) last-PRIVMSG-time))
2607 erc-lurker-threshold-time))))
2608
2609(defun erc-canonicalize-server-name (server)
2610 "Returns the canonical network name for SERVER if any,
2611otherwise `erc-server-announced-name'. SERVER is matched against
2612`erc-common-server-suffixes'."
2613 (when server
2614 (or (cdar (erc-remove-if-not
2615 (lambda (net) (string-match (car net) server))
2616 erc-common-server-suffixes))
2617 erc-server-announced-name)))
2618
2619(defun erc-hide-current-message-p (parsed)
2620 "Predicate indicating whether the parsed ERC response PARSED should be hidden.
2621
2622Messages are always hidden if the message type of PARSED appears in
2623`erc-hide-list'. In addition, messages whose type is a member of
2624`erc-lurker-hide-list' are hidden if `erc-lurker-p' returns true."
2625 (let* ((command (erc-response.command parsed))
2626 (sender (car (erc-parse-user (erc-response.sender parsed)))))
2627 (or (member command erc-hide-list)
2628 (and (member command erc-lurker-hide-list) (erc-lurker-p sender)))))
2629
2458(defun erc-display-message (parsed type buffer msg &rest args) 2630(defun erc-display-message (parsed type buffer msg &rest args)
2459 "Display MSG in BUFFER. 2631 "Display MSG in BUFFER.
2460 2632
@@ -2479,7 +2651,7 @@ See also `erc-format-message' and `erc-display-line'."
2479 2651
2480 (if (not (erc-response-p parsed)) 2652 (if (not (erc-response-p parsed))
2481 (erc-display-line string buffer) 2653 (erc-display-line string buffer)
2482 (unless (member (erc-response.command parsed) erc-hide-list) 2654 (unless (erc-hide-current-message-p parsed)
2483 (erc-put-text-property 0 (length string) 'erc-parsed parsed string) 2655 (erc-put-text-property 0 (length string) 'erc-parsed parsed string)
2484 (erc-put-text-property 0 (length string) 'rear-sticky t string) 2656 (erc-put-text-property 0 (length string) 'rear-sticky t string)
2485 (erc-display-line string buffer))))) 2657 (erc-display-line string buffer)))))
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index 35f7a0a9e3d..58402e37508 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -1110,6 +1110,8 @@ Execute a COMMAND as the superuser or another USER.")
1110 (format "%s|sudo:%s@%s:%s" 1110 (format "%s|sudo:%s@%s:%s"
1111 (substring prefix 0 -1) user host dir) 1111 (substring prefix 0 -1) user host dir)
1112 (format "/sudo:%s@%s:%s" user host dir)))) 1112 (format "/sudo:%s@%s:%s" user host dir))))
1113 ;; Ensure, that Tramp has connected to that construct already.
1114 (file-exists-p default-directory)
1113 (eshell-named-command (car orig-args) (cdr orig-args)))))))) 1115 (eshell-named-command (car orig-args) (cdr orig-args))))))))
1114 1116
1115(put 'eshell/sudo 'eshell-no-numeric-conversions t) 1117(put 'eshell/sudo 'eshell-no-numeric-conversions t)
diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el
index 52df1587d5f..e48213c54d6 100644
--- a/lisp/eshell/esh-ext.el
+++ b/lisp/eshell/esh-ext.el
@@ -207,9 +207,14 @@ causing the user to wonder if anything's really going on..."
207(defun eshell-external-command (command args) 207(defun eshell-external-command (command args)
208 "Insert output from an external COMMAND, using ARGS." 208 "Insert output from an external COMMAND, using ARGS."
209 (setq args (eshell-stringify-list (eshell-flatten-list args))) 209 (setq args (eshell-stringify-list (eshell-flatten-list args)))
210 ;; (if (file-remote-p default-directory) 210 (let ((interp (eshell-find-interpreter
211 ;; (eshell-remote-command command args)) 211 command
212 (let ((interp (eshell-find-interpreter command))) 212 ;; `eshell-find-interpreter' does not work correctly
213 ;; for Tramp file name syntax. But we don't need to
214 ;; know the interpreter in that case, therefore the
215 ;; check is suppressed.
216 (or (and (stringp command) (file-remote-p command))
217 (file-remote-p default-directory)))))
213 (cl-assert interp) 218 (cl-assert interp)
214 (if (functionp (car interp)) 219 (if (functionp (car interp))
215 (apply (car interp) (append (cdr interp) args)) 220 (apply (car interp) (append (cdr interp) args))
diff --git a/lisp/faces.el b/lisp/faces.el
index 2e1ba7798e9..6a477e172e1 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -2444,7 +2444,7 @@ Note: Other faces cannot inherit from the cursor face."
2444 :group 'menu 2444 :group 'menu
2445 :group 'basic-faces) 2445 :group 'basic-faces)
2446 2446
2447(defface help-argument-name '((((supports :slant italic)) :inherit italic)) 2447(defface help-argument-name '((t :inherit italic))
2448 "Face to highlight argument names in *Help* buffers." 2448 "Face to highlight argument names in *Help* buffers."
2449 :group 'help) 2449 :group 'help)
2450 2450
diff --git a/lisp/ffap.el b/lisp/ffap.el
index d0f3b639cf2..ebe8b6dee94 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1703,7 +1703,7 @@ Only intended for interactive use."
1703 buffer-or-list 1703 buffer-or-list
1704 (list buffer-or-list))) 1704 (list buffer-or-list)))
1705 (with-current-buffer buffer 1705 (with-current-buffer buffer
1706 (toggle-read-only 1)))) 1706 (read-only-mode 1))))
1707 1707
1708(defun ffap-read-only () 1708(defun ffap-read-only ()
1709 "Like `ffap', but mark buffer as read-only. 1709 "Like `ffap', but mark buffer as read-only.
diff --git a/lisp/files.el b/lisp/files.el
index 5caa4681884..6528632c841 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1456,7 +1456,7 @@ file names with wildcards."
1456 (file-exists-p filename)) 1456 (file-exists-p filename))
1457 (error "%s does not exist" filename)) 1457 (error "%s does not exist" filename))
1458 (let ((value (funcall fun filename wildcards))) 1458 (let ((value (funcall fun filename wildcards)))
1459 (mapc (lambda (b) (with-current-buffer b (toggle-read-only 1))) 1459 (mapc (lambda (b) (with-current-buffer b (read-only-mode 1)))
1460 (if (listp value) value (list value))) 1460 (if (listp value) value (list value)))
1461 value)) 1461 value))
1462 1462
@@ -2837,7 +2837,8 @@ symbol and VAL is a value that is considered safe."
2837 ;; This should be here at least as long as Emacs supports write-file-hooks. 2837 ;; This should be here at least as long as Emacs supports write-file-hooks.
2838 '((add-hook 'write-file-hooks 'time-stamp) 2838 '((add-hook 'write-file-hooks 'time-stamp)
2839 (add-hook 'write-file-functions 'time-stamp) 2839 (add-hook 'write-file-functions 'time-stamp)
2840 (add-hook 'before-save-hook 'time-stamp)) 2840 (add-hook 'before-save-hook 'time-stamp nil t)
2841 (add-hook 'before-save-hook 'delete-trailing-whitespace nil t))
2841 "Expressions that are considered safe in an `eval:' local variable. 2842 "Expressions that are considered safe in an `eval:' local variable.
2842Add expressions to this list if you want Emacs to evaluate them, when 2843Add expressions to this list if you want Emacs to evaluate them, when
2843they appear in an `eval' local variable specification, without first 2844they appear in an `eval' local variable specification, without first
@@ -4817,51 +4818,12 @@ prints a message in the minibuffer. Instead, use `set-buffer-modified-p'."
4817 "Modification-flag cleared")) 4818 "Modification-flag cleared"))
4818 (set-buffer-modified-p arg)) 4819 (set-buffer-modified-p arg))
4819 4820
4820(defun toggle-read-only (&optional arg message) 4821(defun toggle-read-only (&optional arg interactive)
4821 "Toggle the read-only state of the current buffer. 4822 (declare (obsolete read-only-mode "24.3"))
4822With prefix argument ARG, make the buffer read-only if ARG is 4823 (interactive (list current-prefix-arg t))
4823positive; otherwise make it writable. 4824 (if interactive
4824 4825 (call-interactively 'read-only-mode)
4825When making the buffer read-only, enable View mode if 4826 (read-only-mode (or arg 'toggle))))
4826`view-read-only' is non-nil. When making the buffer writable,
4827disable View mode if View mode is enabled.
4828
4829If called interactively, or if called from Lisp with MESSAGE
4830non-nil, print a message reporting the buffer's new read-only
4831status.
4832
4833Do not call this from a Lisp program unless you really intend to
4834do the same thing as the \\[toggle-read-only] command, including
4835possibly enabling or disabling View mode. Also, note that this
4836command works by setting the variable `buffer-read-only', which
4837does not affect read-only regions caused by text properties. To
4838ignore read-only status in a Lisp program (whether due to text
4839properties or buffer state), bind `inhibit-read-only' temporarily
4840to a non-nil value."
4841 (interactive "P")
4842 (cond
4843 ;; Do nothing if `buffer-read-only' already matches the state
4844 ;; specified by ARG.
4845 ((and arg
4846 (if (> (prefix-numeric-value arg) 0)
4847 buffer-read-only
4848 (not buffer-read-only))))
4849 ;; If View mode is enabled, exit it.
4850 ((and buffer-read-only view-mode)
4851 (View-exit-and-edit)
4852 (set (make-local-variable 'view-read-only) t))
4853 ;; If `view-read-only' is non-nil, enable View mode.
4854 ((and view-read-only
4855 (not buffer-read-only)
4856 (not view-mode)
4857 (not (eq (get major-mode 'mode-class) 'special)))
4858 (view-mode-enter))
4859 ;; The usual action: flip `buffer-read-only'.
4860 (t (setq buffer-read-only (not buffer-read-only))
4861 (force-mode-line-update)))
4862 (if (or message (called-interactively-p 'interactive))
4863 (message "Read-only %s for this buffer"
4864 (if buffer-read-only "enabled" "disabled"))))
4865 4827
4866(defun insert-file (filename) 4828(defun insert-file (filename)
4867 "Insert contents of file FILENAME into buffer after point. 4829 "Insert contents of file FILENAME into buffer after point.
@@ -5388,23 +5350,26 @@ non-nil, it is called instead of rereading visited file contents."
5388 (not (file-exists-p file-name))) 5350 (not (file-exists-p file-name)))
5389 (error "Auto-save file %s not current" 5351 (error "Auto-save file %s not current"
5390 (abbreviate-file-name file-name))) 5352 (abbreviate-file-name file-name)))
5391 ((save-window-excursion 5353 ((with-temp-buffer-window
5392 (with-output-to-temp-buffer "*Directory*" 5354 "*Directory*" nil
5393 (buffer-disable-undo standard-output) 5355 #'(lambda (window _value)
5394 (save-excursion 5356 (with-selected-window window
5395 (let ((switches dired-listing-switches)) 5357 (unwind-protect
5396 (if (file-symlink-p file) 5358 (yes-or-no-p (format "Recover auto save file %s? " file-name))
5397 (setq switches (concat switches " -L"))) 5359 (when (window-live-p window)
5398 (set-buffer standard-output) 5360 (quit-restore-window window 'kill)))))
5399 ;; Use insert-directory-safely, not insert-directory, 5361 (with-current-buffer standard-output
5400 ;; because these files might not exist. In particular, 5362 (let ((switches dired-listing-switches))
5401 ;; FILE might not exist if the auto-save file was for 5363 (if (file-symlink-p file)
5402 ;; a buffer that didn't visit a file, such as "*mail*". 5364 (setq switches (concat switches " -L")))
5403 ;; The code in v20.x called `ls' directly, so we need 5365 ;; Use insert-directory-safely, not insert-directory,
5404 ;; to emulate what `ls' did in that case. 5366 ;; because these files might not exist. In particular,
5405 (insert-directory-safely file switches) 5367 ;; FILE might not exist if the auto-save file was for
5406 (insert-directory-safely file-name switches)))) 5368 ;; a buffer that didn't visit a file, such as "*mail*".
5407 (yes-or-no-p (format "Recover auto save file %s? " file-name))) 5369 ;; The code in v20.x called `ls' directly, so we need
5370 ;; to emulate what `ls' did in that case.
5371 (insert-directory-safely file switches)
5372 (insert-directory-safely file-name switches))))
5408 (switch-to-buffer (find-file-noselect file t)) 5373 (switch-to-buffer (find-file-noselect file t))
5409 (let ((inhibit-read-only t) 5374 (let ((inhibit-read-only t)
5410 ;; Keep the current buffer-file-coding-system. 5375 ;; Keep the current buffer-file-coding-system.
@@ -6365,8 +6330,15 @@ if any returns nil. If `confirm-kill-emacs' is non-nil, calls it."
6365 (setq active t)) 6330 (setq active t))
6366 (setq processes (cdr processes))) 6331 (setq processes (cdr processes)))
6367 (or (not active) 6332 (or (not active)
6368 (progn (list-processes t) 6333 (with-temp-buffer-window
6369 (yes-or-no-p "Active processes exist; kill them and exit anyway? "))))) 6334 (get-buffer-create "*Process List*") nil
6335 #'(lambda (window _value)
6336 (with-selected-window window
6337 (unwind-protect
6338 (yes-or-no-p "Active processes exist; kill them and exit anyway? ")
6339 (when (window-live-p window)
6340 (quit-restore-window window 'kill)))))
6341 (list-processes t)))))
6370 ;; Query the user for other things, perhaps. 6342 ;; Query the user for other things, perhaps.
6371 (run-hook-with-args-until-failure 'kill-emacs-query-functions) 6343 (run-hook-with-args-until-failure 'kill-emacs-query-functions)
6372 (or (null confirm-kill-emacs) 6344 (or (null confirm-kill-emacs)
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index f3e313e9c35..77c21d26535 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -146,8 +146,8 @@
146;; fontified automagically. In your ~/.emacs there could be: 146;; fontified automagically. In your ~/.emacs there could be:
147;; 147;;
148;; (defvar foo-font-lock-keywords 148;; (defvar foo-font-lock-keywords
149;; '(("\\<\\(one\\|two\\|three\\)\\>" . font-lock-keyword-face) 149;; '(("\\<\\(one\\|two\\|three\\)\\>" . 'font-lock-keyword-face)
150;; ("\\<\\(four\\|five\\|six\\)\\>" . font-lock-type-face)) 150;; ("\\<\\(four\\|five\\|six\\)\\>" . 'font-lock-type-face))
151;; "Default expressions to highlight in Foo mode.") 151;; "Default expressions to highlight in Foo mode.")
152;; 152;;
153;; (add-hook 'foo-mode-hook 153;; (add-hook 'foo-mode-hook
@@ -167,8 +167,8 @@
167;; could be: 167;; could be:
168;; 168;;
169;; (defvar bar-font-lock-keywords 169;; (defvar bar-font-lock-keywords
170;; '(("\\<\\(uno\\|due\\|tre\\)\\>" . font-lock-keyword-face) 170;; '(("\\<\\(uno\\|due\\|tre\\)\\>" . 'font-lock-keyword-face)
171;; ("\\<\\(quattro\\|cinque\\|sei\\)\\>" . font-lock-type-face)) 171;; ("\\<\\(quattro\\|cinque\\|sei\\)\\>" . 'font-lock-type-face))
172;; "Default expressions to highlight in Bar mode.") 172;; "Default expressions to highlight in Bar mode.")
173;; 173;;
174;; and within `bar-mode' there could be: 174;; and within `bar-mode' there could be:
@@ -679,8 +679,8 @@ end of the current highlighting list.
679For example: 679For example:
680 680
681 (font-lock-add-keywords 'c-mode 681 (font-lock-add-keywords 'c-mode
682 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend) 682 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 'font-lock-warning-face prepend)
683 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . font-lock-keyword-face))) 683 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . 'font-lock-keyword-face)))
684 684
685adds two fontification patterns for C mode, to fontify `FIXME:' words, even in 685adds two fontification patterns for C mode, to fontify `FIXME:' words, even in
686comments, and to fontify `and', `or' and `not' words as keywords. 686comments, and to fontify `and', `or' and `not' words as keywords.
@@ -694,9 +694,9 @@ For example:
694 (add-hook 'c-mode-hook 694 (add-hook 'c-mode-hook
695 (lambda () 695 (lambda ()
696 (font-lock-add-keywords nil 696 (font-lock-add-keywords nil
697 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 font-lock-warning-face prepend) 697 '((\"\\\\\\=<\\\\(FIXME\\\\):\" 1 'font-lock-warning-face prepend)
698 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" . 698 (\"\\\\\\=<\\\\(and\\\\|or\\\\|not\\\\)\\\\\\=>\" .
699 font-lock-keyword-face))))) 699 'font-lock-keyword-face)))))
700 700
701The above procedure may fail to add keywords to derived modes if 701The above procedure may fail to add keywords to derived modes if
702some involved major mode does not follow the standard conventions. 702some involved major mode does not follow the standard conventions.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index df35e998c31..a4e3d9bde2b 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,73 @@
12012-09-01 Paul Eggert <eggert@cs.ucla.edu>
2
3 Better seeds for (random).
4 * gnus-sync.el (gnus-sync-lesync-setup):
5 * message.el (message-canlock-generate, message-unique-id):
6 Change (random t) to (random), now that the latter is more random.
7
82012-08-31 Dave Abrahams <dave@boostpro.com>
9
10 * auth-source.el (auth-sources): Fix macos keychain access.
11
12 * gnus-int.el (gnus-request-head): When gnus-override-method is set,
13 allow the backend `request-head' function to determine the group
14 name on its own.
15 (gnus-request-expire-articles): Filter out negative article numbers
16 during expiry (Bug#11980).
17
18 * gnus-range.el (gnus-set-difference): Change gnus-set-difference from
19 O(N^2) to O(N). This makes warping into huge groups tolerable.
20
21 * gnus-registry.el (gnus-try-warping-via-registry): Don't act as though
22 you've found the article when you haven't.
23
242012-08-31 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * gnus-notifications.el (gnus-notifications-action): Avoid CL-ism.
27
282012-08-30 Julien Danjou <julien@danjou.info>
29
30 * gnus-notifications.el (gnus-notifications-notify): Use timeout from
31 `gnus-notifications-timeout'.
32 (gnus-notifications-timeout): Add.
33 (gnus-notifications-action): New function.
34 (gnus-notifications-notify): Add :action using
35 `gnus-notifications-action'.
36 (gnus-notifications-id-to-msg): New variable.
37 (gnus-notifications): Use `gnus-notifications-id-to-msg' to map
38 notifications id to messages.
39
402012-08-30 Kenichi Handa <handa@gnu.org>
41
42 * qp.el (quoted-printable-decode-region): Decode multiple bytes at
43 once.
44
452012-08-29 Julien Danjou <julien@danjou.info>
46
47 * gnus-notifications.el: New file.
48 (gnus-notifications-notify): New function.
49 (gnus-notifications): Use `gnus-notifications-notify'.
50
512012-08-28 Katsumi Yamaoka <yamaoka@jpl.org>
52
53 * gnus-sum.el (gnus-summary-enter-digest-group): Decode content
54 transfer encoding first; bind gnus-newsgroup-charset to the charset
55 that the article specifies (Bug#12209).
56
572012-08-22 Katsumi Yamaoka <yamaoka@jpl.org>
58
59 * gnus-cus.el (gnus-group-customize): Decode values posting-style holds.
60 (gnus-group-customize-done): Encode values posting-style holds.
61
62 * gnus-msg.el (gnus-summary-resend-message)
63 (gnus-configure-posting-styles): Decode values posting-style group
64 parameter holds.
65
662012-08-21 Katsumi Yamaoka <yamaoka@jpl.org>
67
68 * gnus-msg.el (gnus-summary-resend-message): Honor posting-style for
69 `name' and `address' in Resent-From header.
70
12012-08-14 Chong Yidong <cyd@gnu.org> 712012-08-14 Chong Yidong <cyd@gnu.org>
2 72
3 * gnus-art.el (article-display-face): Handle failure in 73 * gnus-art.el (article-display-face): Handle failure in
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 262da447358..4c5e5ffadce 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -256,10 +256,10 @@ can get pretty complex."
256 (const :tag "Temp Secrets API Collection" "secrets:session") 256 (const :tag "Temp Secrets API Collection" "secrets:session")
257 257
258 (const :tag "Default internet Mac OS Keychain" 258 (const :tag "Default internet Mac OS Keychain"
259 'macos-keychain-internet) 259 macos-keychain-internet)
260 260
261 (const :tag "Default generic Mac OS Keychain" 261 (const :tag "Default generic Mac OS Keychain"
262 'macos-keychain-generic) 262 macos-keychain-generic)
263 263
264 (list :tag "Source definition" 264 (list :tag "Source definition"
265 (const :format "" :value :source) 265 (const :format "" :value :source)
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el
index 234d0f7ae56..3440e6310af 100644
--- a/lisp/gnus/gnus-cus.el
+++ b/lisp/gnus/gnus-cus.el
@@ -417,6 +417,11 @@ category."))
417 (delq elem tmp)) 417 (delq elem tmp))
418 (setq tmp (cdr tmp)))) 418 (setq tmp (cdr tmp))))
419 419
420 ;; Decode values posting-style holds.
421 (dolist (style (cdr (assq 'posting-style values)))
422 (when (stringp (cadr style))
423 (setcdr style (list (mm-decode-coding-string (cadr style) 'utf-8)))))
424
420 (setq gnus-custom-params 425 (setq gnus-custom-params
421 (apply 'widget-create 'group 426 (apply 'widget-create 'group
422 :value values 427 :value values
@@ -487,14 +492,17 @@ form, but who cares?"
487(defun gnus-group-customize-done (&rest ignore) 492(defun gnus-group-customize-done (&rest ignore)
488 "Apply changes and bury the buffer." 493 "Apply changes and bury the buffer."
489 (interactive) 494 (interactive)
490 (if gnus-custom-topic 495 (let ((params (widget-value gnus-custom-params)))
491 (gnus-topic-set-parameters gnus-custom-topic 496 ;; Encode values posting-style holds.
492 (widget-value gnus-custom-params)) 497 (dolist (style (cdr (assq 'posting-style params)))
493 (gnus-group-edit-group-done 'params gnus-custom-group 498 (when (stringp (cadr style))
494 (widget-value gnus-custom-params)) 499 (setcdr style (list (mm-encode-coding-string (cadr style) 'utf-8)))))
495 (gnus-group-edit-group-done 'method gnus-custom-group 500 (if gnus-custom-topic
496 (widget-value gnus-custom-method))) 501 (gnus-topic-set-parameters gnus-custom-topic params)
497 (bury-buffer)) 502 (gnus-group-edit-group-done 'params gnus-custom-group params)
503 (gnus-group-edit-group-done 'method gnus-custom-group
504 (widget-value gnus-custom-method)))
505 (bury-buffer)))
498 506
499;;; Score Customization: 507;;; Score Customization:
500 508
diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el
index 339e3d951c2..bc3ba187dd4 100644
--- a/lisp/gnus/gnus-int.el
+++ b/lisp/gnus/gnus-int.el
@@ -599,7 +599,8 @@ real group. Does nothing on a real group."
599 clean-up t)) 599 clean-up t))
600 ;; Use `head' function. 600 ;; Use `head' function.
601 ((fboundp head) 601 ((fboundp head)
602 (setq res (funcall head article (gnus-group-real-name group) 602 (setq res (funcall head article
603 (and (not gnus-override-method) (gnus-group-real-name group))
603 (nth 1 gnus-command-method)))) 604 (nth 1 gnus-command-method))))
604 ;; Use `article' function. 605 ;; Use `article' function.
605 (t 606 (t
@@ -706,6 +707,10 @@ If GROUP is nil, all groups on GNUS-COMMAND-METHOD are scanned."
706 707
707(defun gnus-request-expire-articles (articles group &optional force) 708(defun gnus-request-expire-articles (articles group &optional force)
708 (let* ((gnus-command-method (gnus-find-method-for-group group)) 709 (let* ((gnus-command-method (gnus-find-method-for-group group))
710 ;; Filter out any negative article numbers; they can't be
711 ;; expired here.
712 (articles
713 (delq nil (mapcar (lambda (n) (and (>= n 0) n)) articles)))
709 (gnus-inhibit-demon t) 714 (gnus-inhibit-demon t)
710 (not-deleted 715 (not-deleted
711 (funcall 716 (funcall
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index 594f68bb86f..c2f79e70d1e 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -1369,7 +1369,24 @@ For the \"inline\" alternatives, also see the variable
1369 (nnmail-fetch-field "to")))) 1369 (nnmail-fetch-field "to"))))
1370 current-prefix-arg)) 1370 current-prefix-arg))
1371 (let ((message-header-setup-hook (copy-sequence message-header-setup-hook)) 1371 (let ((message-header-setup-hook (copy-sequence message-header-setup-hook))
1372 (message-sent-hook (copy-sequence message-sent-hook))) 1372 (message-sent-hook (copy-sequence message-sent-hook))
1373 ;; Honor posting-style for `name' and `address' in Resent-From header.
1374 (styles (gnus-group-find-parameter gnus-newsgroup-name
1375 'posting-style t))
1376 (user-full-name user-full-name)
1377 (user-mail-address user-mail-address)
1378 tem)
1379 (dolist (style styles)
1380 (when (stringp (cadr style))
1381 (setcdr style (list (mm-decode-coding-string (cadr style) 'utf-8)))))
1382 (dolist (style (if styles
1383 (append gnus-posting-styles (list (cons ".*" styles)))
1384 gnus-posting-styles))
1385 (when (string-match (pop style) gnus-newsgroup-name)
1386 (when (setq tem (cadr (assq 'name style)))
1387 (setq user-full-name tem))
1388 (when (setq tem (cadr (assq 'address style)))
1389 (setq user-mail-address tem))))
1373 ;; `gnus-summary-resend-message-insert-gcc' must run last. 1390 ;; `gnus-summary-resend-message-insert-gcc' must run last.
1374 (add-hook 'message-header-setup-hook 1391 (add-hook 'message-header-setup-hook
1375 'gnus-summary-resend-message-insert-gcc t) 1392 'gnus-summary-resend-message-insert-gcc t)
@@ -1793,6 +1810,10 @@ this is a reply."
1793 (when gnus-newsgroup-name 1810 (when gnus-newsgroup-name
1794 (let ((tmp-style (gnus-group-find-parameter group 'posting-style t))) 1811 (let ((tmp-style (gnus-group-find-parameter group 'posting-style t)))
1795 (when tmp-style 1812 (when tmp-style
1813 (dolist (style tmp-style)
1814 (when (stringp (cadr style))
1815 (setcdr style (list (mm-decode-coding-string (cadr style)
1816 'utf-8)))))
1796 (setq styles (append styles (list (cons ".*" tmp-style))))))) 1817 (setq styles (append styles (list (cons ".*" tmp-style)))))))
1797 ;; Go through all styles and look for matches. 1818 ;; Go through all styles and look for matches.
1798 (dolist (style styles) 1819 (dolist (style styles)
diff --git a/lisp/gnus/gnus-notifications.el b/lisp/gnus/gnus-notifications.el
new file mode 100644
index 00000000000..c5129958997
--- /dev/null
+++ b/lisp/gnus/gnus-notifications.el
@@ -0,0 +1,181 @@
1;; gnus-notifications.el -- Send notification on new message in Gnus
2
3;; Copyright (C) 2012 Free Software Foundation, Inc.
4
5;; Author: Julien Danjou <julien@danjou.info>
6;; Keywords: news
7
8;; This file is part of GNU Emacs.
9
10;; GNU Emacs is free software: you can redistribute it and/or modify
11;; it under the terms of the GNU General Public License as published by
12;; the Free Software Foundation, either version 3 of the License, or
13;; (at your option) any later version.
14
15;; GNU Emacs is distributed in the hope that it will be useful,
16;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;; GNU General Public License for more details.
19
20;; You should have received a copy of the GNU General Public License
21;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22
23;;; Commentary:
24
25;; This implements notifications using `notifications-notify' on new
26;; messages received.
27;; Use (add-hook 'gnus-after-getting-new-news-hook 'gnus-notifications)
28;; to get notifications just after getting the new news.
29
30;;; Code:
31
32(require 'notifications nil t)
33(require 'gnus-sum)
34(require 'gnus-group)
35(require 'gnus-int)
36(require 'gnus-art)
37(require 'gnus-util)
38(require 'google-contacts nil t) ; Optional
39
40(defgroup gnus-notifications nil
41 "Send notifications on new message in Gnus."
42 :group 'gnus)
43
44(defcustom gnus-notifications-use-google-contacts t
45 "Use Google Contacts to retrieve photo."
46 :type 'boolean
47 :group 'gnus-notifications)
48
49(defcustom gnus-notifications-use-gravatar t
50 "Use Gravatar to retrieve photo."
51 :type 'boolean
52 :group 'gnus-notifications)
53
54(defcustom gnus-notifications-minimum-level 1
55 "Minimum group level the message should have to be notified.
56Any message in a group that has a greater value than this will
57not get notifications."
58 :type 'integer
59 :group 'gnus-notifications)
60
61(defcustom gnus-notifications-timeout nil
62 "Timeout used for notifications sent via `notifications-notify'."
63 :type 'integer
64 :group 'gnus-notifications)
65
66(defvar gnus-notifications-sent nil
67 "Notifications already sent.")
68
69(defvar gnus-notifications-id-to-msg nil
70 "Map notifications ids to messages.")
71
72(defun gnus-notifications-action (id key)
73 (when (string= key "read")
74 (let ((group-article (assoc id gnus-notifications-id-to-msg)))
75 (when group-article
76 (let ((group (cadr group-article))
77 (article (nth 2 group-article)))
78 (gnus-fetch-group group (list article)))))))
79
80(defun gnus-notifications-notify (from subject photo-file)
81 "Send a notification about a new mail.
82Return a notification id if any, or t on success."
83 (if (fboundp 'notifications-notify)
84 (notifications-notify
85 :title from
86 :body subject
87 :actions '("read" "Read")
88 :on-action 'gnus-notifications-action
89 :app-icon (image-search-load-path "gnus/gnus.png")
90 :app-name "Gnus"
91 :category "email.arrived"
92 :timeout gnus-notifications-timeout
93 :image-path photo-file)
94 (message "New message from %s: %s" from subject)
95 ;; Don't return an id
96 t))
97
98(defun gnus-notifications-get-photo (mail-address)
99 "Get photo for mail address."
100 (let ((google-photo (when (and gnus-notifications-use-google-contacts
101 (fboundp 'google-contacts-get-photo))
102 (ignore-errors
103 (google-contacts-get-photo mail-address)))))
104 (if google-photo
105 google-photo
106 (when gnus-notifications-use-gravatar
107 (let ((gravatar (ignore-errors
108 (gravatar-retrieve-synchronously mail-address))))
109 (if (eq gravatar 'error)
110 nil
111 (plist-get (cdr gravatar) :data)))))))
112
113(defun gnus-notifications-get-photo-file (mail-address)
114 "Get a temporary file with an image for MAIL-ADDRESS.
115You have to delete the temporary image yourself using
116`delete-image'.
117
118Returns nil if no image found."
119 (let ((photo (gnus-notifications-get-photo mail-address)))
120 (when photo
121 (let ((photo-file (make-temp-file "gnus-notifications-photo-"))
122 (coding-system-for-write 'binary))
123 (with-temp-file photo-file
124 (insert photo))
125 photo-file))))
126
127;;;###autoload
128(defun gnus-notifications ()
129 "Send a notification on new message.
130This check for new messages that are in group with a level lower
131or equal to `gnus-notifications-minimum-level' and send a
132notification using `notifications-notify' for it.
133
134This is typically a function to add in
135`gnus-after-getting-new-news-hook'"
136 (dolist (entry gnus-newsrc-alist)
137 (let ((group (car entry)))
138 ;; Check that the group level is less than
139 ;; `gnus-notifications-minimum-level' and the the group has unread
140 ;; messages.
141 (when (and (<= (gnus-group-level group) gnus-notifications-minimum-level)
142 (let ((unread (gnus-group-unread group)))
143 (and (numberp unread)
144 (> unread 0))))
145 ;; Each group should have an entry in the `gnus-notifications-sent'
146 ;; alist. If not, we add one at this time.
147 (let ((group-notifications (or (assoc group gnus-notifications-sent)
148 ;; Nothing, add one and return it.
149 (assoc group
150 (add-to-list
151 'gnus-notifications-sent
152 (cons group nil))))))
153 (dolist (article (gnus-list-of-unread-articles group))
154 ;; Check if the article already has been notified
155 (unless (memq article (cdr group-notifications))
156 (with-current-buffer nntp-server-buffer
157 (gnus-request-head article group)
158 (article-decode-encoded-words) ; to decode mail addresses, subjects, etc
159 (let* ((address-components (mail-extract-address-components
160 (or (mail-fetch-field "From") "")))
161 (address (cadr address-components)))
162 ;; Ignore mails from ourselves
163 (unless (gnus-string-match-p gnus-ignored-from-addresses
164 address)
165 (let* ((photo-file (gnus-notifications-get-photo-file address))
166 (notification-id (gnus-notifications-notify
167 (or (car address-components) address)
168 (mail-fetch-field "Subject")
169 photo-file)))
170 (when notification-id
171 ;; Register that we did notify this message
172 (setcdr group-notifications (cons article (cdr group-notifications)))
173 (unless (eq notification-id t)
174 ;; Register the notification id for later actions
175 (add-to-list 'gnus-notifications-id-to-msg (list notification-id group article))))
176 (when photo-file
177 (delete-file photo-file)))))))))))))
178
179(provide 'gnus-notifications)
180
181;;; gnus-notifications.el ends here
diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el
index 68729da0910..091276ee4f8 100644
--- a/lisp/gnus/gnus-range.el
+++ b/lisp/gnus/gnus-range.el
@@ -52,11 +52,13 @@ If RANGE is a single range, return (RANGE). Otherwise, return RANGE."
52 52
53(defun gnus-set-difference (list1 list2) 53(defun gnus-set-difference (list1 list2)
54 "Return a list of elements of LIST1 that do not appear in LIST2." 54 "Return a list of elements of LIST1 that do not appear in LIST2."
55 (let ((list1 (copy-sequence list1))) 55 (let ((hash2 (make-hash-table :test 'eq))
56 (while list2 56 (result nil))
57 (setq list1 (delq (car list2) list1)) 57 (dolist (elt list2) (puthash elt t hash2))
58 (setq list2 (cdr list2))) 58 (dolist (elt list1)
59 list1)) 59 (unless (gethash elt hash2)
60 (setq result (cons elt result))))
61 (nreverse result)))
60 62
61(defun gnus-range-nconcat (&rest ranges) 63(defun gnus-range-nconcat (&rest ranges)
62 "Return a range comprising all the RANGES, which are pre-sorted. 64 "Return a range comprising all the RANGES, which are pre-sorted.
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 8aecc98ee86..71e00967548 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -1169,9 +1169,10 @@ data stored in the registry."
1169 1169
1170 ;; Try to activate the group. If that fails, just move 1170 ;; Try to activate the group. If that fails, just move
1171 ;; along. We may have more groups to work with 1171 ;; along. We may have more groups to work with
1172 (ignore-errors 1172 (when
1173 (gnus-select-group-with-message-id group message-id)) 1173 (ignore-errors
1174 (throw 'found t))))))) 1174 (gnus-select-group-with-message-id group message-id) t)
1175 (throw 'found t))))))))
1175 1176
1176;; TODO: a few things 1177;; TODO: a few things
1177 1178
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 06f17bcf646..b44b953bec6 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -9137,7 +9137,7 @@ To control what happens when you exit the group, see the
9137 (list (cons 'save-article-group ogroup)))) 9137 (list (cons 'save-article-group ogroup))))
9138 (case-fold-search t) 9138 (case-fold-search t)
9139 (buf (current-buffer)) 9139 (buf (current-buffer))
9140 dig to-address) 9140 dig to-address charset)
9141 (with-current-buffer gnus-original-article-buffer 9141 (with-current-buffer gnus-original-article-buffer
9142 ;; Have the digest group inherit the main mail address of 9142 ;; Have the digest group inherit the main mail address of
9143 ;; the parent article. 9143 ;; the parent article.
@@ -9150,16 +9150,32 @@ To control what happens when you exit the group, see the
9150 to-address)))))) 9150 to-address))))))
9151 (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*")) 9151 (setq dig (nnheader-set-temp-buffer " *gnus digest buffer*"))
9152 (insert-buffer-substring gnus-original-article-buffer) 9152 (insert-buffer-substring gnus-original-article-buffer)
9153 ;; Remove lines that may lead nndoc to misinterpret the
9154 ;; document type.
9155 (narrow-to-region 9153 (narrow-to-region
9156 (goto-char (point-min)) 9154 (goto-char (point-min))
9157 (or (search-forward "\n\n" nil t) (point))) 9155 (or (search-forward "\n\n" nil t) (point)))
9156 ;; Remove lines that may lead nndoc to misinterpret the
9157 ;; document type.
9158 (goto-char (point-min)) 9158 (goto-char (point-min))
9159 (delete-matching-lines "^Path:\\|^From ") 9159 (delete-matching-lines "^Path:\\|^From ")
9160 ;; Parse charset, and decode content transfer encoding.
9161 (setq charset (mail-content-type-get
9162 (mail-header-parse-content-type
9163 (or (gnus-fetch-field "content-type") ""))
9164 'charset))
9165 (let ((encoding (gnus-fetch-field "content-transfer-encoding")))
9166 (when encoding
9167 (message-remove-header "content-transfer-encoding")
9168 (goto-char (point-max))
9169 (widen)
9170 (narrow-to-region (point) (point-max))
9171 (mm-decode-content-transfer-encoding
9172 (intern (downcase (mail-header-strip encoding))))))
9160 (widen)) 9173 (widen))
9161 (unwind-protect 9174 (unwind-protect
9162 (if (let ((gnus-newsgroup-ephemeral-charset gnus-newsgroup-charset) 9175 (if (let ((gnus-newsgroup-ephemeral-charset
9176 (if charset
9177 (intern (downcase (gnus-strip-whitespace charset)))
9178 gnus-newsgroup-charset))
9163 (gnus-newsgroup-ephemeral-ignored-charsets 9179 (gnus-newsgroup-ephemeral-ignored-charsets
9164 gnus-newsgroup-ignored-charsets)) 9180 gnus-newsgroup-ignored-charsets))
9165 (gnus-group-read-ephemeral-group 9181 (gnus-group-read-ephemeral-group
diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el
index 15d94810c3a..ca8662ff936 100644
--- a/lisp/gnus/gnus-sync.el
+++ b/lisp/gnus/gnus-sync.el
@@ -225,7 +225,7 @@ When SALT is nil, a random one will be generated using `random'."
225 (security-object (concat url "/_security")) 225 (security-object (concat url "/_security"))
226 (user-record `((names . [,user]) (roles . []))) 226 (user-record `((names . [,user]) (roles . [])))
227 (couch-user-name (format "org.couchdb.user:%s" user)) 227 (couch-user-name (format "org.couchdb.user:%s" user))
228 (salt (or salt (sha1 (format "%s" (random t))))) 228 (salt (or salt (sha1 (format "%s" (random)))))
229 (couch-user-record 229 (couch-user-record
230 `((_id . ,couch-user-name) 230 `((_id . ,couch-user-name)
231 (type . user) 231 (type . user)
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 8fd89b1742c..18088423eb0 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4820,9 +4820,7 @@ Do not use this for anything important, it is cryptographically weak."
4820 (require 'sha1) 4820 (require 'sha1)
4821 (let (sha1-maximum-internal-length) 4821 (let (sha1-maximum-internal-length)
4822 (sha1 (concat (message-unique-id) 4822 (sha1 (concat (message-unique-id)
4823 (format "%x%x%x" (random) 4823 (format "%x%x%x" (random) (random) (random))
4824 (progn (random t) (random))
4825 (random))
4826 (prin1-to-string (recent-keys)) 4824 (prin1-to-string (recent-keys))
4827 (prin1-to-string (garbage-collect)))))) 4825 (prin1-to-string (garbage-collect))))))
4828 4826
@@ -5525,7 +5523,6 @@ In posting styles use `(\"Expires\" (make-expires-date 30))'."
5525;; You might for example insert a "." somewhere (not next to another dot 5523;; You might for example insert a "." somewhere (not next to another dot
5526;; or string boundary), or modify the "fsf" string. 5524;; or string boundary), or modify the "fsf" string.
5527(defun message-unique-id () 5525(defun message-unique-id ()
5528 (random t)
5529 ;; Don't use microseconds from (current-time), they may be unsupported. 5526 ;; Don't use microseconds from (current-time), they may be unsupported.
5530 ;; Instead we use this randomly inited counter. 5527 ;; Instead we use this randomly inited counter.
5531 (setq message-unique-id-char 5528 (setq message-unique-id-char
diff --git a/lisp/gnus/qp.el b/lisp/gnus/qp.el
index c8481aa9dee..87252684a48 100644
--- a/lisp/gnus/qp.el
+++ b/lisp/gnus/qp.el
@@ -53,7 +53,10 @@ them into characters should be done separately."
53 ;; or both of which are lowercase letters in "abcdef", is 53 ;; or both of which are lowercase letters in "abcdef", is
54 ;; formally illegal. A robust implementation might choose to 54 ;; formally illegal. A robust implementation might choose to
55 ;; recognize them as the corresponding uppercase letters.'' 55 ;; recognize them as the corresponding uppercase letters.''
56 (let ((case-fold-search t)) 56 (let ((case-fold-search t)
57 (decode-hex #'(lambda (n1 n2)
58 (+ (* (if (<= n1 ?9) (- n1 ?0) (+ (- n1 ?A) 10)) 16)
59 (if (<= n2 ?9) (- n2 ?0) (+ (- n2 ?A) 10))))))
57 (narrow-to-region from to) 60 (narrow-to-region from to)
58 ;; Do this in case we're called from Gnus, say, in a buffer 61 ;; Do this in case we're called from Gnus, say, in a buffer
59 ;; which already contains non-ASCII characters which would 62 ;; which already contains non-ASCII characters which would
@@ -65,12 +68,17 @@ them into characters should be done separately."
65 (not (eobp))) 68 (not (eobp)))
66 (cond ((eq (char-after (1+ (point))) ?\n) 69 (cond ((eq (char-after (1+ (point))) ?\n)
67 (delete-char 2)) 70 (delete-char 2))
68 ((looking-at "=[0-9A-F][0-9A-F]") 71 ((looking-at "\\(=[0-9A-F][0-9A-F]\\)+")
69 (let ((byte (string-to-number (buffer-substring (1+ (point)) 72 ;; Decode this sequence at once; i.e. by a single
70 (+ 3 (point))) 73 ;; deletion and insertion.
71 16))) 74 (let* ((n (/ (- (match-end 0) (point)) 3))
72 (mm-insert-byte byte 1) 75 (str (make-string n 0)))
73 (delete-char 3))) 76 (dotimes (i n)
77 (aset str i (funcall decode-hex (char-after (1+ (point)))
78 (char-after (+ 2 (point)))))
79 (forward-char 3))
80 (delete-region (match-beginning 0) (match-end 0))
81 (insert str)))
74 (t 82 (t
75 (message "Malformed quoted-printable text") 83 (message "Malformed quoted-printable text")
76 (forward-char))))) 84 (forward-char)))))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 4b1480444c2..5791f1225c1 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -397,9 +397,11 @@ suitable file is found, return nil."
397 (if (member (event-modifiers (aref key 0)) '(nil (shift))) 397 (if (member (event-modifiers (aref key 0)) '(nil (shift)))
398 (push key non-modified-keys))) 398 (push key non-modified-keys)))
399 (when remapped 399 (when remapped
400 (princ "Its keys are remapped to `") 400 (princ "Its keys are remapped to ")
401 (princ (symbol-name remapped)) 401 (princ (if (symbolp remapped)
402 (princ "'.\n")) 402 (concat "`" (symbol-name remapped) "'")
403 "an anonymous command"))
404 (princ ".\n"))
403 405
404 (when keys 406 (when keys
405 (princ (if remapped 407 (princ (if remapped
diff --git a/lisp/help.el b/lisp/help.el
index 19cb811bcf5..9740f8996c1 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -39,9 +39,10 @@
39;; `help-window-point-marker' is a marker you can move to a valid 39;; `help-window-point-marker' is a marker you can move to a valid
40;; position of the buffer shown in the help window in order to override 40;; position of the buffer shown in the help window in order to override
41;; the standard positioning mechanism (`point-min') chosen by 41;; the standard positioning mechanism (`point-min') chosen by
42;; `with-output-to-temp-buffer'. `with-help-window' has this point 42;; `with-output-to-temp-buffer' and `with-temp-buffer-window'.
43;; nowhere before exiting. Currently used by `view-lossage' to assert 43;; `with-help-window' has this point nowhere before exiting. Currently
44;; that the last keystrokes are always visible. 44;; used by `view-lossage' to assert that the last keystrokes are always
45;; visible.
45(defvar help-window-point-marker (make-marker) 46(defvar help-window-point-marker (make-marker)
46 "Marker to override default `window-point' in help windows.") 47 "Marker to override default `window-point' in help windows.")
47 48
@@ -145,10 +146,6 @@ specifies what to do when the user exits the help buffer."
145 ;; Secondly, the buffer has not been displayed yet, 146 ;; Secondly, the buffer has not been displayed yet,
146 ;; so we don't know whether its frame will be selected. 147 ;; so we don't know whether its frame will be selected.
147 nil) 148 nil)
148 (display-buffer-reuse-frames
149 (setq help-return-method (cons (selected-window)
150 'quit-window))
151 nil)
152 ((not (one-window-p t)) 149 ((not (one-window-p t))
153 (setq help-return-method 150 (setq help-return-method
154 (cons (selected-window) 'quit-window)) 151 (cons (selected-window) 'quit-window))
@@ -979,13 +976,13 @@ function is called, the window to be resized is selected."
979 :version "20.4") 976 :version "20.4")
980 977
981(define-minor-mode temp-buffer-resize-mode 978(define-minor-mode temp-buffer-resize-mode
982 "Toggle auto-shrinking temp buffer windows (Temp Buffer Resize mode). 979 "Toggle auto-resizing temporary buffer windows (Temp Buffer Resize Mode).
983With a prefix argument ARG, enable Temp Buffer Resize mode if ARG 980With a prefix argument ARG, enable Temp Buffer Resize mode if ARG
984is positive, and disable it otherwise. If called from Lisp, 981is positive, and disable it otherwise. If called from Lisp,
985enable the mode if ARG is omitted or nil. 982enable the mode if ARG is omitted or nil.
986 983
987When Temp Buffer Resize mode is enabled, the windows in which we 984When Temp Buffer Resize mode is enabled, the windows in which we
988show a temporary buffer are automatically reduced in height to 985show a temporary buffer are automatically resized in height to
989fit the buffer's contents, but never more than 986fit the buffer's contents, but never more than
990`temp-buffer-max-height' nor less than `window-min-height'. 987`temp-buffer-max-height' nor less than `window-min-height'.
991 988
@@ -998,19 +995,22 @@ and some others."
998 (add-hook 'temp-buffer-show-hook 'resize-temp-buffer-window 'append) 995 (add-hook 'temp-buffer-show-hook 'resize-temp-buffer-window 'append)
999 (remove-hook 'temp-buffer-show-hook 'resize-temp-buffer-window))) 996 (remove-hook 'temp-buffer-show-hook 'resize-temp-buffer-window)))
1000 997
1001(defun resize-temp-buffer-window () 998(defun resize-temp-buffer-window (&optional window)
1002 "Resize the selected window to fit its contents. 999 "Resize WINDOW to fit its contents.
1003Will not make it higher than `temp-buffer-max-height' nor smaller 1000WINDOW can be any live window and defaults to the selected one.
1004than `window-min-height'. Do nothing if the selected window is 1001
1005not vertically combined or some of its contents are scrolled out 1002Do not make WINDOW higher than `temp-buffer-max-height' nor
1006of view." 1003smaller than `window-min-height'. Do nothing if WINDOW is not
1007 (when (and (pos-visible-in-window-p (point-min)) 1004vertically combined or some of its contents are scrolled out of
1008 (window-combined-p)) 1005view."
1009 (fit-window-to-buffer 1006 (setq window (window-normalize-window window t))
1010 nil 1007 (let ((height (if (functionp temp-buffer-max-height)
1011 (if (functionp temp-buffer-max-height) 1008 (with-selected-window window
1012 (funcall temp-buffer-max-height (window-buffer)) 1009 (funcall temp-buffer-max-height (window-buffer)))
1013 temp-buffer-max-height)))) 1010 temp-buffer-max-height)))
1011 (when (and (pos-visible-in-window-p (point-min) window)
1012 (window-combined-p window))
1013 (fit-window-to-buffer window height))))
1014 1014
1015;;; Help windows. 1015;;; Help windows.
1016(defcustom help-window-select 'other 1016(defcustom help-window-select 'other
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 648c4c3b0af..c6e799252a2 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -2401,7 +2401,7 @@ Operations on marked buffers:
2401 buffer's file as an argument. 2401 buffer's file as an argument.
2402 '\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This 2402 '\\[ibuffer-do-eval]' - Evaluate a form in each of the marked buffers. This
2403 is a very flexible command. For example, if you want to make all 2403 is a very flexible command. For example, if you want to make all
2404 of the marked buffers read only, try using (toggle-read-only 1) as 2404 of the marked buffers read only, try using (read-only-mode 1) as
2405 the input form. 2405 the input form.
2406 '\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form 2406 '\\[ibuffer-do-view-and-eval]' - As above, but view each buffer while the form
2407 is evaluated. 2407 is evaluated.
diff --git a/lisp/info.el b/lisp/info.el
index 317cba86500..fe4afd72163 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -417,6 +417,21 @@ If number, the point is moved to the corresponding line.")
417(defvar Info-standalone nil 417(defvar Info-standalone nil
418 "Non-nil if Emacs was started solely as an Info browser.") 418 "Non-nil if Emacs was started solely as an Info browser.")
419 419
420(defvar Info-file-attributes nil
421 "Alist of file attributes of visited Info files.
422Each element is a list (FILE-NAME FILE-ATTRIBUTES...).")
423
424(defvar Info-toc-nodes nil
425 "Alist of cached parent-children node information in visited Info files.
426Each element is (FILE (NODE-NAME PARENT SECTION CHILDREN) ...)
427where PARENT is the parent node extracted from the Up pointer,
428SECTION is the section name in the Top node where this node is placed,
429CHILDREN is a list of child nodes extracted from the node menu.")
430
431(defvar Info-index-nodes nil
432 "Alist of cached index node names of visited Info files.
433Each element has the form (INFO-FILE INDEX-NODE-NAMES-LIST).")
434
420(defvar Info-virtual-files nil 435(defvar Info-virtual-files nil
421 "List of definitions of virtual Info files. 436 "List of definitions of virtual Info files.
422Each element of the list has the format (FILENAME (OPERATION . HANDLER) ...) 437Each element of the list has the format (FILENAME (OPERATION . HANDLER) ...)
@@ -609,7 +624,26 @@ Do the right thing if the file has been compressed or zipped."
609 (apply 'call-process-region (point-min) (point-max) 624 (apply 'call-process-region (point-min) (point-max)
610 (car decoder) t t nil (cdr decoder)))) 625 (car decoder) t t nil (cdr decoder))))
611 (let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes 626 (let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes
612 (insert-file-contents fullname visit))))) 627 (insert-file-contents fullname visit)))
628
629 ;; Clear the caches of modified Info files.
630 (let* ((attribs-old (cdr (assoc fullname Info-file-attributes)))
631 (modtime-old (and attribs-old (nth 5 attribs-old)))
632 (attribs-new (and (stringp fullname) (file-attributes fullname)))
633 (modtime-new (and attribs-new (nth 5 attribs-new))))
634 (when (and modtime-old modtime-new
635 (> (float-time modtime-new) (float-time modtime-old)))
636 (setq Info-index-nodes (remove (assoc (or Info-current-file filename)
637 Info-index-nodes)
638 Info-index-nodes))
639 (setq Info-toc-nodes (remove (assoc (or Info-current-file filename)
640 Info-toc-nodes)
641 Info-toc-nodes)))
642 ;; Add new modtime to `Info-file-attributes'.
643 (setq Info-file-attributes
644 (cons (cons fullname attribs-new)
645 (remove (assoc fullname Info-file-attributes)
646 Info-file-attributes))))))
613 647
614(defun Info-file-supports-index-cookies (&optional file) 648(defun Info-file-supports-index-cookies (&optional file)
615 "Return non-nil value if FILE supports Info index cookies. 649 "Return non-nil value if FILE supports Info index cookies.
@@ -2394,13 +2428,6 @@ Table of contents is created from the tree structure of menus."
2394 (message "") 2428 (message "")
2395 (nreverse nodes)))) 2429 (nreverse nodes))))
2396 2430
2397(defvar Info-toc-nodes nil
2398 "Alist of cached parent-children node information in visited Info files.
2399Each element is (FILE (NODE-NAME PARENT SECTION CHILDREN) ...)
2400where PARENT is the parent node extracted from the Up pointer,
2401SECTION is the section name in the Top node where this node is placed,
2402CHILDREN is a list of child nodes extracted from the node menu.")
2403
2404(defun Info-toc-nodes (filename) 2431(defun Info-toc-nodes (filename)
2405 "Return a node list of Info FILENAME with parent-children information. 2432 "Return a node list of Info FILENAME with parent-children information.
2406This information is cached in the variable `Info-toc-nodes' with the help 2433This information is cached in the variable `Info-toc-nodes' with the help
@@ -3032,10 +3059,6 @@ See `Info-scroll-down'."
3032 (if (looking-at "^\\* ") 3059 (if (looking-at "^\\* ")
3033 (forward-char 2))))) 3060 (forward-char 2)))))
3034 3061
3035(defvar Info-index-nodes nil
3036 "Alist of cached index node names of visited Info files.
3037Each element has the form (INFO-FILE INDEX-NODE-NAMES-LIST).")
3038
3039(defun Info-index-nodes (&optional file) 3062(defun Info-index-nodes (&optional file)
3040 "Return a list of names of all index nodes in Info FILE. 3063 "Return a list of names of all index nodes in Info FILE.
3041If FILE is omitted, it defaults to the current Info file. 3064If FILE is omitted, it defaults to the current Info file.
@@ -4504,7 +4527,17 @@ first line or header line, and for breadcrumb links.")
4504 ((not (bobp)) 4527 ((not (bobp))
4505 ;; Hide the punctuation at the end, too. 4528 ;; Hide the punctuation at the end, too.
4506 (skip-chars-backward " \t,") 4529 (skip-chars-backward " \t,")
4507 (put-text-property (point) header-end 'invisible t)))))) 4530 (put-text-property (point) header-end 'invisible t)
4531 ;; Hide the suffix of the Info file name.
4532 (beginning-of-line)
4533 (if (re-search-forward
4534 (format "File: %s\\([^,\n\t]+\\),"
4535 (if (stringp Info-current-file)
4536 (file-name-nondirectory Info-current-file)
4537 Info-current-file))
4538 header-end t)
4539 (put-text-property (match-beginning 1) (match-end 1)
4540 'invisible t)))))))
4508 4541
4509 ;; Fontify titles 4542 ;; Fontify titles
4510 (goto-char (point-min)) 4543 (goto-char (point-min))
@@ -4792,6 +4825,12 @@ first line or header line, and for breadcrumb links.")
4792 mouse-face highlight 4825 mouse-face highlight
4793 help-echo "mouse-2: go to this URL")))) 4826 help-echo "mouse-2: go to this URL"))))
4794 4827
4828 ;; Hide empty lines at the end of the node.
4829 (goto-char (point-max))
4830 (skip-chars-backward "\n")
4831 (when (< (1+ (point)) (point-max))
4832 (put-text-property (1+ (point)) (point-max) 'invisible t))
4833
4795 (set-buffer-modified-p nil)))) 4834 (set-buffer-modified-p nil))))
4796 4835
4797;;; Speedbar support: 4836;;; Speedbar support:
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 9271ce32484..e6e0a01566a 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -111,17 +111,24 @@ string, and RET terminates editing and does a nonincremental search."
111 111
112(defcustom search-whitespace-regexp (purecopy "\\s-+") 112(defcustom search-whitespace-regexp (purecopy "\\s-+")
113 "If non-nil, regular expression to match a sequence of whitespace chars. 113 "If non-nil, regular expression to match a sequence of whitespace chars.
114This applies to regular expression incremental search. 114When you enter a space or spaces in the incremental search, it
115When you put a space or spaces in the incremental regexp, it stands for 115will match any sequence matched by this regexp. As an exception,
116this, unless it is inside of a regexp construct such as [...] or *, + or ?. 116spaces are treated normally in regexp incremental search if they
117occur in a regexp construct like [...] or *, + or ?.
118
119If the value is a string, it applies to both ordinary and
120regexp incremental search. If the value is nil, or
121`isearch-lax-whitespace' is nil for ordinary incremental search, or
122`isearch-regexp-lax-whitespace' is nil for regexp incremental search,
123then each space you type matches literally, against one space.
124
117You might want to use something like \"[ \\t\\r\\n]+\" instead. 125You might want to use something like \"[ \\t\\r\\n]+\" instead.
118In the Customization buffer, that is `[' followed by a space, 126In the Customization buffer, that is `[' followed by a space,
119a tab, a carriage return (control-M), a newline, and `]+'. 127a tab, a carriage return (control-M), a newline, and `]+'."
120 128 :type '(choice (const :tag "Match Spaces Literally" nil)
121When this is nil, each space you type matches literally, against one space."
122 :type '(choice (const :tag "Find Spaces Literally" nil)
123 regexp) 129 regexp)
124 :group 'isearch) 130 :group 'isearch
131 :version "24.3")
125 132
126(defcustom search-invisible 'open 133(defcustom search-invisible 'open
127 "If t incremental search can match hidden text. 134 "If t incremental search can match hidden text.
@@ -499,6 +506,7 @@ This is like `describe-bindings', but displays only Isearch keys."
499 (define-key map "\M-sr" 'isearch-toggle-regexp) 506 (define-key map "\M-sr" 'isearch-toggle-regexp)
500 (define-key map "\M-sw" 'isearch-toggle-word) 507 (define-key map "\M-sw" 'isearch-toggle-word)
501 (define-key map "\M-s_" 'isearch-toggle-symbol) 508 (define-key map "\M-s_" 'isearch-toggle-symbol)
509 (define-key map "\M-s " 'isearch-toggle-lax-whitespace)
502 510
503 (define-key map [?\M-%] 'isearch-query-replace) 511 (define-key map [?\M-%] 'isearch-query-replace)
504 (define-key map [?\C-\M-%] 'isearch-query-replace-regexp) 512 (define-key map [?\C-\M-%] 'isearch-query-replace-regexp)
@@ -541,6 +549,22 @@ convert the search string to a regexp used by regexp search functions.
541The property `isearch-message-prefix' put on this function specifies the 549The property `isearch-message-prefix' put on this function specifies the
542prefix string displayed in the search message.") 550prefix string displayed in the search message.")
543 551
552(defvar isearch-lax-whitespace t
553 "If non-nil, a space will match a sequence of whitespace chars.
554When you enter a space or spaces in ordinary incremental search, it
555will match any sequence matched by the regexp defined by the variable
556`search-whitespace-regexp'. If the value is nil, each space you type
557matches literally, against one space. You can toggle the value of this
558variable by the command `isearch-toggle-lax-whitespace'.")
559
560(defvar isearch-regexp-lax-whitespace nil
561 "If non-nil, a space will match a sequence of whitespace chars.
562When you enter a space or spaces in regexp incremental search, it
563will match any sequence matched by the regexp defined by the variable
564`search-whitespace-regexp'. If the value is nil, each space you type
565matches literally, against one space. You can toggle the value of this
566variable by the command `isearch-toggle-lax-whitespace'.")
567
544(defvar isearch-cmds nil 568(defvar isearch-cmds nil
545 "Stack of search status sets. 569 "Stack of search status sets.
546Each set is a vector of the form: 570Each set is a vector of the form:
@@ -666,6 +690,12 @@ Type \\[isearch-toggle-case-fold] to toggle search case-sensitivity.
666Type \\[isearch-toggle-regexp] to toggle regular-expression mode. 690Type \\[isearch-toggle-regexp] to toggle regular-expression mode.
667Type \\[isearch-toggle-word] to toggle word mode. 691Type \\[isearch-toggle-word] to toggle word mode.
668Type \\[isearch-toggle-symbol] to toggle symbol mode. 692Type \\[isearch-toggle-symbol] to toggle symbol mode.
693
694Type \\[isearch-toggle-lax-whitespace] to toggle whitespace matching.
695In incremental searches, a space or spaces normally matches any whitespace
696defined by the variable `search-whitespace-regexp'; see also the variables
697`isearch-lax-whitespace' and `isearch-regexp-lax-whitespace'.
698
669Type \\[isearch-edit-string] to edit the search string in the minibuffer. 699Type \\[isearch-edit-string] to edit the search string in the minibuffer.
670 700
671Also supported is a search ring of the previous 16 search strings. 701Also supported is a search ring of the previous 16 search strings.
@@ -710,22 +740,20 @@ the calling function until the search is done."
710 (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit))) 740 (isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit)))
711 741
712(defun isearch-forward-regexp (&optional not-regexp no-recursive-edit) 742(defun isearch-forward-regexp (&optional not-regexp no-recursive-edit)
713 "\ 743 "Do incremental search forward for regular expression.
714Do incremental search forward for regular expression.
715With a prefix argument, do a regular string search instead. 744With a prefix argument, do a regular string search instead.
716Like ordinary incremental search except that your input is treated 745Like ordinary incremental search except that your input is treated
717as a regexp. See the command `isearch-forward' for more information. 746as a regexp. See the command `isearch-forward' for more information.
718 747
719In regexp incremental searches, a space or spaces normally matches 748In incremental searches, a space or spaces normally matches any
720any whitespace (the variable `search-whitespace-regexp' controls 749whitespace defined by the variable `search-whitespace-regexp'.
721precisely what that means). If you want to search for a literal space 750To search for a literal space and nothing else, enter C-q SPC.
722and nothing else, enter C-q SPC." 751To toggle whitespace matching, use `isearch-toggle-lax-whitespace'."
723 (interactive "P\np") 752 (interactive "P\np")
724 (isearch-mode t (null not-regexp) nil (not no-recursive-edit))) 753 (isearch-mode t (null not-regexp) nil (not no-recursive-edit)))
725 754
726(defun isearch-forward-word (&optional not-word no-recursive-edit) 755(defun isearch-forward-word (&optional not-word no-recursive-edit)
727 "\ 756 "Do incremental search forward for a sequence of words.
728Do incremental search forward for a sequence of words.
729With a prefix argument, do a regular string search instead. 757With a prefix argument, do a regular string search instead.
730Like ordinary incremental search except that your input is treated 758Like ordinary incremental search except that your input is treated
731as a sequence of words without regard to how the words are separated. 759as a sequence of words without regard to how the words are separated.
@@ -734,8 +762,7 @@ See the command `isearch-forward' for more information."
734 (isearch-mode t nil nil (not no-recursive-edit) (null not-word))) 762 (isearch-mode t nil nil (not no-recursive-edit) (null not-word)))
735 763
736(defun isearch-forward-symbol (&optional not-symbol no-recursive-edit) 764(defun isearch-forward-symbol (&optional not-symbol no-recursive-edit)
737 "\ 765 "Do incremental search forward for a symbol.
738Do incremental search forward for a symbol.
739The prefix argument is currently unused. 766The prefix argument is currently unused.
740Like ordinary incremental search except that your input is treated 767Like ordinary incremental search except that your input is treated
741as a symbol surrounded by symbol boundary constructs \\_< and \\_>. 768as a symbol surrounded by symbol boundary constructs \\_< and \\_>.
@@ -744,16 +771,14 @@ See the command `isearch-forward' for more information."
744 (isearch-mode t nil nil (not no-recursive-edit) 'isearch-symbol-regexp)) 771 (isearch-mode t nil nil (not no-recursive-edit) 'isearch-symbol-regexp))
745 772
746(defun isearch-backward (&optional regexp-p no-recursive-edit) 773(defun isearch-backward (&optional regexp-p no-recursive-edit)
747 "\ 774 "Do incremental search backward.
748Do incremental search backward.
749With a prefix argument, do a regular expression search instead. 775With a prefix argument, do a regular expression search instead.
750See the command `isearch-forward' for more information." 776See the command `isearch-forward' for more information."
751 (interactive "P\np") 777 (interactive "P\np")
752 (isearch-mode nil (not (null regexp-p)) nil (not no-recursive-edit))) 778 (isearch-mode nil (not (null regexp-p)) nil (not no-recursive-edit)))
753 779
754(defun isearch-backward-regexp (&optional not-regexp no-recursive-edit) 780(defun isearch-backward-regexp (&optional not-regexp no-recursive-edit)
755 "\ 781 "Do incremental search backward for regular expression.
756Do incremental search backward for regular expression.
757With a prefix argument, do a regular string search instead. 782With a prefix argument, do a regular string search instead.
758Like ordinary incremental search except that your input is treated 783Like ordinary incremental search except that your input is treated
759as a regexp. See the command `isearch-forward' for more information." 784as a regexp. See the command `isearch-forward' for more information."
@@ -895,8 +920,7 @@ The last thing it does is to run `isearch-update-post-hook'."
895 (if (< isearch-other-end (point)) ; isearch-forward? 920 (if (< isearch-other-end (point)) ; isearch-forward?
896 (isearch-highlight isearch-other-end (point)) 921 (isearch-highlight isearch-other-end (point))
897 (isearch-highlight (point) isearch-other-end)) 922 (isearch-highlight (point) isearch-other-end))
898 (isearch-dehighlight)) 923 (isearch-dehighlight))))
899 ))
900 (setq ;; quit-flag nil not for isearch-mode 924 (setq ;; quit-flag nil not for isearch-mode
901 isearch-adjusted nil 925 isearch-adjusted nil
902 isearch-yank-flag nil) 926 isearch-yank-flag nil)
@@ -1384,6 +1408,28 @@ Use `isearch-exit' to quit without signaling."
1384 (setq isearch-success t isearch-adjusted t) 1408 (setq isearch-success t isearch-adjusted t)
1385 (isearch-update)) 1409 (isearch-update))
1386 1410
1411(defun isearch-toggle-lax-whitespace ()
1412 "Toggle whitespace matching in searching on or off.
1413In ordinary search, toggles the value of the variable
1414`isearch-lax-whitespace'. In regexp search, toggles the
1415value of the variable `isearch-regexp-lax-whitespace'."
1416 (interactive)
1417 (if isearch-regexp
1418 (setq isearch-regexp-lax-whitespace (not isearch-regexp-lax-whitespace))
1419 (setq isearch-lax-whitespace (not isearch-lax-whitespace)))
1420 (let ((message-log-max nil))
1421 (message "%s%s [%s]"
1422 (isearch-message-prefix nil isearch-nonincremental)
1423 isearch-message
1424 (if (if isearch-regexp
1425 isearch-regexp-lax-whitespace
1426 isearch-lax-whitespace)
1427 "match spaces loosely"
1428 "match spaces literally")))
1429 (setq isearch-success t isearch-adjusted t)
1430 (sit-for 1)
1431 (isearch-update))
1432
1387(defun isearch-toggle-case-fold () 1433(defun isearch-toggle-case-fold ()
1388 "Toggle case folding in searching on or off." 1434 "Toggle case folding in searching on or off."
1389 (interactive) 1435 (interactive)
@@ -1495,6 +1541,28 @@ If LAX is non-nil, the end of the string need not match a symbol boundary."
1495 1541
1496(put 'isearch-symbol-regexp 'isearch-message-prefix "symbol ") 1542(put 'isearch-symbol-regexp 'isearch-message-prefix "symbol ")
1497 1543
1544;; Search with lax whitespace
1545
1546(defun search-forward-lax-whitespace (string &optional bound noerror count)
1547 "Search forward for STRING, matching a sequence of whitespace chars."
1548 (let ((search-spaces-regexp search-whitespace-regexp))
1549 (re-search-forward (regexp-quote string) bound noerror count)))
1550
1551(defun search-backward-lax-whitespace (string &optional bound noerror count)
1552 "Search backward for STRING, matching a sequence of whitespace chars."
1553 (let ((search-spaces-regexp search-whitespace-regexp))
1554 (re-search-backward (regexp-quote string) bound noerror count)))
1555
1556(defun re-search-forward-lax-whitespace (regexp &optional bound noerror count)
1557 "Search forward for REGEXP, matching a sequence of whitespace chars."
1558 (let ((search-spaces-regexp search-whitespace-regexp))
1559 (re-search-forward regexp bound noerror count)))
1560
1561(defun re-search-backward-lax-whitespace (regexp &optional bound noerror count)
1562 "Search backward for REGEXP, matching a sequence of whitespace chars."
1563 (let ((search-spaces-regexp search-whitespace-regexp))
1564 (re-search-backward regexp bound noerror count)))
1565
1498 1566
1499(defun isearch-query-replace (&optional delimited regexp-flag) 1567(defun isearch-query-replace (&optional delimited regexp-flag)
1500 "Start `query-replace' with string to replace from last search string. 1568 "Start `query-replace' with string to replace from last search string.
@@ -1511,6 +1579,14 @@ way to run word replacements from Isearch is `M-s w ... M-%'."
1511 ;; set `search-upper-case' to nil to not call 1579 ;; set `search-upper-case' to nil to not call
1512 ;; `isearch-no-upper-case-p' in `perform-replace' 1580 ;; `isearch-no-upper-case-p' in `perform-replace'
1513 (search-upper-case nil) 1581 (search-upper-case nil)
1582 (replace-search-function
1583 (if (and isearch-lax-whitespace (not regexp-flag))
1584 #'search-forward-lax-whitespace
1585 replace-search-function))
1586 (replace-re-search-function
1587 (if (and isearch-regexp-lax-whitespace regexp-flag)
1588 #'re-search-forward-lax-whitespace
1589 replace-re-search-function))
1514 ;; Set `isearch-recursive-edit' to nil to prevent calling 1590 ;; Set `isearch-recursive-edit' to nil to prevent calling
1515 ;; `exit-recursive-edit' in `isearch-done' that terminates 1591 ;; `exit-recursive-edit' in `isearch-done' that terminates
1516 ;; the execution of this command when it is non-nil. 1592 ;; the execution of this command when it is non-nil.
@@ -1586,7 +1662,11 @@ characters in that string."
1586 ;; Set `search-upper-case' to nil to not call 1662 ;; Set `search-upper-case' to nil to not call
1587 ;; `isearch-no-upper-case-p' in `occur-1'. 1663 ;; `isearch-no-upper-case-p' in `occur-1'.
1588 (search-upper-case nil) 1664 (search-upper-case nil)
1589 (search-spaces-regexp (if isearch-regexp search-whitespace-regexp))) 1665 (search-spaces-regexp
1666 (if (if isearch-regexp
1667 isearch-regexp-lax-whitespace
1668 isearch-lax-whitespace)
1669 search-whitespace-regexp)))
1590 (occur regexp nlines))) 1670 (occur regexp nlines)))
1591 1671
1592(declare-function hi-lock-read-face-name "hi-lock" ()) 1672(declare-function hi-lock-read-face-name "hi-lock" ())
@@ -2183,7 +2263,7 @@ Isearch mode."
2183 ;; Assume character codes 0200 - 0377 stand for characters in some 2263 ;; Assume character codes 0200 - 0377 stand for characters in some
2184 ;; single-byte character set, and convert them to Emacs 2264 ;; single-byte character set, and convert them to Emacs
2185 ;; characters. 2265 ;; characters.
2186 (if (and isearch-regexp (= char ?\s)) 2266 (if (and isearch-regexp isearch-regexp-lax-whitespace (= char ?\s))
2187 (if (subregexp-context-p isearch-string (length isearch-string)) 2267 (if (subregexp-context-p isearch-string (length isearch-string))
2188 (isearch-process-search-string "[ ]" " ") 2268 (isearch-process-search-string "[ ]" " ")
2189 (isearch-process-search-char char)) 2269 (isearch-process-search-char char))
@@ -2423,8 +2503,17 @@ Can be changed via `isearch-search-fun-function' for special needs."
2423 (funcall isearch-word string lax) 2503 (funcall isearch-word string lax)
2424 (word-search-regexp string lax)) 2504 (word-search-regexp string lax))
2425 bound noerror count)))) 2505 bound noerror count))))
2506 ((and isearch-regexp isearch-regexp-lax-whitespace
2507 search-whitespace-regexp)
2508 (if isearch-forward
2509 're-search-forward-lax-whitespace
2510 're-search-backward-lax-whitespace))
2426 (isearch-regexp 2511 (isearch-regexp
2427 (if isearch-forward 're-search-forward 're-search-backward)) 2512 (if isearch-forward 're-search-forward 're-search-backward))
2513 ((and isearch-lax-whitespace search-whitespace-regexp)
2514 (if isearch-forward
2515 'search-forward-lax-whitespace
2516 'search-backward-lax-whitespace))
2428 (t 2517 (t
2429 (if isearch-forward 'search-forward 'search-backward)))) 2518 (if isearch-forward 'search-forward 'search-backward))))
2430 2519
@@ -2487,7 +2576,6 @@ update the match data, and return point."
2487 search-invisible)) 2576 search-invisible))
2488 (inhibit-quit nil) 2577 (inhibit-quit nil)
2489 (case-fold-search isearch-case-fold-search) 2578 (case-fold-search isearch-case-fold-search)
2490 (search-spaces-regexp search-whitespace-regexp)
2491 (retry t)) 2579 (retry t))
2492 (setq isearch-error nil) 2580 (setq isearch-error nil)
2493 (while retry 2581 (while retry
@@ -2779,7 +2867,8 @@ since they have special meaning in a regexp."
2779(defvar isearch-lazy-highlight-window-end nil) 2867(defvar isearch-lazy-highlight-window-end nil)
2780(defvar isearch-lazy-highlight-case-fold-search nil) 2868(defvar isearch-lazy-highlight-case-fold-search nil)
2781(defvar isearch-lazy-highlight-regexp nil) 2869(defvar isearch-lazy-highlight-regexp nil)
2782(defvar isearch-lazy-highlight-space-regexp nil) 2870(defvar isearch-lazy-highlight-lax-whitespace nil)
2871(defvar isearch-lazy-highlight-regexp-lax-whitespace nil)
2783(defvar isearch-lazy-highlight-word nil) 2872(defvar isearch-lazy-highlight-word nil)
2784(defvar isearch-lazy-highlight-forward nil) 2873(defvar isearch-lazy-highlight-forward nil)
2785(defvar isearch-lazy-highlight-error nil) 2874(defvar isearch-lazy-highlight-error nil)
@@ -2821,6 +2910,10 @@ by other Emacs features."
2821 isearch-regexp)) 2910 isearch-regexp))
2822 (not (eq isearch-lazy-highlight-word 2911 (not (eq isearch-lazy-highlight-word
2823 isearch-word)) 2912 isearch-word))
2913 (not (eq isearch-lazy-highlight-lax-whitespace
2914 isearch-lax-whitespace))
2915 (not (eq isearch-lazy-highlight-regexp-lax-whitespace
2916 isearch-regexp-lax-whitespace))
2824 (not (= (window-start) 2917 (not (= (window-start)
2825 isearch-lazy-highlight-window-start)) 2918 isearch-lazy-highlight-window-start))
2826 (not (= (window-end) ; Window may have been split/joined. 2919 (not (= (window-end) ; Window may have been split/joined.
@@ -2847,7 +2940,8 @@ by other Emacs features."
2847 isearch-lazy-highlight-last-string isearch-string 2940 isearch-lazy-highlight-last-string isearch-string
2848 isearch-lazy-highlight-case-fold-search isearch-case-fold-search 2941 isearch-lazy-highlight-case-fold-search isearch-case-fold-search
2849 isearch-lazy-highlight-regexp isearch-regexp 2942 isearch-lazy-highlight-regexp isearch-regexp
2850 isearch-lazy-highlight-space-regexp search-whitespace-regexp 2943 isearch-lazy-highlight-lax-whitespace isearch-lax-whitespace
2944 isearch-lazy-highlight-regexp-lax-whitespace isearch-regexp-lax-whitespace
2851 isearch-lazy-highlight-word isearch-word 2945 isearch-lazy-highlight-word isearch-word
2852 isearch-lazy-highlight-forward isearch-forward) 2946 isearch-lazy-highlight-forward isearch-forward)
2853 (unless (equal isearch-string "") 2947 (unless (equal isearch-string "")
@@ -2861,7 +2955,6 @@ Attempt to do the search exactly the way the pending Isearch would."
2861 (condition-case nil 2955 (condition-case nil
2862 (let ((case-fold-search isearch-lazy-highlight-case-fold-search) 2956 (let ((case-fold-search isearch-lazy-highlight-case-fold-search)
2863 (isearch-regexp isearch-lazy-highlight-regexp) 2957 (isearch-regexp isearch-lazy-highlight-regexp)
2864 (search-spaces-regexp isearch-lazy-highlight-space-regexp)
2865 (isearch-word isearch-lazy-highlight-word) 2958 (isearch-word isearch-lazy-highlight-word)
2866 (search-invisible nil) ; don't match invisible text 2959 (search-invisible nil) ; don't match invisible text
2867 (retry t) 2960 (retry t)
diff --git a/lisp/json.el b/lisp/json.el
index 468358ccd1a..f1ee3a52032 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -174,6 +174,10 @@ this around your call to `json-read' instead of `setq'ing it.")
174(put 'json-string-format 'error-conditions 174(put 'json-string-format 'error-conditions
175 '(json-string-format json-error error)) 175 '(json-string-format json-error error))
176 176
177(put 'json-key-format 'error-message "Bad JSON object key")
178(put 'json-key-format 'error-conditions
179 '(json-key-format json-error error))
180
177(put 'json-object-format 'error-message "Bad JSON object") 181(put 'json-object-format 'error-message "Bad JSON object")
178(put 'json-object-format 'error-conditions 182(put 'json-object-format 'error-conditions
179 '(json-object-format json-error error)) 183 '(json-object-format json-error error))
@@ -321,6 +325,15 @@ representation will be parsed correctly."
321 "Return a JSON representation of STRING." 325 "Return a JSON representation of STRING."
322 (format "\"%s\"" (mapconcat 'json-encode-char string ""))) 326 (format "\"%s\"" (mapconcat 'json-encode-char string "")))
323 327
328(defun json-encode-key (object)
329 "Return a JSON representation of OBJECT.
330If the resulting JSON object isn't a valid JSON object key,
331this signals `json-key-format'."
332 (let ((encoded (json-encode object)))
333 (unless (stringp (json-read-from-string encoded))
334 (signal 'json-key-format (list object)))
335 encoded))
336
324;;; JSON Objects 337;;; JSON Objects
325 338
326(defun json-new-object () 339(defun json-new-object ()
@@ -395,7 +408,7 @@ Please see the documentation of `json-object-type' and `json-key-type'."
395 (maphash 408 (maphash
396 (lambda (k v) 409 (lambda (k v)
397 (push (format "%s:%s" 410 (push (format "%s:%s"
398 (json-encode k) 411 (json-encode-key k)
399 (json-encode v)) 412 (json-encode v))
400 r)) 413 r))
401 hash-table) 414 hash-table)
@@ -409,7 +422,7 @@ Please see the documentation of `json-object-type' and `json-key-type'."
409 (format "{%s}" 422 (format "{%s}"
410 (json-join (mapcar (lambda (cons) 423 (json-join (mapcar (lambda (cons)
411 (format "%s:%s" 424 (format "%s:%s"
412 (json-encode (car cons)) 425 (json-encode-key (car cons))
413 (json-encode (cdr cons)))) 426 (json-encode (cdr cons))))
414 alist) 427 alist)
415 ", "))) 428 ", ")))
@@ -418,7 +431,7 @@ Please see the documentation of `json-object-type' and `json-key-type'."
418 "Return a JSON representation of PLIST." 431 "Return a JSON representation of PLIST."
419 (let (result) 432 (let (result)
420 (while plist 433 (while plist
421 (push (concat (json-encode (car plist)) 434 (push (concat (json-encode-key (car plist))
422 ":" 435 ":"
423 (json-encode (cadr plist))) 436 (json-encode (cadr plist)))
424 result) 437 result)
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 8b7a0ab3e6f..7b515a69a1c 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" (20478 3673 653810 0)) 8;;;;;; "play/5x5.el" (20545 57511 257469 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" "\
@@ -114,7 +114,7 @@ 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;;;;;; (20495 51111 757560 0)) 117;;;;;; (20523 62082 997685 0))
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)
@@ -398,7 +398,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...)
398 398
399;;;### (autoloads (align-newline-and-indent align-unhighlight-rule 399;;;### (autoloads (align-newline-and-indent align-unhighlight-rule
400;;;;;; align-highlight-rule align-current align-entire align-regexp 400;;;;;; align-highlight-rule align-current align-entire align-regexp
401;;;;;; align) "align" "align.el" (20355 10021 546955 0)) 401;;;;;; align) "align" "align.el" (20515 36389 544939 0))
402;;; Generated autoloads from align.el 402;;; Generated autoloads from align.el
403 403
404(autoload 'align "align" "\ 404(autoload 'align "align" "\
@@ -489,7 +489,7 @@ A replacement function for `newline-and-indent', aligning as it goes.
489 489
490;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation 490;;;### (autoloads (outlineify-sticky allout-mode allout-mode-p allout-auto-activation
491;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el" 491;;;;;; allout-setup allout-auto-activation-helper) "allout" "allout.el"
492;;;;;; (20399 35365 4050 0)) 492;;;;;; (20523 62082 997685 0))
493;;; Generated autoloads from allout.el 493;;; Generated autoloads from allout.el
494 494
495(autoload 'allout-auto-activation-helper "allout" "\ 495(autoload 'allout-auto-activation-helper "allout" "\
@@ -850,7 +850,7 @@ for details on preparing Emacs for automatic allout activation.
850 850
851;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation 851;;;### (autoloads (allout-widgets-mode allout-widgets-auto-activation
852;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el" 852;;;;;; allout-widgets-setup allout-widgets) "allout-widgets" "allout-widgets.el"
853;;;;;; (20437 50597 545250 0)) 853;;;;;; (20545 57511 257469 0))
854;;; Generated autoloads from allout-widgets.el 854;;; Generated autoloads from allout-widgets.el
855 855
856(let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads)))) 856(let ((loads (get 'allout-widgets 'custom-loads))) (if (member '"allout-widgets" loads) nil (put 'allout-widgets 'custom-loads (cons '"allout-widgets" loads))))
@@ -932,7 +932,7 @@ directory, so that Emacs will know its current contents.
932;;;*** 932;;;***
933 933
934;;;### (autoloads (animate-birthday-present animate-sequence animate-string) 934;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
935;;;;;; "animate" "play/animate.el" (20355 10021 546955 0)) 935;;;;;; "animate" "play/animate.el" (20545 57511 257469 0))
936;;; Generated autoloads from play/animate.el 936;;; Generated autoloads from play/animate.el
937 937
938(autoload 'animate-string "animate" "\ 938(autoload 'animate-string "animate" "\
@@ -965,7 +965,7 @@ the buffer *Birthday-Present-for-Name*.
965;;;*** 965;;;***
966 966
967;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on) 967;;;### (autoloads (ansi-color-process-output ansi-color-for-comint-mode-on)
968;;;;;; "ansi-color" "ansi-color.el" (20453 38823 158957 0)) 968;;;;;; "ansi-color" "ansi-color.el" (20523 30501 603360 0))
969;;; Generated autoloads from ansi-color.el 969;;; Generated autoloads from ansi-color.el
970 970
971(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\ 971(autoload 'ansi-color-for-comint-mode-on "ansi-color" "\
@@ -1051,8 +1051,8 @@ ARG is positive, otherwise off.
1051 1051
1052;;;### (autoloads (apropos-documentation apropos-value apropos-library 1052;;;### (autoloads (apropos-documentation apropos-value apropos-library
1053;;;;;; apropos apropos-documentation-property apropos-command apropos-variable 1053;;;;;; apropos apropos-documentation-property apropos-command apropos-variable
1054;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20497 6436 1054;;;;;; apropos-read-pattern) "apropos" "apropos.el" (20523 62082
1055;;;;;; 957082 0)) 1055;;;;;; 997685 0))
1056;;; Generated autoloads from apropos.el 1056;;; Generated autoloads from apropos.el
1057 1057
1058(autoload 'apropos-read-pattern "apropos" "\ 1058(autoload 'apropos-read-pattern "apropos" "\
@@ -1253,8 +1253,8 @@ Entering array mode calls the function `array-mode-hook'.
1253 1253
1254;;;*** 1254;;;***
1255 1255
1256;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20357 1256;;;### (autoloads (artist-mode) "artist" "textmodes/artist.el" (20513
1257;;;;;; 58785 834364 0)) 1257;;;;;; 18948 537867 0))
1258;;; Generated autoloads from textmodes/artist.el 1258;;; Generated autoloads from textmodes/artist.el
1259 1259
1260(autoload 'artist-mode "artist" "\ 1260(autoload 'artist-mode "artist" "\
@@ -1488,7 +1488,7 @@ Special commands:
1488;;;*** 1488;;;***
1489 1489
1490;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el" 1490;;;### (autoloads (auth-source-cache-expiry) "auth-source" "gnus/auth-source.el"
1491;;;;;; (20502 24369 261101 0)) 1491;;;;;; (20544 36659 880486 0))
1492;;; Generated autoloads from gnus/auth-source.el 1492;;; Generated autoloads from gnus/auth-source.el
1493 1493
1494(defvar auth-source-cache-expiry 7200 "\ 1494(defvar auth-source-cache-expiry 7200 "\
@@ -1562,7 +1562,7 @@ This is similar to `autoarg-mode' but rebinds the keypad keys
1562;;;*** 1562;;;***
1563 1563
1564;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el" 1564;;;### (autoloads (autoconf-mode) "autoconf" "progmodes/autoconf.el"
1565;;;;;; (20505 550 96420 0)) 1565;;;;;; (20513 18948 537867 0))
1566;;; Generated autoloads from progmodes/autoconf.el 1566;;; Generated autoloads from progmodes/autoconf.el
1567 1567
1568(autoload 'autoconf-mode "autoconf" "\ 1568(autoload 'autoconf-mode "autoconf" "\
@@ -1613,7 +1613,7 @@ insert a template for the file depending on the mode of the buffer.
1613 1613
1614;;;### (autoloads (batch-update-autoloads update-directory-autoloads 1614;;;### (autoloads (batch-update-autoloads update-directory-autoloads
1615;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el" 1615;;;;;; update-file-autoloads) "autoload" "emacs-lisp/autoload.el"
1616;;;;;; (20497 6436 957082 0)) 1616;;;;;; (20518 12580 46478 0))
1617;;; Generated autoloads from emacs-lisp/autoload.el 1617;;; Generated autoloads from emacs-lisp/autoload.el
1618 1618
1619(put 'generated-autoload-file 'safe-local-variable 'stringp) 1619(put 'generated-autoload-file 'safe-local-variable 'stringp)
@@ -1989,8 +1989,8 @@ Binhex decode region between START and END.
1989 1989
1990;;;*** 1990;;;***
1991 1991
1992;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20355 1992;;;### (autoloads (blackbox) "blackbox" "play/blackbox.el" (20545
1993;;;;;; 10021 546955 0)) 1993;;;;;; 57511 257469 0))
1994;;; Generated autoloads from play/blackbox.el 1994;;; Generated autoloads from play/blackbox.el
1995 1995
1996(autoload 'blackbox "blackbox" "\ 1996(autoload 'blackbox "blackbox" "\
@@ -2113,7 +2113,7 @@ a reflection.
2113;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert 2113;;;;;; bookmark-save bookmark-write bookmark-delete bookmark-insert
2114;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate 2114;;;;;; bookmark-rename bookmark-insert-location bookmark-relocate
2115;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark" 2115;;;;;; bookmark-jump-other-window bookmark-jump bookmark-set) "bookmark"
2116;;;;;; "bookmark.el" (20476 31768 298871 0)) 2116;;;;;; "bookmark.el" (20514 15527 107017 0))
2117;;; Generated autoloads from bookmark.el 2117;;; Generated autoloads from bookmark.el
2118 (define-key ctl-x-r-map "b" 'bookmark-jump) 2118 (define-key ctl-x-r-map "b" 'bookmark-jump)
2119 (define-key ctl-x-r-map "m" 'bookmark-set) 2119 (define-key ctl-x-r-map "m" 'bookmark-set)
@@ -2630,7 +2630,7 @@ from `browse-url-elinks-wrapper'.
2630;;;*** 2630;;;***
2631 2631
2632;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next) 2632;;;### (autoloads (bs-show bs-customize bs-cycle-previous bs-cycle-next)
2633;;;;;; "bs" "bs.el" (20479 62884 77836 0)) 2633;;;;;; "bs" "bs.el" (20520 54308 826101 0))
2634;;; Generated autoloads from bs.el 2634;;; Generated autoloads from bs.el
2635 2635
2636(autoload 'bs-cycle-next "bs" "\ 2636(autoload 'bs-cycle-next "bs" "\
@@ -2693,7 +2693,7 @@ columns on its right towards the left.
2693;;;*** 2693;;;***
2694 2694
2695;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference" 2695;;;### (autoloads (bug-reference-prog-mode bug-reference-mode) "bug-reference"
2696;;;;;; "progmodes/bug-reference.el" (20490 33188 850375 0)) 2696;;;;;; "progmodes/bug-reference.el" (20532 45476 981297 0))
2697;;; Generated autoloads from progmodes/bug-reference.el 2697;;; Generated autoloads from progmodes/bug-reference.el
2698 2698
2699(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) 2699(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
@@ -2717,7 +2717,7 @@ Like `bug-reference-mode', but only buttonize in comments and strings.
2717;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile 2717;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
2718;;;;;; compile-defun byte-compile-file byte-recompile-directory 2718;;;;;; compile-defun byte-compile-file byte-recompile-directory
2719;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning) 2719;;;;;; byte-force-recompile byte-compile-enable-warning byte-compile-disable-warning)
2720;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20497 6436 957082 0)) 2720;;;;;; "bytecomp" "emacs-lisp/bytecomp.el" (20522 38631 876994 556000))
2721;;; Generated autoloads from emacs-lisp/bytecomp.el 2721;;; Generated autoloads from emacs-lisp/bytecomp.el
2722(put 'byte-compile-dynamic 'safe-local-variable 'booleanp) 2722(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
2723(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) 2723(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -4129,8 +4129,8 @@ For example, the function `case' has an indent property
4129 4129
4130;;;*** 4130;;;***
4131 4131
4132;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20478 3673 4132;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (20541 60450
4133;;;;;; 653810 0)) 4133;;;;;; 834170 0))
4134;;; Generated autoloads from emacs-lisp/cl-lib.el 4134;;; Generated autoloads from emacs-lisp/cl-lib.el
4135 4135
4136(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3") 4136(define-obsolete-variable-alias 'custom-print-functions 'cl-custom-print-functions "24.3")
@@ -4199,8 +4199,8 @@ is run).
4199 4199
4200;;;*** 4200;;;***
4201 4201
4202;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20355 10021 4202;;;### (autoloads (color-name-to-rgb) "color" "color.el" (20522 9637
4203;;;;;; 546955 0)) 4203;;;;;; 465791 0))
4204;;; Generated autoloads from color.el 4204;;; Generated autoloads from color.el
4205 4205
4206(autoload 'color-name-to-rgb "color" "\ 4206(autoload 'color-name-to-rgb "color" "\
@@ -4222,7 +4222,7 @@ If FRAME cannot display COLOR, return nil.
4222;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list 4222;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
4223;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command 4223;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
4224;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el" 4224;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
4225;;;;;; (20476 31768 298871 0)) 4225;;;;;; (20523 62082 997685 0))
4226;;; Generated autoloads from comint.el 4226;;; Generated autoloads from comint.el
4227 4227
4228(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ 4228(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
@@ -4359,8 +4359,8 @@ on third call it again advances points to the next difference and so on.
4359;;;;;; compilation-shell-minor-mode compilation-mode compilation-start 4359;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
4360;;;;;; compile compilation-disable-input compile-command compilation-search-path 4360;;;;;; compile compilation-disable-input compile-command compilation-search-path
4361;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook 4361;;;;;; compilation-ask-about-save compilation-window-height compilation-start-hook
4362;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20478 4362;;;;;; compilation-mode-hook) "compile" "progmodes/compile.el" (20543
4363;;;;;; 3673 653810 0)) 4363;;;;;; 15782 195452 0))
4364;;; Generated autoloads from progmodes/compile.el 4364;;; Generated autoloads from progmodes/compile.el
4365 4365
4366(defvar compilation-mode-hook nil "\ 4366(defvar compilation-mode-hook nil "\
@@ -4723,7 +4723,7 @@ For details see `conf-mode'. Example:
4723;;;*** 4723;;;***
4724 4724
4725;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie) 4725;;;### (autoloads (shuffle-vector cookie-snarf cookie-insert cookie)
4726;;;;;; "cookie1" "play/cookie1.el" (20364 27900 192709 741000)) 4726;;;;;; "cookie1" "play/cookie1.el" (20545 57511 257469 0))
4727;;; Generated autoloads from play/cookie1.el 4727;;; Generated autoloads from play/cookie1.el
4728 4728
4729(autoload 'cookie "cookie1" "\ 4729(autoload 'cookie "cookie1" "\
@@ -4755,8 +4755,8 @@ Randomly permute the elements of VECTOR (all permutations equally likely).
4755;;;*** 4755;;;***
4756 4756
4757;;;### (autoloads (copyright-update-directory copyright copyright-fix-years 4757;;;### (autoloads (copyright-update-directory copyright copyright-fix-years
4758;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20387 4758;;;;;; copyright-update) "copyright" "emacs-lisp/copyright.el" (20518
4759;;;;;; 44199 24128 0)) 4759;;;;;; 12580 46478 0))
4760;;; Generated autoloads from emacs-lisp/copyright.el 4760;;; Generated autoloads from emacs-lisp/copyright.el
4761(put 'copyright-at-end-flag 'safe-local-variable 'booleanp) 4761(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
4762(put 'copyright-names-regexp 'safe-local-variable 'stringp) 4762(put 'copyright-names-regexp 'safe-local-variable 'stringp)
@@ -4795,7 +4795,7 @@ If FIX is non-nil, run `copyright-fix-years' instead.
4795;;;*** 4795;;;***
4796 4796
4797;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode) 4797;;;### (autoloads (cperl-perldoc-at-point cperl-perldoc cperl-mode)
4798;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20490 33188 850375 4798;;;;;; "cperl-mode" "progmodes/cperl-mode.el" (20512 60198 306109
4799;;;;;; 0)) 4799;;;;;; 0))
4800;;; Generated autoloads from progmodes/cperl-mode.el 4800;;; Generated autoloads from progmodes/cperl-mode.el
4801(put 'cperl-indent-level 'safe-local-variable 'integerp) 4801(put 'cperl-indent-level 'safe-local-variable 'integerp)
@@ -5014,7 +5014,7 @@ Edit display information for cpp conditionals.
5014;;;*** 5014;;;***
5015 5015
5016;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el" 5016;;;### (autoloads (crisp-mode crisp-mode) "crisp" "emulation/crisp.el"
5017;;;;;; (20476 31768 298871 0)) 5017;;;;;; (20523 62082 997685 0))
5018;;; Generated autoloads from emulation/crisp.el 5018;;; Generated autoloads from emulation/crisp.el
5019 5019
5020(defvar crisp-mode nil "\ 5020(defvar crisp-mode nil "\
@@ -5147,7 +5147,7 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings.
5147;;;;;; customize-mode customize customize-push-and-save customize-save-variable 5147;;;;;; customize-mode customize customize-push-and-save customize-save-variable
5148;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically 5148;;;;;; customize-set-variable customize-set-value custom-menu-sort-alphabetically
5149;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically) 5149;;;;;; custom-buffer-sort-alphabetically custom-browse-sort-alphabetically)
5150;;;;;; "cus-edit" "cus-edit.el" (20437 50597 545250 0)) 5150;;;;;; "cus-edit" "cus-edit.el" (20523 62082 997685 0))
5151;;; Generated autoloads from cus-edit.el 5151;;; Generated autoloads from cus-edit.el
5152 5152
5153(defvar custom-browse-sort-alphabetically nil "\ 5153(defvar custom-browse-sort-alphabetically nil "\
@@ -5642,8 +5642,8 @@ Create a new data-debug buffer with NAME.
5642 5642
5643;;;*** 5643;;;***
5644 5644
5645;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20476 5645;;;### (autoloads (dbus-handle-event) "dbus" "net/dbus.el" (20523
5646;;;;;; 31768 298871 0)) 5646;;;;;; 62082 997685 0))
5647;;; Generated autoloads from net/dbus.el 5647;;; Generated autoloads from net/dbus.el
5648 5648
5649(autoload 'dbus-handle-event "dbus" "\ 5649(autoload 'dbus-handle-event "dbus" "\
@@ -5934,8 +5934,8 @@ with no args, if that value is non-nil.
5934 5934
5935;;;*** 5935;;;***
5936 5936
5937;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20355 5937;;;### (autoloads (delete-selection-mode) "delsel" "delsel.el" (20515
5938;;;;;; 10021 546955 0)) 5938;;;;;; 36389 544939 0))
5939;;; Generated autoloads from delsel.el 5939;;; Generated autoloads from delsel.el
5940 5940
5941(defalias 'pending-delete-mode 'delete-selection-mode) 5941(defalias 'pending-delete-mode 'delete-selection-mode)
@@ -6032,7 +6032,7 @@ the first time the mode is used.
6032;;;*** 6032;;;***
6033 6033
6034;;;### (autoloads (describe-char describe-text-properties) "descr-text" 6034;;;### (autoloads (describe-char describe-text-properties) "descr-text"
6035;;;;;; "descr-text.el" (20486 36135 22104 0)) 6035;;;;;; "descr-text.el" (20530 32114 546307 0))
6036;;; Generated autoloads from descr-text.el 6036;;; Generated autoloads from descr-text.el
6037 6037
6038(autoload 'describe-text-properties "descr-text" "\ 6038(autoload 'describe-text-properties "descr-text" "\
@@ -6289,7 +6289,7 @@ Deuglify broken Outlook (Express) articles and redisplay.
6289;;;*** 6289;;;***
6290 6290
6291;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib" 6291;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
6292;;;;;; "calendar/diary-lib.el" (20355 10021 546955 0)) 6292;;;;;; "calendar/diary-lib.el" (20530 32124 97707 678000))
6293;;; Generated autoloads from calendar/diary-lib.el 6293;;; Generated autoloads from calendar/diary-lib.el
6294 6294
6295(autoload 'diary "diary-lib" "\ 6295(autoload 'diary "diary-lib" "\
@@ -6376,7 +6376,7 @@ This requires the external program `diff' to be in your `exec-path'.
6376;;;*** 6376;;;***
6377 6377
6378;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el" 6378;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "vc/diff-mode.el"
6379;;;;;; (20476 31768 298871 0)) 6379;;;;;; (20523 62082 997685 0))
6380;;; Generated autoloads from vc/diff-mode.el 6380;;; Generated autoloads from vc/diff-mode.el
6381 6381
6382(autoload 'diff-mode "diff-mode" "\ 6382(autoload 'diff-mode "diff-mode" "\
@@ -6420,8 +6420,8 @@ Optional arguments are passed to `dig-invoke'.
6420;;;*** 6420;;;***
6421 6421
6422;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window 6422;;;### (autoloads (dired-mode dired-noselect dired-other-frame dired-other-window
6423;;;;;; dired dired-listing-switches) "dired" "dired.el" (20486 36135 6423;;;;;; dired dired-listing-switches) "dired" "dired.el" (20539 18737
6424;;;;;; 22104 0)) 6424;;;;;; 159373 0))
6425;;; Generated autoloads from dired.el 6425;;; Generated autoloads from dired.el
6426 6426
6427(defvar dired-listing-switches (purecopy "-al") "\ 6427(defvar dired-listing-switches (purecopy "-al") "\
@@ -6715,7 +6715,7 @@ in `.emacs'.
6715;;;*** 6715;;;***
6716 6716
6717;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el" 6717;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
6718;;;;;; (20355 10021 546955 0)) 6718;;;;;; (20545 57511 257469 0))
6719;;; Generated autoloads from play/dissociate.el 6719;;; Generated autoloads from play/dissociate.el
6720 6720
6721(autoload 'dissociated-press "dissociate" "\ 6721(autoload 'dissociated-press "dissociate" "\
@@ -6824,8 +6824,8 @@ See the command `doc-view-mode' for more information on this mode.
6824 6824
6825;;;*** 6825;;;***
6826 6826
6827;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20443 2992 6827;;;### (autoloads (doctor) "doctor" "play/doctor.el" (20545 57511
6828;;;;;; 177196 0)) 6828;;;;;; 257469 0))
6829;;; Generated autoloads from play/doctor.el 6829;;; Generated autoloads from play/doctor.el
6830 6830
6831(autoload 'doctor "doctor" "\ 6831(autoload 'doctor "doctor" "\
@@ -6852,8 +6852,8 @@ strings when pressed twice. See `double-map' for details.
6852 6852
6853;;;*** 6853;;;***
6854 6854
6855;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20355 10021 6855;;;### (autoloads (dunnet) "dunnet" "play/dunnet.el" (20545 57511
6856;;;;;; 546955 0)) 6856;;;;;; 257469 0))
6857;;; Generated autoloads from play/dunnet.el 6857;;; Generated autoloads from play/dunnet.el
6858 6858
6859(autoload 'dunnet "dunnet" "\ 6859(autoload 'dunnet "dunnet" "\
@@ -7574,7 +7574,7 @@ Display statistics for a class tree.
7574;;;*** 7574;;;***
7575 7575
7576;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el" 7576;;;### (autoloads (electric-buffer-list) "ebuff-menu" "ebuff-menu.el"
7577;;;;;; (20436 29731 313079 0)) 7577;;;;;; (20523 62082 997685 0))
7578;;; Generated autoloads from ebuff-menu.el 7578;;; Generated autoloads from ebuff-menu.el
7579 7579
7580(autoload 'electric-buffer-list "ebuff-menu" "\ 7580(autoload 'electric-buffer-list "ebuff-menu" "\
@@ -7657,7 +7657,7 @@ an EDE controlled project.
7657 7657
7658;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form 7658;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
7659;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug" 7659;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
7660;;;;;; "emacs-lisp/edebug.el" (20497 6436 957082 0)) 7660;;;;;; "emacs-lisp/edebug.el" (20523 62082 997685 0))
7661;;; Generated autoloads from emacs-lisp/edebug.el 7661;;; Generated autoloads from emacs-lisp/edebug.el
7662 7662
7663(defvar edebug-all-defs nil "\ 7663(defvar edebug-all-defs nil "\
@@ -8319,7 +8319,7 @@ displayed.
8319;;;*** 8319;;;***
8320 8320
8321;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el" 8321;;;### (autoloads (emacs-lock-mode) "emacs-lock" "emacs-lock.el"
8322;;;;;; (20399 35365 4050 0)) 8322;;;;;; (20523 62082 997685 0))
8323;;; Generated autoloads from emacs-lock.el 8323;;; Generated autoloads from emacs-lock.el
8324 8324
8325(autoload 'emacs-lock-mode "emacs-lock" "\ 8325(autoload 'emacs-lock-mode "emacs-lock" "\
@@ -8347,7 +8347,7 @@ Other values are interpreted as usual.
8347;;;*** 8347;;;***
8348 8348
8349;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug) 8349;;;### (autoloads (report-emacs-bug-query-existing-bugs report-emacs-bug)
8350;;;;;; "emacsbug" "mail/emacsbug.el" (20495 51111 757560 0)) 8350;;;;;; "emacsbug" "mail/emacsbug.el" (20523 62082 997685 0))
8351;;; Generated autoloads from mail/emacsbug.el 8351;;; Generated autoloads from mail/emacsbug.el
8352 8352
8353(autoload 'report-emacs-bug "emacsbug" "\ 8353(autoload 'report-emacs-bug "emacsbug" "\
@@ -8800,7 +8800,7 @@ Look at CONFIG and try to expand GROUP.
8800;;;*** 8800;;;***
8801 8801
8802;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args) 8802;;;### (autoloads (erc-handle-irc-url erc-tls erc erc-select-read-args)
8803;;;;;; "erc" "erc/erc.el" (20444 23842 968143 0)) 8803;;;;;; "erc" "erc/erc.el" (20530 32114 546307 0))
8804;;; Generated autoloads from erc/erc.el 8804;;; Generated autoloads from erc/erc.el
8805 8805
8806(autoload 'erc-select-read-args "erc" "\ 8806(autoload 'erc-select-read-args "erc" "\
@@ -8877,7 +8877,7 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
8877;;;*** 8877;;;***
8878 8878
8879;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC) 8879;;;### (autoloads (erc-ctcp-query-DCC pcomplete/erc-mode/DCC erc-cmd-DCC)
8880;;;;;; "erc-dcc" "erc/erc-dcc.el" (20439 5925 915283 0)) 8880;;;;;; "erc-dcc" "erc/erc-dcc.el" (20523 62082 997685 0))
8881;;; Generated autoloads from erc/erc-dcc.el 8881;;; Generated autoloads from erc/erc-dcc.el
8882 (autoload 'erc-dcc-mode "erc-dcc") 8882 (autoload 'erc-dcc-mode "erc-dcc")
8883 8883
@@ -9018,7 +9018,7 @@ system.
9018 9018
9019;;;*** 9019;;;***
9020 9020
9021;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20356 2211 532900 9021;;;### (autoloads nil "erc-join" "erc/erc-join.el" (20532 45476 981297
9022;;;;;; 0)) 9022;;;;;; 0))
9023;;; Generated autoloads from erc/erc-join.el 9023;;; Generated autoloads from erc/erc-join.el
9024 (autoload 'erc-autojoin-mode "erc-join" nil t) 9024 (autoload 'erc-autojoin-mode "erc-join" nil t)
@@ -9065,7 +9065,7 @@ You can save every individual message by putting this function on
9065;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host 9065;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
9066;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool 9066;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
9067;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el" 9067;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
9068;;;;;; (20434 17809 692608 0)) 9068;;;;;; (20531 24613 995935 0))
9069;;; Generated autoloads from erc/erc-match.el 9069;;; Generated autoloads from erc/erc-match.el
9070 (autoload 'erc-match-mode "erc-match") 9070 (autoload 'erc-match-mode "erc-match")
9071 9071
@@ -9393,8 +9393,8 @@ Kill all test buffers that are still live.
9393 9393
9394;;;*** 9394;;;***
9395 9395
9396;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20427 9396;;;### (autoloads (eshell-mode) "esh-mode" "eshell/esh-mode.el" (20523
9397;;;;;; 14766 970343 0)) 9397;;;;;; 62082 997685 0))
9398;;; Generated autoloads from eshell/esh-mode.el 9398;;; Generated autoloads from eshell/esh-mode.el
9399 9399
9400(autoload 'eshell-mode "esh-mode" "\ 9400(autoload 'eshell-mode "esh-mode" "\
@@ -9407,7 +9407,7 @@ Emacs shell interactive mode.
9407;;;*** 9407;;;***
9408 9408
9409;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell" 9409;;;### (autoloads (eshell-command-result eshell-command eshell) "eshell"
9410;;;;;; "eshell/eshell.el" (20478 3673 653810 0)) 9410;;;;;; "eshell/eshell.el" (20523 62082 997685 0))
9411;;; Generated autoloads from eshell/eshell.el 9411;;; Generated autoloads from eshell/eshell.el
9412 9412
9413(autoload 'eshell "eshell" "\ 9413(autoload 'eshell "eshell" "\
@@ -10085,7 +10085,7 @@ fourth arg NOSEP non-nil inhibits this.
10085;;;### (autoloads (executable-make-buffer-file-executable-if-script-p 10085;;;### (autoloads (executable-make-buffer-file-executable-if-script-p
10086;;;;;; executable-self-display executable-set-magic executable-interpret 10086;;;;;; executable-self-display executable-set-magic executable-interpret
10087;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el" 10087;;;;;; executable-command-find-posix-p) "executable" "progmodes/executable.el"
10088;;;;;; (20355 10021 546955 0)) 10088;;;;;; (20533 6181 437016 717000))
10089;;; Generated autoloads from progmodes/executable.el 10089;;; Generated autoloads from progmodes/executable.el
10090 10090
10091(autoload 'executable-command-find-posix-p "executable" "\ 10091(autoload 'executable-command-find-posix-p "executable" "\
@@ -10464,7 +10464,7 @@ you can set `feedmail-queue-reminder-alist' to nil.
10464 10464
10465;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point 10465;;;### (autoloads (ffap-bindings ffap-guess-file-name-at-point dired-at-point
10466;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap" 10466;;;;;; ffap-at-mouse ffap-menu find-file-at-point ffap-next) "ffap"
10467;;;;;; "ffap.el" (20479 62884 77836 0)) 10467;;;;;; "ffap.el" (20542 46798 773957 0))
10468;;; Generated autoloads from ffap.el 10468;;; Generated autoloads from ffap.el
10469 10469
10470(autoload 'ffap-next "ffap" "\ 10470(autoload 'ffap-next "ffap" "\
@@ -11422,7 +11422,7 @@ and choose the directory as the fortune-file.
11422;;;*** 11422;;;***
11423 11423
11424;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el" 11424;;;### (autoloads (gdb gdb-enable-debug) "gdb-mi" "progmodes/gdb-mi.el"
11425;;;;;; (20501 3499 284800 0)) 11425;;;;;; (20537 63402 936234 0))
11426;;; Generated autoloads from progmodes/gdb-mi.el 11426;;; Generated autoloads from progmodes/gdb-mi.el
11427 11427
11428(defvar gdb-enable-debug nil "\ 11428(defvar gdb-enable-debug nil "\
@@ -11705,7 +11705,7 @@ prompt the user for the name of an NNTP server to use.
11705;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group 11705;;;;;; gnus-agent-get-undownloaded-list gnus-agent-delete-group
11706;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize 11706;;;;;; gnus-agent-rename-group gnus-agent-possibly-save-gcc gnus-agentize
11707;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent" 11707;;;;;; gnus-slave-unplugged gnus-plugged gnus-unplugged) "gnus-agent"
11708;;;;;; "gnus/gnus-agent.el" (20458 56750 651721 0)) 11708;;;;;; "gnus/gnus-agent.el" (20518 12580 46478 0))
11709;;; Generated autoloads from gnus/gnus-agent.el 11709;;; Generated autoloads from gnus/gnus-agent.el
11710 11710
11711(autoload 'gnus-unplugged "gnus-agent" "\ 11711(autoload 'gnus-unplugged "gnus-agent" "\
@@ -11796,7 +11796,7 @@ If CLEAN, obsolete (ignore).
11796;;;*** 11796;;;***
11797 11797
11798;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el" 11798;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
11799;;;;;; (20497 6436 957082 0)) 11799;;;;;; (20522 9637 465791 0))
11800;;; Generated autoloads from gnus/gnus-art.el 11800;;; Generated autoloads from gnus/gnus-art.el
11801 11801
11802(autoload 'gnus-article-prepare-display "gnus-art" "\ 11802(autoload 'gnus-article-prepare-display "gnus-art" "\
@@ -12191,7 +12191,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
12191;;;*** 12191;;;***
12192 12192
12193;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail) 12193;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
12194;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20495 51111 757560 0)) 12194;;;;;; "gnus-msg" "gnus/gnus-msg.el" (20533 5993 500881 0))
12195;;; Generated autoloads from gnus/gnus-msg.el 12195;;; Generated autoloads from gnus/gnus-msg.el
12196 12196
12197(autoload 'gnus-msg-mail "gnus-msg" "\ 12197(autoload 'gnus-msg-mail "gnus-msg" "\
@@ -12217,9 +12217,26 @@ Like `message-reply'.
12217 12217
12218;;;*** 12218;;;***
12219 12219
12220;;;### (autoloads (gnus-notifications) "gnus-notifications" "gnus/gnus-notifications.el"
12221;;;;;; (20544 36659 880486 0))
12222;;; Generated autoloads from gnus/gnus-notifications.el
12223
12224(autoload 'gnus-notifications "gnus-notifications" "\
12225Send a notification on new message.
12226This check for new messages that are in group with a level lower
12227or equal to `gnus-notifications-minimum-level' and send a
12228notification using `notifications-notify' for it.
12229
12230This is typically a function to add in
12231`gnus-after-getting-new-news-hook'
12232
12233\(fn)" nil nil)
12234
12235;;;***
12236
12220;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon 12237;;;### (autoloads (gnus-treat-newsgroups-picon gnus-treat-mail-picon
12221;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el" 12238;;;;;; gnus-treat-from-picon) "gnus-picon" "gnus/gnus-picon.el"
12222;;;;;; (20458 56750 651721 0)) 12239;;;;;; (20523 62082 997685 0))
12223;;; Generated autoloads from gnus/gnus-picon.el 12240;;; Generated autoloads from gnus/gnus-picon.el
12224 12241
12225(autoload 'gnus-treat-from-picon "gnus-picon" "\ 12242(autoload 'gnus-treat-from-picon "gnus-picon" "\
@@ -12246,7 +12263,7 @@ If picons are already displayed, remove them.
12246;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection 12263;;;;;; gnus-sorted-nintersection gnus-sorted-range-intersection
12247;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement 12264;;;;;; gnus-sorted-intersection gnus-intersection gnus-sorted-complement
12248;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range" 12265;;;;;; gnus-sorted-ndifference gnus-sorted-difference) "gnus-range"
12249;;;;;; "gnus/gnus-range.el" (20495 51111 757560 0)) 12266;;;;;; "gnus/gnus-range.el" (20544 36659 880486 0))
12250;;; Generated autoloads from gnus/gnus-range.el 12267;;; Generated autoloads from gnus/gnus-range.el
12251 12268
12252(autoload 'gnus-sorted-difference "gnus-range" "\ 12269(autoload 'gnus-sorted-difference "gnus-range" "\
@@ -12314,7 +12331,7 @@ Add NUM into sorted LIST by side effect.
12314;;;*** 12331;;;***
12315 12332
12316;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize) 12333;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
12317;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20458 56750 651721 12334;;;;;; "gnus-registry" "gnus/gnus-registry.el" (20544 36659 880486
12318;;;;;; 0)) 12335;;;;;; 0))
12319;;; Generated autoloads from gnus/gnus-registry.el 12336;;; Generated autoloads from gnus/gnus-registry.el
12320 12337
@@ -12382,7 +12399,7 @@ Declare back end NAME with ABILITIES as a Gnus back end.
12382;;;*** 12399;;;***
12383 12400
12384;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el" 12401;;;### (autoloads (gnus-summary-bookmark-jump) "gnus-sum" "gnus/gnus-sum.el"
12385;;;;;; (20495 51111 757560 0)) 12402;;;;;; (20540 39589 424586 0))
12386;;; Generated autoloads from gnus/gnus-sum.el 12403;;; Generated autoloads from gnus/gnus-sum.el
12387 12404
12388(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ 12405(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
@@ -12394,7 +12411,7 @@ BOOKMARK is a bookmark name or a bookmark record.
12394;;;*** 12411;;;***
12395 12412
12396;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize) 12413;;;### (autoloads (gnus-sync-install-hooks gnus-sync-initialize)
12397;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20465 29989 57840 0)) 12414;;;;;; "gnus-sync" "gnus/gnus-sync.el" (20545 57511 257469 0))
12398;;; Generated autoloads from gnus/gnus-sync.el 12415;;; Generated autoloads from gnus/gnus-sync.el
12399 12416
12400(autoload 'gnus-sync-initialize "gnus-sync" "\ 12417(autoload 'gnus-sync-initialize "gnus-sync" "\
@@ -12437,8 +12454,8 @@ A value of nil says to use the default GnuTLS value.")
12437 12454
12438;;;*** 12455;;;***
12439 12456
12440;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20355 10021 12457;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (20545 57511
12441;;;;;; 546955 0)) 12458;;;;;; 257469 0))
12442;;; Generated autoloads from play/gomoku.el 12459;;; Generated autoloads from play/gomoku.el
12443 12460
12444(autoload 'gomoku "gomoku" "\ 12461(autoload 'gomoku "gomoku" "\
@@ -12705,8 +12722,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
12705;;;*** 12722;;;***
12706 12723
12707;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb 12724;;;### (autoloads (gud-tooltip-mode gdb-script-mode jdb pdb perldb
12708;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20478 3673 12725;;;;;; xdb dbx sdb gud-gdb) "gud" "progmodes/gud.el" (20537 63402
12709;;;;;; 653810 0)) 12726;;;;;; 936234 0))
12710;;; Generated autoloads from progmodes/gud.el 12727;;; Generated autoloads from progmodes/gud.el
12711 12728
12712(autoload 'gud-gdb "gud" "\ 12729(autoload 'gud-gdb "gud" "\
@@ -12796,7 +12813,7 @@ it if ARG is omitted or nil.
12796 12813
12797;;;### (autoloads (setf gv-define-simple-setter gv-define-setter 12814;;;### (autoloads (setf gv-define-simple-setter gv-define-setter
12798;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get) 12815;;;;;; gv--defun-declaration gv-define-expander gv-letplace gv-get)
12799;;;;;; "gv" "emacs-lisp/gv.el" (20497 6436 957082 0)) 12816;;;;;; "gv" "emacs-lisp/gv.el" (20542 46798 773957 0))
12800;;; Generated autoloads from emacs-lisp/gv.el 12817;;; Generated autoloads from emacs-lisp/gv.el
12801 12818
12802(autoload 'gv-get "gv" "\ 12819(autoload 'gv-get "gv" "\
@@ -12852,8 +12869,9 @@ well for simple place forms.
12852Assignments of VAL to (NAME ARGS...) are expanded by binding the argument 12869Assignments of VAL to (NAME ARGS...) are expanded by binding the argument
12853forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must 12870forms (VAL ARGS...) according to ARGLIST, then executing BODY, which must
12854return a Lisp form that does the assignment. 12871return a Lisp form that does the assignment.
12855Actually, ARGLIST may be bound to temporary variables which are introduced 12872The first arg in ARLIST (the one that receives VAL) receives an expression
12856automatically to preserve proper execution order of the arguments. Example: 12873which can do arbitrary things, whereas the other arguments are all guaranteed
12874to be pure and copyable. Example use:
12857 (gv-define-setter aref (v a i) `(aset ,a ,i ,v)) 12875 (gv-define-setter aref (v a i) `(aset ,a ,i ,v))
12858 12876
12859\(fn NAME ARGLIST &rest BODY)" nil t) 12877\(fn NAME ARGLIST &rest BODY)" nil t)
@@ -13108,7 +13126,7 @@ different regions. With numeric argument ARG, behaves like
13108;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories 13126;;;### (autoloads (doc-file-to-info doc-file-to-man describe-categories
13109;;;;;; describe-syntax describe-variable variable-at-point describe-function-1 13127;;;;;; describe-syntax describe-variable variable-at-point describe-function-1
13110;;;;;; find-lisp-object-file-name help-C-file-name describe-function) 13128;;;;;; find-lisp-object-file-name help-C-file-name describe-function)
13111;;;;;; "help-fns" "help-fns.el" (20497 6436 957082 0)) 13129;;;;;; "help-fns" "help-fns.el" (20532 45476 981297 0))
13112;;; Generated autoloads from help-fns.el 13130;;; Generated autoloads from help-fns.el
13113 13131
13114(autoload 'describe-function "help-fns" "\ 13132(autoload 'describe-function "help-fns" "\
@@ -13205,7 +13223,7 @@ gives the window that lists the options.")
13205;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button 13223;;;### (autoloads (help-bookmark-jump help-xref-on-pp help-insert-xref-button
13206;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref 13224;;;;;; help-xref-button help-make-xrefs help-buffer help-setup-xref
13207;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el" 13225;;;;;; help-mode-finish help-mode-setup help-mode) "help-mode" "help-mode.el"
13208;;;;;; (20479 62884 77836 0)) 13226;;;;;; (20510 18478 782378 0))
13209;;; Generated autoloads from help-mode.el 13227;;; Generated autoloads from help-mode.el
13210 13228
13211(autoload 'help-mode "help-mode" "\ 13229(autoload 'help-mode "help-mode" "\
@@ -13321,7 +13339,7 @@ Provide help for current mode.
13321;;;*** 13339;;;***
13322 13340
13323;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl" 13341;;;### (autoloads (hexlify-buffer hexl-find-file hexl-mode) "hexl"
13324;;;;;; "hexl.el" (20478 3673 653810 0)) 13342;;;;;; "hexl.el" (20523 62082 997685 0))
13325;;; Generated autoloads from hexl.el 13343;;; Generated autoloads from hexl.el
13326 13344
13327(autoload 'hexl-mode "hexl" "\ 13345(autoload 'hexl-mode "hexl" "\
@@ -13418,7 +13436,7 @@ This discards the buffer's undo information.
13418;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer 13436;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
13419;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer 13437;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
13420;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el" 13438;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
13421;;;;;; (20410 5673 834266 0)) 13439;;;;;; (20522 9637 465791 0))
13422;;; Generated autoloads from hi-lock.el 13440;;; Generated autoloads from hi-lock.el
13423 13441
13424(autoload 'hi-lock-mode "hi-lock" "\ 13442(autoload 'hi-lock-mode "hi-lock" "\
@@ -13427,12 +13445,19 @@ With a prefix argument ARG, enable Hi Lock mode if ARG is
13427positive, and disable it otherwise. If called from Lisp, enable 13445positive, and disable it otherwise. If called from Lisp, enable
13428the mode if ARG is omitted or nil. 13446the mode if ARG is omitted or nil.
13429 13447
13430Issuing one the highlighting commands listed below will 13448Hi Lock mode is automatically enabled when you invoke any of the
13431automatically enable Hi Lock mode. To enable Hi Lock mode in all 13449highlighting commands listed below, such as \\[highlight-regexp].
13432buffers, use `global-hi-lock-mode' or add (global-hi-lock-mode 1) 13450To enable Hi Lock mode in all buffers, use `global-hi-lock-mode'
13433to your init file. When Hi Lock mode is enabled, a \"Regexp 13451or add (global-hi-lock-mode 1) to your init file.
13434Highlighting\" submenu is added to the \"Edit\" menu. The 13452
13435commands in the submenu, which can be called interactively, are: 13453In buffers where Font Lock mode is enabled, patterns are
13454highlighted using font lock. In buffers where Font Lock mode is
13455disabled, patterns are applied using overlays; in this case, the
13456highlighting will not be updated as you type.
13457
13458When Hi Lock mode is enabled, a \"Regexp Highlighting\" submenu
13459is added to the \"Edit\" menu. The commands in the submenu,
13460which can be called interactively, are:
13436 13461
13437\\[highlight-regexp] REGEXP FACE 13462\\[highlight-regexp] REGEXP FACE
13438 Highlight matches of pattern REGEXP in current buffer with FACE. 13463 Highlight matches of pattern REGEXP in current buffer with FACE.
@@ -13466,12 +13491,12 @@ When hi-lock is started and if the mode is not excluded or patterns
13466rejected, the beginning of the buffer is searched for lines of the 13491rejected, the beginning of the buffer is searched for lines of the
13467form: 13492form:
13468 Hi-lock: FOO 13493 Hi-lock: FOO
13469where FOO is a list of patterns. These are added to the font lock 13494
13470keywords already present. The patterns must start before position 13495where FOO is a list of patterns. The patterns must start before
13471\(number of characters into buffer) `hi-lock-file-patterns-range'. 13496position (number of characters into buffer)
13472Patterns will be read until 13497`hi-lock-file-patterns-range'. Patterns will be read until
13473 Hi-lock: end 13498Hi-lock: end is found. A mode is excluded if it's in the list
13474is found. A mode is excluded if it's in the list `hi-lock-exclude-modes'. 13499`hi-lock-exclude-modes'.
13475 13500
13476\(fn &optional ARG)" t nil) 13501\(fn &optional ARG)" t nil)
13477 13502
@@ -13500,12 +13525,13 @@ See `hi-lock-mode' for more information on Hi-Lock mode.
13500 13525
13501(autoload 'hi-lock-line-face-buffer "hi-lock" "\ 13526(autoload 'hi-lock-line-face-buffer "hi-lock" "\
13502Set face of all lines containing a match of REGEXP to FACE. 13527Set face of all lines containing a match of REGEXP to FACE.
13528Interactively, prompt for REGEXP then FACE, using a buffer-local
13529history list for REGEXP and a global history list for FACE.
13503 13530
13504Interactively, prompt for REGEXP then FACE. Buffer-local history 13531If Font Lock mode is enabled in the buffer, it is used to
13505list maintained for regexps, global history maintained for faces. 13532highlight REGEXP. If Font Lock mode is disabled, overlays are
13506\\<minibuffer-local-map>Use \\[previous-history-element] to retrieve previous history items, 13533used for highlighting; in this case, the highlighting will not be
13507and \\[next-history-element] to retrieve default values. 13534updated as you type.
13508\(See info node `Minibuffer History'.)
13509 13535
13510\(fn REGEXP &optional FACE)" t nil) 13536\(fn REGEXP &optional FACE)" t nil)
13511 13537
@@ -13513,12 +13539,13 @@ and \\[next-history-element] to retrieve default values.
13513 13539
13514(autoload 'hi-lock-face-buffer "hi-lock" "\ 13540(autoload 'hi-lock-face-buffer "hi-lock" "\
13515Set face of each match of REGEXP to FACE. 13541Set face of each match of REGEXP to FACE.
13542Interactively, prompt for REGEXP then FACE, using a buffer-local
13543history list for REGEXP and a global history list for FACE.
13516 13544
13517Interactively, prompt for REGEXP then FACE. Buffer-local history 13545If Font Lock mode is enabled in the buffer, it is used to
13518list maintained for regexps, global history maintained for faces. 13546highlight REGEXP. If Font Lock mode is disabled, overlays are
13519\\<minibuffer-local-map>Use \\[previous-history-element] to retrieve previous history items, 13547used for highlighting; in this case, the highlighting will not be
13520and \\[next-history-element] to retrieve default values. 13548updated as you type.
13521\(See info node `Minibuffer History'.)
13522 13549
13523\(fn REGEXP &optional FACE)" t nil) 13550\(fn REGEXP &optional FACE)" t nil)
13524 13551
@@ -13526,22 +13553,22 @@ and \\[next-history-element] to retrieve default values.
13526 13553
13527(autoload 'hi-lock-face-phrase-buffer "hi-lock" "\ 13554(autoload 'hi-lock-face-phrase-buffer "hi-lock" "\
13528Set face of each match of phrase REGEXP to FACE. 13555Set face of each match of phrase REGEXP to FACE.
13529
13530Whitespace in REGEXP converted to arbitrary whitespace and initial 13556Whitespace in REGEXP converted to arbitrary whitespace and initial
13531lower-case letters made case insensitive. 13557lower-case letters made case insensitive.
13532 13558
13559If Font Lock mode is enabled in the buffer, it is used to
13560highlight REGEXP. If Font Lock mode is disabled, overlays are
13561used for highlighting; in this case, the highlighting will not be
13562updated as you type.
13563
13533\(fn REGEXP &optional FACE)" t nil) 13564\(fn REGEXP &optional FACE)" t nil)
13534 13565
13535(defalias 'unhighlight-regexp 'hi-lock-unface-buffer) 13566(defalias 'unhighlight-regexp 'hi-lock-unface-buffer)
13536 13567
13537(autoload 'hi-lock-unface-buffer "hi-lock" "\ 13568(autoload 'hi-lock-unface-buffer "hi-lock" "\
13538Remove highlighting of each match to REGEXP set by hi-lock. 13569Remove highlighting of each match to REGEXP set by hi-lock.
13539 13570Interactively, prompt for REGEXP, accepting only regexps
13540Interactively, prompt for REGEXP. Buffer-local history of inserted 13571previously inserted by hi-lock interactive functions.
13541regexp's maintained. Will accept only regexps inserted by hi-lock
13542interactive functions. (See `hi-lock-interactive-patterns'.)
13543\\<minibuffer-local-must-match-map>Use \\[minibuffer-complete] to complete a partially typed regexp.
13544\(See info node `Minibuffer History'.)
13545 13572
13546\(fn REGEXP)" t nil) 13573\(fn REGEXP)" t nil)
13547 13574
@@ -13557,7 +13584,7 @@ be found in variable `hi-lock-interactive-patterns'.
13557;;;*** 13584;;;***
13558 13585
13559;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el" 13586;;;### (autoloads (hide-ifdef-mode) "hideif" "progmodes/hideif.el"
13560;;;;;; (20355 10021 546955 0)) 13587;;;;;; (20541 6907 775259 0))
13561;;; Generated autoloads from progmodes/hideif.el 13588;;; Generated autoloads from progmodes/hideif.el
13562 13589
13563(autoload 'hide-ifdef-mode "hideif" "\ 13590(autoload 'hide-ifdef-mode "hideif" "\
@@ -13601,7 +13628,7 @@ Several variables affect how the hiding is done:
13601;;;*** 13628;;;***
13602 13629
13603;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el" 13630;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
13604;;;;;; (20356 55829 180242 0)) 13631;;;;;; (20541 6907 775259 0))
13605;;; Generated autoloads from progmodes/hideshow.el 13632;;; Generated autoloads from progmodes/hideshow.el
13606 13633
13607(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))) "\ 13634(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))) "\
@@ -13929,7 +13956,7 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
13929;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays 13956;;;;;; holiday-bahai-holidays holiday-islamic-holidays holiday-christian-holidays
13930;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays 13957;;;;;; holiday-hebrew-holidays holiday-other-holidays holiday-local-holidays
13931;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays" 13958;;;;;; holiday-oriental-holidays holiday-general-holidays) "holidays"
13932;;;;;; "calendar/holidays.el" (20390 20388 254308 0)) 13959;;;;;; "calendar/holidays.el" (20530 32124 107724 973000))
13933;;; Generated autoloads from calendar/holidays.el 13960;;; Generated autoloads from calendar/holidays.el
13934 13961
13935(define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1") 13962(define-obsolete-variable-alias 'general-holidays 'holiday-general-holidays "23.1")
@@ -14212,7 +14239,7 @@ bound to the current value of the filter.
14212;;;*** 14239;;;***
14213 14240
14214;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers) 14241;;;### (autoloads (ibuffer ibuffer-other-window ibuffer-list-buffers)
14215;;;;;; "ibuffer" "ibuffer.el" (20479 62884 77836 0)) 14242;;;;;; "ibuffer" "ibuffer.el" (20542 46798 773957 0))
14216;;; Generated autoloads from ibuffer.el 14243;;; Generated autoloads from ibuffer.el
14217 14244
14218(autoload 'ibuffer-list-buffers "ibuffer" "\ 14245(autoload 'ibuffer-list-buffers "ibuffer" "\
@@ -14823,7 +14850,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'.
14823;;;;;; create-image image-type-auto-detected-p image-type-available-p 14850;;;;;; create-image image-type-auto-detected-p image-type-available-p
14824;;;;;; image-type image-type-from-file-name image-type-from-file-header 14851;;;;;; image-type image-type-from-file-name image-type-from-file-header
14825;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el" 14852;;;;;; image-type-from-buffer image-type-from-data) "image" "image.el"
14826;;;;;; (20437 50597 545250 0)) 14853;;;;;; (20523 62082 997685 0))
14827;;; Generated autoloads from image.el 14854;;; Generated autoloads from image.el
14828 14855
14829(autoload 'image-type-from-data "image" "\ 14856(autoload 'image-type-from-data "image" "\
@@ -15270,7 +15297,7 @@ on these modes.
15270;;;*** 15297;;;***
15271 15298
15272;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar 15299;;;### (autoloads (imenu imenu-add-menubar-index imenu-add-to-menubar
15273;;;;;; imenu-sort-function) "imenu" "imenu.el" (20476 31768 298871 15300;;;;;; imenu-sort-function) "imenu" "imenu.el" (20511 39332 974340
15274;;;;;; 0)) 15301;;;;;; 0))
15275;;; Generated autoloads from imenu.el 15302;;; Generated autoloads from imenu.el
15276 15303
@@ -15292,16 +15319,39 @@ element should come before the second. The arguments are cons cells;
15292(custom-autoload 'imenu-sort-function "imenu" t) 15319(custom-autoload 'imenu-sort-function "imenu" t)
15293 15320
15294(defvar imenu-generic-expression nil "\ 15321(defvar imenu-generic-expression nil "\
15295The regex pattern to use for creating a buffer index. 15322List of definition matchers for creating an Imenu index.
15323Each element of this list should have the form
15324
15325 (MENU-TITLE REGEXP INDEX [FUNCTION] [ARGUMENTS...])
15326
15327MENU-TITLE should be nil (in which case the matches for this
15328element are put in the top level of the buffer index) or a
15329string (which specifies the title of a submenu into which the
15330matches are put).
15331REGEXP is a regular expression matching a definition construct
15332which is to be displayed in the menu. REGEXP may also be a
15333function, called without arguments. It is expected to search
15334backwards. It must return true and set `match-data' if it finds
15335another element.
15336INDEX is an integer specifying which subexpression of REGEXP
15337matches the definition's name; this subexpression is displayed as
15338the menu item.
15339FUNCTION, if present, specifies a function to call when the index
15340item is selected by the user. This function is called with
15341arguments consisting of the item name, the buffer position, and
15342the ARGUMENTS.
15343
15344The variable `imenu-case-fold-search' determines whether or not
15345the regexp matches are case sensitive, and `imenu-syntax-alist'
15346can be used to alter the syntax table for the search.
15296 15347
15297If non-nil this pattern is passed to `imenu--generic-function' to 15348If non-nil this pattern is passed to `imenu--generic-function' to
15298create a buffer index. Look there for the documentation of this 15349create a buffer index.
15299pattern's structure.
15300 15350
15301For example, see the value of `fortran-imenu-generic-expression' used by 15351For example, see the value of `fortran-imenu-generic-expression'
15302`fortran-mode' with `imenu-syntax-alist' set locally to give the 15352used by `fortran-mode' with `imenu-syntax-alist' set locally to
15303characters which normally have \"symbol\" syntax \"word\" syntax 15353give the characters which normally have \"symbol\" syntax
15304during matching.") 15354\"word\" syntax during matching.")
15305(put 'imenu-generic-expression 'risky-local-variable t) 15355(put 'imenu-generic-expression 'risky-local-variable t)
15306 15356
15307(make-variable-buffer-local 'imenu-generic-expression) 15357(make-variable-buffer-local 'imenu-generic-expression)
@@ -15487,7 +15537,7 @@ of `inferior-lisp-program'). Runs the hooks from
15487;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node 15537;;;;;; Info-goto-emacs-key-command-node Info-goto-emacs-command-node
15488;;;;;; Info-mode info-finder info-apropos Info-index Info-directory 15538;;;;;; Info-mode info-finder info-apropos Info-index Info-directory
15489;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual 15539;;;;;; Info-on-current-buffer info-standalone info-emacs-bug info-emacs-manual
15490;;;;;; info info-other-window) "info" "info.el" (20476 31768 298871 15540;;;;;; info info-other-window) "info" "info.el" (20540 39589 424586
15491;;;;;; 0)) 15541;;;;;; 0))
15492;;; Generated autoloads from info.el 15542;;; Generated autoloads from info.el
15493 15543
@@ -16375,7 +16425,7 @@ by `jka-compr-installed'.
16375 16425
16376;;;*** 16426;;;***
16377 16427
16378;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20478 3673 653810 16428;;;### (autoloads (js-mode) "js" "progmodes/js.el" (20532 45476 981297
16379;;;;;; 0)) 16429;;;;;; 0))
16380;;; Generated autoloads from progmodes/js.el 16430;;; Generated autoloads from progmodes/js.el
16381 16431
@@ -16619,7 +16669,7 @@ The kind of Korean keyboard for Korean input method.
16619;;;*** 16669;;;***
16620 16670
16621;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el" 16671;;;### (autoloads (landmark landmark-test-run) "landmark" "play/landmark.el"
16622;;;;;; (20478 3673 653810 0)) 16672;;;;;; (20545 57511 257469 0))
16623;;; Generated autoloads from play/landmark.el 16673;;; Generated autoloads from play/landmark.el
16624 16674
16625(defalias 'landmark-repeat 'landmark-test-run) 16675(defalias 'landmark-repeat 'landmark-test-run)
@@ -16776,7 +16826,7 @@ A major mode to edit GNU ld script files
16776 16826
16777;;;*** 16827;;;***
16778 16828
16779;;;### (autoloads (life) "life" "play/life.el" (20355 10021 546955 16829;;;### (autoloads (life) "life" "play/life.el" (20545 57511 257469
16780;;;;;; 0)) 16830;;;;;; 0))
16781;;; Generated autoloads from play/life.el 16831;;; Generated autoloads from play/life.el
16782 16832
@@ -16953,8 +17003,8 @@ done. Otherwise, it uses the current buffer.
16953 17003
16954;;;*** 17004;;;***
16955 17005
16956;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20477 17006;;;### (autoloads (log-view-mode) "log-view" "vc/log-view.el" (20515
16957;;;;;; 21160 227853 0)) 17007;;;;;; 36389 544939 0))
16958;;; Generated autoloads from vc/log-view.el 17008;;; Generated autoloads from vc/log-view.el
16959 17009
16960(autoload 'log-view-mode "log-view" "\ 17010(autoload 'log-view-mode "log-view" "\
@@ -17618,7 +17668,7 @@ Previous contents of that buffer are killed first.
17618;;;*** 17668;;;***
17619 17669
17620;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el" 17670;;;### (autoloads (Man-bookmark-jump man-follow man) "man" "man.el"
17621;;;;;; (20504 6781 423358 0)) 17671;;;;;; (20523 62082 997685 0))
17622;;; Generated autoloads from man.el 17672;;; Generated autoloads from man.el
17623 17673
17624(defalias 'manual-entry 'man) 17674(defalias 'manual-entry 'man)
@@ -17729,7 +17779,7 @@ recursion depth in the minibuffer prompt. This is only useful if
17729;;;;;; message-forward-make-body message-forward message-recover 17779;;;;;; message-forward-make-body message-forward message-recover
17730;;;;;; message-supersede message-cancel-news message-followup message-wide-reply 17780;;;;;; message-supersede message-cancel-news message-followup message-wide-reply
17731;;;;;; message-reply message-news message-mail message-mode) "message" 17781;;;;;; message-reply message-news message-mail message-mode) "message"
17732;;;;;; "gnus/message.el" (20501 3499 284800 0)) 17782;;;;;; "gnus/message.el" (20545 57511 257469 0))
17733;;; Generated autoloads from gnus/message.el 17783;;; Generated autoloads from gnus/message.el
17734 17784
17735(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) 17785(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
@@ -18204,7 +18254,7 @@ is modified to remove the default indication.
18204;;;*** 18254;;;***
18205 18255
18206;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el" 18256;;;### (autoloads (list-dynamic-libraries butterfly) "misc" "misc.el"
18207;;;;;; (20356 27828 24951 0)) 18257;;;;;; (20533 5993 500881 0))
18208;;; Generated autoloads from misc.el 18258;;; Generated autoloads from misc.el
18209 18259
18210(autoload 'butterfly "misc" "\ 18260(autoload 'butterfly "misc" "\
@@ -18606,7 +18656,7 @@ To test this function, evaluate:
18606 18656
18607;;;*** 18657;;;***
18608 18658
18609;;;### (autoloads (mpc) "mpc" "mpc.el" (20476 31768 298871 0)) 18659;;;### (autoloads (mpc) "mpc" "mpc.el" (20523 62082 997685 0))
18610;;; Generated autoloads from mpc.el 18660;;; Generated autoloads from mpc.el
18611 18661
18612(autoload 'mpc "mpc" "\ 18662(autoload 'mpc "mpc" "\
@@ -18616,7 +18666,7 @@ Main entry point for MPC.
18616 18666
18617;;;*** 18667;;;***
18618 18668
18619;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20434 17809 692608 18669;;;### (autoloads (mpuz) "mpuz" "play/mpuz.el" (20545 57511 257469
18620;;;;;; 0)) 18670;;;;;; 0))
18621;;; Generated autoloads from play/mpuz.el 18671;;; Generated autoloads from play/mpuz.el
18622 18672
@@ -19309,7 +19359,7 @@ closing requests for requests that are used in matched pairs.
19309;;;*** 19359;;;***
19310 19360
19311;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el" 19361;;;### (autoloads (nxml-glyph-display-string) "nxml-glyph" "nxml/nxml-glyph.el"
19312;;;;;; (20439 5925 915283 0)) 19362;;;;;; (20523 62082 997685 0))
19313;;; Generated autoloads from nxml/nxml-glyph.el 19363;;; Generated autoloads from nxml/nxml-glyph.el
19314 19364
19315(autoload 'nxml-glyph-display-string "nxml-glyph" "\ 19365(autoload 'nxml-glyph-display-string "nxml-glyph" "\
@@ -20901,7 +20951,7 @@ The file is stored under the name `org-combined-agenda-icalendar-file'.
20901;;;### (autoloads (org-id-store-link org-id-find-id-file org-id-find 20951;;;### (autoloads (org-id-store-link org-id-find-id-file org-id-find
20902;;;;;; org-id-goto org-id-get-with-outline-drilling org-id-get-with-outline-path-completion 20952;;;;;; org-id-goto org-id-get-with-outline-drilling org-id-get-with-outline-path-completion
20903;;;;;; org-id-get org-id-copy org-id-get-create) "org-id" "org/org-id.el" 20953;;;;;; org-id-get org-id-copy org-id-get-create) "org-id" "org/org-id.el"
20904;;;;;; (20355 10021 546955 0)) 20954;;;;;; (20545 57511 257469 0))
20905;;; Generated autoloads from org/org-id.el 20955;;; Generated autoloads from org/org-id.el
20906 20956
20907(autoload 'org-id-get-create "org-id" "\ 20957(autoload 'org-id-get-create "org-id" "\
@@ -21620,8 +21670,8 @@ The list is displayed in a buffer named `*Packages*'.
21620 21670
21621;;;*** 21671;;;***
21622 21672
21623;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20355 10021 21673;;;### (autoloads (show-paren-mode) "paren" "paren.el" (20542 50478
21624;;;;;; 546955 0)) 21674;;;;;; 439878 507000))
21625;;; Generated autoloads from paren.el 21675;;; Generated autoloads from paren.el
21626 21676
21627(defvar show-paren-mode nil "\ 21677(defvar show-paren-mode nil "\
@@ -21859,8 +21909,8 @@ Completion for GNU/Linux `mount'.
21859 21909
21860;;;*** 21910;;;***
21861 21911
21862;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20453 21912;;;### (autoloads (pcomplete/rpm) "pcmpl-rpm" "pcmpl-rpm.el" (20523
21863;;;;;; 5408 87415 759000)) 21913;;;;;; 62082 997685 0))
21864;;; Generated autoloads from pcmpl-rpm.el 21914;;; Generated autoloads from pcmpl-rpm.el
21865 21915
21866(autoload 'pcomplete/rpm "pcmpl-rpm" "\ 21916(autoload 'pcomplete/rpm "pcmpl-rpm" "\
@@ -21930,8 +21980,8 @@ Includes files as well as host names followed by a colon.
21930 21980
21931;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list 21981;;;### (autoloads (pcomplete-shell-setup pcomplete-comint-setup pcomplete-list
21932;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete 21982;;;;;; pcomplete-help pcomplete-expand pcomplete-continue pcomplete-expand-and-complete
21933;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20476 21983;;;;;; pcomplete-reverse pcomplete) "pcomplete" "pcomplete.el" (20523
21934;;;;;; 31768 298871 0)) 21984;;;;;; 62082 997685 0))
21935;;; Generated autoloads from pcomplete.el 21985;;; Generated autoloads from pcomplete.el
21936 21986
21937(autoload 'pcomplete "pcomplete" "\ 21987(autoload 'pcomplete "pcomplete" "\
@@ -22075,7 +22125,7 @@ Global menu used by PCL-CVS.")
22075;;;*** 22125;;;***
22076 22126
22077;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el" 22127;;;### (autoloads (perl-mode) "perl-mode" "progmodes/perl-mode.el"
22078;;;;;; (20478 3673 653810 0)) 22128;;;;;; (20523 62082 997685 0))
22079;;; Generated autoloads from progmodes/perl-mode.el 22129;;; Generated autoloads from progmodes/perl-mode.el
22080(put 'perl-indent-level 'safe-local-variable 'integerp) 22130(put 'perl-indent-level 'safe-local-variable 'integerp)
22081(put 'perl-continued-statement-offset 'safe-local-variable 'integerp) 22131(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
@@ -22931,17 +22981,20 @@ are both set to t.
22931 22981
22932;;;*** 22982;;;***
22933 22983
22934;;;### (autoloads (proced) "proced" "proced.el" (20453 5437 764254 22984;;;### (autoloads (proced) "proced" "proced.el" (20511 39332 974340
22935;;;;;; 0)) 22985;;;;;; 0))
22936;;; Generated autoloads from proced.el 22986;;; Generated autoloads from proced.el
22937 22987
22938(autoload 'proced "proced" "\ 22988(autoload 'proced "proced" "\
22939Generate a listing of UNIX system processes. 22989Generate a listing of UNIX system processes.
22940If invoked with optional ARG the window displaying the process 22990\\<proced-mode-map>
22941information will be displayed but not selected. 22991If invoked with optional ARG, do not select the window displaying
22942Runs the normal hook `proced-post-display-hook'. 22992the process information.
22993
22994This function runs the normal hook `proced-post-display-hook'.
22943 22995
22944See `proced-mode' for a description of features available in Proced buffers. 22996See `proced-mode' for a description of features available in
22997Proced buffers.
22945 22998
22946\(fn &optional ARG)" t nil) 22999\(fn &optional ARG)" t nil)
22947 23000
@@ -23245,7 +23298,7 @@ If EXTENSION is any other symbol, it is ignored.
23245;;;*** 23298;;;***
23246 23299
23247;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el" 23300;;;### (autoloads (python-mode run-python) "python" "progmodes/python.el"
23248;;;;;; (20504 35072 130543 0)) 23301;;;;;; (20523 62082 997685 0))
23249;;; Generated autoloads from progmodes/python.el 23302;;; Generated autoloads from progmodes/python.el
23250 23303
23251(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) 23304(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
@@ -23281,7 +23334,7 @@ if that value is non-nil.
23281;;;*** 23334;;;***
23282 23335
23283;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el" 23336;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
23284;;;;;; (20355 10021 546955 0)) 23337;;;;;; (20544 36659 880486 0))
23285;;; Generated autoloads from gnus/qp.el 23338;;; Generated autoloads from gnus/qp.el
23286 23339
23287(autoload 'quoted-printable-decode-region "qp" "\ 23340(autoload 'quoted-printable-decode-region "qp" "\
@@ -23304,7 +23357,7 @@ them into characters should be done separately.
23304;;;;;; quail-defrule quail-install-decode-map quail-install-map 23357;;;;;; quail-defrule quail-install-decode-map quail-install-map
23305;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout 23358;;;;;; quail-define-rules quail-show-keyboard-layout quail-set-keyboard-layout
23306;;;;;; quail-define-package quail-use-package quail-title) "quail" 23359;;;;;; quail-define-package quail-use-package quail-title) "quail"
23307;;;;;; "international/quail.el" (20501 3499 284800 0)) 23360;;;;;; "international/quail.el" (20523 62082 997685 0))
23308;;; Generated autoloads from international/quail.el 23361;;; Generated autoloads from international/quail.el
23309 23362
23310(autoload 'quail-title "quail" "\ 23363(autoload 'quail-title "quail" "\
@@ -23608,7 +23661,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'.
23608;;;*** 23661;;;***
23609 23662
23610;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc" 23663;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
23611;;;;;; "net/rcirc.el" (20434 17809 692608 0)) 23664;;;;;; "net/rcirc.el" (20541 6907 775259 0))
23612;;; Generated autoloads from net/rcirc.el 23665;;; Generated autoloads from net/rcirc.el
23613 23666
23614(autoload 'rcirc "rcirc" "\ 23667(autoload 'rcirc "rcirc" "\
@@ -23864,8 +23917,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead.
23864;;;*** 23917;;;***
23865 23918
23866;;;### (autoloads (reftex-reset-scanning-information reftex-mode 23919;;;### (autoloads (reftex-reset-scanning-information reftex-mode
23867;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20499 48164 23920;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (20507 42276
23868;;;;;; 310488 0)) 23921;;;;;; 222255 0))
23869;;; Generated autoloads from textmodes/reftex.el 23922;;; Generated autoloads from textmodes/reftex.el
23870 23923
23871(autoload 'turn-on-reftex "reftex" "\ 23924(autoload 'turn-on-reftex "reftex" "\
@@ -24013,8 +24066,8 @@ of master file.
24013 24066
24014;;;*** 24067;;;***
24015 24068
24016;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20498 24069;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (20507
24017;;;;;; 27300 867875 0)) 24070;;;;;; 42276 222255 0))
24018;;; Generated autoloads from textmodes/reftex-vars.el 24071;;; Generated autoloads from textmodes/reftex-vars.el
24019(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 24072(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
24020(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) 24073(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -24024,7 +24077,7 @@ of master file.
24024;;;*** 24077;;;***
24025 24078
24026;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el" 24079;;;### (autoloads (regexp-opt-depth regexp-opt) "regexp-opt" "emacs-lisp/regexp-opt.el"
24027;;;;;; (20363 61861 222722 0)) 24080;;;;;; (20522 38650 757441 0))
24028;;; Generated autoloads from emacs-lisp/regexp-opt.el 24081;;; Generated autoloads from emacs-lisp/regexp-opt.el
24029 24082
24030(autoload 'regexp-opt "regexp-opt" "\ 24083(autoload 'regexp-opt "regexp-opt" "\
@@ -24270,8 +24323,8 @@ variable.
24270;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers 24323;;;;;; rmail-secondary-file-directory rmail-primary-inbox-list rmail-highlighted-headers
24271;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers 24324;;;;;; rmail-retry-ignored-headers rmail-displayed-headers rmail-ignored-headers
24272;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory 24325;;;;;; rmail-user-mail-address-regexp rmail-movemail-variant-p rmail-spool-directory
24273;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20437 50597 545250 24326;;;;;; rmail-file-name) "rmail" "mail/rmail.el" (20526 43809 637014
24274;;;;;; 0)) 24327;;;;;; 858000))
24275;;; Generated autoloads from mail/rmail.el 24328;;; Generated autoloads from mail/rmail.el
24276 24329
24277(defvar rmail-file-name (purecopy "~/RMAIL") "\ 24330(defvar rmail-file-name (purecopy "~/RMAIL") "\
@@ -24469,8 +24522,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server.
24469;;;*** 24522;;;***
24470 24523
24471;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen 24524;;;### (autoloads (rmail-output-body-to-file rmail-output-as-seen
24472;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20355 10021 24525;;;;;; rmail-output) "rmailout" "mail/rmailout.el" (20530 3765 184907
24473;;;;;; 546955 0)) 24526;;;;;; 0))
24474;;; Generated autoloads from mail/rmailout.el 24527;;; Generated autoloads from mail/rmailout.el
24475(put 'rmail-output-file-alist 'risky-local-variable t) 24528(put 'rmail-output-file-alist 'risky-local-variable t)
24476 24529
@@ -24619,7 +24672,7 @@ must be equal.
24619;;;*** 24672;;;***
24620 24673
24621;;;### (autoloads (robin-use-package robin-modify-package robin-define-package) 24674;;;### (autoloads (robin-use-package robin-modify-package robin-define-package)
24622;;;;;; "robin" "international/robin.el" (20501 3499 284800 0)) 24675;;;;;; "robin" "international/robin.el" (20523 62082 997685 0))
24623;;; Generated autoloads from international/robin.el 24676;;; Generated autoloads from international/robin.el
24624 24677
24625(autoload 'robin-define-package "robin" "\ 24678(autoload 'robin-define-package "robin" "\
@@ -24691,7 +24744,7 @@ Toggle the use of ROT13 encoding for the current window.
24691;;;*** 24744;;;***
24692 24745
24693;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el" 24746;;;### (autoloads (rst-minor-mode rst-mode) "rst" "textmodes/rst.el"
24694;;;;;; (20502 63903 34842 0)) 24747;;;;;; (20523 62082 997685 0))
24695;;; Generated autoloads from textmodes/rst.el 24748;;; Generated autoloads from textmodes/rst.el
24696 (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) 24749 (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
24697 24750
@@ -24722,7 +24775,7 @@ for modes derived from Text mode, like Mail mode.
24722;;;*** 24775;;;***
24723 24776
24724;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el" 24777;;;### (autoloads (ruby-mode) "ruby-mode" "progmodes/ruby-mode.el"
24725;;;;;; (20490 33188 850375 0)) 24778;;;;;; (20522 38650 757441 0))
24726;;; Generated autoloads from progmodes/ruby-mode.el 24779;;; Generated autoloads from progmodes/ruby-mode.el
24727 24780
24728(autoload 'ruby-mode "ruby-mode" "\ 24781(autoload 'ruby-mode "ruby-mode" "\
@@ -24761,8 +24814,8 @@ if ARG is omitted or nil.
24761 24814
24762;;;*** 24815;;;***
24763 24816
24764;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20355 24817;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (20518
24765;;;;;; 10021 546955 0)) 24818;;;;;; 12580 46478 0))
24766;;; Generated autoloads from emacs-lisp/rx.el 24819;;; Generated autoloads from emacs-lisp/rx.el
24767 24820
24768(autoload 'rx-to-string "rx" "\ 24821(autoload 'rx-to-string "rx" "\
@@ -25073,8 +25126,8 @@ enclosed in `(and ...)'.
25073 25126
25074;;;*** 25127;;;***
25075 25128
25076;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20453 25129;;;### (autoloads (savehist-mode) "savehist" "savehist.el" (20523
25077;;;;;; 5437 764254 0)) 25130;;;;;; 62082 997685 0))
25078;;; Generated autoloads from savehist.el 25131;;; Generated autoloads from savehist.el
25079 25132
25080(defvar savehist-mode nil "\ 25133(defvar savehist-mode nil "\
@@ -25549,8 +25602,8 @@ Like `mail' command, but display mail buffer in another frame.
25549;;;*** 25602;;;***
25550 25603
25551;;;### (autoloads (server-save-buffers-kill-terminal server-mode 25604;;;### (autoloads (server-save-buffers-kill-terminal server-mode
25552;;;;;; server-force-delete server-start) "server" "server.el" (20478 25605;;;;;; server-force-delete server-start) "server" "server.el" (20545
25553;;;;;; 3673 653810 0)) 25606;;;;;; 57511 257469 0))
25554;;; Generated autoloads from server.el 25607;;; Generated autoloads from server.el
25555 25608
25556(put 'server-host 'risky-local-variable t) 25609(put 'server-host 'risky-local-variable t)
@@ -25702,7 +25755,7 @@ To work around that, do:
25702;;;*** 25755;;;***
25703 25756
25704;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el" 25757;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
25705;;;;;; (20487 57003 603251 0)) 25758;;;;;; (20541 6907 775259 0))
25706;;; Generated autoloads from progmodes/sh-script.el 25759;;; Generated autoloads from progmodes/sh-script.el
25707(put 'sh-shell 'safe-local-variable 'symbolp) 25760(put 'sh-shell 'safe-local-variable 'symbolp)
25708 25761
@@ -26010,7 +26063,7 @@ with no arguments, if that value is non-nil.
26010;;;*** 26063;;;***
26011 26064
26012;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new 26065;;;### (autoloads (skeleton-pair-insert-maybe skeleton-insert skeleton-proxy-new
26013;;;;;; define-skeleton) "skeleton" "skeleton.el" (20406 8611 875037 26066;;;;;; define-skeleton) "skeleton" "skeleton.el" (20541 6907 775259
26014;;;;;; 0)) 26067;;;;;; 0))
26015;;; Generated autoloads from skeleton.el 26068;;; Generated autoloads from skeleton.el
26016 26069
@@ -26123,7 +26176,7 @@ symmetrical ones, and the same character twice for the others.
26123;;;*** 26176;;;***
26124 26177
26125;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff) 26178;;;### (autoloads (smerge-start-session smerge-mode smerge-ediff)
26126;;;;;; "smerge-mode" "vc/smerge-mode.el" (20476 31768 298871 0)) 26179;;;;;; "smerge-mode" "vc/smerge-mode.el" (20523 62082 997685 0))
26127;;; Generated autoloads from vc/smerge-mode.el 26180;;; Generated autoloads from vc/smerge-mode.el
26128 26181
26129(autoload 'smerge-ediff "smerge-mode" "\ 26182(autoload 'smerge-ediff "smerge-mode" "\
@@ -26332,7 +26385,7 @@ Pick your favorite shortcuts:
26332 26385
26333;;;### (autoloads (reverse-region sort-columns sort-regexp-fields 26386;;;### (autoloads (reverse-region sort-columns sort-regexp-fields
26334;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs 26387;;;;;; sort-fields sort-numeric-fields sort-pages sort-paragraphs
26335;;;;;; sort-lines sort-subr) "sort" "sort.el" (20355 10021 546955 26388;;;;;; sort-lines sort-subr) "sort" "sort.el" (20507 42276 222255
26336;;;;;; 0)) 26389;;;;;; 0))
26337;;; Generated autoloads from sort.el 26390;;; Generated autoloads from sort.el
26338(put 'sort-fold-case 'safe-local-variable 'booleanp) 26391(put 'sort-fold-case 'safe-local-variable 'booleanp)
@@ -26430,18 +26483,23 @@ the sort order.
26430\(fn FIELD BEG END)" t nil) 26483\(fn FIELD BEG END)" t nil)
26431 26484
26432(autoload 'sort-regexp-fields "sort" "\ 26485(autoload 'sort-regexp-fields "sort" "\
26433Sort the region lexicographically as specified by RECORD-REGEXP and KEY. 26486Sort the text in the region region lexicographically.
26434RECORD-REGEXP specifies the textual units which should be sorted. 26487If called interactively, prompt for two regular expressions,
26435 For example, to sort lines RECORD-REGEXP would be \"^.*$\" 26488RECORD-REGEXP and KEY-REGEXP.
26436KEY specifies the part of each record (ie each match for RECORD-REGEXP) 26489
26437 is to be used for sorting. 26490RECORD-REGEXP specifies the textual units to be sorted.
26438 If it is \"\\\\digit\" then the digit'th \"\\\\(...\\\\)\" match field from 26491 For example, to sort lines, RECORD-REGEXP would be \"^.*$\".
26439 RECORD-REGEXP is used. 26492
26440 If it is \"\\\\&\" then the whole record is used. 26493KEY-REGEXP specifies the part of each record (i.e. each match for
26441 Otherwise, it is a regular-expression for which to search within the record. 26494 RECORD-REGEXP) to be used for sorting.
26442If a match for KEY is not found within a record then that record is ignored. 26495 If it is \"\\\\digit\", use the digit'th \"\\\\(...\\\\)\"
26443 26496 match field specified by RECORD-REGEXP.
26444With a negative prefix arg sorts in reverse order. 26497 If it is \"\\\\&\", use the whole record.
26498 Otherwise, KEY-REGEXP should be a regular expression with which
26499 to search within the record. If a match for KEY-REGEXP is not
26500 found within a record, that record is ignored.
26501
26502With a negative prefix arg, sort in reverse order.
26445 26503
26446The variable `sort-fold-case' determines whether alphabetic case affects 26504The variable `sort-fold-case' determines whether alphabetic case affects
26447the sort order. 26505the sort order.
@@ -27117,8 +27175,8 @@ GnuTLS requires a port number.
27117;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes 27175;;;;;; strokes-mode strokes-list-strokes strokes-load-user-strokes
27118;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke 27176;;;;;; strokes-help strokes-describe-stroke strokes-do-complex-stroke
27119;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke 27177;;;;;; strokes-do-stroke strokes-read-complex-stroke strokes-read-stroke
27120;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20478 27178;;;;;; strokes-global-set-stroke) "strokes" "strokes.el" (20523
27121;;;;;; 3673 653810 0)) 27179;;;;;; 62082 997685 0))
27122;;; Generated autoloads from strokes.el 27180;;; Generated autoloads from strokes.el
27123 27181
27124(autoload 'strokes-global-set-stroke "strokes" "\ 27182(autoload 'strokes-global-set-stroke "strokes" "\
@@ -27253,7 +27311,7 @@ Studlify-case the current buffer.
27253;;;*** 27311;;;***
27254 27312
27255;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el" 27313;;;### (autoloads (global-subword-mode subword-mode) "subword" "progmodes/subword.el"
27256;;;;;; (20355 10021 546955 0)) 27314;;;;;; (20524 51365 2559 0))
27257;;; Generated autoloads from progmodes/subword.el 27315;;; Generated autoloads from progmodes/subword.el
27258 27316
27259(autoload 'subword-mode "subword" "\ 27317(autoload 'subword-mode "subword" "\
@@ -28010,8 +28068,8 @@ Connect to the Emacs talk group from the current X display or tty frame.
28010 28068
28011;;;*** 28069;;;***
28012 28070
28013;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20478 3673 28071;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (20522 9637
28014;;;;;; 653810 0)) 28072;;;;;; 465791 0))
28015;;; Generated autoloads from tar-mode.el 28073;;; Generated autoloads from tar-mode.el
28016 28074
28017(autoload 'tar-mode "tar-mode" "\ 28075(autoload 'tar-mode "tar-mode" "\
@@ -28200,8 +28258,8 @@ Start coverage on function under point.
28200 28258
28201;;;*** 28259;;;***
28202 28260
28203;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20478 3673 28261;;;### (autoloads (tetris) "tetris" "play/tetris.el" (20545 57511
28204;;;;;; 653810 0)) 28262;;;;;; 257469 0))
28205;;; Generated autoloads from play/tetris.el 28263;;; Generated autoloads from play/tetris.el
28206 28264
28207(autoload 'tetris "tetris" "\ 28265(autoload 'tetris "tetris" "\
@@ -28232,7 +28290,7 @@ tetris-mode keybindings:
28232;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command 28290;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
28233;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp 28291;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
28234;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el" 28292;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
28235;;;;;; (20485 15269 390836 0)) 28293;;;;;; (20523 62082 997685 0))
28236;;; Generated autoloads from textmodes/tex-mode.el 28294;;; Generated autoloads from textmodes/tex-mode.el
28237 28295
28238(defvar tex-shell-file-name nil "\ 28296(defvar tex-shell-file-name nil "\
@@ -29114,7 +29172,7 @@ With ARG, turn time stamping on if and only if arg is positive.
29114;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out 29172;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
29115;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in 29173;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
29116;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el" 29174;;;;;; timeclock-mode-line-display) "timeclock" "calendar/timeclock.el"
29117;;;;;; (20427 14766 970343 0)) 29175;;;;;; (20523 62082 997685 0))
29118;;; Generated autoloads from calendar/timeclock.el 29176;;; Generated autoloads from calendar/timeclock.el
29119 29177
29120(autoload 'timeclock-mode-line-display "timeclock" "\ 29178(autoload 'timeclock-mode-line-display "timeclock" "\
@@ -29524,7 +29582,7 @@ BUFFER defaults to `trace-buffer'.
29524;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion 29582;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
29525;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers 29583;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
29526;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp" 29584;;;;;; tramp-file-name-handler tramp-syntax tramp-mode) "tramp"
29527;;;;;; "net/tramp.el" (20471 14012 248888 0)) 29585;;;;;; "net/tramp.el" (20530 32114 546307 0))
29528;;; Generated autoloads from net/tramp.el 29586;;; Generated autoloads from net/tramp.el
29529 29587
29530(defvar tramp-mode t "\ 29588(defvar tramp-mode t "\
@@ -29667,8 +29725,8 @@ Discard Tramp from loading remote files.
29667 29725
29668;;;*** 29726;;;***
29669 29727
29670;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20369 29728;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (20518
29671;;;;;; 14251 85829 0)) 29729;;;;;; 12580 46478 0))
29672;;; Generated autoloads from tutorial.el 29730;;; Generated autoloads from tutorial.el
29673 29731
29674(autoload 'help-with-tutorial "tutorial" "\ 29732(autoload 'help-with-tutorial "tutorial" "\
@@ -29755,7 +29813,7 @@ First column's text sSs Second column's text
29755;;;;;; type-break type-break-mode type-break-keystroke-threshold 29813;;;;;; type-break type-break-mode type-break-keystroke-threshold
29756;;;;;; type-break-good-break-interval type-break-good-rest-interval 29814;;;;;; type-break-good-break-interval type-break-good-rest-interval
29757;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el" 29815;;;;;; type-break-interval type-break-mode) "type-break" "type-break.el"
29758;;;;;; (20355 10021 546955 0)) 29816;;;;;; (20545 57511 257469 0))
29759;;; Generated autoloads from type-break.el 29817;;; Generated autoloads from type-break.el
29760 29818
29761(defvar type-break-mode nil "\ 29819(defvar type-break-mode nil "\
@@ -30320,7 +30378,7 @@ accessible.
30320;;;*** 30378;;;***
30321 30379
30322;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p 30380;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
30323;;;;;; url-http) "url-http" "url/url-http.el" (20478 3673 653810 30381;;;;;; url-http) "url-http" "url/url-http.el" (20522 38650 757441
30324;;;;;; 0)) 30382;;;;;; 0))
30325;;; Generated autoloads from url/url-http.el 30383;;; Generated autoloads from url/url-http.el
30326 30384
@@ -30523,7 +30581,7 @@ Fetch a data URL (RFC 2397).
30523;;;*** 30581;;;***
30524 30582
30525;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse" 30583;;;### (autoloads (url-generic-parse-url url-recreate-url) "url-parse"
30526;;;;;; "url/url-parse.el" (20478 3673 653810 0)) 30584;;;;;; "url/url-parse.el" (20523 62082 997685 0))
30527;;; Generated autoloads from url/url-parse.el 30585;;; Generated autoloads from url/url-parse.el
30528 30586
30529(autoload 'url-recreate-url "url-parse" "\ 30587(autoload 'url-recreate-url "url-parse" "\
@@ -30606,8 +30664,8 @@ The variable `url-queue-timeout' sets a timeout.
30606;;;;;; url-percentage url-display-percentage url-pretty-length url-strip-leading-spaces 30664;;;;;; url-percentage url-display-percentage url-pretty-length url-strip-leading-spaces
30607;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message 30665;;;;;; url-eat-trailing-space url-get-normalized-date url-lazy-message
30608;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args 30666;;;;;; url-normalize-url url-insert-entities-in-string url-parse-args
30609;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20478 30667;;;;;; url-debug url-debug) "url-util" "url/url-util.el" (20520
30610;;;;;; 3673 653810 0)) 30668;;;;;; 54308 826101 0))
30611;;; Generated autoloads from url/url-util.el 30669;;; Generated autoloads from url/url-util.el
30612 30670
30613(defvar url-debug nil "\ 30671(defvar url-debug nil "\
@@ -30867,8 +30925,8 @@ If FILE-NAME is non-nil, save the result to FILE-NAME.
30867;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers 30925;;;;;; vc-print-log vc-retrieve-tag vc-create-tag vc-merge vc-insert-headers
30868;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff 30926;;;;;; vc-revision-other-window vc-root-diff vc-ediff vc-version-ediff
30869;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook 30927;;;;;; vc-diff vc-version-diff vc-register vc-next-action vc-before-checkin-hook
30870;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20501 30928;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc/vc.el" (20542
30871;;;;;; 3499 284800 0)) 30929;;;;;; 46798 773957 0))
30872;;; Generated autoloads from vc/vc.el 30930;;; Generated autoloads from vc/vc.el
30873 30931
30874(defvar vc-checkout-hook nil "\ 30932(defvar vc-checkout-hook nil "\
@@ -31211,7 +31269,7 @@ Name of the format file in a .bzr directory.")
31211 31269
31212;;;*** 31270;;;***
31213 31271
31214;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20478 3673 653810 31272;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (20542 46798 773957
31215;;;;;; 0)) 31273;;;;;; 0))
31216;;; Generated autoloads from vc/vc-cvs.el 31274;;; Generated autoloads from vc/vc-cvs.el
31217(defun vc-cvs-registered (f) 31275(defun vc-cvs-registered (f)
@@ -31223,7 +31281,7 @@ Name of the format file in a .bzr directory.")
31223 31281
31224;;;*** 31282;;;***
31225 31283
31226;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20478 3673 653810 31284;;;### (autoloads (vc-dir) "vc-dir" "vc/vc-dir.el" (20522 9637 465791
31227;;;;;; 0)) 31285;;;;;; 0))
31228;;; Generated autoloads from vc/vc-dir.el 31286;;; Generated autoloads from vc/vc-dir.el
31229 31287
@@ -31295,8 +31353,7 @@ case, and the process object in the asynchronous case.
31295 31353
31296;;;*** 31354;;;***
31297 31355
31298;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20478 3673 653810 31356;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (20524 51365 2559 0))
31299;;;;;; 0))
31300;;; Generated autoloads from vc/vc-mtn.el 31357;;; Generated autoloads from vc/vc-mtn.el
31301 31358
31302(defconst vc-mtn-admin-dir "_MTN" "\ 31359(defconst vc-mtn-admin-dir "_MTN" "\
@@ -32468,8 +32525,8 @@ Exit View mode and make the current buffer editable.
32468 32525
32469;;;*** 32526;;;***
32470 32527
32471;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20355 32528;;;### (autoloads (vip-mode vip-setup) "vip" "emulation/vip.el" (20513
32472;;;;;; 10021 546955 0)) 32529;;;;;; 18948 537867 0))
32473;;; Generated autoloads from emulation/vip.el 32530;;; Generated autoloads from emulation/vip.el
32474 32531
32475(autoload 'vip-setup "vip" "\ 32532(autoload 'vip-setup "vip" "\
@@ -32592,15 +32649,16 @@ this is equivalent to `display-warning', using
32592;;;*** 32649;;;***
32593 32650
32594;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el" 32651;;;### (autoloads (wdired-change-to-wdired-mode) "wdired" "wdired.el"
32595;;;;;; (20478 3673 653810 0)) 32652;;;;;; (20510 18478 782378 0))
32596;;; Generated autoloads from wdired.el 32653;;; Generated autoloads from wdired.el
32597 32654
32598(autoload 'wdired-change-to-wdired-mode "wdired" "\ 32655(autoload 'wdired-change-to-wdired-mode "wdired" "\
32599Put a dired buffer in a mode in which filenames are editable. 32656Put a Dired buffer in Writable Dired (WDired) mode.
32600\\<wdired-mode-map> 32657\\<wdired-mode-map>
32601This mode allows the user to change the names of the files, and after 32658In WDired mode, you can edit the names of the files in the
32602typing \\[wdired-finish-edit] Emacs renames the files and directories 32659buffer, the target of the links, and the permission bits of the
32603in disk. 32660files. After typing \\[wdired-finish-edit], Emacs modifies the files and
32661directories to reflect your edits.
32604 32662
32605See `wdired-mode'. 32663See `wdired-mode'.
32606 32664
@@ -32626,7 +32684,7 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke
32626;;;*** 32684;;;***
32627 32685
32628;;;### (autoloads (which-function-mode which-func-mode) "which-func" 32686;;;### (autoloads (which-function-mode which-func-mode) "which-func"
32629;;;;;; "progmodes/which-func.el" (20461 32935 300400 0)) 32687;;;;;; "progmodes/which-func.el" (20523 62082 997685 0))
32630;;; Generated autoloads from progmodes/which-func.el 32688;;; Generated autoloads from progmodes/which-func.el
32631 (put 'which-func-format 'risky-local-variable t) 32689 (put 'which-func-format 'risky-local-variable t)
32632 (put 'which-func-current 'risky-local-variable t) 32690 (put 'which-func-current 'risky-local-variable t)
@@ -32662,8 +32720,8 @@ in certain major modes.
32662;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region 32720;;;### (autoloads (whitespace-report-region whitespace-report whitespace-cleanup-region
32663;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options 32721;;;;;; whitespace-cleanup global-whitespace-toggle-options whitespace-toggle-options
32664;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode 32722;;;;;; global-whitespace-newline-mode global-whitespace-mode whitespace-newline-mode
32665;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20495 51111 32723;;;;;; whitespace-mode) "whitespace" "whitespace.el" (20508 13724
32666;;;;;; 757560 0)) 32724;;;;;; 260761 0))
32667;;; Generated autoloads from whitespace.el 32725;;; Generated autoloads from whitespace.el
32668 32726
32669(autoload 'whitespace-mode "whitespace" "\ 32727(autoload 'whitespace-mode "whitespace" "\
@@ -33209,7 +33267,7 @@ With arg, turn Winner mode on if and only if arg is positive.
33209;;;*** 33267;;;***
33210 33268
33211;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file 33269;;;### (autoloads (woman-bookmark-jump woman-find-file woman-dired-find-file
33212;;;;;; woman woman-locale) "woman" "woman.el" (20504 6781 423358 33270;;;;;; woman woman-locale) "woman" "woman.el" (20539 18737 159373
33213;;;;;; 0)) 33271;;;;;; 0))
33214;;; Generated autoloads from woman.el 33272;;; Generated autoloads from woman.el
33215 33273
@@ -33392,7 +33450,7 @@ Example:
33392;;;*** 33450;;;***
33393 33451
33394;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el" 33452;;;### (autoloads (xml-parse-region xml-parse-file) "xml" "xml.el"
33395;;;;;; (20499 48164 310488 0)) 33453;;;;;; (20528 48420 241677 0))
33396;;; Generated autoloads from xml.el 33454;;; Generated autoloads from xml.el
33397 33455
33398(autoload 'xml-parse-file "xml" "\ 33456(autoload 'xml-parse-file "xml" "\
@@ -33540,7 +33598,7 @@ Zippy goes to the analyst.
33540 33598
33541;;;*** 33599;;;***
33542 33600
33543;;;### (autoloads (zone) "zone" "play/zone.el" (20427 14766 970343 33601;;;### (autoloads (zone) "zone" "play/zone.el" (20545 57511 257469
33544;;;;;; 0)) 33602;;;;;; 0))
33545;;; Generated autoloads from play/zone.el 33603;;; Generated autoloads from play/zone.el
33546 33604
@@ -33752,7 +33810,7 @@ Zone out, completely.
33752;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" 33810;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
33753;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" 33811;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
33754;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el" 33812;;;;;; "vcursor.el" "vt-control.el" "vt100-led.el" "w32-fns.el"
33755;;;;;; "w32-vars.el" "x-dnd.el") (20505 765 716386 793000)) 33813;;;;;; "w32-vars.el" "x-dnd.el") (20545 57718 475744 538000))
33756 33814
33757;;;*** 33815;;;***
33758 33816
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index 5d500135b7a..63cc26360b7 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -61,27 +61,38 @@ The function `rmail-delete-unwanted-fields' uses this, ignoring case."
61Set `rmail-default-file' to this name as well as returning it. 61Set `rmail-default-file' to this name as well as returning it.
62This uses `rmail-output-file-alist'." 62This uses `rmail-output-file-alist'."
63 (let* ((default-file 63 (let* ((default-file
64 (when rmail-output-file-alist 64 (or
65 (or rmail-buffer (error "There is no Rmail buffer")) 65 (when rmail-output-file-alist
66 (save-current-buffer 66 (or rmail-buffer (error "There is no Rmail buffer"))
67 (set-buffer rmail-buffer) 67 (save-current-buffer
68 (let ((beg (rmail-msgbeg rmail-current-message)) 68 (set-buffer rmail-buffer)
69 (end (rmail-msgend rmail-current-message))) 69 (let ((beg (rmail-msgbeg rmail-current-message))
70 (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer)) 70 (end (rmail-msgend rmail-current-message)))
71 (save-excursion 71 (if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer))
72 (save-restriction 72 (save-excursion
73 (widen) 73 (save-restriction
74 (narrow-to-region beg end) 74 (widen)
75 (let ((tail rmail-output-file-alist) 75 (narrow-to-region beg end)
76 answer) 76 (let ((tail rmail-output-file-alist)
77 ;; Suggest a file based on a pattern match. 77 answer err)
78 (while (and tail (not answer)) 78 ;; Suggest a file based on a pattern match.
79 (goto-char (point-min)) 79 (while (and tail (not answer))
80 (if (re-search-forward (caar tail) nil t) 80 (goto-char (point-min))
81 (setq answer (eval (cdar tail)))) 81 (if (re-search-forward (caar tail) nil t)
82 (setq tail (cdr tail))) 82 (setq answer
83 ;; If no suggestion, use same file as last time. 83 (condition-case err
84 (or answer rmail-default-file)))))))) 84 (eval (cdar tail))
85 (error
86 (display-warning
87 :error
88 (format "Error evaluating \
89`rmail-output-file-alist' element:\nregexp: %s\naction: %s\nerror: %S\n"
90 (caar tail) (cdar tail) err))
91 nil))))
92 (setq tail (cdr tail)))
93 answer))))))
94 ;; If no suggestion, use same file as last time.
95 rmail-default-file))
85 (read-file 96 (read-file
86 (expand-file-name 97 (expand-file-name
87 (read-file-name 98 (read-file-name
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index cc2638d58de..a696fff7dc7 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1821,7 +1821,9 @@ Currently supported properties are all the properties that can appear in
1821 `:predicate' a predicate that completion candidates need to satisfy. 1821 `:predicate' a predicate that completion candidates need to satisfy.
1822 `:exclusive' If `no', means that if the completion table fails to 1822 `:exclusive' If `no', means that if the completion table fails to
1823 match the text at point, then instead of reporting a completion 1823 match the text at point, then instead of reporting a completion
1824 failure, the completion should try the next completion function.") 1824 failure, the completion should try the next completion function.
1825As is the case with most hooks, the functions are responsible to preserve
1826things like point and current buffer.")
1825 1827
1826(defvar completion--capf-misbehave-funs nil 1828(defvar completion--capf-misbehave-funs nil
1827 "List of functions found on `completion-at-point-functions' that misbehave. 1829 "List of functions found on `completion-at-point-functions' that misbehave.
diff --git a/lisp/misc.el b/lisp/misc.el
index cb52ecbd36e..96b739dc2b7 100644
--- a/lisp/misc.el
+++ b/lisp/misc.el
@@ -99,14 +99,14 @@ Ignores CHAR at point."
99(defun forward-to-word (arg) 99(defun forward-to-word (arg)
100 "Move forward until encountering the beginning of a word. 100 "Move forward until encountering the beginning of a word.
101With argument, do this that many times." 101With argument, do this that many times."
102 (interactive "p") 102 (interactive "^p")
103 (or (re-search-forward (if (> arg 0) "\\W\\b" "\\b\\W") nil t arg) 103 (or (re-search-forward (if (> arg 0) "\\W\\b" "\\b\\W") nil t arg)
104 (goto-char (if (> arg 0) (point-max) (point-min))))) 104 (goto-char (if (> arg 0) (point-max) (point-min)))))
105 105
106(defun backward-to-word (arg) 106(defun backward-to-word (arg)
107 "Move backward until encountering the end of a word. 107 "Move backward until encountering the end of a word.
108With argument, do this that many times." 108With argument, do this that many times."
109 (interactive "p") 109 (interactive "^p")
110 (forward-to-word (- arg))) 110 (forward-to-word (- arg)))
111 111
112;;;###autoload 112;;;###autoload
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 27cf50f06ca..dd345630b9b 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -802,26 +802,36 @@ With no argument or nil as argument, use the current buffer."
802(defvar rcirc-max-message-length 420 802(defvar rcirc-max-message-length 420
803 "Messages longer than this value will be split.") 803 "Messages longer than this value will be split.")
804 804
805(defun rcirc-split-message (message)
806 "Split MESSAGE into chunks within `rcirc-max-message-length'."
807 ;; `rcirc-encode-coding-system' can have buffer-local value.
808 (let ((encoding rcirc-encode-coding-system))
809 (with-temp-buffer
810 (insert message)
811 (goto-char (point-min))
812 (let (result)
813 (while (not (eobp))
814 (goto-char (or (byte-to-position rcirc-max-message-length)
815 (point-max)))
816 ;; max message length is 512 including CRLF
817 (while (and (not (bobp))
818 (> (length (encode-coding-region
819 (point-min) (point) encoding t))
820 rcirc-max-message-length))
821 (forward-char -1))
822 (push (delete-and-extract-region (point-min) (point)) result))
823 (nreverse result)))))
824
805(defun rcirc-send-message (process target message &optional noticep silent) 825(defun rcirc-send-message (process target message &optional noticep silent)
806 "Send TARGET associated with PROCESS a privmsg with text MESSAGE. 826 "Send TARGET associated with PROCESS a privmsg with text MESSAGE.
807If NOTICEP is non-nil, send a notice instead of privmsg. 827If NOTICEP is non-nil, send a notice instead of privmsg.
808If SILENT is non-nil, do not print the message in any irc buffer." 828If SILENT is non-nil, do not print the message in any irc buffer."
809 ;; max message length is 512 including CRLF 829 (let ((response (if noticep "NOTICE" "PRIVMSG")))
810 (let* ((response (if noticep "NOTICE" "PRIVMSG"))
811 (oversize (> (length message) rcirc-max-message-length))
812 (text (if oversize
813 (substring message 0 rcirc-max-message-length)
814 message))
815 (text (if (string= text "")
816 " "
817 text))
818 (more (if oversize
819 (substring message rcirc-max-message-length))))
820 (rcirc-get-buffer-create process target) 830 (rcirc-get-buffer-create process target)
821 (rcirc-send-string process (concat response " " target " :" text)) 831 (dolist (msg (rcirc-split-message message))
822 (unless silent 832 (rcirc-send-string process (concat response " " target " :" msg))
823 (rcirc-print process (rcirc-nick process) response target text)) 833 (unless silent
824 (when more (rcirc-send-message process target more noticep)))) 834 (rcirc-print process (rcirc-nick process) response target msg)))))
825 835
826(defvar rcirc-input-ring nil) 836(defvar rcirc-input-ring nil)
827(defvar rcirc-input-ring-index 0) 837(defvar rcirc-input-ring-index 0)
diff --git a/lisp/net/sasl.el b/lisp/net/sasl.el
index c6e95970f3d..4e759a4e6b2 100644
--- a/lisp/net/sasl.el
+++ b/lisp/net/sasl.el
@@ -183,7 +183,7 @@ It contain at least 64 bits of entropy."
183 ;; Don't use microseconds from (current-time), they may be unsupported. 183 ;; Don't use microseconds from (current-time), they may be unsupported.
184 ;; Instead we use this randomly inited counter. 184 ;; Instead we use this randomly inited counter.
185 (setq sasl-unique-id-char 185 (setq sasl-unique-id-char
186 (% (1+ (or sasl-unique-id-char (logand (random t) (1- (lsh 1 20))))) 186 (% (1+ (or sasl-unique-id-char (logand (random) (1- (lsh 1 20)))))
187 ;; (current-time) returns 16-bit ints, 187 ;; (current-time) returns 16-bit ints,
188 ;; and 2^16*25 just fits into 4 digits i base 36. 188 ;; and 2^16*25 just fits into 4 digits i base 36.
189 (* 25 25))) 189 (* 25 25)))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 6283188d46a..2c1af3e83fa 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -512,9 +512,9 @@ detected as prompt when being sent on echoing hosts, therefore.")
512;; IRIX64: /usr/bin 512;; IRIX64: /usr/bin
513;;;###tramp-autoload 513;;;###tramp-autoload
514(defcustom tramp-remote-path 514(defcustom tramp-remote-path
515 '(tramp-default-remote-path "/bin" "/usr/bin" "/usr/sbin" 515 '(tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin"
516 "/usr/local/bin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" 516 "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin"
517 "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" 517 "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin"
518 "/opt/bin" "/opt/sbin" "/opt/local/bin") 518 "/opt/bin" "/opt/sbin" "/opt/local/bin")
519 "List of directories to search for executables on remote host. 519 "List of directories to search for executables on remote host.
520For every remote host, this variable will be set buffer local, 520For every remote host, this variable will be set buffer local,
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 848599104c5..a17bbfa0d14 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -3293,7 +3293,7 @@ for process communication also."
3293 ;; Under Windows XP, accept-process-output doesn't return 3293 ;; Under Windows XP, accept-process-output doesn't return
3294 ;; sometimes. So we add an additional timeout. 3294 ;; sometimes. So we add an additional timeout.
3295 (with-timeout ((or timeout 1)) 3295 (with-timeout ((or timeout 1))
3296 (accept-process-output proc timeout timeout-msecs))) 3296 (accept-process-output proc timeout timeout-msecs (and proc t))))
3297 (tramp-message proc 10 "\n%s" (buffer-string)))) 3297 (tramp-message proc 10 "\n%s" (buffer-string))))
3298 3298
3299(defun tramp-check-for-regexp (proc regexp) 3299(defun tramp-check-for-regexp (proc regexp)
diff --git a/lisp/obsolete/vc-mcvs.el b/lisp/obsolete/vc-mcvs.el
index 94db90f1d6a..78221945073 100644
--- a/lisp/obsolete/vc-mcvs.el
+++ b/lisp/obsolete/vc-mcvs.el
@@ -329,7 +329,7 @@ This is only possible if Meta-CVS is responsible for FILE's directory.")
329 (if vc-mcvs-use-edit 329 (if vc-mcvs-use-edit
330 (vc-mcvs-command nil 0 file "edit") 330 (vc-mcvs-command nil 0 file "edit")
331 (set-file-modes file (logior (file-modes file) 128)) 331 (set-file-modes file (logior (file-modes file) 128))
332 (if (equal file buffer-file-name) (toggle-read-only -1)))) 332 (if (equal file buffer-file-name) (read-only-mode -1))))
333 ;; Check out a particular revision (or recreate the file). 333 ;; Check out a particular revision (or recreate the file).
334 (vc-file-setprop file 'vc-working-revision nil) 334 (vc-file-setprop file 'vc-working-revision nil)
335 (apply 'vc-mcvs-command nil 0 file 335 (apply 'vc-mcvs-command nil 0 file
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index cf9c32006ac..152af5f43ed 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,9 @@
12012-09-01 Paul Eggert <eggert@cs.ucla.edu>
2
3 Better seed support for (random).
4 * org-id.el (org-id-uuid):
5 Change (random t) to (random), now that the latter is more random.
6
12012-07-29 Paul Eggert <eggert@cs.ucla.edu> 72012-07-29 Paul Eggert <eggert@cs.ucla.edu>
2 8
3 Don't use the abbreviation "win" to refer to Windows (Bug#10421). 9 Don't use the abbreviation "win" to refer to Windows (Bug#10421).
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el
index 55e826f3ae6..a93f804946f 100644
--- a/lisp/org/org-id.el
+++ b/lisp/org/org-id.el
@@ -318,7 +318,7 @@ So a typical ID could look like \"Org:4nd91V40HI\"."
318(defun org-id-uuid () 318(defun org-id-uuid ()
319 "Return string with random (version 4) UUID." 319 "Return string with random (version 4) UUID."
320 (let ((rnd (md5 (format "%s%s%s%s%s%s%s" 320 (let ((rnd (md5 (format "%s%s%s%s%s%s%s"
321 (random t) 321 (random)
322 (current-time) 322 (current-time)
323 (user-uid) 323 (user-uid)
324 (emacs-pid) 324 (emacs-pid)
diff --git a/lisp/paren.el b/lisp/paren.el
index 2d6c42478e1..ab856380d3f 100644
--- a/lisp/paren.el
+++ b/lisp/paren.el
@@ -52,8 +52,17 @@ otherwise)."
52 :group 'paren-showing) 52 :group 'paren-showing)
53 53
54(defcustom show-paren-delay 0.125 54(defcustom show-paren-delay 0.125
55 "Time in seconds to delay before showing a matching paren." 55 "Time in seconds to delay before showing a matching paren.
56If you change this without using customize while `show-paren-mode' is
57active, you must toggle the mode off and on again for this to take effect."
56 :type '(number :tag "seconds") 58 :type '(number :tag "seconds")
59 :initialize 'custom-initialize-default
60 :set (lambda (sym val)
61 (if (not show-paren-mode)
62 (set sym val)
63 (show-paren-mode -1)
64 (set sym val)
65 (show-paren-mode 1)))
57 :group 'paren-showing) 66 :group 'paren-showing)
58 67
59(defcustom show-paren-priority 1000 68(defcustom show-paren-priority 1000
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index e6df0df8282..abc78cd495c 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -953,8 +953,6 @@ lest."
953 (y-or-n-p prompt) 953 (y-or-n-p prompt)
954 t)) 954 t))
955 955
956(random t)
957
958(provide '5x5) 956(provide '5x5)
959 957
960;;; 5x5.el ends here 958;;; 5x5.el ends here
diff --git a/lisp/play/animate.el b/lisp/play/animate.el
index 9919600202f..2398a7b89c7 100644
--- a/lisp/play/animate.el
+++ b/lisp/play/animate.el
@@ -201,8 +201,6 @@ the buffer *Birthday-Present-for-Name*."
201 (animate-string "my sunshine" 18 34) 201 (animate-string "my sunshine" 18 34)
202 (animate-string "to stay!" 19 34)) 202 (animate-string "to stay!" 19 34))
203 203
204(random t)
205
206(provide 'animate) 204(provide 'animate)
207 205
208;;; animate.el ends here 206;;; animate.el ends here
diff --git a/lisp/play/blackbox.el b/lisp/play/blackbox.el
index eb2d784c8e5..db2e18188e5 100644
--- a/lisp/play/blackbox.el
+++ b/lisp/play/blackbox.el
@@ -93,7 +93,7 @@
93 (define-key map (vector 'remap oldfun) newfun)) 93 (define-key map (vector 'remap oldfun) newfun))
94 94
95 95
96(defvar blackbox-mode-map 96(defvar blackbox-mode-map
97 (let ((map (make-keymap))) 97 (let ((map (make-keymap)))
98 (suppress-keymap map t) 98 (suppress-keymap map t)
99 (blackbox-redefine-key map 'backward-char 'bb-left) 99 (blackbox-redefine-key map 'backward-char 'bb-left)
@@ -257,7 +257,6 @@ a reflection."
257 (bb-goto (cons bb-x bb-y))) 257 (bb-goto (cons bb-x bb-y)))
258 258
259(defun bb-init-board (num-balls) 259(defun bb-init-board (num-balls)
260 (random t)
261 (let (board pos) 260 (let (board pos)
262 (while (>= (setq num-balls (1- num-balls)) 0) 261 (while (>= (setq num-balls (1- num-balls)) 0)
263 (while 262 (while
diff --git a/lisp/play/cookie1.el b/lisp/play/cookie1.el
index cbf29a26a71..dbd6e893473 100644
--- a/lisp/play/cookie1.el
+++ b/lisp/play/cookie1.el
@@ -53,9 +53,6 @@
53 53
54;;; Code: 54;;; Code:
55 55
56; Randomize the seed in the random number generator.
57(random t)
58
59(defconst cookie-delimiter "\n%%\n\\|\n%\n\\|\0" 56(defconst cookie-delimiter "\n%%\n\\|\n%\n\\|\0"
60 "Delimiter used to separate cookie file entries.") 57 "Delimiter used to separate cookie file entries.")
61 58
diff --git a/lisp/play/dissociate.el b/lisp/play/dissociate.el
index 8f9f8cea24f..238b2a86c17 100644
--- a/lisp/play/dissociate.el
+++ b/lisp/play/dissociate.el
@@ -94,8 +94,6 @@ Default is 2."
94 (funcall search-function overlap opoint t)))))) 94 (funcall search-function overlap opoint t))))))
95 (sit-for 0)))) 95 (sit-for 0))))
96 96
97(random t)
98
99(provide 'dissociate) 97(provide 'dissociate)
100 98
101;;; dissociate.el ends here 99;;; dissociate.el ends here
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index fdae2ec9326..57dbb1452f3 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1620,8 +1620,6 @@ Hack on previous word, setting global variable DOCTOR-OWNER to correct result."
1620 1620
1621(defun doctor-chat () (doctor-type (doc$ doctor--chatlst))) 1621(defun doctor-chat () (doctor-type (doc$ doctor--chatlst)))
1622 1622
1623(random t)
1624
1625(provide 'doctor) 1623(provide 'doctor)
1626 1624
1627;;; doctor.el ends here 1625;;; doctor.el ends here
diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el
index 22a2642f751..2d62b800ef4 100644
--- a/lisp/play/dunnet.el
+++ b/lisp/play/dunnet.el
@@ -3010,7 +3010,6 @@ drwxr-xr-x 3 root staff 2048 Jan 1 1970 ..")
3010 (dun-uexit nil))) 3010 (dun-uexit nil)))
3011 3011
3012 3012
3013(random t)
3014(setq tloc (+ 60 (random 18))) 3013(setq tloc (+ 60 (random 18)))
3015(dun-replace dun-room-objects tloc 3014(dun-replace dun-room-objects tloc
3016 (append (nth tloc dun-room-objects) (list 18))) 3015 (append (nth tloc dun-room-objects) (list 18)))
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index 6d73e2ccb65..3dba99d98d5 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -1197,8 +1197,6 @@ If the game is finished, this command requests for another game."
1197 (move-to-column (+ gomoku-x-offset 1197 (move-to-column (+ gomoku-x-offset
1198 (* gomoku-square-width (1- gomoku-board-width))))) 1198 (* gomoku-square-width (1- gomoku-board-width)))))
1199 1199
1200(random t)
1201
1202(provide 'gomoku) 1200(provide 'gomoku)
1203 1201
1204;;; gomoku.el ends here 1202;;; gomoku.el ends here
diff --git a/lisp/play/landmark.el b/lisp/play/landmark.el
index e9f555093db..e103249da49 100644
--- a/lisp/play/landmark.el
+++ b/lisp/play/landmark.el
@@ -1683,8 +1683,6 @@ Use \\[describe-mode] for more info."
1683;;;allout-layout: (0 : -1 -1 0) 1683;;;allout-layout: (0 : -1 -1 0)
1684;;;End: 1684;;;End:
1685 1685
1686(random t)
1687
1688(provide 'landmark) 1686(provide 'landmark)
1689 1687
1690;;; landmark.el ends here 1688;;; landmark.el ends here
diff --git a/lisp/play/life.el b/lisp/play/life.el
index e9133f84862..87ec0226af5 100644
--- a/lisp/play/life.el
+++ b/lisp/play/life.el
@@ -111,9 +111,6 @@
111;; Sadly, mode-line-format won't display numbers. 111;; Sadly, mode-line-format won't display numbers.
112(defvar life-generation-string nil) 112(defvar life-generation-string nil)
113 113
114(defvar life-initialized nil
115 "Non-nil if `life' has been run at least once.")
116
117;;;###autoload 114;;;###autoload
118(defun life (&optional sleeptime) 115(defun life (&optional sleeptime)
119 "Run Conway's Life simulation. 116 "Run Conway's Life simulation.
@@ -121,9 +118,6 @@ The starting pattern is randomly selected. Prefix arg (optional first
121arg non-nil from a program) is the number of seconds to sleep between 118arg non-nil from a program) is the number of seconds to sleep between
122generations (this defaults to 1)." 119generations (this defaults to 1)."
123 (interactive "p") 120 (interactive "p")
124 (or life-initialized
125 (random t))
126 (setq life-initialized t)
127 (or sleeptime (setq sleeptime 1)) 121 (or sleeptime (setq sleeptime 1))
128 (life-setup) 122 (life-setup)
129 (catch 'life-exit 123 (catch 'life-exit
diff --git a/lisp/play/mpuz.el b/lisp/play/mpuz.el
index c0c8803f896..e16bb2f1bde 100644
--- a/lisp/play/mpuz.el
+++ b/lisp/play/mpuz.el
@@ -35,8 +35,6 @@
35 :prefix "mpuz-" 35 :prefix "mpuz-"
36 :group 'games) 36 :group 'games)
37 37
38(random t) ; randomize
39
40(defcustom mpuz-silent 'error 38(defcustom mpuz-silent 'error
41 "Set this to nil if you want dings on inputs. 39 "Set this to nil if you want dings on inputs.
42The value t means never ding, and `error' means only ding on wrong input." 40The value t means never ding, and `error' means only ding on wrong input."
diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el
index b811a21605b..9cc33304589 100644
--- a/lisp/play/tetris.el
+++ b/lisp/play/tetris.el
@@ -635,8 +635,6 @@ tetris-mode keybindings:
635 (tetris-mode) 635 (tetris-mode)
636 (tetris-start-game)) 636 (tetris-start-game))
637 637
638(random t)
639
640(provide 'tetris) 638(provide 'tetris)
641 639
642;;; tetris.el ends here 640;;; tetris.el ends here
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index 34e21193437..1cfc6c59987 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -675,8 +675,6 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
675 (kill-buffer nil)))) 675 (kill-buffer nil))))
676 676
677 677
678(random t)
679
680;;;;;;;;;;;;;;; 678;;;;;;;;;;;;;;;
681(provide 'zone) 679(provide 'zone)
682 680
diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el
index 0a7d65c1fa4..97fcb6874dd 100644
--- a/lisp/progmodes/bug-reference.el
+++ b/lisp/progmodes/bug-reference.el
@@ -32,6 +32,11 @@
32 32
33;;; Code: 33;;; Code:
34 34
35(defgroup bug-reference nil
36 "Hyperlinking references to bug reports"
37 ;; Somewhat arbitrary, by analogy with eg goto-address.
38 :group 'comm)
39
35(defvar bug-reference-map 40(defvar bug-reference-map
36 (let ((map (make-sparse-keymap))) 41 (let ((map (make-sparse-keymap)))
37 (define-key map [mouse-2] 'bug-reference-push-button) 42 (define-key map [mouse-2] 'bug-reference-push-button)
@@ -63,9 +68,13 @@ so that it is considered safe, see `enable-local-variables'.")
63 (and (symbolp s) 68 (and (symbolp s)
64 (get s 'bug-reference-url-format))))) 69 (get s 'bug-reference-url-format)))))
65 70
66(defconst bug-reference-bug-regexp 71(defcustom bug-reference-bug-regexp
67 "\\([Bb]ug ?#\\|[Pp]atch ?#\\|RFE ?#\\|PR [a-z-+]+/\\)\\([0-9]+\\(?:#[0-9]+\\)?\\)" 72 "\\([Bb]ug ?#\\|[Pp]atch ?#\\|RFE ?#\\|PR [a-z-+]+/\\)\\([0-9]+\\(?:#[0-9]+\\)?\\)"
68 "Regular expression which matches bug references.") 73 "Regular expression matching bug references.
74The second subexpression should match the bug reference (usually a number)."
75 :type 'string
76 :safe 'stringp
77 :group 'bug-reference)
69 78
70(defun bug-reference-set-overlay-properties () 79(defun bug-reference-set-overlay-properties ()
71 "Set properties of bug reference overlays." 80 "Set properties of bug reference overlays."
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 21a323d8b45..fbb0c9e204a 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1503,6 +1503,13 @@ Otherwise, construct a buffer name from NAME-OF-MODE."
1503 (compilation-start command nil name-function highlight-regexp))) 1503 (compilation-start command nil name-function highlight-regexp)))
1504(make-obsolete 'compile-internal 'compilation-start "22.1") 1504(make-obsolete 'compile-internal 'compilation-start "22.1")
1505 1505
1506(defcustom compilation-always-kill nil
1507 "If t, always kill a running compilation process before starting a new one.
1508If nil, ask to kill it."
1509 :type 'boolean
1510 :version "24.3"
1511 :group 'compilation)
1512
1506;;;###autoload 1513;;;###autoload
1507(defun compilation-start (command &optional mode name-function highlight-regexp) 1514(defun compilation-start (command &optional mode name-function highlight-regexp)
1508 "Run compilation command COMMAND (low level interface). 1515 "Run compilation command COMMAND (low level interface).
@@ -1537,6 +1544,7 @@ Returns the compilation buffer created."
1537 (let ((comp-proc (get-buffer-process (current-buffer)))) 1544 (let ((comp-proc (get-buffer-process (current-buffer))))
1538 (if comp-proc 1545 (if comp-proc
1539 (if (or (not (eq (process-status comp-proc) 'run)) 1546 (if (or (not (eq (process-status comp-proc) 'run))
1547 compilation-always-kill
1540 (yes-or-no-p 1548 (yes-or-no-p
1541 (format "A %s process is running; kill it? " 1549 (format "A %s process is running; kill it? "
1542 name-of-mode))) 1550 name-of-mode)))
@@ -2461,10 +2469,7 @@ and overlay is highlighted between MK and END-MK."
2461 ;; the error location if the two buffers are in two 2469 ;; the error location if the two buffers are in two
2462 ;; different frames. So don't do it if it's not necessary. 2470 ;; different frames. So don't do it if it's not necessary.
2463 pre-existing 2471 pre-existing
2464 (let ((display-buffer-reuse-frames t) 2472 (display-buffer (marker-buffer msg))))
2465 (pop-up-windows t))
2466 ;; Pop up a window.
2467 (display-buffer (marker-buffer msg)))))
2468 (highlight-regexp (with-current-buffer (marker-buffer msg) 2473 (highlight-regexp (with-current-buffer (marker-buffer msg)
2469 ;; also do this while we change buffer 2474 ;; also do this while we change buffer
2470 (compilation-set-window w msg) 2475 (compilation-set-window w msg)
diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el
index e5142571972..092e1a4d578 100644
--- a/lisp/progmodes/executable.el
+++ b/lisp/progmodes/executable.el
@@ -84,8 +84,9 @@ When this is `function', only ask when called non-interactively."
84 :group 'executable) 84 :group 'executable)
85 85
86 86
87(defcustom executable-prefix "#! " 87(defcustom executable-prefix "#!"
88 "Interpreter magic number prefix inserted when there was no magic number." 88 "Interpreter magic number prefix inserted when there was no magic number."
89 :version "24.3" ; "#! " -> "#!"
89 :type 'string 90 :type 'string
90 :group 'executable) 91 :group 'executable)
91 92
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 0a99c2f5c24..59c419abfc3 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1413,29 +1413,6 @@ this trigger is subscribed to `gdb-buf-publisher' and called with
1413 (with-current-buffer ,buffer 1413 (with-current-buffer ,buffer
1414 (apply ',expr args)))) 1414 (apply ',expr args))))
1415 1415
1416;; Used to define all gdb-frame-*-buffer functions except
1417;; `gdb-frame-io-buffer'
1418(defmacro def-gdb-frame-for-buffer (name buffer &optional doc)
1419 "Define a function NAME which shows gdb BUFFER in a separate frame.
1420
1421DOC is an optional documentation string."
1422 `(defun ,name (&optional thread)
1423 ,(when doc doc)
1424 (interactive)
1425 (let ((special-display-regexps (append special-display-regexps '(".*")))
1426 (special-display-frame-alist gdb-frame-parameters))
1427 (display-buffer (gdb-get-buffer-create ,buffer thread)))))
1428
1429(defmacro def-gdb-display-buffer (name buffer &optional doc)
1430 "Define a function NAME which shows gdb BUFFER.
1431
1432DOC is an optional documentation string."
1433 `(defun ,name (&optional thread)
1434 ,(when doc doc)
1435 (interactive)
1436 (gdb-display-buffer
1437 (gdb-get-buffer-create ,buffer thread) t)))
1438
1439;; Used to display windows with thread-bound buffers 1416;; Used to display windows with thread-bound buffers
1440(defmacro def-gdb-preempt-display-buffer (name buffer &optional doc 1417(defmacro def-gdb-preempt-display-buffer (name buffer &optional doc
1441 split-horizontal) 1418 split-horizontal)
@@ -1511,8 +1488,7 @@ DOC is an optional documentation string."
1511(defun gdb-display-io-buffer () 1488(defun gdb-display-io-buffer ()
1512 "Display IO of debugged program in a separate window." 1489 "Display IO of debugged program in a separate window."
1513 (interactive) 1490 (interactive)
1514 (gdb-display-buffer 1491 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))
1515 (gdb-get-buffer-create 'gdb-inferior-io) t))
1516 1492
1517(defun gdb-inferior-io--init-proc (proc) 1493(defun gdb-inferior-io--init-proc (proc)
1518 ;; Set up inferior I/O. Needs GDB 6.4 onwards. 1494 ;; Set up inferior I/O. Needs GDB 6.4 onwards.
@@ -1540,19 +1516,24 @@ DOC is an optional documentation string."
1540 (comint-exec io-buffer "gdb-inferior" nil nil nil) 1516 (comint-exec io-buffer "gdb-inferior" nil nil nil)
1541 (gdb-inferior-io--init-proc (get-buffer-process io-buffer)))))) 1517 (gdb-inferior-io--init-proc (get-buffer-process io-buffer))))))
1542 1518
1543(defconst gdb-frame-parameters 1519(defvar gdb-display-buffer-other-frame-action
1544 '((height . 14) (width . 80) 1520 `((display-buffer-reuse-window display-buffer-pop-up-frame)
1545 (unsplittable . t) 1521 (reusable-frames . 0)
1546 (tool-bar-lines . nil) 1522 (inhibit-same-window . t)
1547 (menu-bar-lines . nil) 1523 (pop-up-frame-parameters (height . 14)
1548 (minibuffer . nil))) 1524 (width . 80)
1525 (unsplittable . t)
1526 (tool-bar-lines . nil)
1527 (menu-bar-lines . nil)
1528 (minibuffer . nil)))
1529 "A `display-buffer' action for displaying GDB utility frames.")
1530(put 'gdb-display-buffer-other-frame-action 'risky-local-variable t)
1549 1531
1550(defun gdb-frame-io-buffer () 1532(defun gdb-frame-io-buffer ()
1551 "Display IO of debugged program in a new frame." 1533 "Display IO of debugged program in another frame."
1552 (interactive) 1534 (interactive)
1553 (let ((special-display-regexps (append special-display-regexps '(".*"))) 1535 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1554 (special-display-frame-alist gdb-frame-parameters)) 1536 gdb-display-buffer-other-frame-action))
1555 (display-buffer (gdb-get-buffer-create 'gdb-inferior-io))))
1556 1537
1557(defvar gdb-inferior-io-mode-map 1538(defvar gdb-inferior-io-mode-map
1558 (let ((map (make-sparse-keymap))) 1539 (let ((map (make-sparse-keymap)))
@@ -1571,7 +1552,7 @@ DOC is an optional documentation string."
1571 1552
1572(defun gdb-inferior-filter (proc string) 1553(defun gdb-inferior-filter (proc string)
1573 (unless (string-equal string "") 1554 (unless (string-equal string "")
1574 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io) t)) 1555 (gdb-display-buffer (gdb-get-buffer-create 'gdb-inferior-io)))
1575 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io) 1556 (with-current-buffer (gdb-get-buffer-create 'gdb-inferior-io)
1576 (comint-output-filter proc string))) 1557 (comint-output-filter proc string)))
1577 1558
@@ -2615,15 +2596,16 @@ If not in a source or disassembly buffer just set point."
2615(defun gdb-breakpoints-buffer-name () 2596(defun gdb-breakpoints-buffer-name ()
2616 (concat "*breakpoints of " (gdb-get-target-string) "*")) 2597 (concat "*breakpoints of " (gdb-get-target-string) "*"))
2617 2598
2618(def-gdb-display-buffer 2599(defun gdb-display-breakpoints-buffer (&optional thread)
2619 gdb-display-breakpoints-buffer 2600 "Display GDB breakpoints."
2620 'gdb-breakpoints-buffer 2601 (interactive)
2621 "Display status of user-settable breakpoints.") 2602 (gdb-display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer thread)))
2622 2603
2623(def-gdb-frame-for-buffer 2604(defun gdb-frame-breakpoints-buffer (&optional thread)
2624 gdb-frame-breakpoints-buffer 2605 "Display GDB breakpoints in another frame."
2625 'gdb-breakpoints-buffer 2606 (interactive)
2626 "Display status of user-settable breakpoints in a new frame.") 2607 (display-buffer (gdb-get-buffer-create 'gdb-breakpoints-buffer thread)
2608 gdb-display-buffer-other-frame-action))
2627 2609
2628(defvar gdb-breakpoints-mode-map 2610(defvar gdb-breakpoints-mode-map
2629 (let ((map (make-sparse-keymap)) 2611 (let ((map (make-sparse-keymap))
@@ -2684,15 +2666,16 @@ corresponding to the mode line clicked."
2684(defun gdb-threads-buffer-name () 2666(defun gdb-threads-buffer-name ()
2685 (concat "*threads of " (gdb-get-target-string) "*")) 2667 (concat "*threads of " (gdb-get-target-string) "*"))
2686 2668
2687(def-gdb-display-buffer 2669(defun gdb-display-threads-buffer (&optional thread)
2688 gdb-display-threads-buffer 2670 "Display GDB threads."
2689 'gdb-threads-buffer 2671 (interactive)
2690 "Display GDB threads.") 2672 (gdb-display-buffer (gdb-get-buffer-create 'gdb-threads-buffer thread)))
2691 2673
2692(def-gdb-frame-for-buffer 2674(defun gdb-frame-threads-buffer (&optional thread)
2693 gdb-frame-threads-buffer 2675 "Display GDB threads in another frame."
2694 'gdb-threads-buffer 2676 (interactive)
2695 "Display GDB threads in a new frame.") 2677 (display-buffer (gdb-get-buffer-create 'gdb-threads-buffer thread)
2678 gdb-display-buffer-other-frame-action))
2696 2679
2697(def-gdb-trigger-and-handler 2680(def-gdb-trigger-and-handler
2698 gdb-invalidate-threads (gdb-current-context-command "-thread-info") 2681 gdb-invalidate-threads (gdb-current-context-command "-thread-info")
@@ -2868,26 +2851,22 @@ on the current line."
2868(def-gdb-thread-buffer-simple-command 2851(def-gdb-thread-buffer-simple-command
2869 gdb-frame-stack-for-thread 2852 gdb-frame-stack-for-thread
2870 gdb-frame-stack-buffer 2853 gdb-frame-stack-buffer
2871 "Display a new frame with stack buffer for the thread at 2854 "Display another frame with stack buffer for thread at current line.")
2872current line.")
2873 2855
2874(def-gdb-thread-buffer-simple-command 2856(def-gdb-thread-buffer-simple-command
2875 gdb-frame-locals-for-thread 2857 gdb-frame-locals-for-thread
2876 gdb-frame-locals-buffer 2858 gdb-frame-locals-buffer
2877 "Display a new frame with locals buffer for the thread at 2859 "Display another frame with locals buffer for thread at current line.")
2878current line.")
2879 2860
2880(def-gdb-thread-buffer-simple-command 2861(def-gdb-thread-buffer-simple-command
2881 gdb-frame-registers-for-thread 2862 gdb-frame-registers-for-thread
2882 gdb-frame-registers-buffer 2863 gdb-frame-registers-buffer
2883 "Display a new frame with registers buffer for the thread at 2864 "Display another frame with registers buffer for the thread at current line.")
2884current line.")
2885 2865
2886(def-gdb-thread-buffer-simple-command 2866(def-gdb-thread-buffer-simple-command
2887 gdb-frame-disassembly-for-thread 2867 gdb-frame-disassembly-for-thread
2888 gdb-frame-disassembly-buffer 2868 gdb-frame-disassembly-buffer
2889 "Display a new frame with disassembly buffer for the thread at 2869 "Display another frame with disassembly buffer for the thread at current line.")
2890current line.")
2891 2870
2892(defmacro def-gdb-thread-buffer-gud-command (name gud-command &optional doc) 2871(defmacro def-gdb-thread-buffer-gud-command (name gud-command &optional doc)
2893 "Define a NAME which will execute GUD-COMMAND with 2872 "Define a NAME which will execute GUD-COMMAND with
@@ -3290,21 +3269,16 @@ DOC is an optional documentation string."
3290(defun gdb-memory-buffer-name () 3269(defun gdb-memory-buffer-name ()
3291 (concat "*memory of " (gdb-get-target-string) "*")) 3270 (concat "*memory of " (gdb-get-target-string) "*"))
3292 3271
3293(def-gdb-display-buffer 3272(defun gdb-display-memory-buffer (&optional thread)
3294 gdb-display-memory-buffer 3273 "Display GDB memory contents."
3295 'gdb-memory-buffer 3274 (interactive)
3296 "Display memory contents.") 3275 (gdb-display-buffer (gdb-get-buffer-create 'gdb-memory-buffer thread)))
3297 3276
3298(defun gdb-frame-memory-buffer () 3277(defun gdb-frame-memory-buffer ()
3299 "Display memory contents in a new frame." 3278 "Display memory contents in another frame."
3300 (interactive) 3279 (interactive)
3301 (let* ((special-display-regexps (append special-display-regexps '(".*"))) 3280 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer)
3302 (special-display-frame-alist 3281 gdb-display-buffer-other-frame-action))
3303 `((left-fringe . 0)
3304 (right-fringe . 0)
3305 (width . 83)
3306 ,@gdb-frame-parameters)))
3307 (display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
3308 3282
3309 3283
3310;;; Disassembly view 3284;;; Disassembly view
@@ -3313,19 +3287,20 @@ DOC is an optional documentation string."
3313 (gdb-current-context-buffer-name 3287 (gdb-current-context-buffer-name
3314 (concat "disassembly of " (gdb-get-target-string)))) 3288 (concat "disassembly of " (gdb-get-target-string))))
3315 3289
3316(def-gdb-display-buffer 3290(defun gdb-display-disassembly-buffer (&optional thread)
3317 gdb-display-disassembly-buffer 3291 "Display GDB disassembly information."
3318 'gdb-disassembly-buffer 3292 (interactive)
3319 "Display disassembly for current stack frame.") 3293 (gdb-display-buffer (gdb-get-buffer-create 'gdb-disassembly-buffer thread)))
3320 3294
3321(def-gdb-preempt-display-buffer 3295(def-gdb-preempt-display-buffer
3322 gdb-preemptively-display-disassembly-buffer 3296 gdb-preemptively-display-disassembly-buffer
3323 'gdb-disassembly-buffer) 3297 'gdb-disassembly-buffer)
3324 3298
3325(def-gdb-frame-for-buffer 3299(defun gdb-frame-disassembly-buffer (&optional thread)
3326 gdb-frame-disassembly-buffer 3300 "Display GDB disassembly information in another frame."
3327 'gdb-disassembly-buffer 3301 (interactive)
3328 "Display disassembly in a new frame.") 3302 (display-buffer (gdb-get-buffer-create 'gdb-disassembly-buffer thread)
3303 gdb-display-buffer-other-frame-action))
3329 3304
3330(def-gdb-auto-update-trigger gdb-invalidate-disassembly 3305(def-gdb-auto-update-trigger gdb-invalidate-disassembly
3331 (let* ((frame (gdb-current-buffer-frame)) 3306 (let* ((frame (gdb-current-buffer-frame))
@@ -3560,19 +3535,20 @@ member."
3560 (gdb-current-context-buffer-name 3535 (gdb-current-context-buffer-name
3561 (concat "stack frames of " (gdb-get-target-string)))) 3536 (concat "stack frames of " (gdb-get-target-string))))
3562 3537
3563(def-gdb-display-buffer 3538(defun gdb-display-stack-buffer (&optional thread)
3564 gdb-display-stack-buffer 3539 "Display GDB backtrace for current stack."
3565 'gdb-stack-buffer 3540 (interactive)
3566 "Display backtrace of current stack.") 3541 (gdb-display-buffer (gdb-get-buffer-create 'gdb-stack-buffer thread)))
3567 3542
3568(def-gdb-preempt-display-buffer 3543(def-gdb-preempt-display-buffer
3569 gdb-preemptively-display-stack-buffer 3544 gdb-preemptively-display-stack-buffer
3570 'gdb-stack-buffer nil t) 3545 'gdb-stack-buffer nil t)
3571 3546
3572(def-gdb-frame-for-buffer 3547(defun gdb-frame-stack-buffer (&optional thread)
3573 gdb-frame-stack-buffer 3548 "Display GDB backtrace for current stack in another frame."
3574 'gdb-stack-buffer 3549 (interactive)
3575 "Display backtrace of current stack in a new frame.") 3550 (display-buffer (gdb-get-buffer-create 'gdb-stack-buffer thread)
3551 gdb-display-buffer-other-frame-action))
3576 3552
3577(defvar gdb-frames-mode-map 3553(defvar gdb-frames-mode-map
3578 (let ((map (make-sparse-keymap))) 3554 (let ((map (make-sparse-keymap)))
@@ -3719,19 +3695,20 @@ member."
3719 (gdb-current-context-buffer-name 3695 (gdb-current-context-buffer-name
3720 (concat "locals of " (gdb-get-target-string)))) 3696 (concat "locals of " (gdb-get-target-string))))
3721 3697
3722(def-gdb-display-buffer 3698(defun gdb-display-locals-buffer (&optional thread)
3723 gdb-display-locals-buffer 3699 "Display the local variables of current GDB stack."
3724 'gdb-locals-buffer 3700 (interactive)
3725 "Display local variables of current stack and their values.") 3701 (gdb-display-buffer (gdb-get-buffer-create 'gdb-locals-buffer thread)))
3726 3702
3727(def-gdb-preempt-display-buffer 3703(def-gdb-preempt-display-buffer
3728 gdb-preemptively-display-locals-buffer 3704 gdb-preemptively-display-locals-buffer
3729 'gdb-locals-buffer nil t) 3705 'gdb-locals-buffer nil t)
3730 3706
3731(def-gdb-frame-for-buffer 3707(defun gdb-frame-locals-buffer (&optional thread)
3732 gdb-frame-locals-buffer 3708 "Display the local variables of the current GDB stack in another frame."
3733 'gdb-locals-buffer 3709 (interactive)
3734 "Display local variables of current stack and their values in a new frame.") 3710 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer thread)
3711 gdb-display-buffer-other-frame-action))
3735 3712
3736 3713
3737;; Registers buffer. 3714;; Registers buffer.
@@ -3818,19 +3795,20 @@ member."
3818 (gdb-current-context-buffer-name 3795 (gdb-current-context-buffer-name
3819 (concat "registers of " (gdb-get-target-string)))) 3796 (concat "registers of " (gdb-get-target-string))))
3820 3797
3821(def-gdb-display-buffer 3798(defun gdb-display-registers-buffer (&optional thread)
3822 gdb-display-registers-buffer 3799 "Display GDB register contents."
3823 'gdb-registers-buffer 3800 (interactive)
3824 "Display integer register contents.") 3801 (gdb-display-buffer (gdb-get-buffer-create 'gdb-registers-buffer thread)))
3825 3802
3826(def-gdb-preempt-display-buffer 3803(def-gdb-preempt-display-buffer
3827 gdb-preemptively-display-registers-buffer 3804 gdb-preemptively-display-registers-buffer
3828 'gdb-registers-buffer nil t) 3805 'gdb-registers-buffer nil t)
3829 3806
3830(def-gdb-frame-for-buffer 3807(defun gdb-frame-registers-buffer (&optional thread)
3831 gdb-frame-registers-buffer 3808 "Display GDB register contents in another frame."
3832 'gdb-registers-buffer 3809 (interactive)
3833 "Display integer register contents in a new frame.") 3810 (display-buffer (gdb-get-buffer-create 'gdb-registers-buffer thread)
3811 gdb-display-buffer-other-frame-action))
3834 3812
3835;; Needs GDB 6.4 onwards (used to fail with no stack). 3813;; Needs GDB 6.4 onwards (used to fail with no stack).
3836(defun gdb-get-changed-registers () 3814(defun gdb-get-changed-registers ()
@@ -3917,26 +3895,26 @@ overlay arrow in source buffer."
3917 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name))) 3895 (setq gdb-filter-output (concat gdb-filter-output gdb-prompt-name)))
3918 3896
3919;;;; Window management 3897;;;; Window management
3920(defun gdb-display-buffer (buf dedicated &optional frame) 3898(defun gdb-display-buffer (buf)
3921 "Show buffer BUF. 3899 "Show buffer BUF, and make that window dedicated."
3922 3900 (let ((window (display-buffer buf)))
3923If BUF is already displayed in some window, show it, deiconifying 3901 (set-window-dedicated-p window t)
3924the frame if necessary. Otherwise, find least recently used 3902 window))
3925window and show BUF there, if the window is not used for GDB 3903
3926already, in which case that window is split first." 3904 ;; (let ((answer (get-buffer-window buf 0)))
3927 (let ((answer (get-buffer-window buf (or frame 0)))) 3905 ;; (if answer
3928 (if answer 3906 ;; (display-buffer buf nil 0) ;Deiconify frame if necessary.
3929 (display-buffer buf nil (or frame 0)) ;Deiconify frame if necessary. 3907 ;; (let ((window (get-lru-window)))
3930 (let ((window (get-lru-window))) 3908 ;; (if (eq (buffer-local-value 'gud-minor-mode (window-buffer window))
3931 (if (eq (buffer-local-value 'gud-minor-mode (window-buffer window)) 3909 ;; 'gdbmi)
3932 'gdbmi) 3910 ;; (let ((largest (get-largest-window)))
3933 (let ((largest (get-largest-window))) 3911 ;; (setq answer (split-window largest))
3934 (setq answer (split-window largest)) 3912 ;; (set-window-buffer answer buf)
3935 (set-window-buffer answer buf) 3913 ;; (set-window-dedicated-p answer t)
3936 (set-window-dedicated-p answer dedicated) 3914 ;; answer)
3937 answer) 3915 ;; (set-window-buffer window buf)
3938 (set-window-buffer window buf) 3916 ;; window)))))
3939 window))))) 3917
3940 3918
3941(defun gdb-preempt-existing-or-display-buffer (buf &optional split-horizontal) 3919(defun gdb-preempt-existing-or-display-buffer (buf &optional split-horizontal)
3942 "Find window displaying a buffer with the same 3920 "Find window displaying a buffer with the same
@@ -3963,7 +3941,7 @@ SPLIT-HORIZONTAL and show BUF in the new window."
3963 (if dedicated-window 3941 (if dedicated-window
3964 (set-window-buffer 3942 (set-window-buffer
3965 (split-window dedicated-window nil split-horizontal) buf) 3943 (split-window dedicated-window nil split-horizontal) buf)
3966 (gdb-display-buffer buf t)))))) 3944 (gdb-display-buffer buf))))))
3967 (error "Null buffer"))) 3945 (error "Null buffer")))
3968 3946
3969;;; Shared keymap initialization: 3947;;; Shared keymap initialization:
@@ -4067,7 +4045,7 @@ SPLIT-HORIZONTAL and show BUF in the new window."
4067 'all-threads) 4045 'all-threads)
4068 4046
4069(defun gdb-frame-gdb-buffer () 4047(defun gdb-frame-gdb-buffer ()
4070 "Display GUD buffer in a new frame." 4048 "Display GUD buffer in another frame."
4071 (interactive) 4049 (interactive)
4072 (display-buffer-other-frame gud-comint-buffer)) 4050 (display-buffer-other-frame gud-comint-buffer))
4073 4051
@@ -4089,13 +4067,12 @@ window is dedicated."
4089 4067
4090(defun gdb-setup-windows () 4068(defun gdb-setup-windows ()
4091 "Layout the window pattern for `gdb-many-windows'." 4069 "Layout the window pattern for `gdb-many-windows'."
4092 (gdb-display-locals-buffer) 4070 (gdb-get-buffer-create 'gdb-locals-buffer)
4093 (gdb-display-stack-buffer) 4071 (gdb-get-buffer-create 'gdb-stack-buffer)
4094 (delete-other-windows) 4072 (gdb-get-buffer-create 'gdb-breakpoints-buffer)
4095 (gdb-display-breakpoints-buffer) 4073 (set-window-dedicated-p (selected-window) nil)
4096 (delete-other-windows)
4097 ;; Don't dedicate.
4098 (switch-to-buffer gud-comint-buffer) 4074 (switch-to-buffer gud-comint-buffer)
4075 (delete-other-windows)
4099 (let ((win0 (selected-window)) 4076 (let ((win0 (selected-window))
4100 (win1 (split-window nil ( / ( * (window-height) 3) 4))) 4077 (win1 (split-window nil ( / ( * (window-height) 3) 4)))
4101 (win2 (split-window nil ( / (window-height) 3))) 4078 (win2 (split-window nil ( / (window-height) 3)))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 5946e93f34d..2e3858b2cc5 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -2685,7 +2685,6 @@ Obeying it means displaying in another window the specified file and line."
2685(declare-function global-hl-line-highlight "hl-line" ()) 2685(declare-function global-hl-line-highlight "hl-line" ())
2686(declare-function hl-line-highlight "hl-line" ()) 2686(declare-function hl-line-highlight "hl-line" ())
2687(declare-function gdb-display-source-buffer "gdb-mi" (buffer)) 2687(declare-function gdb-display-source-buffer "gdb-mi" (buffer))
2688(declare-function gdb-display-buffer "gdb-mi" (buf dedicated &optional size))
2689 2688
2690;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen 2689;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
2691;; and that its line LINE is visible. 2690;; and that its line LINE is visible.
@@ -2702,10 +2701,7 @@ Obeying it means displaying in another window the specified file and line."
2702 (window (and buffer 2701 (window (and buffer
2703 (or (get-buffer-window buffer) 2702 (or (get-buffer-window buffer)
2704 (if (eq gud-minor-mode 'gdbmi) 2703 (if (eq gud-minor-mode 'gdbmi)
2705 (or (if (get-buffer-window buffer 'visible) 2704 (display-buffer buffer nil 'visible))
2706 (display-buffer buffer nil 'visible))
2707 (unless (gdb-display-source-buffer buffer)
2708 (gdb-display-buffer buffer nil 'visible))))
2709 (display-buffer buffer)))) 2705 (display-buffer buffer))))
2710 (pos)) 2706 (pos))
2711 (if buffer 2707 (if buffer
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 3e3d7adc0b6..4b77c6dab1a 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -1003,7 +1003,7 @@ Return as (TOP . BOTTOM) the extent of ifdef block."
1003 "Compress the define list ENV into a list of defined symbols only." 1003 "Compress the define list ENV into a list of defined symbols only."
1004 (let ((new-defs nil)) 1004 (let ((new-defs nil))
1005 (dolist (def env new-defs) 1005 (dolist (def env new-defs)
1006 (if (hif-lookup (car def)) (push (car env) new-defs))))) 1006 (if (hif-lookup (car def)) (push (car def) new-defs)))))
1007 1007
1008(defun hide-ifdef-set-define-alist (name) 1008(defun hide-ifdef-set-define-alist (name)
1009 "Set the association for NAME to `hide-ifdef-env'." 1009 "Set the association for NAME to `hide-ifdef-env'."
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index b6d2b5e319c..233b9a5212e 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -408,6 +408,8 @@ element (using `match-beginning') before calling `hs-forward-sexp-func'.")
408 408
409(defvar hs-block-end-regexp nil 409(defvar hs-block-end-regexp nil
410 "Regexp for end of block.") 410 "Regexp for end of block.")
411(make-variable-buffer-local 'hs-block-end-regexp)
412
411 413
412(defvar hs-forward-sexp-func 'forward-sexp 414(defvar hs-forward-sexp-func 'forward-sexp
413 "Function used to do a `forward-sexp'. 415 "Function used to do a `forward-sexp'.
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 519e5aef2bc..d954cd53e0a 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -426,18 +426,21 @@ Match group 1 is the name of the macro.")
426(defcustom js-indent-level 4 426(defcustom js-indent-level 4
427 "Number of spaces for each indentation step in `js-mode'." 427 "Number of spaces for each indentation step in `js-mode'."
428 :type 'integer 428 :type 'integer
429 :safe 'integerp
429 :group 'js) 430 :group 'js)
430 431
431(defcustom js-expr-indent-offset 0 432(defcustom js-expr-indent-offset 0
432 "Number of additional spaces for indenting continued expressions. 433 "Number of additional spaces for indenting continued expressions.
433The value must be no less than minus `js-indent-level'." 434The value must be no less than minus `js-indent-level'."
434 :type 'integer 435 :type 'integer
436 :safe 'integerp
435 :group 'js) 437 :group 'js)
436 438
437(defcustom js-paren-indent-offset 0 439(defcustom js-paren-indent-offset 0
438 "Number of additional spaces for indenting expressions in parentheses. 440 "Number of additional spaces for indenting expressions in parentheses.
439The value must be no less than minus `js-indent-level'." 441The value must be no less than minus `js-indent-level'."
440 :type 'integer 442 :type 'integer
443 :safe 'integerp
441 :group 'js 444 :group 'js
442 :version "24.1") 445 :version "24.1")
443 446
@@ -445,6 +448,7 @@ The value must be no less than minus `js-indent-level'."
445 "Number of additional spaces for indenting expressions in square braces. 448 "Number of additional spaces for indenting expressions in square braces.
446The value must be no less than minus `js-indent-level'." 449The value must be no less than minus `js-indent-level'."
447 :type 'integer 450 :type 'integer
451 :safe 'integerp
448 :group 'js 452 :group 'js
449 :version "24.1") 453 :version "24.1")
450 454
@@ -452,6 +456,7 @@ The value must be no less than minus `js-indent-level'."
452 "Number of additional spaces for indenting expressions in curly braces. 456 "Number of additional spaces for indenting expressions in curly braces.
453The value must be no less than minus `js-indent-level'." 457The value must be no less than minus `js-indent-level'."
454 :type 'integer 458 :type 'integer
459 :safe 'integerp
455 :group 'js 460 :group 'js
456 :version "24.1") 461 :version "24.1")
457 462
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index a6089aabb04..a422462775d 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -202,6 +202,11 @@
202 (require 'comint)) 202 (require 'comint))
203(require 'executable) 203(require 'executable)
204 204
205(autoload 'comint-completion-at-point "comint")
206(autoload 'comint-filename-completion "comint")
207(autoload 'shell-command-completion "shell")
208(autoload 'shell-environment-variable-completion "shell")
209
205(defvar font-lock-comment-face) 210(defvar font-lock-comment-face)
206(defvar font-lock-set-defaults) 211(defvar font-lock-set-defaults)
207(defvar font-lock-string-face) 212(defvar font-lock-string-face)
@@ -470,7 +475,6 @@ This is buffer-local in every such buffer.")
470 (define-key map "\C-\M-x" 'sh-execute-region) 475 (define-key map "\C-\M-x" 'sh-execute-region)
471 (define-key map "\C-c\C-x" 'executable-interpret) 476 (define-key map "\C-c\C-x" 'executable-interpret)
472 477
473 (define-key map [remap complete-tag] 'comint-dynamic-complete)
474 (define-key map [remap delete-backward-char] 478 (define-key map [remap delete-backward-char]
475 'backward-delete-char-untabify) 479 'backward-delete-char-untabify)
476 (define-key map "\C-c:" 'sh-set-shell) 480 (define-key map "\C-c:" 'sh-set-shell)
@@ -553,9 +557,9 @@ This is buffer-local in every such buffer.")
553 "Value to use for `skeleton-pair-default-alist' in Shell-Script mode.") 557 "Value to use for `skeleton-pair-default-alist' in Shell-Script mode.")
554 558
555(defcustom sh-dynamic-complete-functions 559(defcustom sh-dynamic-complete-functions
556 '(shell-dynamic-complete-environment-variable 560 '(shell-environment-variable-completion
557 shell-dynamic-complete-command 561 shell-command-completion
558 comint-dynamic-complete-filename) 562 comint-filename-completion)
559 "Functions for doing TAB dynamic completion." 563 "Functions for doing TAB dynamic completion."
560 :type '(repeat function) 564 :type '(repeat function)
561 :group 'sh-script) 565 :group 'sh-script)
@@ -1187,7 +1191,7 @@ This value is used for the `+' and `-' symbols in an indentation variable."
1187 :group 'sh-indentation) 1191 :group 'sh-indentation)
1188(put 'sh-basic-offset 'safe-local-variable 'integerp) 1192(put 'sh-basic-offset 'safe-local-variable 'integerp)
1189 1193
1190(defcustom sh-indent-comment nil 1194(defcustom sh-indent-comment t
1191 "How a comment line is to be indented. 1195 "How a comment line is to be indented.
1192nil means leave it as it is; 1196nil means leave it as it is;
1193t means indent it as a normal line, aligning it to previous non-blank 1197t means indent it as a normal line, aligning it to previous non-blank
@@ -1198,6 +1202,7 @@ a number means align to that column, e.g. 0 means first column."
1198 (const :tag "Indent as a normal line." t) 1202 (const :tag "Indent as a normal line." t)
1199 (integer :menu-tag "Indent to this col (0 means first col)." 1203 (integer :menu-tag "Indent to this col (0 means first col)."
1200 :tag "Indent to column number.") ) 1204 :tag "Indent to column number.") )
1205 :version "24.3"
1201 :group 'sh-indentation) 1206 :group 'sh-indentation)
1202 1207
1203 1208
@@ -1485,6 +1490,7 @@ with your script for an edit-interpret-debug cycle."
1485 (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table) 1490 (set (make-local-variable 'local-abbrev-table) sh-mode-abbrev-table)
1486 (set (make-local-variable 'comint-dynamic-complete-functions) 1491 (set (make-local-variable 'comint-dynamic-complete-functions)
1487 sh-dynamic-complete-functions) 1492 sh-dynamic-complete-functions)
1493 (add-hook 'completion-at-point-functions 'comint-completion-at-point nil t)
1488 ;; we can't look if previous line ended with `\' 1494 ;; we can't look if previous line ended with `\'
1489 (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*") 1495 (set (make-local-variable 'comint-prompt-regexp) "^[ \t]*")
1490 (set (make-local-variable 'imenu-case-fold-search) nil) 1496 (set (make-local-variable 'imenu-case-fold-search) nil)
@@ -4109,20 +4115,6 @@ The document is bounded by `sh-here-document-word'."
4109 4115
4110;; various other commands 4116;; various other commands
4111 4117
4112(autoload 'comint-dynamic-complete "comint"
4113 "Dynamically perform completion at point." t)
4114
4115(autoload 'shell-dynamic-complete-command "shell"
4116 "Dynamically complete the command at point." t)
4117
4118(autoload 'comint-dynamic-complete-filename "comint"
4119 "Dynamically complete the filename at point." t)
4120
4121(autoload 'shell-dynamic-complete-environment-variable "shell"
4122 "Dynamically complete the environment variable at point." t)
4123
4124
4125
4126(defun sh-beginning-of-command () 4118(defun sh-beginning-of-command ()
4127 ;; FIXME: Redefine using SMIE. 4119 ;; FIXME: Redefine using SMIE.
4128 "Move point to successive beginnings of commands." 4120 "Move point to successive beginnings of commands."
diff --git a/lisp/server.el b/lisp/server.el
index 6d34df351ca..4fd55bcf6d1 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -94,7 +94,6 @@
94 (setq val t) 94 (setq val t)
95 (unless load-in-progress 95 (unless load-in-progress
96 (message "Local sockets unsupported, using TCP sockets"))) 96 (message "Local sockets unsupported, using TCP sockets")))
97 (when val (random t))
98 (set-default sym val)) 97 (set-default sym val))
99 :group 'server 98 :group 'server
100 :type 'boolean 99 :type 'boolean
diff --git a/lisp/simple.el b/lisp/simple.el
index 1080757f7d2..b7a24f4f970 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -365,7 +365,6 @@ Other major modes are defined by comparison with this one."
365 (define-key map ">" 'end-of-buffer) 365 (define-key map ">" 'end-of-buffer)
366 (define-key map "<" 'beginning-of-buffer) 366 (define-key map "<" 'beginning-of-buffer)
367 (define-key map "g" 'revert-buffer) 367 (define-key map "g" 'revert-buffer)
368 (define-key map "z" 'kill-this-buffer)
369 map)) 368 map))
370 369
371(put 'special-mode 'mode-class 'special) 370(put 'special-mode 'mode-class 'special)
@@ -1887,9 +1886,10 @@ as an argument limits undo to changes within the current region."
1887 ;; so, ask the user whether she wants to skip the redo/undo pair. 1886 ;; so, ask the user whether she wants to skip the redo/undo pair.
1888 (let ((equiv (gethash pending-undo-list undo-equiv-table))) 1887 (let ((equiv (gethash pending-undo-list undo-equiv-table)))
1889 (or (eq (selected-window) (minibuffer-window)) 1888 (or (eq (selected-window) (minibuffer-window))
1890 (setq message (if undo-in-region 1889 (setq message (format "%s%s!"
1891 (if equiv "Redo in region!" "Undo in region!") 1890 (if (or undo-no-redo (not equiv))
1892 (if equiv "Redo!" "Undo!")))) 1891 "Undo" "Redo")
1892 (if undo-in-region " in region" ""))))
1893 (when (and (consp equiv) undo-no-redo) 1893 (when (and (consp equiv) undo-no-redo)
1894 ;; The equiv entry might point to another redo record if we have done 1894 ;; The equiv entry might point to another redo record if we have done
1895 ;; undo-redo-undo-redo-... so skip to the very last equiv. 1895 ;; undo-redo-undo-redo-... so skip to the very last equiv.
@@ -6961,6 +6961,32 @@ See also `normal-erase-is-backspace'."
6961(defvar vis-mode-saved-buffer-invisibility-spec nil 6961(defvar vis-mode-saved-buffer-invisibility-spec nil
6962 "Saved value of `buffer-invisibility-spec' when Visible mode is on.") 6962 "Saved value of `buffer-invisibility-spec' when Visible mode is on.")
6963 6963
6964(define-minor-mode read-only-mode
6965 "Change whether the current buffer is read-only.
6966With prefix argument ARG, make the buffer read-only if ARG is
6967positive, otherwise make it writable. If buffer is read-only
6968and `view-read-only' is non-nil, enter view mode.
6969
6970Do not call this from a Lisp program unless you really intend to
6971do the same thing as the \\[toggle-read-only] command, including
6972possibly enabling or disabling View mode. Also, note that this
6973command works by setting the variable `buffer-read-only', which
6974does not affect read-only regions caused by text properties. To
6975ignore read-only status in a Lisp program (whether due to text
6976properties or buffer state), bind `inhibit-read-only' temporarily
6977to a non-nil value."
6978 :variable buffer-read-only
6979 (cond
6980 ((and (not buffer-read-only) view-mode)
6981 (View-exit-and-edit)
6982 (make-local-variable 'view-read-only)
6983 (setq view-read-only t)) ; Must leave view mode.
6984 ((and buffer-read-only view-read-only
6985 ;; If view-mode is already active, `view-mode-enter' is a nop.
6986 (not view-mode)
6987 (not (eq (get major-mode 'mode-class) 'special)))
6988 (view-mode-enter))))
6989
6964(define-minor-mode visible-mode 6990(define-minor-mode visible-mode
6965 "Toggle making all invisible text temporarily visible (Visible mode). 6991 "Toggle making all invisible text temporarily visible (Visible mode).
6966With a prefix argument ARG, enable Visible mode if ARG is 6992With a prefix argument ARG, enable Visible mode if ARG is
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index 34d69a74369..b6e1d0a58f2 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -77,7 +77,7 @@ The variables `v1' and `v2' are still set when calling this.")
77 "Function for transforming a skeleton proxy's aliases' variable value.") 77 "Function for transforming a skeleton proxy's aliases' variable value.")
78(defvaralias 'skeleton-filter 'skeleton-filter-function) 78(defvaralias 'skeleton-filter 'skeleton-filter-function)
79 79
80(defvar skeleton-untabify t 80(defvar skeleton-untabify nil ; bug#12223
81 "When non-nil untabifies when deleting backwards with element -ARG.") 81 "When non-nil untabifies when deleting backwards with element -ARG.")
82 82
83(defvar skeleton-newline-indent-rigidly nil 83(defvar skeleton-newline-indent-rigidly nil
diff --git a/lisp/term.el b/lisp/term.el
index 014adb610b4..d5f35006357 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -615,28 +615,6 @@ executed once when the buffer is created."
615 :type 'hook 615 :type 'hook
616 :group 'term) 616 :group 'term)
617 617
618(defvar term-signals-menu
619 (let ((map (make-sparse-keymap "Signals")))
620 (define-key map [eof]
621 '(menu-item "EOF" term-send-eof
622 :help "Send an EOF to the current buffer's process"))
623 (define-key map [kill]
624 '(menu-item "KILL" term-kill-subjob
625 :help "Send kill signal to the current subjob"))
626 (define-key map [quit]
627 '(menu-item "QUIT" term-quit-subjob
628 :help "Send quit signal to the current subjob."))
629 (define-key map [cont]
630 '(menu-item "CONT" term-continue-subjob
631 :help "Send CONT signal to process buffer's process group"))
632 (define-key map [stop]
633 '(menu-item "STOP" term-stop-subjob
634 :help "Stop the current subjob"))
635 (define-key map [brk]
636 '(menu-item "BREAK" term-interrupt-subjob
637 :help "Interrupt the current subjob"))
638 (cons "Signals" map)))
639
640(defvar term-mode-map 618(defvar term-mode-map
641 (let ((map (make-sparse-keymap))) 619 (let ((map (make-sparse-keymap)))
642 (define-key map "\ep" 'term-previous-input) 620 (define-key map "\ep" 'term-previous-input)
@@ -667,69 +645,61 @@ executed once when the buffer is created."
667 (define-key map "\C-c\C-k" 'term-char-mode) 645 (define-key map "\C-c\C-k" 'term-char-mode)
668 (define-key map "\C-c\C-j" 'term-line-mode) 646 (define-key map "\C-c\C-j" 'term-line-mode)
669 (define-key map "\C-c\C-q" 'term-pager-toggle) 647 (define-key map "\C-c\C-q" 'term-pager-toggle)
670 648 ;; completion: (line mode only)
671 ;; completion: (line mode only) 649 (easy-menu-define nil map "Complete menu for Term mode."
672 (let ((completion-menu (make-sparse-keymap "Complete"))) 650 '("Complete"
673 (define-key map [menu-bar completion] 651 ["Complete Before Point" term-dynamic-complete t]
674 (cons "Complete" completion-menu)) 652 ["Complete File Name" term-dynamic-complete-filename t]
675 (define-key completion-menu [complete-expand] 653 ["File Completion Listing" term-dynamic-list-filename-completions t]
676 '("Expand File Name" . term-replace-by-expanded-filename)) 654 ["Expand File Name" term-replace-by-expanded-filename t]))
677 (define-key completion-menu [complete-listing]
678 '("File Completion Listing" . term-dynamic-list-filename-completions))
679 (define-key completion-menu [complete-file]
680 '("Complete File Name" . term-dynamic-complete-filename))
681 (define-key completion-menu [complete]
682 '("Complete Before Point" . term-dynamic-complete)))
683
684 ;; Input history: (line mode only) 655 ;; Input history: (line mode only)
685 (let ((inout-menu (make-sparse-keymap "In/Out"))) 656 (easy-menu-define nil map "In/Out menu for Term mode."
686 (define-key map [menu-bar inout] 657 '("In/Out"
687 (cons "In/Out" inout-menu)) 658 ["Expand History Before Point" term-replace-by-expanded-history
688 (define-key inout-menu [kill-output] 659 term-input-autoexpand]
689 '("Kill Current Output Group" . term-kill-output)) 660 ["List Input History" term-dynamic-list-input-ring t]
690 (define-key inout-menu [next-prompt] 661 ["Previous Input" term-previous-input t]
691 '("Forward Output Group" . term-next-prompt)) 662 ["Next Input" term-next-input t]
692 (define-key inout-menu [previous-prompt] 663 ["Previous Matching Current Input"
693 '("Backward Output Group" . term-previous-prompt)) 664 term-previous-matching-input-from-input t]
694 (define-key inout-menu [show-maximum-output] 665 ["Next Matching Current Input" term-next-matching-input-from-input t]
695 '("Show Maximum Output" . term-show-maximum-output)) 666 ["Previous Matching Input..." term-previous-matching-input t]
696 (define-key inout-menu [show-output] 667 ["Next Matching Input..." term-next-matching-input t]
697 '("Show Current Output Group" . term-show-output)) 668 ["Backward Matching Input..." term-backward-matching-input t]
698 (define-key inout-menu [kill-input] 669 ["Forward Matching Input..." term-forward-matching-input t]
699 '("Kill Current Input" . term-kill-input)) 670 ["Copy Old Input" term-copy-old-input t]
700 (define-key inout-menu [copy-input] 671 ["Kill Current Input" term-kill-input t]
701 '("Copy Old Input" . term-copy-old-input)) 672 ["Show Current Output Group" term-show-output t]
702 (define-key inout-menu [forward-matching-history] 673 ["Show Maximum Output" term-show-maximum-output t]
703 '("Forward Matching Input..." . term-forward-matching-input)) 674 ["Backward Output Group" term-previous-prompt t]
704 (define-key inout-menu [backward-matching-history] 675 ["Forward Output Group" term-next-prompt t]
705 '("Backward Matching Input..." . term-backward-matching-input)) 676 ["Kill Current Output Group" term-kill-output t]))
706 (define-key inout-menu [next-matching-history] 677 map)
707 '("Next Matching Input..." . term-next-matching-input)) 678 "Keymap for Term mode.")
708 (define-key inout-menu [previous-matching-history]
709 '("Previous Matching Input..." . term-previous-matching-input))
710 (define-key inout-menu [next-matching-history-from-input]
711 '("Next Matching Current Input" . term-next-matching-input-from-input))
712 (define-key inout-menu [previous-matching-history-from-input]
713 '("Previous Matching Current Input" .
714 term-previous-matching-input-from-input))
715 (define-key inout-menu [next-history]
716 '("Next Input" . term-next-input))
717 (define-key inout-menu [previous-history]
718 '("Previous Input" . term-previous-input))
719 (define-key inout-menu [list-history]
720 '("List Input History" . term-dynamic-list-input-ring))
721 (define-key inout-menu [expand-history]
722 '("Expand History Before Point" . term-replace-by-expanded-history)))
723
724 (define-key map [menu-bar signals] term-signals-menu)
725
726 map))
727 679
728(defvar term-escape-char nil 680(defvar term-escape-char nil
729 "Escape character for char sub-mode of term mode. 681 "Escape character for char sub-mode of term mode.
730Do not change it directly; use `term-set-escape-char' instead.") 682Do not change it directly; use `term-set-escape-char' instead.")
731 683
732(defvar term-pager-break-map nil) 684(defvar term-pager-break-map
685 (let ((map (make-keymap)))
686 ;; (dotimes (i 128)
687 ;; (define-key map (make-string 1 i) 'term-send-raw))
688 (define-key map "\e" (lookup-key (current-global-map) "\e"))
689 (define-key map "\C-x" (lookup-key (current-global-map) "\C-x"))
690 (define-key map "\C-u" (lookup-key (current-global-map) "\C-u"))
691 (define-key map " " 'term-pager-page)
692 (define-key map "\r" 'term-pager-line)
693 (define-key map "?" 'term-pager-help)
694 (define-key map "h" 'term-pager-help)
695 (define-key map "b" 'term-pager-back-page)
696 (define-key map "\177" 'term-pager-back-line)
697 (define-key map "q" 'term-pager-discard)
698 (define-key map "D" 'term-pager-disable)
699 (define-key map "<" 'term-pager-bob)
700 (define-key map ">" 'term-pager-eob)
701 map)
702 "Keymap used in Term pager mode.")
733 703
734(defvar term-ptyp t 704(defvar term-ptyp t
735 "True if communications via pty; false if by pipe. Buffer local. 705 "True if communications via pty; false if by pipe. Buffer local.
@@ -750,7 +720,6 @@ Buffer local variable.")
750; assuming this is Emacs 19.20 or newer. 720; assuming this is Emacs 19.20 or newer.
751(defvar term-pager-filter t) 721(defvar term-pager-filter t)
752 722
753(put 'term-replace-by-expanded-history 'menu-enable 'term-input-autoexpand)
754(put 'term-input-ring 'permanent-local t) 723(put 'term-input-ring 'permanent-local t)
755(put 'term-input-ring-index 'permanent-local t) 724(put 'term-input-ring-index 'permanent-local t)
756(put 'term-input-autoexpand 'permanent-local t) 725(put 'term-input-autoexpand 'permanent-local t)
@@ -879,28 +848,6 @@ is buffer-local."
879 :group 'term 848 :group 'term
880 :type 'integer) 849 :type 'integer)
881 850
882(defvar term-terminal-menu
883 (if (featurep 'xemacs)
884 '("Terminal"
885 [ "Character mode" term-char-mode (term-in-line-mode)]
886 [ "Line mode" term-line-mode (term-in-char-mode)]
887 [ "Enable paging" term-pager-toggle (not term-pager-count)]
888 [ "Disable paging" term-pager-toggle term-pager-count])
889 (let ((map (make-sparse-keymap "Terminal")))
890 (define-key map [terminal-pager-enable]
891 '(menu-item "Enable paging" term-fake-pager-enable
892 :help "Enable paging feature"))
893 (define-key map [terminal-pager-disable]
894 '(menu-item "Disable paging" term-fake-pager-disable
895 :help "Disable paging feature"))
896 (define-key map [terminal-char-mode]
897 '(menu-item "Character mode" term-char-mode
898 :help "Switch to char (raw) sub-mode of term mode"))
899 (define-key map [terminal-line-mode]
900 '(menu-item "Line mode" term-line-mode
901 :help "Switch to line (cooked) sub-mode of term mode"))
902 (cons "Terminal" map))))
903
904;; Set up term-raw-map, etc. 851;; Set up term-raw-map, etc.
905 852
906(defvar term-raw-map 853(defvar term-raw-map
@@ -920,9 +867,7 @@ is buffer-local."
920 867
921 (if (featurep 'xemacs) 868 (if (featurep 'xemacs)
922 (define-key map [button2] 'term-mouse-paste) 869 (define-key map [button2] 'term-mouse-paste)
923 (define-key map [mouse-2] 'term-mouse-paste) 870 (define-key map [mouse-2] 'term-mouse-paste))
924 (define-key map [menu-bar terminal] term-terminal-menu)
925 (define-key map [menu-bar signals] term-signals-menu))
926 (define-key map [up] 'term-send-up) 871 (define-key map [up] 'term-send-up)
927 (define-key map [down] 'term-send-down) 872 (define-key map [down] 'term-send-down)
928 (define-key map [right] 'term-send-right) 873 (define-key map [right] 'term-send-right)
@@ -941,6 +886,46 @@ is buffer-local."
941 map) 886 map)
942 "Keyboard map for sending characters directly to the inferior process.") 887 "Keyboard map for sending characters directly to the inferior process.")
943 888
889(easy-menu-define term-terminal-menu
890 (list term-mode-map term-raw-map term-pager-break-map)
891 "Terminal menu for Term mode."
892 '("Terminal"
893 ["Line mode" term-line-mode :active (term-in-char-mode)
894 :help "Switch to line (cooked) sub-mode of term mode"]
895 ["Character mode" term-char-mode :active (term-in-line-mode)
896 :help "Switch to char (raw) sub-mode of term mode"]
897 ["Paging" term-pager-toggle :style toggle :selected term-pager-count
898 :help "Toggle paging feature"]))
899
900(easy-menu-define term-signals-menu
901 (list term-mode-map term-raw-map term-pager-break-map)
902 "Signals menu for Term mode."
903 '("Signals"
904 ["BREAK" term-interrupt-subjob :active t
905 :help "Interrupt the current subjob"]
906 ["STOP" term-stop-subjob :active t :help "Stop the current subjob"]
907 ["CONT" term-continue-subjob :active t
908 :help "Send CONT signal to process buffer's process group"]
909 ["QUIT" term-quit-subjob :active t
910 :help "Send quit signal to the current subjob"]
911 ["KILL" term-kill-subjob :active t
912 :help "Send kill signal to the current subjob"]
913 ["EOF" term-send-eof :active t
914 :help "Send an EOF to the current buffer's process"]))
915
916(easy-menu-define term-pager-menu term-pager-break-map
917 "Menu for Term pager mode."
918 '("More pages?"
919 ["1 page forwards" term-pager-page t]
920 ["1 page backwards" term-pager-back-page t]
921 ["1 line backwards" term-pager-back-line t]
922 ["1 line forwards" term-pager-line t]
923 ["Goto to beginning" term-pager-bob t]
924 ["Goto to end" term-pager-eob t]
925 ["Discard remaining output" term-pager-discard t]
926 ["Disable paging" term-pager-toggle t]
927 ["Help" term-pager-help t]))
928
944(defvar term-raw-escape-map 929(defvar term-raw-escape-map
945 (let ((map (make-sparse-keymap))) 930 (let ((map (make-sparse-keymap)))
946 (set-keymap-parent map 'Control-X-prefix) 931 (set-keymap-parent map 'Control-X-prefix)
@@ -1151,9 +1136,8 @@ Entry to this mode runs the hooks on `term-mode-hook'."
1151 1136
1152 (set (make-local-variable 'font-lock-defaults) '(nil t)) 1137 (set (make-local-variable 'font-lock-defaults) '(nil t))
1153 1138
1154 (when (featurep 'xemacs) 1139 (easy-menu-add term-terminal-menu)
1155 (set-buffer-menubar 1140 (easy-menu-add term-signals-menu)
1156 (append current-menubar (list term-terminal-menu))))
1157 (or term-input-ring 1141 (or term-input-ring
1158 (setq term-input-ring (make-ring term-input-ring-size))) 1142 (setq term-input-ring (make-ring term-input-ring-size)))
1159 (term-update-mode-line)) 1143 (term-update-mode-line))
@@ -1291,6 +1275,8 @@ intervention from Emacs, except for the escape character (usually C-c)."
1291 (when (term-in-line-mode) 1275 (when (term-in-line-mode)
1292 (setq term-old-mode-map (current-local-map)) 1276 (setq term-old-mode-map (current-local-map))
1293 (use-local-map term-raw-map) 1277 (use-local-map term-raw-map)
1278 (easy-menu-add term-terminal-menu)
1279 (easy-menu-add term-signals-menu)
1294 1280
1295 ;; Send existing partial line to inferior (without newline). 1281 ;; Send existing partial line to inferior (without newline).
1296 (let ((pmark (process-mark (get-buffer-process (current-buffer)))) 1282 (let ((pmark (process-mark (get-buffer-process (current-buffer))))
@@ -1315,8 +1301,31 @@ you type \\[term-send-input] which sends the current line to the inferior."
1315 (term-update-mode-line))) 1301 (term-update-mode-line)))
1316 1302
1317(defun term-update-mode-line () 1303(defun term-update-mode-line ()
1318 (let ((term-mode (if (term-in-char-mode) "char" "line")) 1304 (let ((term-mode
1319 (term-page (when (term-pager-enabled) " page")) 1305 (if (term-in-char-mode)
1306 (propertize "char"
1307 'help-echo "mouse-1: Switch to line mode"
1308 'mouse-face 'mode-line-highlight
1309 'local-map
1310 '(keymap
1311 (mode-line keymap (down-mouse-1 . term-line-mode))))
1312 (propertize "line"
1313 'help-echo "mouse-1: Switch to char mode"
1314 'mouse-face 'mode-line-highlight
1315 'local-map
1316 '(keymap
1317 (mode-line keymap (down-mouse-1 . term-char-mode))))))
1318 (term-page
1319 (when (term-pager-enabled)
1320 (concat " "
1321 (propertize
1322 "page"
1323 'help-echo "mouse-1: Disable paging"
1324 'mouse-face 'mode-line-highlight
1325 'local-map
1326 '(keymap
1327 (mode-line keymap (down-mouse-1 .
1328 term-pager-toggle)))))))
1320 (serial-item-speed) 1329 (serial-item-speed)
1321 (serial-item-config) 1330 (serial-item-config)
1322 (proc (get-buffer-process (current-buffer)))) 1331 (proc (get-buffer-process (current-buffer))))
@@ -3463,54 +3472,13 @@ The top-most line is line 0."
3463;; The page is full, so enter "pager" mode, and wait for input. 3472;; The page is full, so enter "pager" mode, and wait for input.
3464 3473
3465(defun term-process-pager () 3474(defun term-process-pager ()
3466 (when (not term-pager-break-map)
3467 (let* ((map (make-keymap))
3468 ;; (i 0)
3469 tmp)
3470 ;; (while (< i 128)
3471 ;; (define-key map (make-string 1 i) 'term-send-raw)
3472 ;; (setq i (1+ i)))
3473 (define-key map "\e"
3474 (lookup-key (current-global-map) "\e"))
3475 (define-key map "\C-x"
3476 (lookup-key (current-global-map) "\C-x"))
3477 (define-key map "\C-u"
3478 (lookup-key (current-global-map) "\C-u"))
3479 (define-key map " " 'term-pager-page)
3480 (define-key map "\r" 'term-pager-line)
3481 (define-key map "?" 'term-pager-help)
3482 (define-key map "h" 'term-pager-help)
3483 (define-key map "b" 'term-pager-back-page)
3484 (define-key map "\177" 'term-pager-back-line)
3485 (define-key map "q" 'term-pager-discard)
3486 (define-key map "D" 'term-pager-disable)
3487 (define-key map "<" 'term-pager-bob)
3488 (define-key map ">" 'term-pager-eob)
3489
3490 ;; Add menu bar.
3491 (unless (featurep 'xemacs)
3492 (define-key map [menu-bar terminal] term-terminal-menu)
3493 (define-key map [menu-bar signals] term-signals-menu)
3494 (setq tmp (make-sparse-keymap "More pages?"))
3495 (define-key tmp [help] '("Help" . term-pager-help))
3496 (define-key tmp [disable]
3497 '("Disable paging" . term-fake-pager-disable))
3498 (define-key tmp [discard]
3499 '("Discard remaining output" . term-pager-discard))
3500 (define-key tmp [eob] '("Goto to end" . term-pager-eob))
3501 (define-key tmp [bob] '("Goto to beginning" . term-pager-bob))
3502 (define-key tmp [line] '("1 line forwards" . term-pager-line))
3503 (define-key tmp [bline] '("1 line backwards" . term-pager-back-line))
3504 (define-key tmp [back] '("1 page backwards" . term-pager-back-page))
3505 (define-key tmp [page] '("1 page forwards" . term-pager-page))
3506 (define-key map [menu-bar page] (cons "More pages?" tmp))
3507 )
3508
3509 (setq term-pager-break-map map)))
3510 ;; (let ((process (get-buffer-process (current-buffer)))) 3475 ;; (let ((process (get-buffer-process (current-buffer))))
3511 ;; (stop-process process)) 3476 ;; (stop-process process))
3512 (setq term-pager-old-local-map (current-local-map)) 3477 (setq term-pager-old-local-map (current-local-map))
3513 (use-local-map term-pager-break-map) 3478 (use-local-map term-pager-break-map)
3479 (easy-menu-add term-terminal-menu)
3480 (easy-menu-add term-signals-menu)
3481 (easy-menu-add term-pager-menu)
3514 (make-local-variable 'term-old-mode-line-format) 3482 (make-local-variable 'term-old-mode-line-format)
3515 (setq term-old-mode-line-format mode-line-format) 3483 (setq term-old-mode-line-format mode-line-format)
3516 (setq mode-line-format 3484 (setq mode-line-format
@@ -3591,14 +3559,6 @@ The top-most line is line 0."
3591 (interactive) 3559 (interactive)
3592 (if (term-pager-enabled) (term-pager-disable) (term-pager-enable))) 3560 (if (term-pager-enabled) (term-pager-disable) (term-pager-enable)))
3593 3561
3594(unless (featurep 'xemacs)
3595 (defalias 'term-fake-pager-enable 'term-pager-toggle)
3596 (defalias 'term-fake-pager-disable 'term-pager-toggle)
3597 (put 'term-char-mode 'menu-enable '(term-in-line-mode))
3598 (put 'term-line-mode 'menu-enable '(term-in-char-mode))
3599 (put 'term-fake-pager-enable 'menu-enable '(not term-pager-count))
3600 (put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
3601
3602(defun term-pager-help () 3562(defun term-pager-help ()
3603 "Provide help on commands available in a terminal-emulator **MORE** break." 3563 "Provide help on commands available in a terminal-emulator **MORE** break."
3604 (interactive) 3564 (interactive)
diff --git a/lisp/type-break.el b/lisp/type-break.el
index f0c81125f0c..8a95508d939 100644
--- a/lisp/type-break.el
+++ b/lisp/type-break.el
@@ -577,7 +577,6 @@ as per the function `type-break-schedule'."
577 (unless type-break-terse-messages 577 (unless type-break-terse-messages
578 (message "Press any key to resume from typing break.")) 578 (message "Press any key to resume from typing break."))
579 579
580 (random t)
581 (let* ((len (length type-break-demo-functions)) 580 (let* ((len (length type-break-demo-functions))
582 (idx (random len)) 581 (idx (random len))
583 (fn (nth idx type-break-demo-functions))) 582 (fn (nth idx type-break-demo-functions)))
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index 2a672623c01..ae1a3cf92f8 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -394,7 +394,7 @@ REV is the revision to check out."
394 (if vc-cvs-use-edit 394 (if vc-cvs-use-edit
395 (vc-cvs-command nil 0 file "edit") 395 (vc-cvs-command nil 0 file "edit")
396 (set-file-modes file (logior (file-modes file) 128)) 396 (set-file-modes file (logior (file-modes file) 128))
397 (if (equal file buffer-file-name) (toggle-read-only -1)))) 397 (if (equal file buffer-file-name) (read-only-mode -1))))
398 ;; Check out a particular revision (or recreate the file). 398 ;; Check out a particular revision (or recreate the file).
399 (vc-file-setprop file 'vc-working-revision nil) 399 (vc-file-setprop file 'vc-working-revision nil)
400 (apply 'vc-cvs-command nil 0 file 400 (apply 'vc-cvs-command nil 0 file
@@ -1178,7 +1178,11 @@ is non-nil."
1178 (parse-time-string (concat time " +0000"))))) 1178 (parse-time-string (concat time " +0000")))))
1179 (cond ((and (not (string-match "\\+" time)) 1179 (cond ((and (not (string-match "\\+" time))
1180 (car parsed-time) 1180 (car parsed-time)
1181 (equal mtime (apply 'encode-time parsed-time))) 1181 ;; Compare just the seconds part of the file time,
1182 ;; since CVS file time stamp resolution is just 1 second.
1183 (let ((ptime (apply 'encode-time parsed-time)))
1184 (and (eq (car mtime) (car ptime))
1185 (eq (cadr mtime) (cadr ptime)))))
1182 (vc-file-setprop file 'vc-checkout-time mtime) 1186 (vc-file-setprop file 'vc-checkout-time mtime)
1183 (if set-state (vc-file-setprop file 'vc-state 'up-to-date))) 1187 (if set-state (vc-file-setprop file 'vc-state 'up-to-date)))
1184 (t 1188 (t
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index ddb9565544d..1ef4faaa008 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1133,7 +1133,7 @@ For old-style locking-based version control systems, like RCS:
1133 (let ((visited (get-file-buffer file))) 1133 (let ((visited (get-file-buffer file)))
1134 (when visited 1134 (when visited
1135 (with-current-buffer visited 1135 (with-current-buffer visited
1136 (toggle-read-only -1)))))) 1136 (read-only-mode -1))))))
1137 ;; Allow user to revert files with no changes 1137 ;; Allow user to revert files with no changes
1138 (save-excursion 1138 (save-excursion
1139 (dolist (file files) 1139 (dolist (file files)
@@ -1344,7 +1344,7 @@ After check-out, runs the normal hook `vc-checkout-hook'."
1344 ;; Maybe the backend is not installed ;-( 1344 ;; Maybe the backend is not installed ;-(
1345 (when writable 1345 (when writable
1346 (let ((buf (get-file-buffer file))) 1346 (let ((buf (get-file-buffer file)))
1347 (when buf (with-current-buffer buf (toggle-read-only -1))))) 1347 (when buf (with-current-buffer buf (read-only-mode -1)))))
1348 (signal (car err) (cdr err)))) 1348 (signal (car err) (cdr err))))
1349 `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit) 1349 `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit)
1350 (not writable)) 1350 (not writable))
diff --git a/lisp/window.el b/lisp/window.el
index 142e80e1666..f73c85e991b 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -73,6 +73,108 @@ are not altered by this macro (unless they are altered in BODY)."
73 (when (window-live-p save-selected-window-window) 73 (when (window-live-p save-selected-window-window)
74 (select-window save-selected-window-window 'norecord)))))) 74 (select-window save-selected-window-window 'norecord))))))
75 75
76(defvar temp-buffer-window-setup-hook nil
77 "Normal hook run by `with-temp-buffer-window' before buffer display.
78This hook is run by `with-temp-buffer-window' with the buffer to be
79displayed current.")
80
81(defvar temp-buffer-window-show-hook nil
82 "Normal hook run by `with-temp-buffer-window' after buffer display.
83This hook is run by `with-temp-buffer-window' with the buffer
84displayed and current and its window selected.")
85
86(defun temp-buffer-window-setup (buffer-or-name)
87 "Set up temporary buffer specified by BUFFER-OR-NAME
88Return the buffer."
89 (let ((old-dir default-directory)
90 (buffer (get-buffer-create buffer-or-name)))
91 (with-current-buffer buffer
92 (kill-all-local-variables)
93 (setq default-directory old-dir)
94 (delete-all-overlays)
95 (setq buffer-read-only nil)
96 (setq buffer-file-name nil)
97 (setq buffer-undo-list t)
98 (let ((inhibit-read-only t)
99 (inhibit-modification-hooks t))
100 (erase-buffer)
101 (run-hooks 'temp-buffer-window-setup-hook))
102 ;; Return the buffer.
103 buffer)))
104
105(defun temp-buffer-window-show (&optional buffer action)
106 "Show temporary buffer BUFFER in a window.
107Return the window showing BUFFER. Pass ACTION as action argument
108to `display-buffer'."
109 (let (window frame)
110 (with-current-buffer buffer
111 (set-buffer-modified-p nil)
112 (setq buffer-read-only t)
113 (goto-char (point-min))
114 (when (setq window (display-buffer buffer action))
115 (setq frame (window-frame window))
116 (unless (eq frame (selected-frame))
117 (raise-frame frame))
118 (setq minibuffer-scroll-window window)
119 (set-window-hscroll window 0)
120 (with-selected-window window
121 (run-hooks 'temp-buffer-window-show-hook)
122 (when temp-buffer-resize-mode
123 (resize-temp-buffer-window window)))
124 ;; Return the window.
125 window))))
126
127(defmacro with-temp-buffer-window (buffer-or-name action quit-function &rest body)
128 "Evaluate BODY and display buffer specified by BUFFER-OR-NAME.
129BUFFER-OR-NAME must specify either a live buffer or the name of a
130buffer. If no buffer with such a name exists, create one.
131
132Make sure the specified buffer is empty before evaluating BODY.
133Do not make that buffer current for BODY. Instead, bind
134`standard-output' to that buffer, so that output generated with
135`prin1' and similar functions in BODY goes into that buffer.
136
137After evaluating BODY, mark the specified buffer unmodified and
138read-only, and display it in a window via `display-buffer'. Pass
139ACTION as action argument to `display-buffer'. Automatically
140shrink the window used if `temp-buffer-resize-mode' is enabled.
141
142Return the value returned by BODY unless QUIT-FUNCTION specifies
143a function. In that case, run the function with two arguments -
144the window showing the specified buffer and the value returned by
145BODY - and return the value returned by that function.
146
147If the buffer is displayed on a new frame, the window manager may
148decide to select that frame. In that case, it's usually a good
149strategy if the function specified by QUIT-FUNCTION selects the
150window showing the buffer before reading a value from the
151minibuffer, for example, when asking a `yes-or-no-p' question.
152
153This construct is similar to `with-output-to-temp-buffer' but
154does neither put the buffer in help mode nor does it call
155`temp-buffer-show-function'. It also runs different hooks,
156namely `temp-buffer-window-setup-hook' (with the specified buffer
157current) and `temp-buffer-window-show-hook' (with the specified
158buffer current and the window showing it selected).
159
160Since this macro calls `display-buffer', the window displaying
161the buffer is usually not selected and the specified buffer
162usually not made current. QUIT-FUNCTION can override that."
163 (declare (debug t))
164 (let ((buffer (make-symbol "buffer"))
165 (window (make-symbol "window"))
166 (value (make-symbol "value")))
167 `(let* ((,buffer (temp-buffer-window-setup ,buffer-or-name))
168 (standard-output ,buffer)
169 ,window ,value)
170 (with-current-buffer ,buffer
171 (setq ,value (progn ,@body))
172 (setq ,window (temp-buffer-window-show ,buffer ,action)))
173
174 (if (functionp ,quit-function)
175 (funcall ,quit-function ,window ,value)
176 ,value))))
177
76;; The following two functions are like `window-next-sibling' and 178;; The following two functions are like `window-next-sibling' and
77;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so 179;; `window-prev-sibling' but the WINDOW argument is _not_ optional (so
78;; they don't substitute the selected window for nil), and they return 180;; they don't substitute the selected window for nil), and they return
@@ -271,19 +373,32 @@ windows horizontally arranged within WINDOW."
271 (setq walk-window-tree-window 373 (setq walk-window-tree-window
272 (window-right walk-window-tree-window)))))) 374 (window-right walk-window-tree-window))))))
273 375
274(defun walk-window-tree (fun &optional frame any) 376(defun walk-window-tree (fun &optional frame any minibuf)
275 "Run function FUN on each live window of FRAME. 377 "Run function FUN on each live window of FRAME.
276FUN must be a function with one argument - a window. FRAME must 378FUN must be a function with one argument - a window. FRAME must
277be a live frame and defaults to the selected one. ANY, if 379be a live frame and defaults to the selected one. ANY, if
278non-nil means to run FUN on all live and internal windows of 380non-nil, means to run FUN on all live and internal windows of
279FRAME. 381FRAME.
280 382
383Optional argument MINIBUF t means run FUN on FRAME's minibuffer
384window even if it isn't active. MINIBUF nil or omitted means run
385FUN on FRAME's minibuffer window only if it's active. In both
386cases the minibuffer window must be part of FRAME. MINIBUF
387neither nil nor t means never run FUN on the minibuffer window.
388
281This function performs a pre-order, depth-first traversal of the 389This function performs a pre-order, depth-first traversal of the
282window tree. If FUN changes the window tree, the result is 390window tree. If FUN changes the window tree, the result is
283unpredictable." 391unpredictable."
284 (let ((walk-window-tree-frame (window-normalize-frame frame))) 392 (setq frame (window-normalize-frame frame))
285 (walk-window-tree-1 393 (walk-window-tree-1 fun (frame-root-window frame) any)
286 fun (frame-root-window walk-window-tree-frame) any))) 394 (when (memq minibuf '(nil t))
395 ;; Run FUN on FRAME's minibuffer window if requested.
396 (let ((minibuffer-window (minibuffer-window frame)))
397 (when (and (window-live-p minibuffer-window)
398 (eq (window-frame minibuffer-window) frame)
399 (or (eq minibuf t)
400 (minibuffer-window-active-p minibuffer-window)))
401 (funcall fun minibuffer-window)))))
287 402
288(defun walk-window-subtree (fun &optional window any) 403(defun walk-window-subtree (fun &optional window any)
289 "Run function FUN on the subtree of windows rooted at WINDOW. 404 "Run function FUN on the subtree of windows rooted at WINDOW.
@@ -299,13 +414,19 @@ is unpredictable."
299 (setq window (window-normalize-window window)) 414 (setq window (window-normalize-window window))
300 (walk-window-tree-1 fun window any t)) 415 (walk-window-tree-1 fun window any t))
301 416
302(defun window-with-parameter (parameter &optional value frame any) 417(defun window-with-parameter (parameter &optional value frame any minibuf)
303 "Return first window on FRAME with PARAMETER non-nil. 418 "Return first window on FRAME with PARAMETER non-nil.
304FRAME defaults to the selected frame. Optional argument VALUE 419FRAME defaults to the selected frame. Optional argument VALUE
305non-nil means only return a window whose window-parameter value 420non-nil means only return a window whose window-parameter value
306for PARAMETER equals VALUE (comparison is done with `equal'). 421for PARAMETER equals VALUE (comparison is done with `equal').
307Optional argument ANY non-nil means consider internal windows 422Optional argument ANY non-nil means consider internal windows
308too." 423too.
424
425Optional argument MINIBUF t means consider FRAME's minibuffer
426window even if it isn't active. MINIBUF nil or omitted means
427consider FRAME's minibuffer window only if it's active. In both
428cases the minibuffer window must be part of FRAME. MINIBUF
429neither nil nor t means never consider the minibuffer window."
309 (let (this-value) 430 (let (this-value)
310 (catch 'found 431 (catch 'found
311 (walk-window-tree 432 (walk-window-tree
@@ -313,7 +434,7 @@ too."
313 (when (and (setq this-value (window-parameter window parameter)) 434 (when (and (setq this-value (window-parameter window parameter))
314 (or (not value) (equal value this-value))) 435 (or (not value) (equal value this-value)))
315 (throw 'found window))) 436 (throw 'found window)))
316 frame any)))) 437 frame any minibuf))))
317 438
318;;; Atomic windows. 439;;; Atomic windows.
319(defun window-atom-root (&optional window) 440(defun window-atom-root (&optional window)
@@ -338,6 +459,45 @@ WINDOW must be an internal window. Return WINDOW."
338 window t) 459 window t)
339 window)) 460 window))
340 461
462(defun display-buffer-in-atom-window (buffer alist)
463 "Display BUFFER in an atomic window.
464This function displays BUFFER in a new window that will be
465combined with an existing window to form an atomic window. If
466the existing window is already part of an atomic window, add the
467new window to that atomic window. Operations like `split-window'
468or `delete-window', when applied to a constituent of an atomic
469window, are applied atomically to the root of that atomic window.
470
471ALIST is an association list of symbols and values. The
472following symbols can be used.
473
474`window' specifies the existing window the new window shall be
475 combined with. Use `window-atom-root' to make the new window a
476 sibling of an atomic window's root. If an internal window is
477 specified here, all children of that window become part of the
478 atomic window too. If no window is specified, the new window
479 becomes a sibling of the selected window.
480
481`side' denotes the side of the existing window where the new
482 window shall be located. Valid values are `below', `right',
483 `above' and `left'. The default is `below'.
484
485The return value is the new window, nil when creating that window
486failed."
487 (let ((ignore-window-parameters t)
488 (window-combination-limit t)
489 (window (cdr (assq 'window alist)))
490 (side (cdr (assq 'side alist)))
491 new)
492 (setq window (window-normalize-window window))
493 ;; Split off new window
494 (when (setq new (split-window window nil side))
495 ;; Make sure we have a valid atomic window.
496 (window-make-atom (window-parent window))
497 ;; Display BUFFER in NEW and return NEW.
498 (window--display-buffer
499 buffer new 'window display-buffer-mark-dedicated))))
500
341(defun window--atom-check-1 (window) 501(defun window--atom-check-1 (window)
342 "Subroutine of `window--atom-check'." 502 "Subroutine of `window--atom-check'."
343 (when window 503 (when window
@@ -427,23 +587,273 @@ number of slots on that side."
427 (integer :tag "Number" :value 3 :size 5))) 587 (integer :tag "Number" :value 3 :size 5)))
428 :group 'windows) 588 :group 'windows)
429 589
590(defun window--major-non-side-window (&optional frame)
591 "Return the major non-side window of frame FRAME.
592The optional argument FRAME must be a live frame and defaults to
593the selected one.
594
595If FRAME has at least one side window, the major non-side window
596is either an internal non-side window such that all other
597non-side windows on FRAME descend from it, or the single live
598non-side window of FRAME. If FRAME has no side windows, return
599its root window."
600 (let ((frame (window-normalize-frame frame))
601 major sibling)
602 ;; Set major to the _last_ window found by `walk-window-tree' that
603 ;; is not a side window but has a side window as its sibling.
604 (walk-window-tree
605 (lambda (window)
606 (and (not (window-parameter window 'window-side))
607 (or (and (setq sibling (window-prev-sibling window))
608 (window-parameter sibling 'window-side))
609 (and (setq sibling (window-next-sibling window))
610 (window-parameter sibling 'window-side)))
611 (setq major window)))
612 frame t)
613 (or major (frame-root-window frame))))
614
615(defun window--major-side-window (side)
616 "Return major side window on SIDE.
617SIDE must be one of the symbols `left', `top', `right' or
618`bottom'. Return nil if no such window exists."
619 (let ((root (frame-root-window))
620 window)
621 ;; (1) If a window on the opposite side exists, return that window's
622 ;; sibling.
623 ;; (2) If the new window shall span the entire side, return the
624 ;; frame's root window.
625 ;; (3) If a window on an orthogonal side exists, return that
626 ;; window's sibling.
627 ;; (4) Otherwise return the frame's root window.
628 (cond
629 ((or (and (eq side 'left)
630 (setq window (window-with-parameter 'window-side 'right nil t)))
631 (and (eq side 'top)
632 (setq window (window-with-parameter 'window-side 'bottom nil t))))
633 (window-prev-sibling window))
634 ((or (and (eq side 'right)
635 (setq window (window-with-parameter 'window-side 'left nil t)))
636 (and (eq side 'bottom)
637 (setq window (window-with-parameter 'window-side 'top nil t))))
638 (window-next-sibling window))
639 ((memq side '(left right))
640 (cond
641 (window-sides-vertical
642 root)
643 ((setq window (window-with-parameter 'window-side 'top nil t))
644 (window-next-sibling window))
645 ((setq window (window-with-parameter 'window-side 'bottom nil t))
646 (window-prev-sibling window))
647 (t root)))
648 ((memq side '(top bottom))
649 (cond
650 ((not window-sides-vertical)
651 root)
652 ((setq window (window-with-parameter 'window-side 'left nil t))
653 (window-next-sibling window))
654 ((setq window (window-with-parameter 'window-side 'right nil t))
655 (window-prev-sibling window))
656 (t root))))))
657
658(defun display-buffer-in-major-side-window (buffer side slot &optional alist)
659 "Display BUFFER in a new window on SIDE of the selected frame.
660SIDE must be one of `left', `top', `right' or `bottom'. SLOT
661specifies the slot to use. ALIST is an association list of
662symbols and values as passed to `display-buffer-in-side-window'.
663This function may be called only if no window on SIDE exists yet.
664The new window automatically becomes the \"major\" side window on
665SIDE. Return the new window, nil if its creation window failed."
666 (let* ((root (frame-root-window))
667 (left-or-right (memq side '(left right)))
668 (size (or (assq 'size alist)
669 (/ (window-total-size (frame-root-window) left-or-right)
670 ;; By default use a fourth of the size of the
671 ;; frame's root window. This has to be made
672 ;; customizable via ALIST.
673 4)))
674 (major (window--major-side-window side))
675 (selected-window (selected-window))
676 (on-side (cond
677 ((eq side 'top) 'above)
678 ((eq side 'bottom) 'below)
679 (t side)))
680 ;; The following two bindings will tell `split-window' to take
681 ;; the space for the new window from `major' and not make a new
682 ;; parent window unless needed.
683 (window-combination-resize 'side)
684 (window-combination-limit nil)
685 (new (split-window major (- size) on-side))
686 fun)
687 (when new
688 ;; Initialize `window-side' parameter of new window to SIDE.
689 (set-window-parameter new 'window-side side)
690 ;; Install `window-slot' parameter of new window.
691 (set-window-parameter new 'window-slot slot)
692 ;; Install `delete-window' parameter thus making sure that when
693 ;; the new window is deleted, a side window on the opposite side
694 ;; does not get resized.
695 (set-window-parameter new 'delete-window 'delete-side-window)
696 ;; Install BUFFER in new window and return NEW.
697 (window--display-buffer buffer new 'window 'side))))
698
699(defun delete-side-window (window)
700 "Delete side window WINDOW."
701 (let ((window-combination-resize
702 (window-parameter (window-parent window) 'window-side))
703 (ignore-window-parameters t))
704 (delete-window window)))
705
706(defun display-buffer-in-side-window (buffer alist)
707 "Display BUFFER in a window on side SIDE of the selected frame.
708ALIST is an association list of symbols and values. The
709following symbols can be used:
710
711`side' denotes the side of the existing window where the new
712 window shall be located. Valid values are `bottom', `right',
713 `top' and `left'. The default is `bottom'.
714
715`slot' if non-nil, specifies the window slot where to display
716 BUFFER. A value of zero or nil means use the middle slot on
717 the specified side. A negative value means use a slot
718 preceding (that is, above or on the left of) the middle slot.
719 A positive value means use a slot following (that is, below or
720 on the right of) the middle slot. The default is zero."
721 (let ((side (or (cdr (assq 'side alist)) 'bottom))
722 (slot (or (cdr (assq 'slot alist)) 0))
723 new)
724 (cond
725 ((not (memq side '(top bottom left right)))
726 (error "Invalid side %s specified" side))
727 ((not (numberp slot))
728 (error "Invalid slot %s specified" slot)))
729
730 (let* ((major (window-with-parameter 'window-side side nil t))
731 ;; `major' is the major window on SIDE, `windows' the list of
732 ;; life windows on SIDE.
733 (windows
734 (when major
735 (let (windows)
736 (walk-window-tree
737 (lambda (window)
738 (when (eq (window-parameter window 'window-side) side)
739 (setq windows (cons window windows)))))
740 (nreverse windows))))
741 (slots (when major (max 1 (window-child-count major))))
742 (max-slots
743 (nth (cond
744 ((eq side 'left) 0)
745 ((eq side 'top) 1)
746 ((eq side 'right) 2)
747 ((eq side 'bottom) 3))
748 window-sides-slots))
749 (selected-window (selected-window))
750 window this-window this-slot prev-window next-window
751 best-window best-slot abs-slot new-window)
752
753 (cond
754 ((and (numberp max-slots) (<= max-slots 0))
755 ;; No side-slots available on this side. Don't create an error,
756 ;; just return nil.
757 nil)
758 ((not windows)
759 ;; No major window exists on this side, make one.
760 (display-buffer-in-major-side-window buffer side slot alist))
761 (t
762 ;; Scan windows on SIDE.
763 (catch 'found
764 (dolist (window windows)
765 (setq this-slot (window-parameter window 'window-slot))
766 (cond
767 ;; The following should not happen and probably be checked
768 ;; by window--side-check.
769 ((not (numberp this-slot)))
770 ((= this-slot slot)
771 ;; A window with a matching slot has been found.
772 (setq this-window window)
773 (throw 'found t))
774 (t
775 ;; Check if this window has a better slot value wrt the
776 ;; slot of the window we want.
777 (setq abs-slot
778 (if (or (and (> this-slot 0) (> slot 0))
779 (and (< this-slot 0) (< slot 0)))
780 (abs (- slot this-slot))
781 (+ (abs slot) (abs this-slot))))
782 (unless (and best-slot (<= best-slot abs-slot))
783 (setq best-window window)
784 (setq best-slot abs-slot))
785 (cond
786 ((<= this-slot slot)
787 (setq prev-window window))
788 ((not next-window)
789 (setq next-window window)))))))
790
791 ;; `this-window' is the first window with the same SLOT.
792 ;; `prev-window' is the window with the largest slot < SLOT. A new
793 ;; window will be created after it.
794 ;; `next-window' is the window with the smallest slot > SLOT. A new
795 ;; window will be created before it.
796 ;; `best-window' is the window with the smallest absolute difference
797 ;; of its slot and SLOT.
798
799 ;; Note: We dedicate the window used softly to its buffer to
800 ;; avoid that "other" (non-side) buffer display functions steal
801 ;; it from us. This must eventually become customizable via
802 ;; ALIST (or, better, avoided in the "other" functions).
803 (or (and this-window
804 ;; Reuse `this-window'.
805 (window--display-buffer buffer this-window 'reuse 'side))
806 (and (or (not max-slots) (< slots max-slots))
807 (or (and next-window
808 ;; Make new window before `next-window'.
809 (let ((next-side
810 (if (memq side '(left right)) 'above 'left))
811 (window-combination-resize 'side))
812 (setq window (split-window next-window nil next-side))
813 ;; When the new window is deleted, its space
814 ;; is returned to other side windows.
815 (set-window-parameter
816 window 'delete-window 'delete-side-window)
817 window))
818 (and prev-window
819 ;; Make new window after `prev-window'.
820 (let ((prev-side
821 (if (memq side '(left right)) 'below 'right))
822 (window-combination-resize 'side))
823 (setq window (split-window prev-window nil prev-side))
824 ;; When the new window is deleted, its space
825 ;; is returned to other side windows.
826 (set-window-parameter
827 window 'delete-window 'delete-side-window)
828 window)))
829 (set-window-parameter window 'window-slot slot)
830 (window--display-buffer buffer window 'window 'side))
831 (and best-window
832 ;; Reuse `best-window'.
833 (progn
834 ;; Give best-window the new slot value.
835 (set-window-parameter best-window 'window-slot slot)
836 (window--display-buffer buffer best-window 'reuse 'side)))))))))
837
430(defun window--side-check (&optional frame) 838(defun window--side-check (&optional frame)
431 "Check the window-side parameter of all windows on FRAME. 839 "Check the side window configuration of FRAME.
432FRAME defaults to the selected frame. If the configuration is 840FRAME defaults to the selected frame.
433invalid, reset all window-side parameters to nil. 841
434 842A valid side window configuration preserves the following two
435A valid configuration has to preserve the following invariant: 843invariants:
436 844
437- If a window has a non-nil window-side parameter, it must have a 845- If there exists a window whose window-side parameter is
438 parent window and the parent window's window-side parameter 846 non-nil, there must exist at least one live window whose
439 must be either nil or the same as for window. 847 window-side parameter is nil.
440 848
441- If windows with non-nil window-side parameters exist, there 849- If a window W has a non-nil window-side parameter (i) it must
442 must be at most one window of each side and non-side with a 850 have a parent window and that parent's window-side parameter
443 parent whose window-side parameter is nil and there must be no 851 must be either nil or the same as for W, and (ii) any child
444 leaf window whose window-side parameter is nil." 852 window of W must have the same window-side parameter as W.
445 (let (normal none left top right bottom 853
446 side parent parent-side) 854If the configuration is invalid, reset the window-side parameters
855of all windows on FRAME to nil."
856 (let (left top right bottom none side parent parent-side)
447 (when (or (catch 'reset 857 (when (or (catch 'reset
448 (walk-window-tree 858 (walk-window-tree
449 (lambda (window) 859 (lambda (window)
@@ -459,40 +869,34 @@ A valid configuration has to preserve the following invariant:
459 ;; A parent whose window-side is non-nil must 869 ;; A parent whose window-side is non-nil must
460 ;; have a child with the same window-side. 870 ;; have a child with the same window-side.
461 (throw 'reset t))) 871 (throw 'reset t)))
462 ;; Now check that there's more than one main window 872 ((not side)
463 ;; for any of none, left, top, right and bottom. 873 (when (window-buffer window)
464 ((eq side 'none) 874 ;; Record that we have at least one non-side,
465 (if none 875 ;; live window.
466 (throw 'reset t)
467 (setq none t))) 876 (setq none t)))
877 ((if (memq side '(left top))
878 (window-prev-sibling window)
879 (window-next-sibling window))
880 ;; Left and top major side windows must not have a
881 ;; previous sibling, right and bottom major side
882 ;; windows must not have a next sibling.
883 (throw 'reset t))
884 ;; Now check that there's no more than one major
885 ;; window for any of left, top, right and bottom.
468 ((eq side 'left) 886 ((eq side 'left)
469 (if left 887 (if left (throw 'reset t) (setq left t)))
470 (throw 'reset t)
471 (setq left t)))
472 ((eq side 'top) 888 ((eq side 'top)
473 (if top 889 (if top (throw 'reset t) (setq top t)))
474 (throw 'reset t)
475 (setq top t)))
476 ((eq side 'right) 890 ((eq side 'right)
477 (if right 891 (if right (throw 'reset t) (setq right t)))
478 (throw 'reset t)
479 (setq right t)))
480 ((eq side 'bottom) 892 ((eq side 'bottom)
481 (if bottom 893 (if bottom (throw 'reset t) (setq bottom t)))
482 (throw 'reset t) 894 (t
483 (setq bottom t))) 895 (throw 'reset t))))
484 ((window-buffer window)
485 ;; A leaf window without window-side parameter,
486 ;; record its existence.
487 (setq normal t))))
488 frame t)) 896 frame t))
489 (if none 897 ;; If there's a side window, there must be at least one
490 ;; At least one non-side window exists, so there must 898 ;; non-side window.
491 ;; be at least one side-window and no normal window. 899 (and (or left top right bottom) (not none)))
492 (or (not (or left top right bottom)) normal)
493 ;; No non-side window exists, so there must be no side
494 ;; window either.
495 (or left top right bottom)))
496 (walk-window-tree 900 (walk-window-tree
497 (lambda (window) 901 (lambda (window)
498 (set-window-parameter window 'window-side nil)) 902 (set-window-parameter window 'window-side nil))
@@ -516,7 +920,7 @@ unless it has no other choice (like when deleting a neighboring
516window).") 920window).")
517(make-variable-buffer-local 'window-size-fixed) 921(make-variable-buffer-local 'window-size-fixed)
518 922
519(defun window--size-ignore (window ignore) 923(defun window--size-ignore-p (window ignore)
520 "Return non-nil if IGNORE says to ignore size restrictions for WINDOW." 924 "Return non-nil if IGNORE says to ignore size restrictions for WINDOW."
521 (if (window-valid-p ignore) (eq window ignore) ignore)) 925 (if (window-valid-p ignore) (eq window ignore) ignore))
522 926
@@ -559,7 +963,7 @@ means ignore all of the above restrictions for all windows."
559 value) 963 value)
560 (with-current-buffer (window-buffer window) 964 (with-current-buffer (window-buffer window)
561 (cond 965 (cond
562 ((and (not (window--size-ignore window ignore)) 966 ((and (not (window--size-ignore-p window ignore))
563 (window-size-fixed-p window horizontal)) 967 (window-size-fixed-p window horizontal))
564 ;; The minimum size of a fixed size window is its size. 968 ;; The minimum size of a fixed size window is its size.
565 (window-total-size window horizontal)) 969 (window-total-size window horizontal))
@@ -588,7 +992,7 @@ means ignore all of the above restrictions for all windows."
588 (ceiling (or (frame-parameter frame 'scroll-bar-width) 14) 992 (ceiling (or (frame-parameter frame 'scroll-bar-width) 14)
589 (frame-char-width))) 993 (frame-char-width)))
590 (t 0))) 994 (t 0)))
591 (if (and (not (window--size-ignore window ignore)) 995 (if (and (not (window--size-ignore-p window ignore))
592 (numberp window-min-width)) 996 (numberp window-min-width))
593 window-min-width 997 window-min-width
594 0)))) 998 0))))
@@ -598,7 +1002,7 @@ means ignore all of the above restrictions for all windows."
598 (max (+ window-safe-min-height 1002 (max (+ window-safe-min-height
599 (if header-line-format 1 0) 1003 (if header-line-format 1 0)
600 (if mode-line-format 1 0)) 1004 (if mode-line-format 1 0))
601 (if (and (not (window--size-ignore window ignore)) 1005 (if (and (not (window--size-ignore-p window ignore))
602 (numberp window-min-height)) 1006 (numberp window-min-height))
603 window-min-height 1007 window-min-height
604 0)))))))) 1008 0))))))))
@@ -637,7 +1041,7 @@ ignore all of the above restrictions for all windows."
637 (max (- (window-min-size window horizontal ignore) 1041 (max (- (window-min-size window horizontal ignore)
638 (window-total-size window horizontal)) 1042 (window-total-size window horizontal))
639 delta)) 1043 delta))
640 ((window--size-ignore window ignore) 1044 ((window--size-ignore-p window ignore)
641 delta) 1045 delta)
642 ((> delta 0) 1046 ((> delta 0)
643 (if (window-size-fixed-p window horizontal) 1047 (if (window-size-fixed-p window horizontal)
@@ -719,7 +1123,7 @@ WINDOW can be resized in the desired direction. The function
719 ((eq sub window) 1123 ((eq sub window)
720 (setq skip (eq trail 'before))) 1124 (setq skip (eq trail 'before)))
721 (skip) 1125 (skip)
722 ((and (not (window--size-ignore window ignore)) 1126 ((and (not (window--size-ignore-p window ignore))
723 (window-size-fixed-p sub horizontal))) 1127 (window-size-fixed-p sub horizontal)))
724 (t 1128 (t
725 ;; We found a non-fixed-size child window. 1129 ;; We found a non-fixed-size child window.
@@ -809,7 +1213,7 @@ at least one other window can be enlarged appropriately."
809 ;; child window is fixed-size. 1213 ;; child window is fixed-size.
810 (while sub 1214 (while sub
811 (when (and (not (eq sub window)) 1215 (when (and (not (eq sub window))
812 (not (window--size-ignore sub ignore)) 1216 (not (window--size-ignore-p sub ignore))
813 (window-size-fixed-p sub horizontal)) 1217 (window-size-fixed-p sub horizontal))
814 (throw 'fixed delta)) 1218 (throw 'fixed delta))
815 (setq sub (window-right sub)))) 1219 (setq sub (window-right sub))))
@@ -849,7 +1253,7 @@ Optional argument NODOWN non-nil means do not check whether
849WINDOW itself (and its child windows) can be enlarged; check 1253WINDOW itself (and its child windows) can be enlarged; check
850only whether other windows can be shrunk appropriately." 1254only whether other windows can be shrunk appropriately."
851 (setq window (window-normalize-window window)) 1255 (setq window (window-normalize-window window))
852 (if (and (not (window--size-ignore window ignore)) 1256 (if (and (not (window--size-ignore-p window ignore))
853 (not nodown) (window-size-fixed-p window horizontal)) 1257 (not nodown) (window-size-fixed-p window horizontal))
854 ;; With IGNORE and NOWDON nil return zero if WINDOW has fixed 1258 ;; With IGNORE and NOWDON nil return zero if WINDOW has fixed
855 ;; size. 1259 ;; size.
@@ -1062,32 +1466,6 @@ windows nor the buffer list."
1062 (dolist (walk-windows-window (window-list-1 nil minibuf all-frames)) 1466 (dolist (walk-windows-window (window-list-1 nil minibuf all-frames))
1063 (funcall fun walk-windows-window)))) 1467 (funcall fun walk-windows-window))))
1064 1468
1065(defun window-point-1 (&optional window)
1066 "Return value of WINDOW's point.
1067WINDOW can be any live window and defaults to the selected one.
1068
1069This function is like `window-point' with one exception: If
1070WINDOW is selected, it returns the value of `point' of WINDOW's
1071buffer regardless of whether that buffer is current or not."
1072 (setq window (window-normalize-window window t))
1073 (if (eq window (selected-window))
1074 (with-current-buffer (window-buffer window)
1075 (point))
1076 (window-point window)))
1077
1078(defun set-window-point-1 (window pos)
1079 "Set value of WINDOW's point to POS.
1080WINDOW can be any live window and defaults to the selected one.
1081
1082This function is like `set-window-point' with one exception: If
1083WINDOW is selected, it moves `point' of WINDOW's buffer to POS
1084regardless of whether that buffer is current or not."
1085 (setq window (window-normalize-window window t))
1086 (if (eq window (selected-window))
1087 (with-current-buffer (window-buffer window)
1088 (goto-char pos))
1089 (set-window-point window pos)))
1090
1091(defun window-at-side-p (&optional window side) 1469(defun window-at-side-p (&optional window side)
1092 "Return t if WINDOW is at SIDE of its containing frame. 1470 "Return t if WINDOW is at SIDE of its containing frame.
1093WINDOW must be a valid window and defaults to the selected one. 1471WINDOW must be a valid window and defaults to the selected one.
@@ -1114,7 +1492,7 @@ SIDE can be any of the symbols `left', `top', `right' or
1114 (lambda (window) 1492 (lambda (window)
1115 (when (window-at-side-p window side) 1493 (when (window-at-side-p window side)
1116 (setq windows (cons window windows)))) 1494 (setq windows (cons window windows))))
1117 frame) 1495 frame nil 'nomini)
1118 (nreverse windows))) 1496 (nreverse windows)))
1119 1497
1120(defun window--in-direction-2 (window posn &optional horizontal) 1498(defun window--in-direction-2 (window posn &optional horizontal)
@@ -1129,12 +1507,25 @@ SIDE can be any of the symbols `left', `top', `right' or
1129 (- left posn) 1507 (- left posn)
1130 (- posn left (window-total-width window)))))) 1508 (- posn left (window-total-width window))))))
1131 1509
1510;; Predecessors to the below have been devised by Julian Assange in
1511;; change-windows-intuitively.el and Hovav Shacham in windmove.el.
1512;; Neither of these allow to selectively ignore specific windows
1513;; (windows whose `no-other-window' parameter is non-nil) as targets of
1514;; the movement.
1132(defun window-in-direction (direction &optional window ignore) 1515(defun window-in-direction (direction &optional window ignore)
1133 "Return window in DIRECTION as seen from WINDOW. 1516 "Return window in DIRECTION as seen from WINDOW.
1517More precisely, return the nearest window in direction DIRECTION
1518as seen from the position of `window-point' in window WINDOW.
1134DIRECTION must be one of `above', `below', `left' or `right'. 1519DIRECTION must be one of `above', `below', `left' or `right'.
1135WINDOW must be a live window and defaults to the selected one. 1520WINDOW must be a live window and defaults to the selected one.
1136IGNORE non-nil means a window can be returned even if its 1521
1137`no-other-window' parameter is non-nil." 1522Do not return a window whose `no-other-window' parameter is
1523non-nil. If the nearest window's `no-other-window' parameter is
1524non-nil, try to find another window in the indicated direction.
1525If, however, the optional argument IGNORE is non-nil, return that
1526window even if its `no-other-window' parameter is non-nil.
1527
1528Return nil if no suitable window can be found."
1138 (setq window (window-normalize-window window t)) 1529 (setq window (window-normalize-window window t))
1139 (unless (memq direction '(above below left right)) 1530 (unless (memq direction '(above below left right))
1140 (error "Wrong direction %s" direction)) 1531 (error "Wrong direction %s" direction))
@@ -1146,7 +1537,7 @@ IGNORE non-nil means a window can be returned even if its
1146 (last (+ first (if hor 1537 (last (+ first (if hor
1147 (window-total-width window) 1538 (window-total-width window)
1148 (window-total-height window)))) 1539 (window-total-height window))))
1149 (posn-cons (nth 6 (posn-at-point (window-point-1 window) window))) 1540 (posn-cons (nth 6 (posn-at-point (window-point window) window)))
1150 ;; The column / row value of `posn-at-point' can be nil for the 1541 ;; The column / row value of `posn-at-point' can be nil for the
1151 ;; mini-window, guard against that. 1542 ;; mini-window, guard against that.
1152 (posn (if hor 1543 (posn (if hor
@@ -1221,7 +1612,7 @@ IGNORE non-nil means a window can be returned even if its
1221 (setq best-edge-2 w-top) 1612 (setq best-edge-2 w-top)
1222 (setq best-diff-2 best-diff-2-new) 1613 (setq best-diff-2 best-diff-2-new)
1223 (setq best-2 w))))))) 1614 (setq best-2 w)))))))
1224 (window-frame window)) 1615 frame)
1225 (or best best-2))) 1616 (or best best-2)))
1226 1617
1227(defun get-window-with-predicate (predicate &optional minibuf all-frames default) 1618(defun get-window-with-predicate (predicate &optional minibuf all-frames default)
@@ -1865,7 +2256,7 @@ preferably only resize windows adjacent to EDGE."
1865 ;; Make sure this sibling is left alone when 2256 ;; Make sure this sibling is left alone when
1866 ;; resizing its siblings. 2257 ;; resizing its siblings.
1867 (set-window-new-normal sub 'ignore)) 2258 (set-window-new-normal sub 'ignore))
1868 ((or (window--size-ignore sub ignore) 2259 ((or (window--size-ignore-p sub ignore)
1869 (not (window-size-fixed-p sub horizontal))) 2260 (not (window-size-fixed-p sub horizontal)))
1870 ;; Set this-delta to t to signal that we found a sibling 2261 ;; Set this-delta to t to signal that we found a sibling
1871 ;; of WINDOW whose size is not fixed. 2262 ;; of WINDOW whose size is not fixed.
@@ -2387,8 +2778,7 @@ Return `frame' if deleting WINDOW should also delete its frame."
2387 (when (window-parameter window 'window-atom) 2778 (when (window-parameter window 'window-atom)
2388 (setq window (window-atom-root window)))) 2779 (setq window (window-atom-root window))))
2389 2780
2390 (let ((parent (window-parent window)) 2781 (let ((frame (window-frame window)))
2391 (frame (window-frame window)))
2392 (cond 2782 (cond
2393 ((frame-root-window-p window) 2783 ((frame-root-window-p window)
2394 ;; WINDOW's frame can be deleted only if there are other frames 2784 ;; WINDOW's frame can be deleted only if there are other frames
@@ -2399,10 +2789,9 @@ Return `frame' if deleting WINDOW should also delete its frame."
2399 (and minibuf (eq frame (window-frame minibuf))))) 2789 (and minibuf (eq frame (window-frame minibuf)))))
2400 'frame)) 2790 'frame))
2401 ((or ignore-window-parameters 2791 ((or ignore-window-parameters
2402 (not (eq (window-parameter window 'window-side) 'none)) 2792 (not (eq window (window--major-non-side-window frame))))
2403 (and parent (eq (window-parameter parent 'window-side) 'none))) 2793 ;; WINDOW can be deleted unless it is the major non-side window of
2404 ;; WINDOW can be deleted unless it is the main window of its 2794 ;; its frame.
2405 ;; frame.
2406 t)))) 2795 t))))
2407 2796
2408(defun window--in-subtree-p (window root) 2797(defun window--in-subtree-p (window root)
@@ -2453,13 +2842,13 @@ that is its frame's root window."
2453 ((and (window-parameter window 'window-atom) 2842 ((and (window-parameter window 'window-atom)
2454 (setq atom-root (window-atom-root window)) 2843 (setq atom-root (window-atom-root window))
2455 (not (eq atom-root window))) 2844 (not (eq atom-root window)))
2456 (throw 'done (delete-window atom-root))) 2845 (if (eq atom-root (frame-root-window frame))
2457 ((and (eq (window-parameter window 'window-side) 'none) 2846 (error "Root of atomic window is root window of its frame")
2458 (or (not parent) 2847 (throw 'done (delete-window atom-root))))
2459 (not (eq (window-parameter parent 'window-side) 'none))))
2460 (error "Attempt to delete last non-side window"))
2461 ((not parent) 2848 ((not parent)
2462 (error "Attempt to delete minibuffer or sole ordinary window"))) 2849 (error "Attempt to delete minibuffer or sole ordinary window"))
2850 ((eq window (window--major-non-side-window frame))
2851 (error "Attempt to delete last non-side window")))
2463 2852
2464 (let* ((horizontal (window-left-child parent)) 2853 (let* ((horizontal (window-left-child parent))
2465 (size (window-total-size window horizontal)) 2854 (size (window-total-size window horizontal))
@@ -2533,13 +2922,19 @@ window signal an error."
2533 ((and (window-parameter window 'window-atom) 2922 ((and (window-parameter window 'window-atom)
2534 (setq atom-root (window-atom-root window)) 2923 (setq atom-root (window-atom-root window))
2535 (not (eq atom-root window))) 2924 (not (eq atom-root window)))
2536 (throw 'done (delete-other-windows atom-root))) 2925 (if (eq atom-root (frame-root-window frame))
2537 ((eq window-side 'none) 2926 (error "Root of atomic window is root window of its frame")
2538 ;; Set side-main to the major non-side window. 2927 (throw 'done (delete-other-windows atom-root))))
2539 (setq side-main (window-with-parameter 'window-side 'none frame t)))
2540 ((memq window-side window-sides) 2928 ((memq window-side window-sides)
2541 (error "Cannot make side window the only window"))) 2929 (error "Cannot make side window the only window"))
2542 ;; If WINDOW is the main non-side window, do nothing. 2930 ((and (window-minibuffer-p window)
2931 (not (eq window (frame-root-window window))))
2932 (error "Can't expand minibuffer to full frame")))
2933
2934 ;; If WINDOW is the major non-side window, do nothing.
2935 (if (window-with-parameter 'window-side)
2936 (setq side-main (window--major-non-side-window frame))
2937 (setq side-main (frame-root-window frame)))
2543 (unless (eq window side-main) 2938 (unless (eq window side-main)
2544 (delete-other-windows-internal window side-main) 2939 (delete-other-windows-internal window side-main)
2545 (run-window-configuration-change-hook frame) 2940 (run-window-configuration-change-hook frame)
@@ -2613,7 +3008,7 @@ WINDOW must be a live window and defaults to the selected one."
2613 ;; Add an entry for buffer to WINDOW's previous buffers. 3008 ;; Add an entry for buffer to WINDOW's previous buffers.
2614 (with-current-buffer buffer 3009 (with-current-buffer buffer
2615 (let ((start (window-start window)) 3010 (let ((start (window-start window))
2616 (point (window-point-1 window))) 3011 (point (window-point window)))
2617 (setq entry 3012 (setq entry
2618 (cons buffer 3013 (cons buffer
2619 (if entry 3014 (if entry
@@ -2657,7 +3052,7 @@ before was current this also makes BUFFER the current buffer."
2657 ;; Don't force window-start here (even if POINT is nil). 3052 ;; Don't force window-start here (even if POINT is nil).
2658 (set-window-start window start t)) 3053 (set-window-start window start t))
2659 (when point 3054 (when point
2660 (set-window-point-1 window point)))) 3055 (set-window-point window point))))
2661 3056
2662(defcustom switch-to-visible-buffer t 3057(defcustom switch-to-visible-buffer t
2663 "If non-nil, allow switching to an already visible buffer. 3058 "If non-nil, allow switching to an already visible buffer.
@@ -2679,32 +3074,47 @@ found.
2679 3074
2680Optional argument BURY-OR-KILL non-nil means the buffer currently 3075Optional argument BURY-OR-KILL non-nil means the buffer currently
2681shown in WINDOW is about to be buried or killed and consequently 3076shown in WINDOW is about to be buried or killed and consequently
2682shall not be switched to in future invocations of this command." 3077shall not be switched to in future invocations of this command.
3078
3079As a special case, if BURY-OR-KILL equals `append', this means to
3080move the buffer to the end of WINDOW's previous buffers list so a
3081future invocation of `switch-to-prev-buffer' less likely switches
3082to it."
2683 (interactive) 3083 (interactive)
2684 (let* ((window (window-normalize-window window t)) 3084 (let* ((window (window-normalize-window window t))
2685 (frame (window-frame window)) 3085 (frame (window-frame window))
2686 (old-buffer (window-buffer window)) 3086 (old-buffer (window-buffer window))
2687 ;; Save this since it's destroyed by `set-window-buffer'. 3087 ;; Save this since it's destroyed by `set-window-buffer'.
2688 (next-buffers (window-next-buffers window)) 3088 (next-buffers (window-next-buffers window))
2689 entry buffer new-buffer killed-buffers visible) 3089 (pred (frame-parameter frame 'buffer-predicate))
3090 entry new-buffer killed-buffers visible)
3091 (when (window-minibuffer-p window)
3092 ;; Don't switch in minibuffer window.
3093 (unless (setq window (minibuffer-selected-window))
3094 (error "Window %s is a minibuffer window" window)))
3095
2690 (when (window-dedicated-p window) 3096 (when (window-dedicated-p window)
3097 ;; Don't switch in dedicated window.
2691 (error "Window %s is dedicated to buffer %s" window old-buffer)) 3098 (error "Window %s is dedicated to buffer %s" window old-buffer))
2692 3099
2693 (catch 'found 3100 (catch 'found
2694 ;; Scan WINDOW's previous buffers first, skipping entries of next 3101 ;; Scan WINDOW's previous buffers first, skipping entries of next
2695 ;; buffers. 3102 ;; buffers.
2696 (dolist (entry (window-prev-buffers window)) 3103 (dolist (entry (window-prev-buffers window))
2697 (when (and (setq buffer (car entry)) 3104 (when (and (setq new-buffer (car entry))
2698 (or (buffer-live-p buffer) 3105 (or (buffer-live-p new-buffer)
2699 (not (setq killed-buffers 3106 (not (setq killed-buffers
2700 (cons buffer killed-buffers)))) 3107 (cons new-buffer killed-buffers))))
2701 (not (eq buffer old-buffer)) 3108 (not (eq new-buffer old-buffer))
2702 (or bury-or-kill (not (memq buffer next-buffers)))) 3109 (or (null pred) (funcall pred new-buffer))
3110 ;; When BURY-OR-KILL is nil, avoid switching to a
3111 ;; buffer in WINDOW's next buffers list.
3112 (or bury-or-kill (not (memq new-buffer next-buffers))))
2703 (if (and (not switch-to-visible-buffer) 3113 (if (and (not switch-to-visible-buffer)
2704 (get-buffer-window buffer frame)) 3114 (get-buffer-window new-buffer frame))
2705 ;; Try to avoid showing a buffer visible in some other window. 3115 ;; Try to avoid showing a buffer visible in some other
2706 (setq visible buffer) 3116 ;; window.
2707 (setq new-buffer buffer) 3117 (setq visible new-buffer)
2708 (set-window-buffer-start-and-point 3118 (set-window-buffer-start-and-point
2709 window new-buffer (nth 1 entry) (nth 2 entry)) 3119 window new-buffer (nth 1 entry) (nth 2 entry))
2710 (throw 'found t)))) 3120 (throw 'found t))))
@@ -2719,6 +3129,7 @@ shall not be switched to in future invocations of this command."
2719 (nreverse (buffer-list frame)))) 3129 (nreverse (buffer-list frame))))
2720 (when (and (buffer-live-p buffer) 3130 (when (and (buffer-live-p buffer)
2721 (not (eq buffer old-buffer)) 3131 (not (eq buffer old-buffer))
3132 (or (null pred) (funcall pred buffer))
2722 (not (eq (aref (buffer-name buffer) 0) ?\s)) 3133 (not (eq (aref (buffer-name buffer) 0) ?\s))
2723 (or bury-or-kill (not (memq buffer next-buffers)))) 3134 (or bury-or-kill (not (memq buffer next-buffers))))
2724 (if (get-buffer-window buffer frame) 3135 (if (get-buffer-window buffer frame)
@@ -2738,6 +3149,7 @@ shall not be switched to in future invocations of this command."
2738 (not (setq killed-buffers 3149 (not (setq killed-buffers
2739 (cons buffer killed-buffers)))) 3150 (cons buffer killed-buffers))))
2740 (not (eq buffer old-buffer)) 3151 (not (eq buffer old-buffer))
3152 (or (null pred) (funcall pred buffer))
2741 (setq entry (assq buffer (window-prev-buffers window)))) 3153 (setq entry (assq buffer (window-prev-buffers window))))
2742 (setq new-buffer buffer) 3154 (setq new-buffer buffer)
2743 (set-window-buffer-start-and-point 3155 (set-window-buffer-start-and-point
@@ -2750,12 +3162,20 @@ shall not be switched to in future invocations of this command."
2750 (set-window-buffer-start-and-point window new-buffer))) 3162 (set-window-buffer-start-and-point window new-buffer)))
2751 3163
2752 (if bury-or-kill 3164 (if bury-or-kill
2753 ;; Remove `old-buffer' from WINDOW's previous and (restored list 3165 (let ((entry (and (eq bury-or-kill 'append)
2754 ;; of) next buffers. 3166 (assq old-buffer (window-prev-buffers window)))))
2755 (progn 3167 ;; Remove `old-buffer' from WINDOW's previous and (restored list
3168 ;; of) next buffers.
2756 (set-window-prev-buffers 3169 (set-window-prev-buffers
2757 window (assq-delete-all old-buffer (window-prev-buffers window))) 3170 window (assq-delete-all old-buffer (window-prev-buffers window)))
2758 (set-window-next-buffers window (delq old-buffer next-buffers))) 3171 (set-window-next-buffers window (delq old-buffer next-buffers))
3172 (when entry
3173 ;; Append old-buffer's entry to list of WINDOW's previous
3174 ;; buffers so it's less likely to get switched to soon but
3175 ;; `display-buffer-in-previous-window' can nevertheless find
3176 ;; it.
3177 (set-window-prev-buffers
3178 window (append (window-prev-buffers window) (list entry)))))
2759 ;; Move `old-buffer' to head of WINDOW's restored list of next 3179 ;; Move `old-buffer' to head of WINDOW's restored list of next
2760 ;; buffers. 3180 ;; buffers.
2761 (set-window-next-buffers 3181 (set-window-next-buffers
@@ -2782,8 +3202,15 @@ found."
2782 (frame (window-frame window)) 3202 (frame (window-frame window))
2783 (old-buffer (window-buffer window)) 3203 (old-buffer (window-buffer window))
2784 (next-buffers (window-next-buffers window)) 3204 (next-buffers (window-next-buffers window))
2785 buffer new-buffer entry killed-buffers visible) 3205 (pred (frame-parameter frame 'buffer-predicate))
3206 new-buffer entry killed-buffers visible)
3207 (when (window-minibuffer-p window)
3208 ;; Don't switch in minibuffer window.
3209 (unless (setq window (minibuffer-selected-window))
3210 (error "Window %s is a minibuffer window" window)))
3211
2786 (when (window-dedicated-p window) 3212 (when (window-dedicated-p window)
3213 ;; Don't switch in dedicated window.
2787 (error "Window %s is dedicated to buffer %s" window old-buffer)) 3214 (error "Window %s is dedicated to buffer %s" window old-buffer))
2788 3215
2789 (catch 'found 3216 (catch 'found
@@ -2793,6 +3220,7 @@ found."
2793 (not (setq killed-buffers 3220 (not (setq killed-buffers
2794 (cons buffer killed-buffers)))) 3221 (cons buffer killed-buffers))))
2795 (not (eq buffer old-buffer)) 3222 (not (eq buffer old-buffer))
3223 (or (null pred) (funcall pred buffer))
2796 (setq entry (assq buffer (window-prev-buffers window)))) 3224 (setq entry (assq buffer (window-prev-buffers window))))
2797 (setq new-buffer buffer) 3225 (setq new-buffer buffer)
2798 (set-window-buffer-start-and-point 3226 (set-window-buffer-start-and-point
@@ -2801,7 +3229,9 @@ found."
2801 ;; Scan the buffer list of WINDOW's frame next, skipping previous 3229 ;; Scan the buffer list of WINDOW's frame next, skipping previous
2802 ;; buffers entries. 3230 ;; buffers entries.
2803 (dolist (buffer (buffer-list frame)) 3231 (dolist (buffer (buffer-list frame))
2804 (when (and (buffer-live-p buffer) (not (eq buffer old-buffer)) 3232 (when (and (buffer-live-p buffer)
3233 (not (eq buffer old-buffer))
3234 (or (null pred) (funcall pred buffer))
2805 (not (eq (aref (buffer-name buffer) 0) ?\s)) 3235 (not (eq (aref (buffer-name buffer) 0) ?\s))
2806 (not (assq buffer (window-prev-buffers window)))) 3236 (not (assq buffer (window-prev-buffers window))))
2807 (if (get-buffer-window buffer frame) 3237 (if (get-buffer-window buffer frame)
@@ -2813,17 +3243,17 @@ found."
2813 ;; Scan WINDOW's reverted previous buffers last (must not use 3243 ;; Scan WINDOW's reverted previous buffers last (must not use
2814 ;; nreverse here!) 3244 ;; nreverse here!)
2815 (dolist (entry (reverse (window-prev-buffers window))) 3245 (dolist (entry (reverse (window-prev-buffers window)))
2816 (when (and (setq buffer (car entry)) 3246 (when (and (setq new-buffer (car entry))
2817 (or (buffer-live-p buffer) 3247 (or (buffer-live-p new-buffer)
2818 (not (setq killed-buffers 3248 (not (setq killed-buffers
2819 (cons buffer killed-buffers)))) 3249 (cons new-buffer killed-buffers))))
2820 (not (eq buffer old-buffer))) 3250 (not (eq new-buffer old-buffer))
3251 (or (null pred) (funcall pred new-buffer)))
2821 (if (and (not switch-to-visible-buffer) 3252 (if (and (not switch-to-visible-buffer)
2822 (get-buffer-window buffer frame)) 3253 (get-buffer-window new-buffer frame))
2823 ;; Try to avoid showing a buffer visible in some other window. 3254 ;; Try to avoid showing a buffer visible in some other window.
2824 (unless visible 3255 (unless visible
2825 (setq visible buffer)) 3256 (setq visible new-buffer))
2826 (setq new-buffer buffer)
2827 (set-window-buffer-start-and-point 3257 (set-window-buffer-start-and-point
2828 window new-buffer (nth 1 entry) (nth 2 entry)) 3258 window new-buffer (nth 1 entry) (nth 2 entry))
2829 (throw 'found t)))) 3259 (throw 'found t))))
@@ -3050,18 +3480,35 @@ all window-local buffer lists."
3050 ;; Unrecord BUFFER in WINDOW. 3480 ;; Unrecord BUFFER in WINDOW.
3051 (unrecord-window-buffer window buffer))))) 3481 (unrecord-window-buffer window buffer)))))
3052 3482
3053(defun quit-window (&optional kill window) 3483(defun quit-restore-window (&optional window bury-or-kill)
3054 "Quit WINDOW and bury its buffer. 3484 "Quit WINDOW and deal with its buffer.
3055WINDOW must be a live window and defaults to the selected one. 3485WINDOW must be a live window and defaults to the selected one.
3056With prefix argument KILL non-nil, kill the buffer instead of
3057burying it.
3058 3486
3059According to information stored in WINDOW's `quit-restore' window 3487According to information stored in WINDOW's `quit-restore' window
3060parameter either (1) delete WINDOW and its frame, (2) delete 3488parameter either (1) delete WINDOW and its frame, (2) delete
3061WINDOW, (3) restore the buffer previously displayed in WINDOW, 3489WINDOW, (3) restore the buffer previously displayed in WINDOW,
3062or (4) make WINDOW display some other buffer than the present 3490or (4) make WINDOW display some other buffer than the present
3063one. If non-nil, reset `quit-restore' parameter to nil." 3491one. If non-nil, reset `quit-restore' parameter to nil.
3064 (interactive "P") 3492
3493Optional second argument BURY-OR-KILL tells how to proceed with
3494the buffer of WINDOW. The following values are handled:
3495
3496`nil' means to not handle the buffer in a particular way. This
3497 means that if WINDOW is not deleted by this function, invoking
3498 `switch-to-prev-buffer' will usually show the buffer again.
3499
3500`append' means that if WINDOW is not deleted, move its buffer to
3501 the end of WINDOW's previous buffers so it's less likely that a
3502 future invocation of `switch-to-prev-buffer' will switch to it.
3503 Also, move the buffer to the end of the frame's buffer list.
3504
3505`bury' means that if WINDOW is not deleted, remove its buffer
3506 from WINDOW'S list of previous buffers. Also, move the buffer
3507 to the end of the frame's buffer list. This value provides the
3508 most reliable remedy to not have `switch-to-prev-buffer' switch
3509 to this buffer again without killing the buffer.
3510
3511`kill' means to kill WINDOW's buffer."
3065 (setq window (window-normalize-window window t)) 3512 (setq window (window-normalize-window window t))
3066 (let* ((buffer (window-buffer window)) 3513 (let* ((buffer (window-buffer window))
3067 (quit-restore (window-parameter window 'quit-restore)) 3514 (quit-restore (window-parameter window 'quit-restore))
@@ -3073,13 +3520,13 @@ one. If non-nil, reset `quit-restore' parameter to nil."
3073 (not (eq (setq prev-buffer (cadr prev-buffers)) 3520 (not (eq (setq prev-buffer (cadr prev-buffers))
3074 buffer)))) 3521 buffer))))
3075 prev-buffer))) 3522 prev-buffer)))
3076 quad resize) 3523 quad entry)
3077 (cond 3524 (cond
3078 ((and (not prev-buffer) 3525 ((and (not prev-buffer)
3079 (memq (nth 1 quit-restore) '(window frame)) 3526 (memq (nth 1 quit-restore) '(window frame))
3080 (eq (nth 3 quit-restore) buffer) 3527 (eq (nth 3 quit-restore) buffer)
3081 ;; Delete WINDOW if possible. 3528 ;; Delete WINDOW if possible.
3082 (window--delete window nil kill)) 3529 (window--delete window nil (eq bury-or-kill 'kill)))
3083 ;; If the previously selected window is still alive, select it. 3530 ;; If the previously selected window is still alive, select it.
3084 (when (window-live-p (nth 2 quit-restore)) 3531 (when (window-live-p (nth 2 quit-restore))
3085 (select-window (nth 2 quit-restore)))) 3532 (select-window (nth 2 quit-restore))))
@@ -3087,21 +3534,32 @@ one. If non-nil, reset `quit-restore' parameter to nil."
3087 (buffer-live-p (car quad)) 3534 (buffer-live-p (car quad))
3088 (eq (nth 3 quit-restore) buffer)) 3535 (eq (nth 3 quit-restore) buffer))
3089 ;; Show another buffer stored in quit-restore parameter. 3536 ;; Show another buffer stored in quit-restore parameter.
3090 (setq resize (and (integerp (nth 3 quad)) 3537 (when (and (integerp (nth 3 quad))
3091 (/= (nth 3 quad) (window-total-size window)))) 3538 (/= (nth 3 quad) (window-total-size window)))
3092 (set-window-dedicated-p window nil)
3093 (when resize
3094 ;; Try to resize WINDOW to its old height but don't signal an 3539 ;; Try to resize WINDOW to its old height but don't signal an
3095 ;; error. 3540 ;; error.
3096 (condition-case nil 3541 (condition-case nil
3097 (window-resize window (- (nth 3 quad) (window-total-size window))) 3542 (window-resize window (- (nth 3 quad) (window-total-size window)))
3098 (error nil))) 3543 (error nil)))
3544 (set-window-dedicated-p window nil)
3099 ;; Restore WINDOW's previous buffer, start and point position. 3545 ;; Restore WINDOW's previous buffer, start and point position.
3100 (set-window-buffer-start-and-point 3546 (set-window-buffer-start-and-point
3101 window (nth 0 quad) (nth 1 quad) (nth 2 quad)) 3547 window (nth 0 quad) (nth 1 quad) (nth 2 quad))
3102 ;; Unrecord WINDOW's buffer here (Bug#9937) to make sure it's not 3548 ;; Deal with the buffer we just removed from WINDOW.
3103 ;; re-recorded by `set-window-buffer'. 3549 (setq entry (and (eq bury-or-kill 'append)
3104 (unrecord-window-buffer window buffer) 3550 (assq buffer (window-prev-buffers window))))
3551 (when bury-or-kill
3552 ;; Remove buffer from WINDOW's previous and next buffers.
3553 (set-window-prev-buffers
3554 window (assq-delete-all buffer (window-prev-buffers window)))
3555 (set-window-next-buffers
3556 window (delq buffer (window-next-buffers window))))
3557 (when entry
3558 ;; Append old buffer's entry to list of WINDOW's previous
3559 ;; buffers so it's less likely to get switched to soon but
3560 ;; `display-buffer-in-previous-window' can nevertheless find it.
3561 (set-window-prev-buffers
3562 window (append (window-prev-buffers window) (list entry))))
3105 ;; Reset the quit-restore parameter. 3563 ;; Reset the quit-restore parameter.
3106 (set-window-parameter window 'quit-restore nil) 3564 (set-window-parameter window 'quit-restore nil)
3107 ;; Select old window. 3565 ;; Select old window.
@@ -3113,12 +3571,29 @@ one. If non-nil, reset `quit-restore' parameter to nil."
3113 (set-window-parameter window 'quit-restore nil) 3571 (set-window-parameter window 'quit-restore nil)
3114 ;; Make sure that WINDOW is no more dedicated. 3572 ;; Make sure that WINDOW is no more dedicated.
3115 (set-window-dedicated-p window nil) 3573 (set-window-dedicated-p window nil)
3116 (switch-to-prev-buffer window 'bury-or-kill))) 3574 (switch-to-prev-buffer window bury-or-kill)))
3117 3575
3118 ;; Kill WINDOW's old-buffer if requested 3576 ;; Deal with the buffer.
3119 (if kill 3577 (cond
3120 (kill-buffer buffer) 3578 ((not (buffer-live-p buffer)))
3121 (bury-buffer-internal buffer)))) 3579 ((eq bury-or-kill 'kill)
3580 (kill-buffer buffer))
3581 (bury-or-kill
3582 (bury-buffer-internal buffer)))))
3583
3584(defun quit-window (&optional kill window)
3585 "Quit WINDOW and bury its buffer.
3586WINDOW must be a live window and defaults to the selected one.
3587With prefix argument KILL non-nil, kill the buffer instead of
3588burying it.
3589
3590According to information stored in WINDOW's `quit-restore' window
3591parameter either (1) delete WINDOW and its frame, (2) delete
3592WINDOW, (3) restore the buffer previously displayed in WINDOW,
3593or (4) make WINDOW display some other buffer than the present
3594one. If non-nil, reset `quit-restore' parameter to nil."
3595 (interactive "P")
3596 (quit-restore-window window (if kill 'kill 'bury)))
3122 3597
3123(defun quit-windows-on (&optional buffer-or-name kill frame) 3598(defun quit-windows-on (&optional buffer-or-name kill frame)
3124 "Quit all windows showing BUFFER-OR-NAME. 3599 "Quit all windows showing BUFFER-OR-NAME.
@@ -3198,14 +3673,16 @@ frame. The selected window is not changed by this function."
3198 ((not side) 'below) 3673 ((not side) 'below)
3199 ((memq side '(below above right left)) side) 3674 ((memq side '(below above right left)) side)
3200 (t 'right))) 3675 (t 'right)))
3201 (horizontal (not (memq side '(nil below above)))) 3676 (horizontal (not (memq side '(below above))))
3202 (frame (window-frame window)) 3677 (frame (window-frame window))
3203 (parent (window-parent window)) 3678 (parent (window-parent window))
3204 (function (window-parameter window 'split-window)) 3679 (function (window-parameter window 'split-window))
3205 (window-side (window-parameter window 'window-side)) 3680 (window-side (window-parameter window 'window-side))
3206 ;; Rebind `window-combination-limit' since in some cases we may 3681 ;; Rebind `window-combination-limit' and
3207 ;; have to override its value. 3682 ;; `window-combination-resize' since in some cases we may have
3683 ;; to override their value.
3208 (window-combination-limit window-combination-limit) 3684 (window-combination-limit window-combination-limit)
3685 (window-combination-resize window-combination-resize)
3209 atom-root) 3686 atom-root)
3210 3687
3211 (window--check frame) 3688 (window--check frame)
@@ -3223,20 +3700,32 @@ frame. The selected window is not changed by this function."
3223 ((and (window-parameter window 'window-atom) 3700 ((and (window-parameter window 'window-atom)
3224 (setq atom-root (window-atom-root window)) 3701 (setq atom-root (window-atom-root window))
3225 (not (eq atom-root window))) 3702 (not (eq atom-root window)))
3226 (throw 'done (split-window atom-root size side)))) 3703 (throw 'done (split-window atom-root size side)))
3227 3704 ;; If WINDOW is a side window or its first or last child is a
3228 (when (and window-side 3705 ;; side window, throw an error unless `window-combination-resize'
3229 (or (not parent) 3706 ;; equals 'side.
3230 (not (window-parameter parent 'window-side)))) 3707 ((and (not (eq window-combination-resize 'side))
3231 ;; WINDOW is a side root window. To make sure that a new parent 3708 (or (window-parameter window 'window-side)
3232 ;; window gets created set `window-combination-limit' to t. 3709 (and (window-child window)
3233 (setq window-combination-limit t)) 3710 (or (window-parameter
3234 3711 (window-child window) 'window-side)
3235 (when (and window-combination-resize size (> size 0)) 3712 (window-parameter
3236 ;; If `window-combination-resize' is non-nil and SIZE is a 3713 (window-last-child window) 'window-side)))))
3237 ;; non-negative integer, we cannot reasonably resize other 3714 (error "Cannot split side window or parent of side window"))
3238 ;; windows. Rather bind `window-combination-limit' to t to make 3715 ;; If `window-combination-resize' is 'side and window has a side
3239 ;; sure that subsequent window deletions are handled correctly. 3716 ;; window sibling, bind `window-combination-limit' to t.
3717 ((and (not (eq window-combination-resize 'side))
3718 (or (and (window-prev-sibling window)
3719 (window-parameter
3720 (window-prev-sibling window) 'window-side))
3721 (and (window-next-sibling window)
3722 (window-parameter
3723 (window-next-sibling window) 'window-side))))
3724 (setq window-combination-limit t)))
3725
3726 ;; If `window-combination-resize' is t and SIZE is non-negative,
3727 ;; bind `window-combination-limit' to t.
3728 (when (and (eq window-combination-resize t) size (> size 0))
3240 (setq window-combination-limit t)) 3729 (setq window-combination-limit t))
3241 3730
3242 (let* ((parent-size 3731 (let* ((parent-size
@@ -3246,7 +3735,10 @@ frame. The selected window is not changed by this function."
3246 ;; `resize' non-nil means we are supposed to resize other 3735 ;; `resize' non-nil means we are supposed to resize other
3247 ;; windows in WINDOW's combination. 3736 ;; windows in WINDOW's combination.
3248 (resize 3737 (resize
3249 (and window-combination-resize (not window-combination-limit) 3738 (and window-combination-resize
3739 (or (window-parameter window 'window-side)
3740 (not (eq window-combination-resize 'side)))
3741 (not window-combination-limit)
3250 ;; Resize makes sense in iso-combinations only. 3742 ;; Resize makes sense in iso-combinations only.
3251 (window-combined-p window horizontal))) 3743 (window-combined-p window horizontal)))
3252 ;; `old-size' is the current size of WINDOW. 3744 ;; `old-size' is the current size of WINDOW.
@@ -3357,10 +3849,21 @@ frame. The selected window is not changed by this function."
3357 new-normal))) 3849 new-normal)))
3358 3850
3359 (let* ((new (split-window-internal window new-size side new-normal))) 3851 (let* ((new (split-window-internal window new-size side new-normal)))
3360 ;; Inherit window-side parameters, if any. 3852 ;; Assign window-side parameters, if any.
3361 (when (and window-side new-parent) 3853 (when (eq window-combination-resize 'side)
3362 (set-window-parameter (window-parent new) 'window-side window-side) 3854 (let ((window-side
3363 (set-window-parameter new 'window-side window-side)) 3855 (cond
3856 (window-side window-side)
3857 ((eq side 'above) 'top)
3858 ((eq side 'below) 'bottom)
3859 (t side))))
3860 ;; We made a new side window.
3861 (set-window-parameter new 'window-side window-side)
3862 (when (and new-parent (window-parameter window 'window-side))
3863 ;; We've been splitting a side root window. Give the
3864 ;; new parent the same window-side parameter.
3865 (set-window-parameter
3866 (window-parent new) 'window-side window-side))))
3364 3867
3365 (run-window-configuration-change-hook frame) 3868 (run-window-configuration-change-hook frame)
3366 (window--check frame) 3869 (window--check frame)
@@ -3393,7 +3896,7 @@ Otherwise, the window starts are chosen so as to minimize the
3393amount of redisplay; this is convenient on slow terminals." 3896amount of redisplay; this is convenient on slow terminals."
3394 (interactive "P") 3897 (interactive "P")
3395 (let ((old-window (selected-window)) 3898 (let ((old-window (selected-window))
3396 (old-point (window-point-1)) 3899 (old-point (window-point))
3397 (size (and size (prefix-numeric-value size))) 3900 (size (and size (prefix-numeric-value size)))
3398 moved-by-window-height moved new-window bottom) 3901 moved-by-window-height moved new-window bottom)
3399 (when (and size (< size 0) (< (- size) window-min-height)) 3902 (when (and size (< size 0) (< (- size) window-min-height))
@@ -3418,7 +3921,7 @@ amount of redisplay; this is convenient on slow terminals."
3418 (setq bottom (point))) 3921 (setq bottom (point)))
3419 (and moved-by-window-height 3922 (and moved-by-window-height
3420 (<= bottom (point)) 3923 (<= bottom (point))
3421 (set-window-point-1 old-window (1- bottom))) 3924 (set-window-point old-window (1- bottom)))
3422 (and moved-by-window-height 3925 (and moved-by-window-height
3423 (<= (window-start new-window) old-point) 3926 (<= (window-start new-window) old-point)
3424 (set-window-point new-window old-point) 3927 (set-window-point new-window old-point)
@@ -3727,7 +4230,7 @@ specific buffers."
3727 `((parameters . ,list)))) 4230 `((parameters . ,list))))
3728 ,@(when buffer 4231 ,@(when buffer
3729 ;; All buffer related things go in here. 4232 ;; All buffer related things go in here.
3730 (let ((point (window-point-1 window)) 4233 (let ((point (window-point window))
3731 (start (window-start window))) 4234 (start (window-start window)))
3732 `((buffer 4235 `((buffer
3733 ,(buffer-name buffer) 4236 ,(buffer-name buffer)
@@ -4020,7 +4523,7 @@ element is BUFFER."
4020 (list 'other 4523 (list 'other
4021 ;; A quadruple of WINDOW's buffer, start, point and height. 4524 ;; A quadruple of WINDOW's buffer, start, point and height.
4022 (list (window-buffer window) (window-start window) 4525 (list (window-buffer window) (window-start window)
4023 (window-point-1 window) (window-total-size window)) 4526 (window-point window) (window-total-size window))
4024 (selected-window) buffer)))) 4527 (selected-window) buffer))))
4025 ((eq type 'window) 4528 ((eq type 'window)
4026 ;; WINDOW has been created on an existing frame. 4529 ;; WINDOW has been created on an existing frame.
@@ -4048,12 +4551,11 @@ of the window used."
4048 (function :tag "function")) 4551 (function :tag "function"))
4049 :group 'windows) 4552 :group 'windows)
4050 4553
4554;; Eventually, we want to turn this into a defvar; instead of
4555;; customizing this, the user should use a `pop-up-frame-parameters'
4556;; alist entry in `display-buffer-base-action'.
4051(defcustom pop-up-frame-alist nil 4557(defcustom pop-up-frame-alist nil
4052 "Alist of parameters for automatically generated new frames. 4558 "Alist of parameters for automatically generated new frames.
4053You can set this in your init file; for example,
4054
4055 (setq pop-up-frame-alist '((width . 80) (height . 20)))
4056
4057If non-nil, the value you specify here is used by the default 4559If non-nil, the value you specify here is used by the default
4058`pop-up-frame-function' for the creation of new frames. 4560`pop-up-frame-function' for the creation of new frames.
4059 4561
@@ -4140,8 +4642,7 @@ See also `special-display-regexps'."
4140 (repeat :tag "Arguments" (sexp))))) 4642 (repeat :tag "Arguments" (sexp)))))
4141 :group 'windows 4643 :group 'windows
4142 :group 'frames) 4644 :group 'frames)
4143 4645(make-obsolete-variable 'special-display-buffer-names 'display-buffer-alist "24.3")
4144;;;###autoload
4145(put 'special-display-buffer-names 'risky-local-variable t) 4646(put 'special-display-buffer-names 'risky-local-variable t)
4146 4647
4147(defcustom special-display-regexps nil 4648(defcustom special-display-regexps nil
@@ -4208,6 +4709,8 @@ See also `special-display-buffer-names'."
4208 (repeat :tag "Arguments" (sexp))))) 4709 (repeat :tag "Arguments" (sexp)))))
4209 :group 'windows 4710 :group 'windows
4210 :group 'frames) 4711 :group 'frames)
4712(make-obsolete-variable 'special-display-regexps 'display-buffer-alist "24.3")
4713(put 'special-display-regexps 'risky-local-variable t)
4211 4714
4212(defun special-display-p (buffer-name) 4715(defun special-display-p (buffer-name)
4213 "Return non-nil if a buffer named BUFFER-NAME gets a special frame. 4716 "Return non-nil if a buffer named BUFFER-NAME gets a special frame.
@@ -4249,6 +4752,7 @@ These supersede the values given in `default-frame-alist'."
4249 (symbol :tag "Parameter") 4752 (symbol :tag "Parameter")
4250 (sexp :tag "Value"))) 4753 (sexp :tag "Value")))
4251 :group 'frames) 4754 :group 'frames)
4755(make-obsolete-variable 'special-display-frame-alist 'display-buffer-alist "24.3")
4252 4756
4253(defun special-display-popup-frame (buffer &optional args) 4757(defun special-display-popup-frame (buffer &optional args)
4254 "Pop up a frame displaying BUFFER and return its window. 4758 "Pop up a frame displaying BUFFER and return its window.
@@ -4294,6 +4798,9 @@ and (cdr ARGS) as second."
4294 (make-frame (append args special-display-frame-alist)))) 4798 (make-frame (append args special-display-frame-alist))))
4295 (window (frame-selected-window frame))) 4799 (window (frame-selected-window frame)))
4296 (display-buffer-record-window 'frame window buffer) 4800 (display-buffer-record-window 'frame window buffer)
4801 (unless (eq buffer (window-buffer window))
4802 (set-window-buffer window buffer)
4803 (set-window-prev-buffers window nil))
4297 (set-window-dedicated-p window t) 4804 (set-window-dedicated-p window t)
4298 window))))) 4805 window)))))
4299 4806
@@ -4315,6 +4822,7 @@ with corresponding arguments to set up the quit-restore parameter
4315of the window used." 4822of the window used."
4316 :type 'function 4823 :type 'function
4317 :group 'frames) 4824 :group 'frames)
4825(make-obsolete-variable 'special-display-function 'display-buffer-alist "24.3")
4318 4826
4319(defcustom same-window-buffer-names nil 4827(defcustom same-window-buffer-names nil
4320 "List of names of buffers that should appear in the \"same\" window. 4828 "List of names of buffers that should appear in the \"same\" window.
@@ -4388,6 +4896,11 @@ that frame."
4388 :version "21.1" 4896 :version "21.1"
4389 :group 'windows) 4897 :group 'windows)
4390 4898
4899(make-obsolete-variable
4900 'display-buffer-reuse-frames
4901 "use a `reusable-frames' alist entry in `display-buffer-alist'."
4902 "24.3")
4903
4391(defcustom pop-up-windows t 4904(defcustom pop-up-windows t
4392 "Non-nil means `display-buffer' should make a new window." 4905 "Non-nil means `display-buffer' should make a new window."
4393 :type 'boolean 4906 :type 'boolean
@@ -4590,23 +5103,19 @@ Do this only if these windows are vertically adjacent to each
4590other, `even-window-heights' is non-nil, and the selected window 5103other, `even-window-heights' is non-nil, and the selected window
4591is higher than WINDOW." 5104is higher than WINDOW."
4592 (when (and even-window-heights 5105 (when (and even-window-heights
4593 (not (eq window (selected-window))) 5106 ;; Even iff WINDOW forms a vertical combination with the
4594 ;; Don't resize minibuffer windows. 5107 ;; selected window, and WINDOW's height exceeds that of the
4595 (not (window-minibuffer-p (selected-window))) 5108 ;; selected window, see also bug#11880.
4596 (> (window-height (selected-window)) (window-height window)) 5109 (window-combined-p window)
4597 (eq (window-frame window) (window-frame (selected-window))) 5110 (= (window-child-count (window-parent window)) 2)
4598 (let ((sel-edges (window-edges (selected-window))) 5111 (eq (window-parent) (window-parent window))
4599 (win-edges (window-edges window))) 5112 (> (window-total-height) (window-total-height window)))
4600 (and (= (nth 0 sel-edges) (nth 0 win-edges)) 5113 ;; Don't throw an error if we can't even window heights for
4601 (= (nth 2 sel-edges) (nth 2 win-edges)) 5114 ;; whatever reason.
4602 (or (= (nth 1 sel-edges) (nth 3 win-edges)) 5115 (condition-case nil
4603 (= (nth 3 sel-edges) (nth 1 win-edges)))))) 5116 (enlarge-window
4604 (let ((window-min-height 1)) 5117 (/ (- (window-total-height window) (window-total-height)) 2))
4605 ;; Don't throw an error if we can't even window heights for 5118 (error nil))))
4606 ;; whatever reason.
4607 (condition-case nil
4608 (enlarge-window (/ (- (window-height window) (window-height)) 2))
4609 (error nil)))))
4610 5119
4611(defun window--display-buffer (buffer window type &optional dedicated) 5120(defun window--display-buffer (buffer window type &optional dedicated)
4612 "Display BUFFER in WINDOW and make its frame visible. 5121 "Display BUFFER in WINDOW and make its frame visible.
@@ -4615,9 +5124,9 @@ is passed unaltered to `display-buffer-record-window'. Set
4615`window-dedicated-p' to DEDICATED if non-nil. Return WINDOW if 5124`window-dedicated-p' to DEDICATED if non-nil. Return WINDOW if
4616BUFFER and WINDOW are live." 5125BUFFER and WINDOW are live."
4617 (when (and (buffer-live-p buffer) (window-live-p window)) 5126 (when (and (buffer-live-p buffer) (window-live-p window))
5127 (display-buffer-record-window type window buffer)
4618 (unless (eq buffer (window-buffer window)) 5128 (unless (eq buffer (window-buffer window))
4619 (set-window-dedicated-p window nil) 5129 (set-window-dedicated-p window nil)
4620 (display-buffer-record-window type window buffer)
4621 (set-window-buffer window buffer) 5130 (set-window-buffer window buffer)
4622 (when dedicated 5131 (when dedicated
4623 (set-window-dedicated-p window dedicated)) 5132 (set-window-dedicated-p window dedicated))
@@ -4791,6 +5300,10 @@ Recognized alist entries include:
4791 window that already displays the buffer. 5300 window that already displays the buffer.
4792 See `display-buffer-reuse-window'. 5301 See `display-buffer-reuse-window'.
4793 5302
5303 `pop-up-frame-parameters' -- Value specifies an alist of frame
5304 parameters to give a new frame, if
5305 one is created.
5306
4794The ACTION argument to `display-buffer' can also have a non-nil 5307The ACTION argument to `display-buffer' can also have a non-nil
4795and non-list value. This means to display the buffer in a window 5308and non-list value. This means to display the buffer in a window
4796other than the selected one, even if it is already displayed in 5309other than the selected one, even if it is already displayed in
@@ -4933,9 +5446,15 @@ This works by calling `pop-up-frame-function'. If successful,
4933return the window used; otherwise return nil. 5446return the window used; otherwise return nil.
4934 5447
4935If ALIST has a non-nil `inhibit-switch-frame' entry, avoid 5448If ALIST has a non-nil `inhibit-switch-frame' entry, avoid
4936raising the new frame." 5449raising the new frame.
4937 (let ((fun pop-up-frame-function) 5450
4938 frame window) 5451If ALIST has a non-nil `pop-up-frame-parameters' entry, the
5452corresponding value is an alist of frame parameters to give the
5453new frame."
5454 (let* ((params (cdr (assq 'pop-up-frame-parameters alist)))
5455 (pop-up-frame-alist (append params pop-up-frame-alist))
5456 (fun pop-up-frame-function)
5457 frame window)
4939 (when (and fun 5458 (when (and fun
4940 (setq frame (funcall fun)) 5459 (setq frame (funcall fun))
4941 (setq window (frame-selected-window frame))) 5460 (setq window (frame-selected-window frame)))
@@ -4988,6 +5507,20 @@ again with `display-buffer-pop-up-window'."
4988 (and pop-up-windows 5507 (and pop-up-windows
4989 (display-buffer-pop-up-window buffer alist)))) 5508 (display-buffer-pop-up-window buffer alist))))
4990 5509
5510(defun display-buffer-below-selected (buffer _alist)
5511 "Try displaying BUFFER in a window below the selected window.
5512This either splits the selected window or reuses the window below
5513the selected one."
5514 (let (window)
5515 (or (and (not (frame-parameter nil 'unsplittable))
5516 (setq window (window--try-to-split-window (selected-window)))
5517 (window--display-buffer
5518 buffer window 'window display-buffer-mark-dedicated))
5519 (and (setq window (window-in-direction 'below))
5520 (not (window-dedicated-p window))
5521 (window--display-buffer
5522 buffer window 'reuse display-buffer-mark-dedicated)))))
5523
4991(defun display-buffer-use-some-window (buffer alist) 5524(defun display-buffer-use-some-window (buffer alist)
4992 "Display BUFFER in an existing window. 5525 "Display BUFFER in an existing window.
4993Search for a usable window, set that window to the buffer, and 5526Search for a usable window, set that window to the buffer, and
@@ -5013,8 +5546,9 @@ that frame."
5013 window)) 5546 window))
5014 (get-largest-window 0 not-this-window)))) 5547 (get-largest-window 0 not-this-window))))
5015 (when (window-live-p window) 5548 (when (window-live-p window)
5016 (window--even-window-heights window) 5549 (prog1
5017 (prog1 (window--display-buffer buffer window 'reuse) 5550 (window--display-buffer buffer window 'reuse)
5551 (window--even-window-heights window)
5018 (unless (cdr (assq 'inhibit-switch-frame alist)) 5552 (unless (cdr (assq 'inhibit-switch-frame alist))
5019 (window--maybe-raise-frame (window-frame window))))))) 5553 (window--maybe-raise-frame (window-frame window)))))))
5020 5554
@@ -5281,7 +5815,7 @@ WINDOW must be a live window and defaults to the selected one."
5281 window)))) 5815 window))))
5282 5816
5283;;; Resizing buffers to fit their contents exactly. 5817;;; Resizing buffers to fit their contents exactly.
5284(defun fit-window-to-buffer (&optional window max-height min-height override) 5818(defun fit-window-to-buffer (&optional window max-height min-height)
5285 "Adjust height of WINDOW to display its buffer's contents exactly. 5819 "Adjust height of WINDOW to display its buffer's contents exactly.
5286WINDOW must be a live window and defaults to the selected one. 5820WINDOW must be a live window and defaults to the selected one.
5287 5821
@@ -5292,10 +5826,6 @@ defaults to `window-min-height'. Both MAX-HEIGHT and MIN-HEIGHT
5292are specified in lines and include the mode line and header line, 5826are specified in lines and include the mode line and header line,
5293if any. 5827if any.
5294 5828
5295Optional argument OVERRIDE non-nil means override restrictions
5296imposed by `window-min-height' and `window-min-width' on the size
5297of WINDOW.
5298
5299Return the number of lines by which WINDOW was enlarged or 5829Return the number of lines by which WINDOW was enlarged or
5300shrunk. If an error occurs during resizing, return nil but don't 5830shrunk. If an error occurs during resizing, return nil but don't
5301signal an error. 5831signal an error.
@@ -5304,28 +5834,27 @@ Note that even if this function makes WINDOW large enough to show
5304_all_ lines of its buffer you might not see the first lines when 5834_all_ lines of its buffer you might not see the first lines when
5305WINDOW was scrolled." 5835WINDOW was scrolled."
5306 (interactive) 5836 (interactive)
5307 ;; Do all the work in WINDOW and its buffer and restore the selected
5308 ;; window and the current buffer when we're done.
5309 (setq window (window-normalize-window window t)) 5837 (setq window (window-normalize-window window t))
5310 ;; Can't resize a full height or fixed-size window. 5838 ;; Can't resize a full height or fixed-size window.
5311 (unless (or (window-size-fixed-p window) 5839 (unless (or (window-size-fixed-p window)
5312 (window-full-height-p window)) 5840 (window-full-height-p window))
5313 ;; `with-selected-window' should orderly restore the current buffer.
5314 (with-selected-window window 5841 (with-selected-window window
5315 ;; We are in WINDOW's buffer now. 5842 (let* ((height (window-total-size))
5316 (let* (;; Adjust MIN-HEIGHT.
5317 (min-height 5843 (min-height
5318 (if override 5844 ;; Adjust MIN-HEIGHT.
5319 (window-min-size window nil window) 5845 (if (numberp min-height)
5320 (max (or min-height window-min-height) 5846 ;; Can't get smaller than `window-safe-min-height'.
5321 window-safe-min-height))) 5847 (max min-height window-safe-min-height)
5322 (max-window-height 5848 ;; Preserve header and mode line if present.
5323 (window-total-size (frame-root-window window))) 5849 (window-min-size nil nil t)))
5324 ;; Adjust MAX-HEIGHT.
5325 (max-height 5850 (max-height
5326 (if (or override (not max-height)) 5851 ;; Adjust MAX-HEIGHT.
5327 max-window-height 5852 (if (numberp max-height)
5328 (min max-height max-window-height))) 5853 ;; Can't get larger than height of frame.
5854 (min max-height
5855 (window-total-size (frame-root-window window)))
5856 ;, Don't delete other windows.
5857 (+ height (window-max-delta nil nil window))))
5329 ;; Make `desired-height' the height necessary to show 5858 ;; Make `desired-height' the height necessary to show
5330 ;; all of WINDOW's buffer, constrained by MIN-HEIGHT 5859 ;; all of WINDOW's buffer, constrained by MIN-HEIGHT
5331 ;; and MAX-HEIGHT. 5860 ;; and MAX-HEIGHT.
@@ -5350,7 +5879,6 @@ WINDOW was scrolled."
5350 (window-max-delta window nil window)) 5879 (window-max-delta window nil window))
5351 (max desired-delta 5880 (max desired-delta
5352 (- (window-min-delta window nil window)))))) 5881 (- (window-min-delta window nil window))))))
5353 ;; This `condition-case' shouldn't be necessary, but who knows?
5354 (condition-case nil 5882 (condition-case nil
5355 (if (zerop delta) 5883 (if (zerop delta)
5356 ;; Return zero if DELTA became zero in the process. 5884 ;; Return zero if DELTA became zero in the process.
diff --git a/lisp/woman.el b/lisp/woman.el
index 5933d593aa5..c8cc7ea6766 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -2531,7 +2531,7 @@ REQUEST is the invoking directive without the leading dot."
2531 (cond 2531 (cond
2532 ;; ((looking-at "[no]") (setq c t)) ; accept n(roff) and o(dd page) 2532 ;; ((looking-at "[no]") (setq c t)) ; accept n(roff) and o(dd page)
2533 ;; ((looking-at "[te]") (setq c nil)) ; reject t(roff) and e(ven page) 2533 ;; ((looking-at "[te]") (setq c nil)) ; reject t(roff) and e(ven page)
2534 ;; Per groff ".if v" is recognised as false (it means -Tversatec). 2534 ;; Per groff ".if v" is recognized as false (it means -Tversatec).
2535 ((looking-at "[ntoev]") 2535 ((looking-at "[ntoev]")
2536 (setq c (memq (following-char) woman-if-conditions-true))) 2536 (setq c (memq (following-char) woman-if-conditions-true)))
2537 ;; Unrecognized letter so reject: 2537 ;; Unrecognized letter so reject:
diff --git a/lisp/xml.el b/lisp/xml.el
index 179fdd6b5cc..d395f75ec0f 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -1011,13 +1011,25 @@ The first line is indented with the optional INDENT-STRING."
1011(defalias 'xml-print 'xml-debug-print) 1011(defalias 'xml-print 'xml-debug-print)
1012 1012
1013(defun xml-escape-string (string) 1013(defun xml-escape-string (string)
1014 "Return STRING with entity substitutions made from `xml-entity-alist'." 1014 "Convert STRING into a string containing valid XML character data.
1015 (mapconcat (lambda (byte) 1015Replace occurrences of &<>'\" in STRING with their default XML
1016 (let ((char (char-to-string byte))) 1016entity references (e.g. replace each & with &amp;).
1017 (if (rassoc char xml-entity-alist) 1017
1018 (concat "&" (car (rassoc char xml-entity-alist)) ";") 1018XML character data must not contain & or < characters, nor the >
1019 char))) 1019character under some circumstances. The XML spec does not impose
1020 string "")) 1020restriction on \" or ', but we just substitute for these too
1021\(as is permitted by the spec)."
1022 (with-temp-buffer
1023 (insert string)
1024 (dolist (substitution '(("&" . "&amp;")
1025 ("<" . "&lt;")
1026 (">" . "&gt;")
1027 ("'" . "&apos;")
1028 ("\"" . "&quot;")))
1029 (goto-char (point-min))
1030 (while (search-forward (car substitution) nil t)
1031 (replace-match (cdr substitution) t t nil)))
1032 (buffer-string)))
1021 1033
1022(defun xml-debug-print-internal (xml indent-string) 1034(defun xml-debug-print-internal (xml indent-string)
1023 "Outputs the XML tree in the current buffer. 1035 "Outputs the XML tree in the current buffer.