aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog736
-rw-r--r--lisp/ChangeLog.106
-rw-r--r--lisp/battery.el17
-rw-r--r--lisp/calc/calc-arith.el2
-rw-r--r--lisp/calc/calcalg2.el2
-rw-r--r--lisp/calendar/cal-menu.el46
-rw-r--r--lisp/calendar/calendar.el530
-rw-r--r--lisp/completion.el25
-rw-r--r--lisp/cus-edit.el85
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dired.el20
-rw-r--r--lisp/emacs-lisp/find-func.el49
-rw-r--r--lisp/faces.el22
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/gnus/ChangeLog59
-rw-r--r--lisp/gnus/gnus-art.el21
-rw-r--r--lisp/gnus/mailcap.el7
-rw-r--r--lisp/gnus/mm-bodies.el8
-rw-r--r--lisp/gnus/mm-decode.el10
-rw-r--r--lisp/gnus/mm-uu.el41
-rw-r--r--lisp/gnus/mm-view.el70
-rw-r--r--lisp/gnus/mml.el19
-rw-r--r--lisp/gnus/spam.el47
-rw-r--r--lisp/hl-line.el10
-rw-r--r--lisp/info.el15
-rw-r--r--lisp/international/latexenc.el3
-rw-r--r--lisp/isearch.el4
-rw-r--r--lisp/log-view.el15
-rw-r--r--lisp/mail/rmail.el21
-rw-r--r--lisp/mail/rmailout.el8
-rw-r--r--lisp/net/tramp-ftp.el38
-rw-r--r--lisp/net/tramp-util.el16
-rw-r--r--lisp/net/tramp-vc.el69
-rw-r--r--lisp/net/tramp.el190
-rw-r--r--lisp/net/trampver.el2
-rw-r--r--lisp/outline.el5
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/progmodes/cpp.el2
-rw-r--r--lisp/progmodes/python.el2
-rw-r--r--lisp/ses.el27
-rw-r--r--lisp/simple.el41
-rw-r--r--lisp/startup.el17
-rw-r--r--lisp/term/w32-win.el4
-rw-r--r--lisp/textmodes/bibtex.el2
-rw-r--r--lisp/textmodes/flyspell.el6
-rw-r--r--lisp/textmodes/org.el277
-rw-r--r--lisp/textmodes/table.el2
-rw-r--r--lisp/thumbs.el362
-rw-r--r--lisp/vc-rcs.el6
-rw-r--r--lisp/vc-sccs.el6
50 files changed, 1888 insertions, 1090 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a049da097fd..fd04ddce0f0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,9 +1,339 @@
12006-01-24 Luc Teirlinck <teirllm@auburn.edu>
2
3 * completion.el: Minor fixes in introductory comment.
4 (completion-def-wrapper): Fix alist.
5
62006-01-25 Nick Roberts <nickrob@snap.net.nz>
7
8 * thumbs.el (thumbs-new-image-size): New function.
9 (thumbs-increment-image-size-element)
10 (thumbs-decrement-image-size-element, thumbs-increment-image-size)
11 (thumbs-decrement-image-size): Delete.
12 (thumbs-resize-image-1): Rename from thumbs-resize-image. Keep old
13 temp files and use to resize.
14 (thumbs-resize-image): Rename from thumbs-resize-image-interactive.
15 Use increment argument to enlarge/shrink. Preserve point.
16 (thumbs-shrink-image): Rename from thumbs-resize-image-size-down.
17 (thumbs-enlarge-image): Rename from thumbs-resize-image-size-up
18 (thumbs-show-thumbs-list): Set thumbs-buffer to current-buffer.
19 (thumbs-mark, thumbs-unmark): Preserve point.
20 (thumbs-modify-image): Keep old temp files and use to modify.
21 Cleanup old temp files at load time. Preserve point.
22 (thumbs-view-image-mode-map): Use new command names.
23
242006-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 * log-view.el (log-view-minor-wrap): First rev is the one at point.
27
28 * calendar/cal-menu.el: Avoid macros from calendar.el so as to break
29 the nastiest part of the cyclic dependency.
30 (cal-menu-update): Use dotimes and calendar-increment-month.
31
32 * calendar/calendar.el: Remove unnecessary leading stars in docstrings.
33 (calendar-week-start-day): Add an :initializer.
34 (calendar-mode-map): Use suppress-keymap, and command remapping.
35 (describe-calendar-mode): Setup xref-stack info for the back button.
36 (calendar-star-date): Insert before delete.
37 (calendar-set-mode-line): Add file-modified info if applicable.
38 (calendar-increment-month): New function.
39
402006-01-24 Tobias C. Rittweiler <tcr@freebits.de> (tiny change)
41
42 * font-lock.el (lisp-font-lock-keywords-2):
43 Recognize "& keywords" only at word boundaries.
44
452006-01-24 Nick Roberts <nickrob@snap.net.nz>
46
47 * thumbs.el (thumbs-extra-images): New variable. Make it buffer-local
48 and permanent-local.
49 (thumbs-max-image-number): New variable. Make it
50 (thumbs-do-thumbs-insertion): Use them
51 (thumbs-per-line): Change default to 4.
52 (thumbs-marked-list): Rename from thumbs-markedL.
53 (thumbs-cleanup-thumbsdir, thumbs-delete-images)
54 (thumbs-rename-images): Use -list instead of L for internal variables.
55 (thumbs-call-convert): Use call-process instead of shell-command.
56 (thumbs-insert-thumb): Add filename as help-echo to each image.
57 (thumbs-show-from-dir): Rename from thumbs-show-all-from-dir.
58 Give dir to thumbs-show-thumbs-list.
59 (thumbs-show-thumbs-list): Set default-directory to that of images.
60 (thumbs-dired-show): Rename from thumbs-dired-show-all.
61 (thumbs-display-thumbs-buffer, thumbs-show-more-images): New functions.
62 (thumbs-mode-map): Bind "+" to thumbs-show-more-images.
63 (thumbs-view-image-mode-map): Bind "^" to thumbs-display-thumbs-buffer.
64
652006-01-23 Stefan Monnier <monnier@iro.umontreal.ca>
66
67 * ses.el (ses-read-cell): Provide a default value.
68
692006-01-23 Juanma Barranquero <lekktu@gmail.com>
70
71 * term/w32-win.el (image-library-alist): Add additional names for
72 GIF library.
73
742006-01-23 Arne J,Ax(Brgensen <arne@arnested.dk>
75
76 * international/latexenc.el (latexenc-find-file-coding-system):
77 Add file-regular-p check.
78
792006-01-22 Stefan Monnier <monnier@iro.umontreal.ca>
80
81 * simple.el (clone-buffer): Don't show the new buffer in the same
82 window.
83
842006-01-23 Juri Linkov <juri@jurta.org>
85
86 * faces.el (link, link-visited): New faces based on default values
87 of `info-xref' and `info-xref-visited'.
88
89 * info.el (info-xref): Inherit from `link'.
90 (info-xref-visited): Inherit from `link-visited'.
91
92 * cus-edit.el (custom-buffer-create-internal): Use widget type
93 `custom-manual' instead of `info-link' and don't set properties
94 `button-face' and `mouse-face' explicitly.
95 (custom-browse-group-tag, custom-browse-variable-tag)
96 (custom-browse-face-tag): Inherit from widget class
97 `custom-group-link' instead of `push-button'.
98 (custom-button-unraised): Inherit from `underline' face.
99 (custom-link): Inherit from `link' face. Fix doc and group.
100 (custom-add-parent-links, custom-group-value-create): Don't set
101 properties `button-face' and `mouse-face' explicitly for
102 `custom-group-link' widget.
103 (custom-group-link): Add properties `button-face' and `mouse-face'
104 to widget definition.
105 (custom-field-keymap): New variable. Put `custom-field-keymap' to
106 editable-field's :keymap property.
107 (custom-mode): Fix docstring: substitute keybindings for
108 `widget-forward' and `widget-backward' from `widget-keymap',
109 `widget-complete' from `custom-field-keymap', replace old
110 `Custom-move-and-invoke' with `widget-move-and-invoke'. Untabify.
111
112 * desktop.el (desktop-load-file): Check for `fboundp' before
113 calling `symbol-function'.
114
115 * simple.el (clone-buffer, clone-indirect-buffer)
116 (clone-indirect-buffer-other-window): Use `read-buffer' instead of
117 `read-string'. Fix prompts.
118
119 * play/doctor.el (doctor-mode-map): Rename from `doc-mode-map'.
120
1212006-01-23 Nick Roberts <nickrob@snap.net.nz>
122
123 * thumbs.el (thumbs-file-alist): Avoid creating duplicate entries.
124
1252006-01-22 Luc Teirlinck <teirllm@auburn.edu>
126
127 * startup.el (inhibit-splash-screen, initial-scratch-message):
128 Doc fixes.
129
1302006-01-22 Michael Albinus <michael.albinus@gmx.de>
131
132 Sync with Tramp 2.0.52.
133
134 * net/tramp.el, net/tramp-ftp.el, net/tramp-util.el,
135 net/tramp-vc.el: Add code for unloading Tramp. See comment before
136 `tramp-unload-tramp' for checklist.
137
138 * net/tramp.el: Require `timer-funcs' instead of `timer' if in
139 XEmacs. Contributed by Steve Youngs <steve@sxemacs.org>.
140 (tramp-unload-file-name-handler-alist)
141 (tramp-unload-tramp): New defuns.
142 (tramp-advice-PC-expand-many-files): New defadvice.
143 (tramp-save-PC-expand-many-files, tramp-setup-complete) Defuns
144 removed.
145 (tramp-handle-expand-file-name): Remove double slash.
146 (tramp-handle-file-attributes-with-ls): Return t as 9th attribute.
147 It doesn't matter, because it will be converted later on.
148 (tramp-handle-file-ownership-preserved-p): Rewritten. The old
149 implementation was just heuristic.
150 (tramp-post-connection): Set uid and gid properties.
151 (tramp-convert-file-attributes): Set file's gid change bit.
152 (tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
153 (tramp-handle-expand-file-name): Use "~root" for tilde expansion
154 in case of su(do)? methods. The home directory of the local user
155 will be taken else.
156 (tramp-open-connection-telnet)
157 (tramp-open-connection-rsh, tramp-open-connection-su)
158 (tramp-open-connection-multi): Set PS1 to "$ ". Otherwise, a
159 local shell prompt could hurt. Reported by Romain Francoise
160 <romain@orebokech.com>.
161 (tramp-let-maybe): Add `edebug-form-spec' property.
162 (tramp-handle-expand-file-name): Bind `default-directory' locally
163 to "/" in order to avoid problems with UNC shares or Cygwin
164 mounts.
165 (tramp-md5-function): Fix typo in error message.
166
167 * net/tramp-ftp.el (tramp-ftp-enable-ange-ftp): New defun.
168
169 * net/tramp-util.el (top): Apply `ignore' instead of `identity'
170 for byte-compiler pacification.
171
1722006-01-22 Andre Spiegel <spiegel@gnu.org>
173
174 * vc-rcs.el (vc-rcs-state-heuristic): Use file-attributes with
175 ID-FORMAT `string'. This allows us to get rid of
176 `vc-user-login-name UID'.
177
178 * vc-sccs.el (vc-sccs-state-heuristic): Likewise.
179
1802006-01-22 John Paul Wallington <jpw@pobox.com>
181
182 * hl-line.el (hl-line-highlight, hl-line-move): Doc fixes.
183
1842006-01-21 Martin Rudalics <rudalics@gmx.at>
185
186 * emacs-lisp/find-func.el (find-definition-noselect)
187 (find-variable-noselect): Search variables in C source code too.
188 (find-function-C-source, find-function-noselect, find-function)
189 (find-function-other-frame, find-variable-noselect, find-variable)
190 (find-variable-other-frame, find-variable-at-point):
191 Fix docstrings.
192
1932006-01-21 Francesco Potorti` <pot@gnu.org>
194
195 * mail/rmailout.el (rmail-output): Don't use content-type if it is nil.
196
1972006-01-21 Agustin Martin <agustin.martin@hispalinux.es>
198
199 * textmodes/flyspell.el (flyspell-emacs-popup, flypell-xemacs-popup):
200 Default to disabling the "Save affix" question.
201
2022006-01-21 Marien Zwart <marienz@gentoo.org> (tiny change)
203
204 * progmodes/python.el (python-mode) <eldoc-mode-hook>: Pass nil as
205 the first arg to run-python.
206
2072006-01-21 Eli Zaretskii <eliz@gnu.org>
208
209 * startup.el (command-line-1): Handle --no-desktop if desktop.el
210 is not loaded.
211
2122006-01-20 Jay Belanger <belanger@truman.edu>
213
214 * calc/calcalg2.el (calc-sum-rec): Fix the sum when the lower
215 limit is 0.
216
217 * calc/calc-arith.el (math-add-symb-fancy): Check the length of
218 the correct variable.
219
2202006-01-20 Carsten Dominik <dominik@science.uva.nl>
221
222 * textmodes/org.el (org-open-at-point): Fixed bug with matching a
223 link. Fixed buggy argument sequence in call to `org-view-tags'.
224 (org-compile-prefix-format): Set `org-prefix-has-tag'.
225 (org-prefix-has-tag): New variable.
226 (org-format-agenda-item): Remove tags from headline if
227 appropriate.
228 (org-agenda-remove-tags-when-in-prefix): New option.
229 (org-get-tags-at): New function.
230
2312006-01-20 Nick Roberts <nickrob@snap.net.nz>
232
233 * thumbs.el (thumbs-buffer): New variable. Make it buffer local.
234 (thumbs-find-image): Move image name and number from buffer name
235 to mode name. Set thumbs-buffer. Preserve point so that large
236 images remain visible.
237 (thumbs-file-alist): Construct list in thumbs-buffer and reverse
238 order.
239 (thumbs-show-image-num): Get image from thumbs-file-alist. Set
240 mode name.
241 (thumbs-next-image, thumbs-previous-image): Make them work.
242
2432006-01-19 Luc Teirlinck <teirllm@auburn.edu>
244
245 * cus-edit.el (custom-buffer-create-internal): State in the text above
246 the whole buffer buttons that they do not operate on hidden items.
247 (custom-face-menu): Use `custom-face-save' instead of
248 `custom-face-save-command'.
249 (custom-face-save-command): Make it an alias for `custom-face-save'
250 and declare it obsolete.
251 (custom-face-save): Doc fix.
252
253 * dired.el (dired-no-confirm): Add quote.
254 (dired-subdir-alist-pre-R): Add quote in
255 `make-variable-buffer-local' form and remove unbalanced parenthesis.
256
2572006-01-19 Stefan Monnier <monnier@iro.umontreal.ca>
258
259 * textmodes/table.el (table-mode-indicator): Typo in last change.
260
2612006-01-19 Richard M. Stallman <rms@gnu.org>
262
263 * outline.el (hide-leaves): Don't call outline-end-of-heading.
264 Fixes bug reported in Nov 2005.
265
266 * isearch.el (isearch-forward): Doc fix.
267
268 * dired.el (dired-move-to-filename-regexp): Define as alias.
269 (dired-no-confirm): Use defcustom.
270 (dired-subdir-alist-pre-R): Put defvar at top level.
271
272 * battery.el (battery-linux-proc-acpi): Handle "last full capacity".
273
274 * textmodes/bibtex.el (bibtex-strings, bibtex-reference-keys):
275 Mark as risky.
276
277 * simple.el (set-mark-command): Doc fix.
278 (clone-indirect-buffer-other-window):
279 Read arg like clone-indirect-buffer.
280 (move-beginning-of-line): Skip invisible newlines.
281
2822006-01-19 Masatake YAMATO <jet@gyve.org>
283
284 * progmodes/cpp.el (cpp-edit-load): Make the order of
285 listed conditions in a base C code buffer and its associate
286 CPP Edit buffer the same.
287
12006-01-19 Kenichi Handa <handa@m17n.org> 2882006-01-19 Kenichi Handa <handa@m17n.org>
2 289
3 * international/mule.el (auto-coding-regexp-alist-lookup): New 290 * mail/rmail.el (rmail-enable-mime): Docstring fixed.
4 function. 291 (rmail-mime-feature): Likewise.
292 (rmail-require-mime-maybe): Use display-warning to show a warning
293 message.
294
295 * international/mule.el (auto-coding-regexp-alist-lookup): New fun.
5 (find-auto-coding): Use auto-coding-regexp-alist-lookup. 296 (find-auto-coding): Use auto-coding-regexp-alist-lookup.
6 297
2982006-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
299
300 * array.el: Move defvars out of eval-when-compile.
301 (array-make-template): Replace undeclared global var with a local one.
302 (array-mode): Inline initialization functions.
303 (array-init-local-variables, array-init-max-row)
304 (array-init-max-column, array-init-columns-per-line)
305 (array-init-field-width, array-init-rows-numbered)
306 (array-init-line-length, array-init-lines-per-row): Remove.
307
308 * play/doctor.el: Move defvars out of eval-when-compile. Use dolist.
309 (doc-mode-map): Define explicitly.
310 (doctor-txtype): Use mapc.
311
312 * textmodes/table.el: Move defvars out of eval-when-compile.
313 Remove harmful code meant to avoid byte-compiler warnings.
314 (table-fixed-mode-indicator): Remove. Use a more complex mode-line
315 specification that checks table-fixed-width-mode directly.
316 (table-recognize-region, table-recognize-cell):
317 Use restore-buffer-modified-p.
318 (table-fixed-width-mode): Remove code that refreshes
319 table-fixed-mode-indicator.
320 (*table--cell-describe-bindings, *table--cell-describe-mode):
321 Avoid obsolete name print-help-return-message.
322 (table--test-cell-list): Don't use replace-regexp from elisp.
323 (table--point-entered-cell-function, table--point-left-cell-function):
324 Don't set table-fixed-mode-indicator, use force-mode-line-update.
325
326 * textmodes/org.el: Move defvars out of eval-when-compile. Move code
327 that was after the end of file. Use buffer-file-name variable.
328 (org-timestamp-change): Use with-current-buffer.
329 (org-todo-list): Don't unnecessarily define a new buffer-local var.
330 (org-agenda-file-to-end, org-agenda-file-to-front): Remove unused arg
331 `file'.
332
333 * progmodes/fortran.el: Move defvars out of eval-when-compile.
334 (fortran-break-line): Remove unused var `opoint'.
335 (fortran-abbrev-start): Obey help-event-list.
336
72006-01-18 Jesper Harder <harder@phys.au.dk> 3372006-01-18 Jesper Harder <harder@phys.au.dk>
8 338
9 * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring. 339 * mail/smtpmail.el (smtpmail-send-it): Use insert-buffer-substring.
@@ -11,25 +341,20 @@
112006-01-18 Masatake YAMATO <jet@gyve.org> 3412006-01-18 Masatake YAMATO <jet@gyve.org>
12 342
13 * progmodes/make-mode.el (makefile-imake-mode): New mode 343 * progmodes/make-mode.el (makefile-imake-mode): New mode
14 derived from maiefile-mode. 344 derived from makefile-mode.
15 (makefile-imake-mode-syntax-table): New syntax table 345 (makefile-imake-mode-syntax-table): New syntax table
16 derived from makefile-mode-syntax-table. 346 derived from makefile-mode-syntax-table.
17 (makefile-mode): Write about makefile-imake-mode in 347 (makefile-mode): Write about makefile-imake-mode in doc string.
18 doc string.
19 (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode. 348 (makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode.
20 (makefile-imake-font-lock-keywords): New font lock keywords. 349 (makefile-imake-font-lock-keywords): New font lock keywords.
21 350
22 * files.el (auto-mode-alist): Added Imakefile. 351 * files.el (auto-mode-alist): Add Imakefile.
23 352
242006-01-17 Agustin Martin <agustin.martin@hispalinux.es> 3532006-01-17 Agustin Martin <agustin.martin@hispalinux.es>
25 354
26 * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when 355 * textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when
27 loading the file rather than when turning on flyspell-mode. 356 loading the file rather than when turning on flyspell-mode.
28 357
292006-01-13 Richard M. Stallman <rms@gnu.org>
30
31 * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
32
332006-01-16 Luc Teirlinck <teirllm@auburn.edu> 3582006-01-16 Luc Teirlinck <teirllm@auburn.edu>
34 359
35 * cus-edit.el (customize-rogue): Minor doc fix. 360 * cus-edit.el (customize-rogue): Minor doc fix.
@@ -100,9 +425,8 @@
100 (term-mode): Make variables local here instead of doing it in 425 (term-mode): Make variables local here instead of doing it in
101 `term-emulate-terminal'. 426 `term-emulate-terminal'.
102 (term-emulate-terminal): Delete incorrect optimization for cr+lf. 427 (term-emulate-terminal): Delete incorrect optimization for cr+lf.
103 Scroll reverse needs to take into account the scroll 428 Scroll reverse needs to take into account the scroll region.
104 region. Saving and restoring the cursor should save the color 429 Saving and restoring the cursor should save the color attributes too.
105 attributes too.
106 (term-reset-terminal): Reset the scroll region. 430 (term-reset-terminal): Reset the scroll region.
107 (term-handle-ansi-escape): Cursor up and down should take into 431 (term-handle-ansi-escape): Cursor up and down should take into
108 account the scroll region. 432 account the scroll region.
@@ -131,6 +455,10 @@
131 (Custom-reset-saved): Do not ask for confirmation in single option 455 (Custom-reset-saved): Do not ask for confirmation in single option
132 buffers. 456 buffers.
133 457
4582006-01-13 Richard M. Stallman <rms@gnu.org>
459
460 * font-lock.el (lisp-font-lock-keywords-1): Minor rearrangement.
461
1342006-01-13 Romain Francoise <romain@orebokech.com> 4622006-01-13 Romain Francoise <romain@orebokech.com>
135 463
136 * add-log.el (add-change-log-entry, change-log-merge): 464 * add-log.el (add-change-log-entry, change-log-merge):
@@ -167,7 +495,7 @@
167 Use `org-expand-wide-chars'. 495 Use `org-expand-wide-chars'.
168 (org-open-file): Fix bug in program launch. 496 (org-open-file): Fix bug in program launch.
169 (org-get-time-of-day): Fix bug with times before 1am. 497 (org-get-time-of-day): Fix bug with times before 1am.
170 (org-agenda-menu): Addes tags commands. 498 (org-agenda-menu): Add tags commands.
171 499
1722006-01-13 Agustin Martin <agustin.martin@hispalinux.es> 5002006-01-13 Agustin Martin <agustin.martin@hispalinux.es>
173 501
@@ -378,7 +706,7 @@
378 706
379 * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in 707 * emacs-lisp/find-func.el (find-definition-noselect): Fix typo in
380 the doc string: "functoin" => "function". 708 the doc string: "functoin" => "function".
381 ldefs-boot.el: Likewise. 709 * ldefs-boot.el: Likewise.
382 710
383 * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a 711 * textmodes/bibtex.el (bibtex-validate-globally): Fix typo in a
384 message text: "Duplicat" => "Duplicate". 712 message text: "Duplicat" => "Duplicate".
@@ -691,7 +1019,7 @@
691 that we set completion-ignore-case (i.e., binding via let is not 1019 that we set completion-ignore-case (i.e., binding via let is not
692 sufficient). 1020 sufficient).
693 (bibtex-complete): Always set completion-ignore-case and 1021 (bibtex-complete): Always set completion-ignore-case and
694 choose-completion-string-functions. The latter is needed because 1022 choose-completion-string-functions. The latter is needed because
695 choose-completion-string-functions keeps its value if we quit the 1023 choose-completion-string-functions keeps its value if we quit the
696 *Completions* buffer without requesting a completion. 1024 *Completions* buffer without requesting a completion.
697 1025
@@ -753,7 +1081,7 @@
753 (bibtex-beginning-first-field): New functions. 1081 (bibtex-beginning-first-field): New functions.
754 (bibtex-skip-to-valid-entry): Use bibtex-valid-entry. Fix regexp. 1082 (bibtex-skip-to-valid-entry): Use bibtex-valid-entry. Fix regexp.
755 (bibtex-map-entries): Fix docstring. 1083 (bibtex-map-entries): Fix docstring.
756 (bibtex-flash-head): New arg prompt. Simplify. 1084 (bibtex-flash-head): New arg prompt. Simplify.
757 (bibtex-enclosing-field): Include code of bibtex-inside-field. 1085 (bibtex-enclosing-field): Include code of bibtex-inside-field.
758 (bibtex-insert-kill): Simplify. Always insert text past the 1086 (bibtex-insert-kill): Simplify. Always insert text past the
759 current field or entry. 1087 current field or entry.
@@ -789,7 +1117,7 @@
789 * progmodes/gud.el (gud-tooltip-dereference): Rename from 1117 * progmodes/gud.el (gud-tooltip-dereference): Rename from
790 toggle-gud-tooltip-dereference. 1118 toggle-gud-tooltip-dereference.
791 (gud-tooltip-print-command): Move concatenation of "*" to expr to... 1119 (gud-tooltip-print-command): Move concatenation of "*" to expr to...
792 (gud-tooltip-tips): ...here when dereferencing.. 1120 (gud-tooltip-tips): ...here when dereferencing.
793 1121
7942005-12-28 Bill Wohler <wohler@newt.com> 11222005-12-28 Bill Wohler <wohler@newt.com>
795 1123
@@ -1040,7 +1368,7 @@
1040 * menu-bar.el (menu-find-file-existing): New function. 1368 * menu-bar.el (menu-find-file-existing): New function.
1041 (menu-bar-file-menu): Use menu-find-file-existing for Open. 1369 (menu-bar-file-menu): Use menu-find-file-existing for Open.
1042 1370
1043 * tool-bar.el (tool-bar-setup): open changed to menu-find-file-existing. 1371 * tool-bar.el (tool-bar-setup): Open changed to menu-find-file-existing.
1044 1372
10452005-12-22 Stefan Monnier <monnier@iro.umontreal.ca> 13732005-12-22 Stefan Monnier <monnier@iro.umontreal.ca>
1046 1374
@@ -1301,7 +1629,7 @@
1301 * simple.el (last-buffer): Move here. 1629 * simple.el (last-buffer): Move here.
1302 (get-next-valid-buffer): New function. 1630 (get-next-valid-buffer): New function.
1303 (next-buffer): Use frame-local buffer list, maintain buried buffer list. 1631 (next-buffer): Use frame-local buffer list, maintain buried buffer list.
1304 (prev-buffer): Ditto. Rename to `previous-buffer'. 1632 (prev-buffer): Ditto. Rename to `previous-buffer'.
1305 1633
1306 * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'. 1634 * menu-bar.el (menu-bar-update-buffers): Update uses of `prev-buffer'.
1307 * bindings.el (global-map): Ditto. 1635 * bindings.el (global-map): Ditto.
@@ -1330,8 +1658,8 @@
1330 (ispell-buffer-local-dict): 1658 (ispell-buffer-local-dict):
1331 Don't set spell-personal-dictionary after killing process. 1659 Don't set spell-personal-dictionary after killing process.
1332 (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name. 1660 (ispell-buffer-local-words): Don't clear out ispell-buffer-local-name.
1333 (ispell-tex-skip-alists) 1661 (ispell-tex-skip-alists, ispell-html-skip-alists)
1334 (ispell-html-skip-alists, ispell-skip-region-alist): Mark as risky. 1662 (ispell-skip-region-alist): Mark as risky.
1335 1663
1336 * net/newsticker.el (newsticker--retrieval-timer-list) 1664 * net/newsticker.el (newsticker--retrieval-timer-list)
1337 (newsticker--display-timer, newsticker-running-p) 1665 (newsticker--display-timer, newsticker-running-p)
@@ -1570,7 +1898,7 @@
1570 * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display): 1898 * progmodes/gud.el (gud-tooltip-modes, gud-tooltip-display):
1571 Add the gud groupname. 1899 Add the gud groupname.
1572 (gud-tooltip-mode): Add the tooltip groupname. 1900 (gud-tooltip-mode): Add the tooltip groupname.
1573 (gud-tooltip-echo-area): Add the gud groupname. Remove tag to 1901 (gud-tooltip-echo-area): Add the gud groupname. Remove tag to
1574 avoid conflict with tooltip-use-echo-area. 1902 avoid conflict with tooltip-use-echo-area.
1575 1903
15762005-12-10 Romain Francoise <romain@orebokech.com> 19042005-12-10 Romain Francoise <romain@orebokech.com>
@@ -1593,7 +1921,7 @@
1593 1921
15942005-12-10 David Koppelman <koppel@ece.lsu.edu> 19222005-12-10 David Koppelman <koppel@ece.lsu.edu>
1595 1923
1596 * hi-lock.el: (hi-lock-mode) Renamed from hi-lock-buffer-mode; 1924 * hi-lock.el (hi-lock-mode): Rename from hi-lock-buffer-mode;
1597 react if global-hi-lock-mode seems intended. 1925 react if global-hi-lock-mode seems intended.
1598 (global-hi-lock-mode) Renamed from hi-lock-mode. 1926 (global-hi-lock-mode) Renamed from hi-lock-mode.
1599 (hi-lock-archaic-interface-message-used) 1927 (hi-lock-archaic-interface-message-used)
@@ -1736,8 +2064,8 @@
1736 2064
17372005-12-08 Kim F. Storm <storm@cua.dk> 20652005-12-08 Kim F. Storm <storm@cua.dk>
1738 2066
1739 * emulation/cua-rect.el (cua--rectangle-aux-replace): Fix 2067 * emulation/cua-rect.el (cua--rectangle-aux-replace):
1740 indention of text on right side of replaced rectangle. 2068 Fix indention of text on right side of replaced rectangle.
1741 2069
17422005-12-09 Nick Roberts <nickrob@snap.net.nz> 20702005-12-09 Nick Roberts <nickrob@snap.net.nz>
1743 2071
@@ -1773,7 +2101,7 @@
1773 * progmodes/cc-defs.el: 2101 * progmodes/cc-defs.el:
1774 (i) Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4) 2102 (i) Load cc-fix.elc for `push' and `pop' (for GNU Emacs 20.4)
1775 2103
1776 * progmodes/cc-cmds.el (c-show-syntactic-information): change the 2104 * progmodes/cc-cmds.el (c-show-syntactic-information): Change the
1777 highlighting mechanism so it will work in XEmacs too. 2105 highlighting mechanism so it will work in XEmacs too.
1778 2106
1779 * progmodes/cc-defs.el: Insert c-int-to-char. 2107 * progmodes/cc-defs.el: Insert c-int-to-char.
@@ -1803,8 +2131,8 @@
1803 2131
1804 * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w. 2132 * progmodes/cc-mode.el: Bind c-subword-mode to C-c C-w.
1805 2133
1806 * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el: Rename 2134 * progmodes/cc-subword.el, cc-cmds.el, cc-mode.el:
1807 "c-subword-move-mode" as "c-subword-mode". 2135 Rename "c-subword-move-mode" as "c-subword-mode".
1808 2136
1809 * progmodes/cc-mode.el: Added tty suitable bindings for C-c 2137 * progmodes/cc-mode.el: Added tty suitable bindings for C-c
1810 <delete> and C-c C-<delete>. (To the c-hungry- delete functions). 2138 <delete> and C-c C-<delete>. (To the c-hungry- delete functions).
@@ -1836,8 +2164,8 @@
18362005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 21642005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
1837 2165
1838 * progmodes/cc-fonts.el, cc-vars.el 2166 * progmodes/cc-fonts.el, cc-vars.el
1839 (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection, 2167 (gtkdoc-font-lock-doc-comments, gtkdoc-font-lock-doc-protection)
1840 gtkdoc-font-lock-keywords): GtkDoc patterns contributed by 2168 (gtkdoc-font-lock-keywords): GtkDoc patterns contributed by
1841 Masatake YAMATO. 2169 Masatake YAMATO.
1842 2170
1843 (c-doc-comment-style): Made GtkDoc default in C mode. 2171 (c-doc-comment-style): Made GtkDoc default in C mode.
@@ -1861,7 +2189,7 @@
1861 c-syntactic-context for calls to "criteria functions", for 2189 c-syntactic-context for calls to "criteria functions", for
1862 consistency with other calls to user functions. 2190 consistency with other calls to user functions.
1863 2191
1864 * progmodes/cc-cmds.el (c-indent-command): expunge use of 2192 * progmodes/cc-cmds.el (c-indent-command): Expunge use of
1865 `current-prefix-arg', since this might be the prefix arg to a 2193 `current-prefix-arg', since this might be the prefix arg to a
1866 command which calls c-indent-command as a function. Change the 2194 command which calls c-indent-command as a function. Change the
1867 interactive spec from "p" to "P". 2195 interactive spec from "p" to "P".
@@ -1880,14 +2208,14 @@
1880 2208
18812005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 22092005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
1882 2210
1883 * progmodes/cc-cmds.el (c-mask-paragraph): correct, so that 2211 * progmodes/cc-cmds.el (c-mask-paragraph): Correct, so that
1884 auto-fill doesn't split a c-comment's last word from a hanging 2212 auto-fill doesn't split a c-comment's last word from a hanging
1885 "*/" when a space is typed between them after fill-column. 2213 "*/" when a space is typed between them after fill-column.
1886 2214
1887 * progmodes/cc-defs.el: New macro c-delete-and-extract-region. 2215 * progmodes/cc-defs.el: New macro c-delete-and-extract-region.
1888 2216
1889 * progmodes/cc-styles.el (c-set-style, 2217 * progmodes/cc-styles.el (c-set-style)
1890 c-setup-paragraph-variables): Abort the command if we're not in a 2218 (c-setup-paragraph-variables): Abort the command if we're not in a
1891 CC Mode buffer. 2219 CC Mode buffer.
1892 2220
1893 * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation 2221 * progmodes/cc-align.el (c-lineup-C-comments): Correct indentation
@@ -1918,25 +2246,25 @@
1918 2246
19192005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 22472005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
1920 2248
1921 * progmodes/cc-fonts.el (c-basic-matchers-before, 2249 * progmodes/cc-fonts.el (c-basic-matchers-before)
1922 c-complex-decl-matchers): Fixed the "not-arrow-prefix" regexp used 2250 (c-complex-decl-matchers): Fixed the "not-arrow-prefix" regexp used
1923 in Pike. 2251 in Pike.
1924 2252
1925 * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has 2253 * progmodes/cc-langs.el (c-other-op-syntax-tokens): Only C++ has
1926 digraphs. 2254 digraphs.
1927 2255
1928 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el 2256 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el
1929 (c-cpp-message-directives, c-cpp-include-directives, 2257 (c-cpp-message-directives, c-cpp-include-directives)
1930 c-opt-cpp-macro-define, c-opt-cpp-macro-define-start, 2258 (c-opt-cpp-macro-define, c-opt-cpp-macro-define-start)
1931 c-cpp-expr-directives): Introduced new language constants to 2259 (c-cpp-expr-directives): Introduced new language constants to
1932 control cpp syntax in a cleaner way. 2260 control cpp syntax in a cleaner way.
1933 2261
1934 (c-cpp-expr-functions): Renamed from c-cpp-defined-fns. 2262 (c-cpp-expr-functions): Renamed from c-cpp-defined-fns.
1935 2263
1936 (c-cpp-matchers, c-forward-to-cpp-define-body): Use them. 2264 (c-cpp-matchers, c-forward-to-cpp-define-body): Use them.
1937 2265
1938 * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines, 2266 * progmodes/cc-langs.el, cc-fonts.el (c-string-escaped-newlines)
1939 c-multiline-string-start-char): New language constants and 2267 (c-multiline-string-start-char): New language constants and
1940 variables to specify how newlines in string literals work. 2268 variables to specify how newlines in string literals work.
1941 2269
1942 (c-font-lock-invalid-string): Use them. 2270 (c-font-lock-invalid-string): Use them.
@@ -1952,15 +2280,15 @@
1952 * progmodes/cc-engine.el, cc-langs.el 2280 * progmodes/cc-engine.el, cc-langs.el
1953 (c-opt-op-identifier-prefix): New language constant and variable. 2281 (c-opt-op-identifier-prefix): New language constant and variable.
1954 2282
1955 (c-just-after-func-arglist-p, c-after-special-operator-id, 2283 (c-just-after-func-arglist-p, c-after-special-operator-id)
1956 c-search-decl-header-end, c-inside-bracelist-p): Use it. 2284 (c-search-decl-header-end, c-inside-bracelist-p): Use it.
1957 2285
1958 * progmodes/cc-align.el, cc-engine.el 2286 * progmodes/cc-align.el, cc-engine.el
1959 (c-after-special-operator-id): New helper to handle C++ operator 2287 (c-after-special-operator-id): New helper to handle C++ operator
1960 identifiers. 2288 identifiers.
1961 2289
1962 (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p, 2290 (c-lineup-topmost-intro-cont, c-just-after-func-arglist-p)
1963 c-guess-basic-syntax): Handle C++ operator identifiers in 2291 (c-guess-basic-syntax): Handle C++ operator identifiers in
1964 declarations. 2292 declarations.
1965 2293
1966 * progmodes/cc-langs.el (c-assignment-operators): Added the 2294 * progmodes/cc-langs.el (c-assignment-operators): Added the
@@ -2030,7 +2358,7 @@
2030 (c-point-syntax): Add a check for "virtual semicolons" in AWK 2358 (c-point-syntax): Add a check for "virtual semicolons" in AWK
2031 mode, so that the tentative extra newline doesn't change the 2359 mode, so that the tentative extra newline doesn't change the
2032 syntax of the following brace. 2360 syntax of the following brace.
2033 (c-electric-brace): restructure by extracting the above functions. 2361 (c-electric-brace): Restructure by extracting the above functions.
2034 Tidy up the coding somewhat. 2362 Tidy up the coding somewhat.
2035 (c-electric-semi&comma, c-electric-colon, c-electric-paren): 2363 (c-electric-semi&comma, c-electric-colon, c-electric-paren):
2036 restructure a bit. 2364 restructure a bit.
@@ -2055,9 +2383,9 @@
2055 * progmodes/cc-subword.el: New functions and minor mode to handle 2383 * progmodes/cc-subword.el: New functions and minor mode to handle
2056 SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO: 2384 SillyCapsedStyleIndentifiers, contributed by Masatake YAMATO:
2057 2385
2058 (c-forward-subword, c-backward-subword, c-mark-subword, 2386 (c-forward-subword, c-backward-subword, c-mark-subword)
2059 c-kill-subword, c-backward-kill-subword, c-transpose-subwords, 2387 (c-kill-subword, c-backward-kill-subword, c-transpose-subwords)
2060 c-capitalize-subword, c-downcase-subword, c-upcase-subword): 2388 (c-capitalize-subword, c-downcase-subword, c-upcase-subword):
2061 Functions corresponding to the standard word handling functions. 2389 Functions corresponding to the standard word handling functions.
2062 2390
2063 (c-subword-move-mode): Minor mode that replaces all the standard 2391 (c-subword-move-mode): Minor mode that replaces all the standard
@@ -2078,7 +2406,7 @@
2078 2406
2079 Introduce an "awk" style, mainly for auto-newline and clean-ups. 2407 Introduce an "awk" style, mainly for auto-newline and clean-ups.
2080 2408
2081 * progmodes/cc-align.el: new function c-snug-1line-defun-close 2409 * progmodes/cc-align.el: New function c-snug-1line-defun-close
2082 2410
2083 * progmodes/cc-cmds.el: In c-electric-brace, add code for new 2411 * progmodes/cc-cmds.el: In c-electric-brace, add code for new
2084 clean-up one-liner-defun. 2412 clean-up one-liner-defun.
@@ -2101,8 +2429,8 @@
2101 * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an 2429 * progmodes/cc-defs.el (c-tnt-chng-record-state): Don't signal an
2102 error if the mark isn't set. 2430 error if the mark isn't set.
2103 2431
2104 * progmodes/cc-engine.el (c-guess-continued-construct, 2432 * progmodes/cc-engine.el (c-guess-continued-construct)
2105 c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more 2433 (c-guess-basic-syntax): Use `c-forward-decl-or-cast-1' to more
2106 accurately detect functions inside functions. 2434 accurately detect functions inside functions.
2107 2435
2108 * progmodes/cc-engine.el (c-at-expression-start-p): New function 2436 * progmodes/cc-engine.el (c-at-expression-start-p): New function
@@ -2123,8 +2451,8 @@
2123 (c-forward-objc-directive): New function to move over any ObjC 2451 (c-forward-objc-directive): New function to move over any ObjC
2124 directive. 2452 directive.
2125 2453
2126 (c-just-after-func-arglist-p, c-guess-basic-syntax, 2454 (c-just-after-func-arglist-p, c-guess-basic-syntax)
2127 c-basic-matchers-before): Use it. 2455 (c-basic-matchers-before): Use it.
2128 2456
2129 (c-font-lock-objc-iip-decl): Removed. 2457 (c-font-lock-objc-iip-decl): Removed.
2130 2458
@@ -2134,8 +2462,8 @@
2134 * progmodes/cc-styles.el (c-style-alist): Fixed several 2462 * progmodes/cc-styles.el (c-style-alist): Fixed several
2135 inconsistencies in the Whitesmith style. 2463 inconsistencies in the Whitesmith style.
2136 2464
2137 * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks): New 2465 * progmodes/cc-align.el (c-lineup-after-whitesmith-blocks):
2138 lineup function to get lines after Whitesmith style blocks 2466 New lineup function to get lines after Whitesmith style blocks
2139 correctly indented. 2467 correctly indented.
2140 2468
2141 (c-lineup-whitesmith-in-block): Backed out the compensation for 2469 (c-lineup-whitesmith-in-block): Backed out the compensation for
@@ -2170,10 +2498,10 @@
21702005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 24982005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
2171 2499
2172 * progmodes/cc-awk.el: Change the terminology of regexps: A char 2500 * progmodes/cc-awk.el: Change the terminology of regexps: A char
2173 list is now 2501 list is now [asdf], a char class [:alpha:]. Include code for char
2174 [asdf], a char class [:alpha:]. Include code for char classes. 2502 classes. Set c-awk-NL-prop on lines ending in open strings. (Bug
2175 Set c-awk-NL-prop on lines ending in open strings. (Bug fix.) 2503 fix.) Add character classes (e.g. "[:alpha:]") into AWK Mode's
2176 Add character classes (e.g. "[:alpha:]") into AWK Mode's regexps. 2504 regexps.
2177 2505
2178 Remove (nearly all of) the cruft associated with AWK Mode's former 2506 Remove (nearly all of) the cruft associated with AWK Mode's former
2179 concept of "virtual semicolons": 2507 concept of "virtual semicolons":
@@ -2195,7 +2523,7 @@
2195 adapted for virtual semicolons. 2523 adapted for virtual semicolons.
2196 2524
2197 * progmodes/cc-engine.el: 2525 * progmodes/cc-engine.el:
2198 (c-ws*-string-limit-regexp): new regexp. 2526 (c-ws*-string-limit-regexp): New regexp.
2199 (c-forward-single-comment, c-backward-single-comment): Comment out 2527 (c-forward-single-comment, c-backward-single-comment): Comment out
2200 the (now redundant) "special" AWK stuff. 2528 the (now redundant) "special" AWK stuff.
2201 2529
@@ -2207,9 +2535,8 @@
2207 2535
2208 * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow 2536 * progmodes/cc-fonts.el (c-font-lock-declarations): Always narrow
2209 to the fontified region so that fontification doesn't occur 2537 to the fontified region so that fontification doesn't occur
2210 outside it 2538 outside it (could happen e.g. when fontifying a line with an
2211 (could happen e.g. when fontifying a line with an unfinished 2539 unfinished declaration).
2212 declaration).
2213 2540
22142005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org> 25412005-12-08 Alan Mackenzie <bug-cc-mode@gnu.org>
2215 2542
@@ -2322,7 +2649,7 @@
2322 initialised in c-setup-paragraph-variables, used in string 2649 initialised in c-setup-paragraph-variables, used in string
2323 scanning subroutines of c-beginning-of-statement. 2650 scanning subroutines of c-beginning-of-statement.
2324 2651
2325 * progmodes/cc-cmds.el (c-electric-brace): don't delete a comment 2652 * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment
2326 which precedes the newly inserted `{'. 2653 which precedes the newly inserted `{'.
2327 2654
23282005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 26552005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
@@ -2358,8 +2685,8 @@
2358 * progmodes/cc-engine.el (c-guess-basic-syntax): Simplified case 2685 * progmodes/cc-engine.el (c-guess-basic-syntax): Simplified case
2359 16D - can't be a class-close at that point. 2686 16D - can't be a class-close at that point.
2360 2687
2361 * progmodes/cc-engine.el (c-guess-basic-syntax, 2688 * progmodes/cc-engine.el (c-guess-basic-syntax)
2362 c-add-class-syntax): Don't narrow out the enclosing declaration 2689 (c-add-class-syntax): Don't narrow out the enclosing declaration
2363 level. This makes everything a lot easier, and it was actually 2690 level. This makes everything a lot easier, and it was actually
2364 only four small places that needed it to work. Some places that 2691 only four small places that needed it to work. Some places that
2365 previously did `widen' are removed now, which has the effect that 2692 previously did `widen' are removed now, which has the effect that
@@ -2385,7 +2712,7 @@
2385 2712
2386 * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC. 2713 * progmodes/cc-langs.el (c-symbol-start): Include `@' in ObjC.
2387 2714
2388 (c-decl-start-re): No no longer any need for special treatment of 2715 (c-decl-start-re): No longer any need for special treatment of
2389 ObjC due to the above. 2716 ObjC due to the above.
2390 2717
2391 (c-other-block-decl-kwds): Handle "extern" in ObjC too since it 2718 (c-other-block-decl-kwds): Handle "extern" in ObjC too since it
@@ -2397,8 +2724,8 @@
2397 2724
2398 (c-opt-identifier-prefix-key): New internal language constant. 2725 (c-opt-identifier-prefix-key): New internal language constant.
2399 2726
2400 (c-opt-identifier-concat-key, c-opt-after-id-concat-key, 2727 (c-opt-identifier-concat-key, c-opt-after-id-concat-key)
2401 c-identifier-start, c-identifier-key): Now completely calculated 2728 (c-identifier-start, c-identifier-key): Now completely calculated
2402 from other constants. 2729 from other constants.
2403 2730
2404 (c-identifier-last-sym-match): Decommissioned since it's no longer 2731 (c-identifier-last-sym-match): Decommissioned since it's no longer
@@ -2415,10 +2742,10 @@
2415 * progmodes/cc-langs.el (c-filter-ops): New helper function to 2742 * progmodes/cc-langs.el (c-filter-ops): New helper function to
2416 simplify access to `c-operators' and its likes. 2743 simplify access to `c-operators' and its likes.
2417 2744
2418 (c-operator-list, c-all-op-syntax-tokens, 2745 (c-operator-list, c-all-op-syntax-tokens)
2419 c-nonsymbol-token-regexp, c-<>-multichar-token-regexp, 2746 (c-nonsymbol-token-regexp, c-<>-multichar-token-regexp)
2420 c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds, 2747 (c-<-op-cont-regexp, c->-op-cont-regexp, c-expr-kwds)
2421 c-primary-expr-regexp, c-cast-parens): Use it. 2748 (c-primary-expr-regexp, c-cast-parens): Use it.
2422 2749
2423 * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without 2750 * progmodes/cc-defs.el (c-lang-const): Fixes to allow use without
2424 an explicit language in functions. 2751 an explicit language in functions.
@@ -2432,8 +2759,8 @@
2432 (c-type-decl-prefix-key): Removed some now unnecessary cruft from 2759 (c-type-decl-prefix-key): Removed some now unnecessary cruft from
2433 the Pike value. 2760 the Pike value.
2434 2761
2435 * progmodes/cc-engine.el (c-on-identifier, 2762 * progmodes/cc-engine.el (c-on-identifier)
2436 c-simple-skip-symbol-backward): Small fix for handling "-" 2763 (c-simple-skip-symbol-backward): Small fix for handling "-"
2437 correctly in `skip-chars-backward'. Affected the operator lfun 2764 correctly in `skip-chars-backward'. Affected the operator lfun
2438 syntax in Pike. 2765 syntax in Pike.
2439 2766
@@ -2443,8 +2770,8 @@
2443 * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword 2770 * progmodes/cc-langs.el (c-paren-nontype-kwds): The GCC keyword
2444 "__attribute__" is followed by a parenthesis. 2771 "__attribute__" is followed by a parenthesis.
2445 2772
2446 (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re, 2773 (c-type-start-kwds, c-prefix-spec-kwds, c-prefix-spec-kwds-re)
2447 c-specifier-key, c-not-decl-init-keywords): Some cleanup using new 2774 (c-specifier-key, c-not-decl-init-keywords): Some cleanup using new
2448 language constants `c-type-start-kwds' and `c-prefix-spec-kwds'. 2775 language constants `c-type-start-kwds' and `c-prefix-spec-kwds'.
2449 2776
2450 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el: Internal 2777 * progmodes/cc-fonts.el, cc-langs.el, cc-engine.el: Internal
@@ -2455,12 +2782,12 @@
2455 declarations that can start anywhere. Used for class declarations 2782 declarations that can start anywhere. Used for class declarations
2456 in Pike. 2783 in Pike.
2457 2784
2458 (c-specifier-key, c-not-decl-init-keywords, 2785 (c-specifier-key, c-not-decl-init-keywords)
2459 c-decl-prefix-or-start-re, c-find-decl-prefix-search, 2786 (c-decl-prefix-or-start-re, c-find-decl-prefix-search)
2460 c-find-decl-spots): Implement `c-decl-start-kwds'. 2787 (c-find-decl-spots): Implement `c-decl-start-kwds'.
2461 2788
2462 (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds, 2789 (c-other-decl-kwds, c-postfix-decl-spec-kwds, c-decl-hangon-kwds)
2463 c-decl-hangon-key, c-forward-decl-or-cast-1): Separated the 2790 (c-decl-hangon-key, c-forward-decl-or-cast-1): Separated the
2464 handling of the compiler specific extension keywords into a new 2791 handling of the compiler specific extension keywords into a new
2465 language constant `c-decl-hangon-kwds' that defines keyword 2792 language constant `c-decl-hangon-kwds' that defines keyword
2466 clauses to be ignored in declarations. 2793 clauses to be ignored in declarations.
@@ -2470,10 +2797,10 @@
2470 Necessary to stop at the declared identifier in e.g. IDL valuetype 2797 Necessary to stop at the declared identifier in e.g. IDL valuetype
2471 declarations. 2798 declarations.
2472 2799
2473 (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds, 2800 (c-typedef-decl-kwds, c-typeless-decl-kwds, c-type-list-kwds)
2474 c-prefix-spec-kwds-re, c-postfix-spec-kwds, 2801 (c-prefix-spec-kwds-re, c-postfix-spec-kwds)
2475 c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key, 2802 (c-after-suffixed-type-decl-key, c-opt-postfix-decl-spec-key)
2476 c-forward-decl-or-cast-1): Recognize the declared identifier in 2803 (c-forward-decl-or-cast-1): Recognize the declared identifier in
2477 class and enum declarations as such and not as part of the type. 2804 class and enum declarations as such and not as part of the type.
2478 2805
2479 (c-forward-decl-or-cast-1, c-forward-label): Relaxed the 2806 (c-forward-decl-or-cast-1, c-forward-label): Relaxed the
@@ -2489,24 +2816,24 @@
2489 * progmodes/cc-engine.el (c-maybe-labelp): Provide no default 2816 * progmodes/cc-engine.el (c-maybe-labelp): Provide no default
2490 value - this variable is always dynamically bound. 2817 value - this variable is always dynamically bound.
2491 2818
2492 * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el, 2819 * progmodes/cc-engine.el, cc-fonts.el, cc-langs.el, cc-menus.el
2493 cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el, 2820 * cc-mode.el, cc-styles.el, cc-vars.el, cc-align.el, cc-awk.el
2494 cc-cmds.el, cc-defs.el: Changed the policy for marking up 2821 * cc-cmds.el, cc-defs.el: Changed the policy for marking up
2495 functions that might do hidden buffer changes: All such internal 2822 functions that might do hidden buffer changes: All such internal
2496 functions are now marked instead of those that don't. 2823 functions are now marked instead of those that don't.
2497 2824
2498 (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments, 2825 (c-beginning-of-macro, c-end-of-macro, c-(forward|backward)-comments)
2499 c-(forward|backward)-single-comment, c-parse-state, c-on-identifier, 2826 (c-(forward|backward)-single-comment, c-parse-state, c-on-identifier)
2500 c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments, 2827 (c-(fast-|slow-|)in-literal, c-literal-limits, c-collect-line-comments)
2501 c-literal-type): Allow these functions to make hidden buffer changes, 2828 (c-literal-type): Allow these functions to make hidden buffer changes,
2502 so that they are free to use text property caching later on. 2829 so that they are free to use text property caching later on.
2503 2830
2504 (c-electric-backspace, c-electric-delete-forward, c-electric-pound, 2831 (c-electric-backspace, c-electric-delete-forward, c-electric-pound)
2505 c-electric-brace, c-electric-slash, c-electric-star, 2832 (c-electric-brace, c-electric-slash, c-electric-star)
2506 c-electric-semi&comma, c-electric-colon, c-electric-lt-gt, 2833 (c-electric-semi&comma, c-electric-colon, c-electric-lt-gt)
2507 c-electric-paren, c-electric-continued-statement, c-indent-command, 2834 (c-electric-paren, c-electric-continued-statement, c-indent-command)
2508 c-indent-region, c-mask-paragraph, c-indent-new-comment-line, 2835 (c-indent-region, c-mask-paragraph, c-indent-new-comment-line)
2509 c-context-line-break): Added `c-save-buffer-state' calls to comply 2836 (c-context-line-break): Added `c-save-buffer-state' calls to comply
2510 with the changed semantics of the functions above. 2837 with the changed semantics of the functions above.
2511 2838
2512 * progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed a bug 2839 * progmodes/cc-engine.el (c-beginning-of-statement-1): Fixed a bug
@@ -2521,10 +2848,10 @@
2521 (completed statement) with `}' (statement completed by closing 2848 (completed statement) with `}' (statement completed by closing
2522 brace or semicolon) and `$' (statement completed by EOL). 2849 brace or semicolon) and `$' (statement completed by EOL).
2523 2850
2524 (c-awk-virtual-semicolon-ends-prev-line-p, 2851 (c-awk-virtual-semicolon-ends-prev-line-p)
2525 c-awk-virtual-semicolon-ends-line-p, 2852 (c-awk-virtual-semicolon-ends-line-p)
2526 c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward, 2853 (c-awk-skip-semantic-ws-forward, c-awk-skip-semantic-ws-backward)
2527 c-awk-at-statement-end-p): new functions 2854 (c-awk-at-statement-end-p): New functions.
2528 2855
2529 * progmodes/cc-cmds.el: Simplify the structure of functions 2856 * progmodes/cc-cmds.el: Simplify the structure of functions
2530 c-forward-over-illiterals, c-back-over-illiterals. Enhance these 2857 c-forward-over-illiterals, c-back-over-illiterals. Enhance these
@@ -2596,8 +2923,8 @@
2596 * progmodes/cc-align.el (c-lineup-arglist): Fixed bug when the 2923 * progmodes/cc-align.el (c-lineup-arglist): Fixed bug when the
2597 first argument starts with a special brace list. 2924 first argument starts with a special brace list.
2598 2925
2599 * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1, 2926 * progmodes/cc-engine.el, cc-fonts.el (c-forward-decl-or-cast-1)
2600 c-font-lock-declarations): Broke out the declaration and cast 2927 (c-font-lock-declarations): Broke out the declaration and cast
2601 recognition from `c-font-lock-declarations' to a new function, so 2928 recognition from `c-font-lock-declarations' to a new function, so
2602 that it can be used in the indentation engine. 2929 that it can be used in the indentation engine.
2603 2930
@@ -2606,16 +2933,16 @@
2606 wrong side of the search limit that could happen when the start 2933 wrong side of the search limit that could happen when the start
2607 position is inside a literal. 2934 position is inside a literal.
2608 2935
2609 * progmodes/cc-engine.el (c-parse-state, 2936 * progmodes/cc-engine.el (c-parse-state)
2610 c-invalidate-state-cache): Modified the use of `c-state-cache-end' 2937 (c-invalidate-state-cache): Modified the use of `c-state-cache-end'
2611 so that it's kept a little bit back to increase the hit rate. 2938 so that it's kept a little bit back to increase the hit rate.
2612 2939
2613 (c-parse-state): Changed the macro handling and fixed some 2940 (c-parse-state): Changed the macro handling and fixed some
2614 glitches. Macro context is checked more often than necessary now, 2941 glitches. Macro context is checked more often than necessary now,
2615 but otoh less garbage conses are generated. 2942 but otoh less garbage conses are generated.
2616 2943
2617 * progmodes/cc-engine.el (c-parse-state, 2944 * progmodes/cc-engine.el (c-parse-state)
2618 c-invalidate-state-cache): Cache the last position where 2945 (c-invalidate-state-cache): Cache the last position where
2619 `c-state-cache' applies. This can speed up refontification quite 2946 `c-state-cache' applies. This can speed up refontification quite
2620 a bit in blocks where there are many non-brace parens before the 2947 a bit in blocks where there are many non-brace parens before the
2621 point. 2948 point.
@@ -2640,8 +2967,8 @@
2640 * progmodes/cc-engine.el (c-add-stmt-syntax): Narrowed down the 2967 * progmodes/cc-engine.el (c-add-stmt-syntax): Narrowed down the
2641 special case for "else if" clauses. 2968 special case for "else if" clauses.
2642 2969
2643 * progmodes/cc-engine.el (c-looking-at-inexpr-block, 2970 * progmodes/cc-engine.el (c-looking-at-inexpr-block)
2644 c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'. 2971 (c-add-stmt-syntax): Use `c-recognize-paren-inexpr-blocks'.
2645 2972
2646 * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks): New 2973 * progmodes/cc-langs.el (c-recognize-paren-inexpr-blocks): New
2647 language variable to recognize the gcc extension with statement 2974 language variable to recognize the gcc extension with statement
@@ -2658,8 +2985,8 @@
2658 `c-beginning-of-statement-1' instead of duplicating parts of it. 2985 `c-beginning-of-statement-1' instead of duplicating parts of it.
2659 This fixes bogus label recognition. 2986 This fixes bogus label recognition.
2660 2987
2661 * progmodes/cc-engine.el (c-add-type, c-check-type, 2988 * progmodes/cc-engine.el (c-add-type, c-check-type)
2662 c-forward-name, c-forward-type): Improved storage of template 2989 (c-forward-name, c-forward-type): Improved storage of template
2663 types in `c-found-types' so that they can be recognized better. 2990 types in `c-found-types' so that they can be recognized better.
2664 2991
2665 (c-syntactic-content): Added option to skip past nested parens. 2992 (c-syntactic-content): Added option to skip past nested parens.
@@ -2672,8 +2999,8 @@
2672 (c-forward-type): Handle that `c-last-identifier-range' might be 2999 (c-forward-type): Handle that `c-last-identifier-range' might be
2673 nil from `c-forward-name'. 3000 nil from `c-forward-name'.
2674 3001
2675 * progmodes/cc-defs.el: (c-safe-scan-lists, 3002 * progmodes/cc-defs.el (c-safe-scan-lists)
2676 c-(go-)?(up|down)-list-(forward|backward)): Added limit arguments. 3003 (c-(go-)?(up|down)-list-(forward|backward)): Added limit arguments.
2677 3004
2678 * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect' 3005 * progmodes/cc-defs.el (c-save-buffer-state): Use `unwind-protect'
2679 to work even if the form fails. 3006 to work even if the form fails.
@@ -2705,20 +3032,20 @@
2705 * progmodes/cc-langs.el (c-unterminated-block-comment-regexp): 3032 * progmodes/cc-langs.el (c-unterminated-block-comment-regexp):
2706 Fixed a bug in the regexp that caused extreme backtracking. 3033 Fixed a bug in the regexp that caused extreme backtracking.
2707 3034
2708 * progmodes/cc-langs.el (c-block-comment-starter, 3035 * progmodes/cc-langs.el (c-block-comment-starter)
2709 c-block-comment-ender): New language constants to specify in a 3036 (c-block-comment-ender): New language constants to specify in a
2710 single place how block comments look. 3037 single place how block comments look.
2711 3038
2712 (c-comment-start-regexp, c-block-comment-start-regexp, 3039 (c-comment-start-regexp, c-block-comment-start-regexp)
2713 comment-start, comment-end, comment-start-skip, 3040 (comment-start, comment-end, comment-start-skip)
2714 c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws, 3041 (c-syntactic-ws-start, c-syntactic-ws-end, c-nonwhite-syntactic-ws)
2715 c-syntactic-ws, c-nonempty-syntactic-ws, 3042 (c-syntactic-ws, c-nonempty-syntactic-ws)
2716 c-single-line-syntactic-ws, c-syntactic-eol): Now built from 3043 (c-single-line-syntactic-ws, c-syntactic-eol): Now built from
2717 `c-line-comment-starter', `c-block-comment-starter' and 3044 `c-line-comment-starter', `c-block-comment-starter' and
2718 `c-block-comment-ender'. 3045 `c-block-comment-ender'.
2719 3046
2720 (c-block-comment-regexp, c-unterminated-block-comment-regexp): New 3047 (c-block-comment-regexp, c-unterminated-block-comment-regexp):
2721 language constants to break up things a bit. 3048 New language constants to break up things a bit.
2722 3049
2723 (c-simple-ws): New language constant for simple whitespace. 3050 (c-simple-ws): New language constant for simple whitespace.
2724 3051
@@ -2910,14 +3237,13 @@
29102005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org> 32372005-12-08 Martin Stjernholm <bug-cc-mode@gnu.org>
2911 3238
2912 * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p): 3239 * progmodes/cc-defs.el, cc-engine.el (c-mode-is-new-awk-p):
2913 Removed; 3240 Removed; (c-major-mode-is 'awk-mode) can be used instead now.
2914 (c-major-mode-is 'awk-mode) can be used instead now.
2915 3241
2916 * progmodes/cc-mode.el: Always set up AWK mode since emacsen where 3242 * progmodes/cc-mode.el: Always set up AWK mode since emacsen where
2917 it doesn't work no longer are supported. 3243 it doesn't work no longer are supported.
2918 3244
2919 * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el, 3245 * progmodes/cc-mode.el, cc-styles.el, cc-vars.el, cc-defs.el
2920 cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now 3246 * cc-engine.el, cc-fonts.el, cc-langs.el, cc-cmds.el: CC Mode now
2921 requires support for the syntax-table' text property, which rules 3247 requires support for the syntax-table' text property, which rules
2922 out Emacs 19 and XEmacs < 21.4. Removed various compatibility 3248 out Emacs 19 and XEmacs < 21.4. Removed various compatibility
2923 cruft associated with those versions. 3249 cruft associated with those versions.
@@ -2934,9 +3260,9 @@
2934 variable and use an extra quoted face name instead. All the 3260 variable and use an extra quoted face name instead. All the
2935 emacsen flavors handle that correctly. 3261 emacsen flavors handle that correctly.
2936 3262
2937 * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare, 3263 * progmodes/cc-fonts.el (c-font-lock-complex-decl-prepare)
2938 c-font-lock-declarators, c-font-lock-declarations, 3264 (c-font-lock-declarators, c-font-lock-declarations)
2939 c-complex-decl-matchers, c-basic-matchers-after): Use a text 3265 (c-complex-decl-matchers, c-basic-matchers-after): Use a text
2940 property to mark the items in in declarator lists to handle 3266 property to mark the items in in declarator lists to handle
2941 refontification inside multiline declarations better. 3267 refontification inside multiline declarations better.
2942 3268
@@ -3000,7 +3326,7 @@
3000 3326
30012005-12-07 Bill Wohler <wohler@newt.com> 33272005-12-07 Bill Wohler <wohler@newt.com>
3002 3328
3003 * files.el (auto-mode-alist): Remove mh-letter-mode. Unnecessary, 3329 * files.el (auto-mode-alist): Remove mh-letter-mode. Unnecessary,
3004 and causes problems with non-MH users (such as Gnus users). 3330 and causes problems with non-MH users (such as Gnus users).
3005 3331
30062005-12-08 Nick Roberts <nickrob@snap.net.nz> 33322005-12-08 Nick Roberts <nickrob@snap.net.nz>
@@ -3017,12 +3343,12 @@
3017 3343
30182005-12-07 Kim F. Storm <storm@cua.dk> 33442005-12-07 Kim F. Storm <storm@cua.dk>
3019 3345
3020 * ido.el (ido-completion-map): Renamed from ido-mode-map. 3346 * ido.el (ido-completion-map): Rename from ido-mode-map.
3021 (ido-common-completion-map, ido-file-completion-map) 3347 (ido-common-completion-map, ido-file-completion-map)
3022 (ido-file-dir-completion-map, ido-buffer-completion-map): 3348 (ido-file-dir-completion-map, ido-buffer-completion-map):
3023 Renamed from ido-mode-....-map. 3349 Rename from ido-mode-....-map.
3024 (ido-init-completion-maps): Renamed from ido-init-mode-maps. 3350 (ido-init-completion-maps): Rename from ido-init-mode-maps.
3025 (ido-setup-completion-map): Renamed from ido-define-mode-map. 3351 (ido-setup-completion-map): Rename from ido-define-mode-map.
3026 (ido-read-internal): Bind minibuffer-local-filename-completion-map 3352 (ido-read-internal): Bind minibuffer-local-filename-completion-map
3027 to ido-completion-map. 3353 to ido-completion-map.
3028 3354
@@ -3076,7 +3402,7 @@
3076 3402
3077 * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1. 3403 * progmodes/cc-defs.el (c-emacs-features): Don't assume point-min==1.
3078 3404
30792005-12-06 Nozomu Ando <nand@mac.com> (tiny patch) 34052005-12-06 Nozomu Ando <nand@mac.com> (tiny patch)
3080 3406
3081 * mail/smtpmail.el (smtpmail-try-auth-methods): Make password 3407 * mail/smtpmail.el (smtpmail-try-auth-methods): Make password
3082 prompts work for AUTH PLAIN. Also reported by Steve Allan 3408 prompts work for AUTH PLAIN. Also reported by Steve Allan
@@ -3115,7 +3441,7 @@
3115 (org-agenda-get-deadlines, org-agenda-get-scheduled) 3441 (org-agenda-get-deadlines, org-agenda-get-scheduled)
3116 (org-agenda-get-blocks): Use `org-get-category'. 3442 (org-agenda-get-blocks): Use `org-get-category'.
3117 (org-context-in-file-links): Rename from 3443 (org-context-in-file-links): Rename from
3118 `org-line-numbers-in-file-links' . 3444 `org-line-numbers-in-file-links'.
3119 3445
31202005-12-06 Romain Francoise <romain@orebokech.com> 34462005-12-06 Romain Francoise <romain@orebokech.com>
3121 3447
@@ -3259,7 +3585,7 @@
3259 3585
32602005-12-02 Ken Manheimer <ken.manheimer@gmail.com> 35862005-12-02 Ken Manheimer <ken.manheimer@gmail.com>
3261 3587
3262 * allout.el:(eval-when-compile): Remove unnecessary load of cl. 3588 * allout.el (eval-when-compile): Remove unnecessary load of cl.
3263 Add fset of allout-real-isearch-abort during compile to fix 3589 Add fset of allout-real-isearch-abort during compile to fix
3264 byte-compilation warnings. 3590 byte-compilation warnings.
3265 (allout-mode-p): Move definition of this macro above all uses, or 3591 (allout-mode-p): Move definition of this macro above all uses, or
@@ -3669,8 +3995,8 @@
3669 3995
3670 (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new 3996 (hi-lock-face-phrase-buffer): Call hi-lock-buffer-mode. Use new
3671 arguments for hi-lock-set-pattern. 3997 arguments for hi-lock-set-pattern.
3672 (hi-lock-unface-buffer, hi-lock-set-file-patterns): Call 3998 (hi-lock-unface-buffer, hi-lock-set-file-patterns):
3673 font-lock-fontify-buffer. 3999 Call font-lock-fontify-buffer.
3674 (hi-lock-find-file-hook, hi-lock-current-line) 4000 (hi-lock-find-file-hook, hi-lock-current-line)
3675 (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions. 4001 (hi-lock-refontify, hi-lock-set-patterns): Delete unused functions.
3676 4002
@@ -3699,8 +4025,8 @@
3699 (org-plain-list-ordered-item-terminator): New options. 4025 (org-plain-list-ordered-item-terminator): New options.
3700 (org-at-item-p, org-beginning-of-item, org-end-of-item) 4026 (org-at-item-p, org-beginning-of-item, org-end-of-item)
3701 (org-get-indentation, org-get-string-indentation) 4027 (org-get-indentation, org-get-string-indentation)
3702 (org-maybe-renumber-ordered-list, org-renumber-ordered-list): New 4028 (org-maybe-renumber-ordered-list, org-renumber-ordered-list):
3703 functions. 4029 New functions.
3704 (org-move-item-down, org-move-item-up): New commands. 4030 (org-move-item-down, org-move-item-up): New commands.
3705 (org-export-as-html): New classes for CSS support. Bug fix in 4031 (org-export-as-html): New classes for CSS support. Bug fix in
3706 regular expression detecting fixed-width regions. Respect 4032 regular expression detecting fixed-width regions. Respect
@@ -3884,7 +4210,7 @@
3884 * man.el (Man-highlight-references): Doc fix. Reformat code in a 4210 * man.el (Man-highlight-references): Doc fix. Reformat code in a
3885 more Lisp-ish way. 4211 more Lisp-ish way.
3886 4212
38872005-11-19 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change) 42132005-11-19 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change)
3888 4214
3889 * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9 4215 * ls-lisp.el (ls-lisp-format-file-size): Format file size with 9
3890 digits, not 8, to avoid misalignment for files larger than 100MB. 4216 digits, not 8, to avoid misalignment for files larger than 100MB.
@@ -3914,15 +4240,15 @@
3914 (org-export-icalendar): Use `org-icalendar-combined-name'. 4240 (org-export-icalendar): Use `org-icalendar-combined-name'.
3915 (org-cycle-agenda-files, org-agenda-file-to-end) 4241 (org-cycle-agenda-files, org-agenda-file-to-end)
3916 (org-agenda-file-to-front): New commands. 4242 (org-agenda-file-to-front): New commands.
3917 (org-table-tab-jumps-over-hlines,org-export-html-style): New 4243 (org-table-tab-jumps-over-hlines, org-export-html-style):
3918 options. 4244 New options.
3919 (org-table-next-field): Use `org-table-tab-jumps-over-hlines'. 4245 (org-table-next-field): Use `org-table-tab-jumps-over-hlines'.
3920 (org-at-table.el-p, org-set-autofill-regexps,org-html-protect): 4246 (org-at-table.el-p, org-set-autofill-regexps, org-html-protect):
3921 New functions. 4247 New functions.
3922 (org-fill-paragraph): Call `org-table-align' in tables. 4248 (org-fill-paragraph): Call `org-table-align' in tables.
3923 (org-mode): Call `org-set-autofill-regexps'. 4249 (org-mode): Call `org-set-autofill-regexps'.
3924 (org-export-as-html): Support for local handformatted lists. 4250 (org-export-as-html): Support for local handformatted lists.
3925 Modified to produce valid HTML 4.0. Use `org-export-html-style'. 4251 Modified to produce valid HTML 4.0. Use `org-export-html-style'.
3926 (org-export-local-list-max-depth): New option. 4252 (org-export-local-list-max-depth): New option.
3927 (org-html-expand): Use `org-html-protect'. 4253 (org-html-expand): Use `org-html-protect'.
3928 4254
@@ -4370,9 +4696,9 @@
4370 (apropos-variable): Doc fix. Use apropos-read-pattern. 4696 (apropos-variable): Doc fix. Use apropos-read-pattern.
4371 (apropos-command): Doc fix. Use apropos-read-pattern and 4697 (apropos-command): Doc fix. Use apropos-read-pattern and
4372 apropos-parse-pattern. Call apropos-print with nosubst=t. 4698 apropos-parse-pattern. Call apropos-print with nosubst=t.
4373 (apropos, apropos-value): Doc fix. Use apropos-read-pattern and 4699 (apropos, apropos-value): Doc fix. Use apropos-read-pattern and
4374 apropos-parse-pattern. 4700 apropos-parse-pattern.
4375 (apropos-documentation): Doc fix. Use apropos-read-pattern and 4701 (apropos-documentation): Doc fix. Use apropos-read-pattern and
4376 apropos-parse-pattern. Locally bind apropos-sort-by-scores to 4702 apropos-parse-pattern. Locally bind apropos-sort-by-scores to
4377 apropos-documentation-sort-by-scores. Call apropos-print with 4703 apropos-documentation-sort-by-scores. Call apropos-print with
4378 nosubst=t. 4704 nosubst=t.
@@ -4440,7 +4766,7 @@
44402005-11-10 Masatake YAMATO <jet@gyve.org> 47662005-11-10 Masatake YAMATO <jet@gyve.org>
4441 4767
4442 * add-log.el (add-log-current-defun): Handle class::method 4768 * add-log.el (add-log-current-defun): Handle class::method
4443 notation of c++. Fix incorrect comment. 4769 notation of c++. Fix incorrect comment.
4444 4770
44452005-11-10 Alan Mackenzie <acm@muc.de> 47712005-11-10 Alan Mackenzie <acm@muc.de>
4446 4772
@@ -4574,7 +4900,7 @@
4574 4900
4575 * replace.el (occur-engine): Add marker at end of line, too. 4901 * replace.el (occur-engine): Add marker at end of line, too.
4576 4902
45772005-11-04 Ken Manheimer <ken.manheimer@gmail.com> 49032005-11-04 Ken Manheimer <ken.manheimer@gmail.com>
4578 4904
4579 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) 4905 * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region)
4580 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) 4906 (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric)
@@ -4599,7 +4925,7 @@
4599 * font-lock.el: Don't deal with font-lock-face-attributes here, 4925 * font-lock.el: Don't deal with font-lock-face-attributes here,
4600 move the code ... 4926 move the code ...
4601 4927
4602 * startup.el (command-line): ... here. Use face-spec-set instead 4928 * startup.el (command-line): ... here. Use face-spec-set instead
4603 of custom-declare-face. 4929 of custom-declare-face.
4604 4930
4605 * faces.el (face-spec-set): Reset the face if spec is not nil. 4931 * faces.el (face-spec-set): Reset the face if spec is not nil.
@@ -4616,7 +4942,7 @@
4616 4942
46172005-11-04 Ulf Jasper <ulf.jasper@web.de> 49432005-11-04 Ulf Jasper <ulf.jasper@web.de>
4618 4944
4619 * newsticker.el: Commentary updated. Code formatting changed. 4945 * newsticker.el: Commentary updated. Code formatting changed.
4620 (newsticker-version): Change to "1.9". 4946 (newsticker-version): Change to "1.9".
4621 (newsticker, newsticker-feed): Doc fix. 4947 (newsticker, newsticker-feed): Doc fix.
4622 (newsticker-url-list): Doc fix. Add option "Weekly". 4948 (newsticker-url-list): Doc fix. Add option "Weekly".
@@ -4636,7 +4962,7 @@
4636 (newsticker-mode): Doc fix. 4962 (newsticker-mode): Doc fix.
4637 (newsticker-mode): Change mode-line-format. 4963 (newsticker-mode): Change mode-line-format.
4638 (newsticker-start): Remove debug output. 4964 (newsticker-start): Remove debug output.
4639 (newsticker-start-ticker): Doc fix. Add Autoload cookie. 4965 (newsticker-start-ticker): Doc fix. Add autoload cookie.
4640 (newsticker-w3m-show-inline-images): Code formatting. 4966 (newsticker-w3m-show-inline-images): Code formatting.
4641 (newsticker-next-item): Call `force-mode-line-update'. 4967 (newsticker-next-item): Call `force-mode-line-update'.
4642 (newsticker-previous-item): Call `force-mode-line-update'. 4968 (newsticker-previous-item): Call `force-mode-line-update'.
@@ -4789,8 +5115,8 @@
47892005-11-04 Henrik Enberg <henrik.enberg@telia.com> 51152005-11-04 Henrik Enberg <henrik.enberg@telia.com>
4790 5116
4791 (rcirc-browse-url-map, rcirc-browse-url-at-point) 5117 (rcirc-browse-url-map, rcirc-browse-url-at-point)
4792 (rcirc-browse-url-at-mouse, rcirc-mangle-text): Make urls 5118 (rcirc-browse-url-at-mouse, rcirc-mangle-text):
4793 mouse and RET clickable. 5119 Make urls mouse and RET clickable.
4794 5120
47952005-11-04 Henrik Enberg <henrik.enberg@telia.com> 51212005-11-04 Henrik Enberg <henrik.enberg@telia.com>
4796 5122
@@ -4941,7 +5267,7 @@
4941 * progmodes/fortran.el (fortran-blink-match): 5267 * progmodes/fortran.el (fortran-blink-match):
4942 Use `blink-matching-delay'. 5268 Use `blink-matching-delay'.
4943 5269
49442005-11-02 John Mongan <jmongan@mccammon.ucsd.edu> (tiny change) 52702005-11-02 John Mongan <jmongan@mccammon.ucsd.edu> (tiny change)
4945 5271
4946 * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'. 5272 * progmodes/f90.el (f90-match-end): Use `blink-matching-delay'.
4947 5273
@@ -4981,7 +5307,7 @@
4981 * vc-sccs.el: Update copyright year. 5307 * vc-sccs.el: Update copyright year.
4982 * ezimage.el: Likewise. 5308 * ezimage.el: Likewise.
4983 5309
49842005-11-01 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change) 53102005-11-01 KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp> (tiny change)
4985 5311
4986 * info.el (Info-fontify-node): Use `string-width' for fontifying 5312 * info.el (Info-fontify-node): Use `string-width' for fontifying
4987 underlined titles. 5313 underlined titles.
@@ -5212,7 +5538,7 @@
5212 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) 5538 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
5213 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) 5539 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
5214 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional 5540 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
5215 'passphrase' argument, so the passphrase can be managed externally 5541 `passphrase' argument, so the passphrase can be managed externally
5216 and then passed in to the system. 5542 and then passed in to the system.
5217 5543
5218 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) 5544 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
@@ -5228,7 +5554,7 @@
5228 externally and passed in to the system. 5554 externally and passed in to the system.
5229 5555
5230 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional 5556 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
5231 'notruncate' argument, so the passphrase cache can be used 5557 `notruncate' argument, so the passphrase cache can be used
5232 reliably with identifiers besides a pgp packet's key id. 5558 reliably with identifiers besides a pgp packet's key id.
5233 5559
52342005-10-29 Sascha Wilde <swilde@sha-bang.de> 55602005-10-29 Sascha Wilde <swilde@sha-bang.de>
@@ -5295,12 +5621,12 @@
5295 (pgg-decrypt): Convey provided passphrase in subordinate call to 5621 (pgg-decrypt): Convey provided passphrase in subordinate call to
5296 pgg-decrypt-region. 5622 pgg-decrypt-region.
5297 5623
52982005-10-20 Ken Manheimer <ken.manheimer+emacs@gmail.com> 56242005-10-20 Ken Manheimer <ken.manheimer+emacs@gmail.com>
5299 5625
5300 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) 5626 * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region)
5301 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) 5627 (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region)
5302 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional 5628 (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional
5303 'passphrase' argument, so the passphrase can be managed externally 5629 `passphrase' argument, so the passphrase can be managed externally
5304 and then passed in to the system. 5630 and then passed in to the system.
5305 5631
5306 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) 5632 * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache)
@@ -5316,7 +5642,7 @@
5316 externally and passed in to the system. 5642 externally and passed in to the system.
5317 5643
5318 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional 5644 * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional
5319 'notruncate' argument, so the passphrase cache can be used 5645 `notruncate' argument, so the passphrase cache can be used
5320 reliably with identifiers besides a pgp packet's key id. 5646 reliably with identifiers besides a pgp packet's key id.
5321 5647
53222005-10-29 Sascha Wilde <swilde@sha-bang.de> 56482005-10-29 Sascha Wilde <swilde@sha-bang.de>
@@ -5333,7 +5659,7 @@
5333 5659
53342005-10-28 Bill Wohler <wohler@newt.com> 56602005-10-28 Bill Wohler <wohler@newt.com>
5335 5661
5336 * help-mode.el (help-url): New button type. Calls browse-url. 5662 * help-mode.el (help-url): New button type. Calls browse-url.
5337 (help-xref-url-regexp): New regexp to recognize URLs in docstring. 5663 (help-xref-url-regexp): New regexp to recognize URLs in docstring.
5338 Similar to Info nodes: URL `url'. 5664 Similar to Info nodes: URL `url'.
5339 (help-make-xrefs): Create help-url buttons for 5665 (help-make-xrefs): Create help-url buttons for
@@ -5392,7 +5718,7 @@
5392 * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for 5718 * calc/calc-arith.el (calc-mul-symb-fancy): Add checks for
5393 multiplication by an identity matrix; don't turn multiplication by 5719 multiplication by an identity matrix; don't turn multiplication by
5394 an inverse matrix into division. 5720 an inverse matrix into division.
5395 (math-div-symbol-fancy): Replace division by matrices with 5721 (math-div-symbol-fancy): Replace division by matrices with
5396 multiplication by inverse. 5722 multiplication by inverse.
5397 5723
5398 * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices. 5724 * calc/calc-misc.el (calcFunc-inv): Check for symbolic matrices.
@@ -5525,7 +5851,7 @@
5525 * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe 5851 * progmodes/gdb-ui.el (gdb-ann3): Bind mouse-3 in left fringe
5526 to gdb-mouse-toggle-breakpoint-fringe. 5852 to gdb-mouse-toggle-breakpoint-fringe.
5527 (gdb-mouse-toggle-breakpoint-margin): Rename from 5853 (gdb-mouse-toggle-breakpoint-margin): Rename from
5528 gdb-mouse-toggle-breakpoint. Fix doc. 5854 gdb-mouse-toggle-breakpoint. Fix doc.
5529 (gdb-mouse-toggle-breakpoint-fringe): New defun. 5855 (gdb-mouse-toggle-breakpoint-fringe): New defun.
5530 (gdb-put-string): Add optional SPROPS arg. Add props to string. 5856 (gdb-put-string): Add optional SPROPS arg. Add props to string.
5531 (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled 5857 (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled
@@ -5769,7 +6095,7 @@
5769 (outlineify-sticky, outlinify-sticky): Add autoload cookie. 6095 (outlineify-sticky, outlinify-sticky): Add autoload cookie.
5770 (my-mark-marker): Use `(featurep 'xemacs)'. 6096 (my-mark-marker): Use `(featurep 'xemacs)'.
5771 6097
57722005-10-23 Lars Hansen <larsh@soem.dk> 60982005-10-23 Lars Hansen <larsh@soem.dk>
5773 6099
5774 * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda. 6100 * emacs-lisp/bytecomp.el (byte-compile-lambda): New arg add-lambda.
5775 (byte-compile-file-form-defmumble, byte-compile-defun) 6101 (byte-compile-file-form-defmumble, byte-compile-defun)
@@ -6057,7 +6383,7 @@
6057 6383
6058 * calc/calc-units.el (math-standard-units): Add units, adjust 6384 * calc/calc-units.el (math-standard-units): Add units, adjust
6059 symbols and update values. 6385 symbols and update values.
6060 (math-unit-prefixes): Add more prefixes. 6386 (math-unit-prefixes): Add more prefixes.
6061 6387
60622005-10-19 Romain Francoise <romain@orebokech.com> 63882005-10-19 Romain Francoise <romain@orebokech.com>
6063 6389
@@ -6136,12 +6462,12 @@
6136 lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar. Place 6462 lisp/toolbar/tool-bar to lisp and "delete" lisp/toolbar. Place
6137 the low resolution images in their own directory (low-color). 6463 the low resolution images in their own directory (low-color).
6138 6464
6139 * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*, 6465 * toolbar/attach.*, toolbar/cancel.*, toolbar/close.*
6140 * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*: 6466 * toolbar/copy.*, toolbar/cut.*, toolbar/diropen.*, toolbar/exit.*
6141 * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*: 6467 * toolbar/help.*, toolbar/home.*, toolbar/index.*, toolbar/info.*
6142 * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*: 6468 * toolbar/mail.*, toolbar/new.*, toolbar/open.*, toolbar/paste.*
6143 * toolbar/preferences.*, toolbar/print.*, toolbar/save.*: 6469 * toolbar/preferences.*, toolbar/print.*, toolbar/save.*
6144 * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*: 6470 * toolbar/saveas.*, toolbar/search.*, toolbar/search-replace.*
6145 * toolbar/spell.*, toolbar/undo.*: Move to etc/images. 6471 * toolbar/spell.*, toolbar/undo.*: Move to etc/images.
6146 6472
6147 * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*. 6473 * toolbar/lc-copy.*: Move to etc/images/low-color/copy.*.
@@ -6241,7 +6567,7 @@
6241 6567
6242 * diff-mode.el (diff-mode): Doc fix. 6568 * diff-mode.el (diff-mode): Doc fix.
6243 6569
62442005-10-16 David Reitter <david.reitter@gmail.com> 65702005-10-16 David Reitter <david.reitter@gmail.com>
6245 6571
6246 * mail/sendmail.el (send-mail-function): Use mailclient-send-it 6572 * mail/sendmail.el (send-mail-function): Use mailclient-send-it
6247 as default on darwin and windows systems. 6573 as default on darwin and windows systems.
@@ -6433,8 +6759,8 @@
6433 6759
64342005-10-12 Bill Wohler <wohler@newt.com> 67602005-10-12 Bill Wohler <wohler@newt.com>
6435 6761
6436 * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. 6762 * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads.
6437 (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any 6763 (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any
6438 files in MH-E-SRC have been updated. 6764 files in MH-E-SRC have been updated.
6439 (updates, compile, recompile, bootstrap): Depend on mh-autoloads. 6765 (updates, compile, recompile, bootstrap): Depend on mh-autoloads.
6440 6766
@@ -7073,7 +7399,7 @@
7073 7399
7074 * toolbar/rescan.*: Move and rename to etc/images/refresh.*. 7400 * toolbar/rescan.*: Move and rename to etc/images/refresh.*.
7075 7401
70762005-09-30 Eric M. Ludlam <zappo@gnu.org> 74022005-09-30 Eric M. Ludlam <zappo@gnu.org>
7077 7403
7078 * speedbar.el: New version 1.0pre3. 7404 * speedbar.el: New version 1.0pre3.
7079 7405
@@ -7275,7 +7601,7 @@
7275 color rxvt terminals by using the code xterm.el used to use before 7601 color rxvt terminals by using the code xterm.el used to use before
7276 2005-04-09 in order to match the colors used by rxvt. 7602 2005-04-09 in order to match the colors used by rxvt.
7277 7603
72782005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change) 76042005-09-24 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
7279 7605
7280 * term/rxvt.el (rxvt-register-default-colors): Add support for 88 7606 * term/rxvt.el (rxvt-register-default-colors): Add support for 88
7281 colors rxvt-unicode terminals by using the same code as xterm.el. 7607 colors rxvt-unicode terminals by using the same code as xterm.el.
@@ -8058,7 +8384,7 @@
80582005-09-02 Dan Nicolaescu <dann@ics.uci.edu> 83842005-09-02 Dan Nicolaescu <dann@ics.uci.edu>
8059 8385
8060 * term/xterm.el (terminal-init-xterm): Add eval-when-compile to 8386 * term/xterm.el (terminal-init-xterm): Add eval-when-compile to
8061 fix compilation warning. Reorder the key definitions to group 8387 fix compilation warning. Reorder the key definitions to group
8062 together keys emitted by the current version of xterm. 8388 together keys emitted by the current version of xterm.
8063 8389
8064 * progmodes/vhdl-mode.el (vhdl-highlight-faces) 8390 * progmodes/vhdl-mode.el (vhdl-highlight-faces)
@@ -8140,7 +8466,7 @@
8140 (vhdl-get-visible-signals): Fix signal name searching. 8466 (vhdl-get-visible-signals): Fix signal name searching.
8141 (vhdl-port-flatten, vhdl-port-reverse-direction): Better message. 8467 (vhdl-port-flatten, vhdl-port-reverse-direction): Better message.
8142 (vhdl-fixup-whitespace-region): Fix for character 8468 (vhdl-fixup-whitespace-region): Fix for character
8143 literals (e.g. ':'). 8469 literals (e.g. `:').
8144 8470
81452005-08-31 Juanma Barranquero <lekktu@gmail.com> 84712005-08-31 Juanma Barranquero <lekktu@gmail.com>
8146 8472
@@ -8933,7 +9259,7 @@
89332005-08-10 Lars Hansen <larsh@soem.dk> 92592005-08-10 Lars Hansen <larsh@soem.dk>
8934 9260
8935 * desktop.el (desktop-buffer-mode-handlers): 9261 * desktop.el (desktop-buffer-mode-handlers):
8936 Make non-customizable. Add autoload cookie. Change initial value to 9262 Make non-customizable. Add autoload cookie. Change initial value to
8937 nil; add elements in respective modules instead. Fix doc string. 9263 nil; add elements in respective modules instead. Fix doc string.
8938 (desktop-load-file): New function. 9264 (desktop-load-file): New function.
8939 (desktop-minor-mode-handlers): New autoloaded variable. 9265 (desktop-minor-mode-handlers): New autoloaded variable.
@@ -8949,7 +9275,7 @@
8949 indicate-buffer-boundaries, indicate-empty-lines and 9275 indicate-buffer-boundaries, indicate-empty-lines and
8950 show-trailing-whitespace. 9276 show-trailing-whitespace.
8951 (desktop-clear): Allow desktop-clear-preserve-buffers to contain 9277 (desktop-clear): Allow desktop-clear-preserve-buffers to contain
8952 regexps. Don't use desktop-clear-preserve-buffers-regexp. 9278 regexps. Don't use desktop-clear-preserve-buffers-regexp.
8953 (desktop-clear-preserve-buffers-regexp): Delete. 9279 (desktop-clear-preserve-buffers-regexp): Delete.
8954 (desktop-clear-preserve-buffers): Update initial value and docstring. 9280 (desktop-clear-preserve-buffers): Update initial value and docstring.
8955 (desktop-save-buffer): Fix doc string. 9281 (desktop-save-buffer): Fix doc string.
@@ -9575,7 +9901,7 @@
9575 not `bookmark-exit-hooks'. Fix docstring. 9901 not `bookmark-exit-hooks'. Fix docstring.
9576 (bookmark-bmenu-select): "?\ " -> "?\s". 9902 (bookmark-bmenu-select): "?\ " -> "?\s".
9577 9903
95782005-07-25 Ari Roponen <arjuropo@cc.jyu.fi> (tiny change) 99042005-07-25 Ari Roponen <arjuropo@cc.jyu.fi> (tiny change)
9579 9905
9580 * startup.el (command-line): Fix typo. 9906 * startup.el (command-line): Fix typo.
9581 9907
@@ -9624,7 +9950,7 @@
9624 (xterm-rxvt-set-background-mode): Remove, not used anymore. 9950 (xterm-rxvt-set-background-mode): Remove, not used anymore.
9625 9951
9626 * term/rxvt.el (function-key-map): Use substitute-key-definition 9952 * term/rxvt.el (function-key-map): Use substitute-key-definition
9627 to bind {C,S,C-S}-{f1-f10}. Add a few missing key bindings. 9953 to bind {C,S,C-S}-{f1-f10}. Add a few missing key bindings.
9628 9954
9629 * term/cygwin.el: New file. 9955 * term/cygwin.el: New file.
9630 9956
@@ -10338,7 +10664,7 @@
10338 (mac-services-mail-to): New functions. 10664 (mac-services-mail-to): New functions.
10339 (mac-application-menu-map): Bind them. 10665 (mac-application-menu-map): Bind them.
10340 10666
103412005-07-12 wulei <milton@wulei.net> (tiny change) 106672005-07-12 wulei <milton@wulei.net> (tiny change)
10342 10668
10343 * progmodes/gdb-ui.el: Add note about buffering with Windows. 10669 * progmodes/gdb-ui.el: Add note about buffering with Windows.
10344 10670
@@ -12611,7 +12937,7 @@
12611 12937
12612 * textmodes/ispell.el (ispell-check-version): 12938 * textmodes/ispell.el (ispell-check-version):
12613 Use match-string-no-properties. 12939 Use match-string-no-properties.
12614 (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict) 12940 (ispell-region, ispell-buffer-local-parsing, ispell-buffer-local-dict)
12615 (ispell-buffer-local-words): Likewise. 12941 (ispell-buffer-local-words): Likewise.
12616 12942
12617 * progmodes/make-mode.el (makefile-shell-face): Make this a no-op 12943 * progmodes/make-mode.el (makefile-shell-face): Make this a no-op
@@ -14811,12 +15137,12 @@
14811 with mode-require-final-newline. 15137 with mode-require-final-newline.
14812 (mode-require-final-newline): Doc fix. 15138 (mode-require-final-newline): Doc fix.
14813 15139
148142005-05-01 Stefan Monnier <monnier@iro.umontreal.ca> 151402005-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
14815 15141
14816 * international/latexenc.el (latexenc-find-file-coding-system): 15142 * international/latexenc.el (latexenc-find-file-coding-system):
14817 Fix regular expressions. 15143 Fix regular expressions.
14818 15144
148192005-05-01 David Kastrup <dak@gnu.org> 151452005-05-01 David Kastrup <dak@gnu.org>
14820 15146
14821 * international/latexenc.el (latexenc-find-file-coding-system): 15147 * international/latexenc.el (latexenc-find-file-coding-system):
14822 Fix regular expressions. 15148 Fix regular expressions.
@@ -14883,7 +15209,7 @@
14883 (org-prefix-format-compiled): New variable. 15209 (org-prefix-format-compiled): New variable.
14884 (org-compile-prefix-format): New function. 15210 (org-compile-prefix-format): New function.
14885 (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format. 15211 (org-timeline, org-agenda, org-diary): Call org-compile-prefix-format.
14886 (org-agenda-prefix-format,org-timeline-prefix-format): New options. 15212 (org-agenda-prefix-format, org-timeline-prefix-format): New options.
14887 (org-agenda-get-scheduled): Check if file is opened in `org-mode'. 15213 (org-agenda-get-scheduled): Check if file is opened in `org-mode'.
14888 (org-get-entries-from-diary): Use `org-get-time-of-day' for 15214 (org-get-entries-from-diary): Use `org-get-time-of-day' for
14889 consistency with entries from `org-mode' files. 15215 consistency with entries from `org-mode' files.
@@ -15494,7 +15820,7 @@
15494 (org-mode): Insert first line "*-* mode: org-mode -*-" when called 15820 (org-mode): Insert first line "*-* mode: org-mode -*-" when called
15495 interactively in empty file and option 15821 interactively in empty file and option
15496 `org-insert-mode-line-in-empty-file' has been set. 15822 `org-insert-mode-line-in-empty-file' has been set.
15497 (org-agenda-todo,org-agenda-priority): Modify to use 15823 (org-agenda-todo, org-agenda-priority): Modify to use
15498 `org-agenda-change-all-lines'. 15824 `org-agenda-change-all-lines'.
15499 (org-warning-face): Change color on dark background 15825 (org-warning-face): Change color on dark background
15500 15826
@@ -16641,16 +16967,16 @@
16641 16967
166422005-03-25 Werner Lemberg <wl@gnu.org> 169682005-03-25 Werner Lemberg <wl@gnu.org>
16643 16969
16644 * calc/calc-forms.el, calc/calc-sel.el: 16970 * calc/calc-forms.el, calc/calc-sel.el
16645 * midnight.el, vc-cvs.el: 16971 * midnight.el, vc-cvs.el
16646 * emacs-lisp/cl-macs.el: 16972 * emacs-lisp/cl-macs.el
16647 * emulation/vip.el: 16973 * emulation/vip.el
16648 * eshell/esh-io.el, eshell/esh-var.el: 16974 * eshell/esh-io.el, eshell/esh-var.el
16649 * mail/supercite.el: 16975 * mail/supercite.el
16650 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el 16976 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el
16651 * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el 16977 * progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-iso.el
16652 * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el 16978 * progmodes/ebnf-yac.el, progmodes/ebnf2ps.el, progmodes/idlwave.el
16653 * progmodes/sh-script.el, progmodes/xscheme.el: 16979 * progmodes/sh-script.el, progmodes/xscheme.el
16654 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el 16980 * textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el
16655 * textmodes/reftex-index.el, textmodes/reftex-parse.el 16981 * textmodes/reftex-index.el, textmodes/reftex-parse.el
16656 * textmodes/reftex-ref.el, textmodes/reftex-vars.el 16982 * textmodes/reftex-ref.el, textmodes/reftex-vars.el
@@ -16767,7 +17093,7 @@
16767 17093
167682005-03-23 David Ponce <david@dponce.com> 170942005-03-23 David Ponce <david@dponce.com>
16769 17095
16770 * recentf.el: (recentf-keep): New option. 17096 * recentf.el (recentf-keep): New option.
16771 (recentf-menu-action): Default to `find-file'. 17097 (recentf-menu-action): Default to `find-file'.
16772 (recentf-keep-non-readable-files-flag) 17098 (recentf-keep-non-readable-files-flag)
16773 (recentf-keep-non-readable-files-p) 17099 (recentf-keep-non-readable-files-p)
@@ -17966,9 +18292,9 @@
179662005-02-19 Michael Kifer <kifer@cs.stonybrook.edu> 182922005-02-19 Michael Kifer <kifer@cs.stonybrook.edu>
17967 18293
17968 * ediff.el (ediff-set-diff-overlays-in-one-buffer) 18294 * ediff.el (ediff-set-diff-overlays-in-one-buffer)
17969 (ediff-set-fine-overlays-in-one-buffer,ediff-goto-word): Make sure 18295 (ediff-set-fine-overlays-in-one-buffer, ediff-goto-word): Make sure
17970 we use the syntax table of the correct buffer. 18296 we use the syntax table of the correct buffer.
17971 (ediff-same-file-contents,ediff-same-contents): Enhancements thanks to 18297 (ediff-same-file-contents, ediff-same-contents): Enhancements thanks to
17972 Felix Gatzemeier. 18298 Felix Gatzemeier.
17973 18299
17974 * ediff-init.el (ediff-hide-face): Check for definedness of functions. 18300 * ediff-init.el (ediff-hide-face): Check for definedness of functions.
@@ -18842,7 +19168,7 @@
18842 (rmail-movemail-variant-in-use): New variables. 19168 (rmail-movemail-variant-in-use): New variables.
18843 (rmail-remote-password, rmail-remote-password-required): 19169 (rmail-remote-password, rmail-remote-password-required):
18844 New customization variables. 19170 New customization variables.
18845 (rmail-probe,rmail-autodetect, rmail-movemail-variant-p): New funs. 19171 (rmail-probe, rmail-autodetect, rmail-movemail-variant-p): New funs.
18846 (rmail-parse-url): New function. 19172 (rmail-parse-url): New function.
18847 (rmail-get-new-mail, rmail-insert-inbox-text): Update for use 19173 (rmail-get-new-mail, rmail-insert-inbox-text): Update for use
18848 with GNU mailutils movemail. 19174 with GNU mailutils movemail.
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 51cda269238..395ba326ce3 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -19133,6 +19133,10 @@
19133 19133
19134 * menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling. 19134 * menu-bar.el (menu-bar-showhide-menu): Rename functions for toggling.
19135 19135
191362002-02-10 Stephen J. Turnbull <stephen@xemacs.org>
19137
19138 * ediff-init.el (ediff-has-gutter-support): What was this?
19139
191362002-02-10 Michael Kifer <kifer@cs.stonybrook.edu> 191402002-02-10 Michael Kifer <kifer@cs.stonybrook.edu>
19137 19141
19138 * viper-util.el (viper-read-key-sequence): Fix so it'll read 19142 * viper-util.el (viper-read-key-sequence): Fix so it'll read
@@ -19142,8 +19146,6 @@
19142 * viper.el (describe-key, describe-key-briefly): Get rid of 19146 * viper.el (describe-key, describe-key-briefly): Get rid of
19143 viper-events-to-keys. 19147 viper-events-to-keys.
19144 19148
19145 * ediff-init.el (ediff-has-gutter-support): Steven Turnbull's patch.
19146
19147 * ediff-wind.el (ediff-setup-control-frame): 19149 * ediff-wind.el (ediff-setup-control-frame):
19148 Use ediff-has-gutter-support. 19150 Use ediff-has-gutter-support.
19149 19151
diff --git a/lisp/battery.el b/lisp/battery.el
index 710be5a4220..54a0e207ffc 100644
--- a/lisp/battery.el
+++ b/lisp/battery.el
@@ -271,6 +271,8 @@ The following %-sequences are provided:
271%h Remaining time in hours 271%h Remaining time in hours
272%t Remaining time in the form `h:min'" 272%t Remaining time in the form `h:min'"
273 (let ((design-capacity 0) 273 (let ((design-capacity 0)
274 (last-full-capacity 0)
275 full-capacity
274 (warn 0) 276 (warn 0)
275 (low 0) 277 (low 0)
276 capacity rate rate-type charging-state minutes hours) 278 capacity rate rate-type charging-state minutes hours)
@@ -310,18 +312,25 @@ The following %-sequences are provided:
310 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$" 312 (when (re-search-forward "design capacity: +\\([0-9]+\\) m[AW]h$"
311 nil t) 313 nil t)
312 (incf design-capacity (string-to-number (match-string 1)))) 314 (incf design-capacity (string-to-number (match-string 1))))
315 (when (re-search-forward "last full capacity: +\\([0-9]+\\) m[AW]h$"
316 nil t)
317 (incf last-full-capacity (string-to-number (match-string 1))))
313 (when (re-search-forward 318 (when (re-search-forward
314 "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t) 319 "design capacity warning: +\\([0-9]+\\) m[AW]h$" nil t)
315 (incf warn (string-to-number (match-string 1)))) 320 (incf warn (string-to-number (match-string 1))))
316 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$" 321 (when (re-search-forward "design capacity low: +\\([0-9]+\\) m[AW]h$"
317 nil t) 322 nil t)
318 (incf low (string-to-number (match-string 1))))))) 323 (incf low (string-to-number (match-string 1)))))))
324 (setq full-capacity (if (> last-full-capacity 0)
325 last-full-capacity design-capacity))
319 (and capacity rate 326 (and capacity rate
320 (setq minutes (if (zerop rate) 0 327 (setq minutes (if (zerop rate) 0
321 (floor (* (/ (float (if (string= charging-state 328 (floor (* (/ (float (if (string= charging-state
322 "charging") 329 "charging")
323 (- design-capacity capacity) 330 (- full-capacity capacity)
324 capacity)) rate) 60))) 331 capacity))
332 rate)
333 60)))
325 hours (/ minutes 60))) 334 hours (/ minutes 60)))
326 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A")) 335 (list (cons ?c (or (and capacity (number-to-string capacity)) "N/A"))
327 (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state") 336 (cons ?L (or (when (file-exists-p "/proc/acpi/ac_adapter/AC/state")
@@ -368,10 +377,10 @@ The following %-sequences are provided:
368 (cons ?t (or (and minutes 377 (cons ?t (or (and minutes
369 (format "%d:%02d" hours (- minutes (* 60 hours)))) 378 (format "%d:%02d" hours (- minutes (* 60 hours))))
370 "N/A")) 379 "N/A"))
371 (cons ?p (or (and design-capacity capacity 380 (cons ?p (or (and full-capacity capacity
372 (number-to-string 381 (number-to-string
373 (floor (/ capacity 382 (floor (/ capacity
374 (/ (float design-capacity) 100))))) 383 (/ (float full-capacity) 100)))))
375 "N/A"))))) 384 "N/A")))))
376 385
377 386
diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el
index dc341cb7aec..64e0b4b7d10 100644
--- a/lisp/calc/calc-arith.el
+++ b/lisp/calc/calc-arith.el
@@ -1201,7 +1201,7 @@
1201 (and (math-known-scalarp b) 1201 (and (math-known-scalarp b)
1202 (math-add (nth 1 a) b)))) 1202 (math-add (nth 1 a) b))))
1203 (and (eq (car-safe b) 'calcFunc-idn) 1203 (and (eq (car-safe b) 'calcFunc-idn)
1204 (= (length a) 2) 1204 (= (length b) 2)
1205 (or (and (math-square-matrixp a) 1205 (or (and (math-square-matrixp a)
1206 (math-add a (math-mimic-ident (nth 1 b) a))) 1206 (math-add a (math-mimic-ident (nth 1 b) a)))
1207 (and (math-known-scalarp a) 1207 (and (math-known-scalarp a)
diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el
index c0fa5310bf4..849ec42c5f6 100644
--- a/lisp/calc/calcalg2.el
+++ b/lisp/calc/calcalg2.el
@@ -2012,7 +2012,7 @@
2012 n (1+ n) 2012 n (1+ n)
2013 t1 (cdr t1))) 2013 t1 (cdr t1)))
2014 (setq n (math-build-polynomial-expr poly high)) 2014 (setq n (math-build-polynomial-expr poly high))
2015 (if (memq low '(0 1)) 2015 (if (= low 1)
2016 n 2016 n
2017 (math-sub n (math-build-polynomial-expr poly 2017 (math-sub n (math-build-polynomial-expr poly
2018 (math-sub low 1)))))) 2018 (math-sub low 1))))))
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 0f8e7295d32..c377bcc8735 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -1,6 +1,6 @@
1;;; cal-menu.el --- calendar functions for menu bar and popup menu support 1;;; cal-menu.el --- calendar functions for menu bar and popup menu support
2 2
3;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005 3;; Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004, 2005, 2006
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
@@ -42,7 +42,9 @@
42(defvar displayed-month) 42(defvar displayed-month)
43(defvar displayed-year) 43(defvar displayed-year)
44 44
45(eval-when-compile (require 'calendar)) 45;; Don't require calendar because calendar requires us.
46;; (eval-when-compile (require 'calendar))
47(defvar calendar-mode-map)
46 48
47(define-key calendar-mode-map [menu-bar edit] 'undefined) 49(define-key calendar-mode-map [menu-bar edit] 'undefined)
48(define-key calendar-mode-map [menu-bar search] 'undefined) 50(define-key calendar-mode-map [menu-bar search] 'undefined)
@@ -211,14 +213,14 @@ not available."
211 (condition-case nil 213 (condition-case nil
212 (if (eq major-mode 'calendar-mode) 214 (if (eq major-mode 'calendar-mode)
213 (let ((l)) 215 (let ((l))
214 (calendar-for-loop;; Show 11 years--5 before, 5 after year of 216 ;; Show 11 years--5 before, 5 after year of middle month
215 ;; middle month 217 (dotimes (i 11)
216 i from (- displayed-year 5) to (+ displayed-year 5) do 218 (let ((y (+ displayed-year -5 i)))
217 (setq l (cons (vector (format "For Year %s" i) 219 (push (vector (format "For Year %s" y)
218 (list (list 'lambda 'nil '(interactive) 220 (list (list 'lambda 'nil '(interactive)
219 (list 'list-holidays i i))) 221 (list 'list-holidays y y)))
220 t) 222 t)
221 l))) 223 l)))
222 (setq l (cons ["Mark Holidays" mark-calendar-holidays t] 224 (setq l (cons ["Mark Holidays" mark-calendar-holidays t]
223 (cons ["Unmark Calendar" calendar-unmark t] 225 (cons ["Unmark Calendar" calendar-unmark t]
224 (cons "--" l)))) 226 (cons "--" l))))
@@ -231,22 +233,18 @@ not available."
231 (calendar-date-string (calendar-current-date) t t)) 233 (calendar-date-string (calendar-current-date) t t))
232 . cal-menu-today-holidays)) 234 . cal-menu-today-holidays))
233 (let ((title 235 (let ((title
234 (let ((m1 displayed-month) 236 (let ((my1 (calendar-increment-month -1))
235 (y1 displayed-year) 237 (my2 (calendar-increment-month 1)))
236 (m2 displayed-month) 238 (if (= (cdr my1) (cdr my2))
237 (y2 displayed-year))
238 (increment-calendar-month m1 y1 -1)
239 (increment-calendar-month m2 y2 1)
240 (if (= y1 y2)
241 (format "%s-%s, %d" 239 (format "%s-%s, %d"
242 (calendar-month-name m1 'abbrev) 240 (calendar-month-name (car my1) 'abbrev)
243 (calendar-month-name m2 'abbrev) 241 (calendar-month-name (car my2) 'abbrev)
244 y2) 242 (cdr my2))
245 (format "%s, %d-%s, %d" 243 (format "%s, %d-%s, %d"
246 (calendar-month-name m1 'abbrev) 244 (calendar-month-name (car my1) 'abbrev)
247 y1 245 (cdr my1)
248 (calendar-month-name m2 'abbrev) 246 (calendar-month-name (car my2) 'abbrev)
249 y2))))) 247 (cdr my2))))))
250 (define-key calendar-mode-map [menu-bar Holidays 3-month] 248 (define-key calendar-mode-map [menu-bar Holidays 3-month]
251 `(,(format "For Window (%s)" title) 249 `(,(format "For Window (%s)" title)
252 . list-calendar-holidays))) 250 . list-calendar-holidays)))
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 1ef8d048c88..f01f4305708 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1,7 +1,7 @@
1;;; calendar.el --- calendar functions 1;;; calendar.el --- calendar functions
2 2
3;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997, 3;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> 6;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
7;; Maintainer: Glenn Morris <rgm@gnu.org> 7;; Maintainer: Glenn Morris <rgm@gnu.org>
@@ -98,11 +98,10 @@
98 98
99;;; Code: 99;;; Code:
100 100
101(eval-when-compile 101(defvar displayed-month)
102 (defvar displayed-month) 102(defvar displayed-year)
103 (defvar displayed-year) 103(defvar calendar-month-name-array)
104 (defvar calendar-month-name-array) 104(defvar calendar-starred-day)
105 (defvar calendar-starred-day))
106 105
107(defun calendar-version () 106(defun calendar-version ()
108 (interactive) 107 (interactive)
@@ -146,7 +145,7 @@
146 145
147;;;###autoload 146;;;###autoload
148(defcustom calendar-offset 0 147(defcustom calendar-offset 0
149 "*The offset of the principal month from the center of the calendar window. 148 "The offset of the principal month from the center of the calendar window.
1500 means the principal month is in the center (default), -1 means on the left, 1490 means the principal month is in the center (default), -1 means on the left,
151+1 means on the right. Larger (or smaller) values push the principal month off 150+1 means on the right. Larger (or smaller) values push the principal month off
152the screen." 151the screen."
@@ -155,7 +154,7 @@ the screen."
155 154
156;;;###autoload 155;;;###autoload
157(defcustom view-diary-entries-initially nil 156(defcustom view-diary-entries-initially nil
158 "*Non-nil means display current date's diary entries on entry to calendar. 157 "Non-nil means display current date's diary entries on entry to calendar.
159The diary is displayed in another window when the calendar is first displayed, 158The diary is displayed in another window when the calendar is first displayed,
160if the current date is visible. The number of days of diary entries displayed 159if the current date is visible. The number of days of diary entries displayed
161is governed by the variable `number-of-diary-entries'. This variable can 160is governed by the variable `number-of-diary-entries'. This variable can
@@ -165,14 +164,14 @@ be overridden by the value of `calendar-setup'."
165 164
166;;;###autoload 165;;;###autoload
167(defcustom mark-diary-entries-in-calendar nil 166(defcustom mark-diary-entries-in-calendar nil
168 "*Non-nil means mark dates with diary entries, in the calendar window. 167 "Non-nil means mark dates with diary entries, in the calendar window.
169The marking symbol is specified by the variable `diary-entry-marker'." 168The marking symbol is specified by the variable `diary-entry-marker'."
170 :type 'boolean 169 :type 'boolean
171 :group 'diary) 170 :group 'diary)
172 171
173;;;###autoload 172;;;###autoload
174(defcustom calendar-remove-frame-by-deleting nil 173(defcustom calendar-remove-frame-by-deleting nil
175 "*Determine how the calendar mode removes a frame no longer needed. 174 "Determine how the calendar mode removes a frame no longer needed.
176If nil, make an icon of the frame. If non-nil, delete the frame." 175If nil, make an icon of the frame. If non-nil, delete the frame."
177 :type 'boolean 176 :type 'boolean
178 :group 'view) 177 :group 'view)
@@ -224,7 +223,7 @@ If nil, make an icon of the frame. If non-nil, delete the frame."
224 (if (not (display-color-p)) 223 (if (not (display-color-p))
225 "+" 224 "+"
226 'diary) 225 'diary)
227 "*How to mark dates that have diary entries. 226 "How to mark dates that have diary entries.
228The value can be either a single-character string or a face." 227The value can be either a single-character string or a face."
229 :type '(choice string face) 228 :type '(choice string face)
230 :group 'diary) 229 :group 'diary)
@@ -233,7 +232,7 @@ The value can be either a single-character string or a face."
233 (if (not (display-color-p)) 232 (if (not (display-color-p))
234 "=" 233 "="
235 'calendar-today) 234 'calendar-today)
236 "*How to mark today's date in the calendar. 235 "How to mark today's date in the calendar.
237The value can be either a single-character string or a face. 236The value can be either a single-character string or a face.
238Marking today's date is done only if you set up `today-visible-calendar-hook' 237Marking today's date is done only if you set up `today-visible-calendar-hook'
239to request that." 238to request that."
@@ -244,14 +243,14 @@ to request that."
244 (if (not (display-color-p)) 243 (if (not (display-color-p))
245 "*" 244 "*"
246 'holiday) 245 'holiday)
247 "*How to mark notable dates in the calendar. 246 "How to mark notable dates in the calendar.
248The value can be either a single-character string or a face." 247The value can be either a single-character string or a face."
249 :type '(choice string face) 248 :type '(choice string face)
250 :group 'calendar) 249 :group 'calendar)
251 250
252;;;###autoload 251;;;###autoload
253(defcustom view-calendar-holidays-initially nil 252(defcustom view-calendar-holidays-initially nil
254 "*Non-nil means display holidays for current three month period on entry. 253 "Non-nil means display holidays for current three month period on entry.
255The holidays are displayed in another window when the calendar is first 254The holidays are displayed in another window when the calendar is first
256displayed." 255displayed."
257 :type 'boolean 256 :type 'boolean
@@ -259,14 +258,14 @@ displayed."
259 258
260;;;###autoload 259;;;###autoload
261(defcustom mark-holidays-in-calendar nil 260(defcustom mark-holidays-in-calendar nil
262 "*Non-nil means mark dates of holidays in the calendar window. 261 "Non-nil means mark dates of holidays in the calendar window.
263The marking symbol is specified by the variable `calendar-holiday-marker'." 262The marking symbol is specified by the variable `calendar-holiday-marker'."
264 :type 'boolean 263 :type 'boolean
265 :group 'holidays) 264 :group 'holidays)
266 265
267;;;###autoload 266;;;###autoload
268(defcustom all-hebrew-calendar-holidays nil 267(defcustom all-hebrew-calendar-holidays nil
269 "*If nil, show only major holidays from the Hebrew calendar. 268 "If nil, show only major holidays from the Hebrew calendar.
270This means only those Jewish holidays that appear on secular calendars. 269This means only those Jewish holidays that appear on secular calendars.
271 270
272If t, show all the holidays that would appear in a complete Hebrew calendar." 271If t, show all the holidays that would appear in a complete Hebrew calendar."
@@ -275,7 +274,7 @@ If t, show all the holidays that would appear in a complete Hebrew calendar."
275 274
276;;;###autoload 275;;;###autoload
277(defcustom all-christian-calendar-holidays nil 276(defcustom all-christian-calendar-holidays nil
278 "*If nil, show only major holidays from the Christian calendar. 277 "If nil, show only major holidays from the Christian calendar.
279This means only those Christian holidays that appear on secular calendars. 278This means only those Christian holidays that appear on secular calendars.
280 279
281If t, show all the holidays that would appear in a complete Christian 280If t, show all the holidays that would appear in a complete Christian
@@ -285,7 +284,7 @@ calendar."
285 284
286;;;###autoload 285;;;###autoload
287(defcustom all-islamic-calendar-holidays nil 286(defcustom all-islamic-calendar-holidays nil
288 "*If nil, show only major holidays from the Islamic calendar. 287 "If nil, show only major holidays from the Islamic calendar.
289This means only those Islamic holidays that appear on secular calendars. 288This means only those Islamic holidays that appear on secular calendars.
290 289
291If t, show all the holidays that would appear in a complete Islamic 290If t, show all the holidays that would appear in a complete Islamic
@@ -294,13 +293,13 @@ calendar."
294 :group 'holidays) 293 :group 'holidays)
295 294
296(defcustom diary-file-name-prefix-function (function (lambda (str) str)) 295(defcustom diary-file-name-prefix-function (function (lambda (str) str))
297 "*The function that will take a diary file name and return the desired prefix." 296 "The function that will take a diary file name and return the desired prefix."
298 :type 'function 297 :type 'function
299 :group 'diary) 298 :group 'diary)
300 299
301;;;###autoload 300;;;###autoload
302(defcustom all-bahai-calendar-holidays nil 301(defcustom all-bahai-calendar-holidays nil
303 "*If nil, show only major holidays from the Baha'i calendar. 302 "If nil, show only major holidays from the Baha'i calendar.
304These are the days on which work and school must be suspended. 303These are the days on which work and school must be suspended.
305 304
306If t, show all the holidays that would appear in a complete Baha'i 305If t, show all the holidays that would appear in a complete Baha'i
@@ -310,14 +309,14 @@ calendar."
310 309
311;;;###autoload 310;;;###autoload
312(defcustom calendar-load-hook nil 311(defcustom calendar-load-hook nil
313 "*List of functions to be called after the calendar is first loaded. 312 "List of functions to be called after the calendar is first loaded.
314This is the place to add key bindings to `calendar-mode-map'." 313This is the place to add key bindings to `calendar-mode-map'."
315 :type 'hook 314 :type 'hook
316 :group 'calendar-hooks) 315 :group 'calendar-hooks)
317 316
318;;;###autoload 317;;;###autoload
319(defcustom initial-calendar-window-hook nil 318(defcustom initial-calendar-window-hook nil
320 "*List of functions to be called when the calendar window is first opened. 319 "List of functions to be called when the calendar window is first opened.
321The functions invoked are called after the calendar window is opened, but 320The functions invoked are called after the calendar window is opened, but
322once opened is never called again. Leaving the calendar with the `q' command 321once opened is never called again. Leaving the calendar with the `q' command
323and reentering it will cause these functions to be called again." 322and reentering it will cause these functions to be called again."
@@ -326,7 +325,7 @@ and reentering it will cause these functions to be called again."
326 325
327;;;###autoload 326;;;###autoload
328(defcustom today-visible-calendar-hook nil 327(defcustom today-visible-calendar-hook nil
329 "*List of functions called whenever the current date is visible. 328 "List of functions called whenever the current date is visible.
330This can be used, for example, to replace today's date with asterisks; a 329This can be used, for example, to replace today's date with asterisks; a
331function `calendar-star-date' is included for this purpose: 330function `calendar-star-date' is included for this purpose:
332 (setq today-visible-calendar-hook 'calendar-star-date) 331 (setq today-visible-calendar-hook 'calendar-star-date)
@@ -346,7 +345,7 @@ functions that move by days and weeks."
346 345
347;;;###autoload 346;;;###autoload
348(defcustom today-invisible-calendar-hook nil 347(defcustom today-invisible-calendar-hook nil
349 "*List of functions called whenever the current date is not visible. 348 "List of functions called whenever the current date is not visible.
350 349
351The corresponding variable `today-visible-calendar-hook' is the list of 350The corresponding variable `today-visible-calendar-hook' is the list of
352functions called when the calendar function was called when the current 351functions called when the calendar function was called when the current
@@ -360,7 +359,7 @@ functions that move by days and weeks."
360 359
361;;;###autoload 360;;;###autoload
362(defcustom calendar-move-hook nil 361(defcustom calendar-move-hook nil
363 "*List of functions called whenever the cursor moves in the calendar. 362 "List of functions called whenever the cursor moves in the calendar.
364 363
365For example, 364For example,
366 365
@@ -372,7 +371,7 @@ redisplays the diary for whatever date the cursor is moved to."
372 371
373;;;###autoload 372;;;###autoload
374(defcustom diary-file "~/diary" 373(defcustom diary-file "~/diary"
375 "*Name of the file in which one's personal diary of dates is kept. 374 "Name of the file in which one's personal diary of dates is kept.
376 375
377The file's entries are lines beginning with any of the forms 376The file's entries are lines beginning with any of the forms
378specified by the variable `american-date-diary-pattern', by default: 377specified by the variable `american-date-diary-pattern', by default:
@@ -480,37 +479,37 @@ details, see the documentation for the variable `list-diary-entries-hook'."
480 479
481;;;###autoload 480;;;###autoload
482(defcustom diary-nonmarking-symbol "&" 481(defcustom diary-nonmarking-symbol "&"
483 "*Symbol indicating that a diary entry is not to be marked in the calendar." 482 "Symbol indicating that a diary entry is not to be marked in the calendar."
484 :type 'string 483 :type 'string
485 :group 'diary) 484 :group 'diary)
486 485
487;;;###autoload 486;;;###autoload
488(defcustom hebrew-diary-entry-symbol "H" 487(defcustom hebrew-diary-entry-symbol "H"
489 "*Symbol indicating a diary entry according to the Hebrew calendar." 488 "Symbol indicating a diary entry according to the Hebrew calendar."
490 :type 'string 489 :type 'string
491 :group 'diary) 490 :group 'diary)
492 491
493;;;###autoload 492;;;###autoload
494(defcustom islamic-diary-entry-symbol "I" 493(defcustom islamic-diary-entry-symbol "I"
495 "*Symbol indicating a diary entry according to the Islamic calendar." 494 "Symbol indicating a diary entry according to the Islamic calendar."
496 :type 'string 495 :type 'string
497 :group 'diary) 496 :group 'diary)
498 497
499;;;###autoload 498;;;###autoload
500(defcustom bahai-diary-entry-symbol "B" 499(defcustom bahai-diary-entry-symbol "B"
501 "*Symbol indicating a diary entry according to the Baha'i calendar." 500 "Symbol indicating a diary entry according to the Baha'i calendar."
502 :type 'string 501 :type 'string
503 :group 'diary) 502 :group 'diary)
504 503
505;;;###autoload 504;;;###autoload
506(defcustom diary-include-string "#include" 505(defcustom diary-include-string "#include"
507 "*The string indicating inclusion of another file of diary entries. 506 "The string indicating inclusion of another file of diary entries.
508See the documentation for the function `include-other-diary-files'." 507See the documentation for the function `include-other-diary-files'."
509 :type 'string 508 :type 'string
510 :group 'diary) 509 :group 'diary)
511 510
512(defcustom diary-glob-file-regexp-prefix "^\\#" 511(defcustom diary-glob-file-regexp-prefix "^\\#"
513 "*The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers." 512 "The regular expression that gets pre-pended to each of the attribute-regexp's for file-wide specifiers."
514 :type 'regexp 513 :type 'regexp
515 :group 'diary) 514 :group 'diary)
516 515
@@ -531,7 +530,7 @@ See the documentation for the function `include-other-diary-files'."
531;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box) 530;;; (" *\\[box:\\([-a-z]+\\)\\]$" 1 :box)
532;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple) 531;;; (" *\\[stipple:\\([-a-z]+\\)\\]$" 1 :stipple)
533 ) 532 )
534 "*A list of (regexp regnum attr attrtype) lists where the 533 "A list of (regexp regnum attr attrtype) lists where the
535regexp says how to find the tag, the regnum says which 534regexp says how to find the tag, the regnum says which
536parenthetical sub-regexp this regexp looks for, and the attr says 535parenthetical sub-regexp this regexp looks for, and the attr says
537which attribute of the face (or that this _is_ a face) is being 536which attribute of the face (or that this _is_ a face) is being
@@ -546,14 +545,14 @@ modified."
546 545
547;;;###autoload 546;;;###autoload
548(defcustom sexp-diary-entry-symbol "%%" 547(defcustom sexp-diary-entry-symbol "%%"
549 "*The string used to indicate a sexp diary entry in `diary-file'. 548 "The string used to indicate a sexp diary entry in `diary-file'.
550See the documentation for the function `list-sexp-diary-entries'." 549See the documentation for the function `list-sexp-diary-entries'."
551 :type 'string 550 :type 'string
552 :group 'diary) 551 :group 'diary)
553 552
554;;;###autoload 553;;;###autoload
555(defcustom abbreviated-calendar-year t 554(defcustom abbreviated-calendar-year t
556 "*Interpret a two-digit year DD in a diary entry as either 19DD or 20DD. 555 "Interpret a two-digit year DD in a diary entry as either 19DD or 20DD.
557For the Gregorian calendar; similarly for the Hebrew, Islamic and 556For the Gregorian calendar; similarly for the Hebrew, Islamic and
558Baha'i calendars. If this variable is nil, years must be written in 557Baha'i calendars. If this variable is nil, years must be written in
559full." 558full."
@@ -562,7 +561,7 @@ full."
562 561
563;;;###autoload 562;;;###autoload
564(defcustom european-calendar-style nil 563(defcustom european-calendar-style nil
565 "*Use the European style of dates in the diary and in any displays. 564 "Use the European style of dates in the diary and in any displays.
566If this variable is t, a date 1/2/1990 would be interpreted as February 1, 565If this variable is t, a date 1/2/1990 would be interpreted as February 1,
5671990. The default European date styles (see `european-date-diary-pattern') 5661990. The default European date styles (see `european-date-diary-pattern')
568are 567are
@@ -589,7 +588,7 @@ are loaded. Otherwise, use one of the functions `european-calendar' or
589 (monthname " *" day "[^,0-9]") 588 (monthname " *" day "[^,0-9]")
590 (monthname " *" day ", *" year "[^0-9]") 589 (monthname " *" day ", *" year "[^0-9]")
591 (dayname "\\W")) 590 (dayname "\\W"))
592 "*List of pseudo-patterns describing the American patterns of date used. 591 "List of pseudo-patterns describing the American patterns of date used.
593See the documentation of `diary-date-forms' for an explanation." 592See the documentation of `diary-date-forms' for an explanation."
594 :type '(repeat (choice (cons :tag "Backup" 593 :type '(repeat (choice (cons :tag "Backup"
595 :value (backup . nil) 594 :value (backup . nil)
@@ -609,7 +608,7 @@ See the documentation of `diary-date-forms' for an explanation."
609 (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)") 608 (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|\\([0-9]+[:aApP]\\)\\)")
610 (day " *" monthname " *" year "[^0-9]") 609 (day " *" monthname " *" year "[^0-9]")
611 (dayname "\\W")) 610 (dayname "\\W"))
612 "*List of pseudo-patterns describing the European patterns of date used. 611 "List of pseudo-patterns describing the European patterns of date used.
613See the documentation of `diary-date-forms' for an explanation." 612See the documentation of `diary-date-forms' for an explanation."
614 :type '(repeat (choice (cons :tag "Backup" 613 :type '(repeat (choice (cons :tag "Backup"
615 :value (backup . nil) 614 :value (backup . nil)
@@ -626,7 +625,7 @@ See the documentation of `diary-date-forms' for an explanation."
626 (if european-calendar-style 625 (if european-calendar-style
627 european-date-diary-pattern 626 european-date-diary-pattern
628 american-date-diary-pattern) 627 american-date-diary-pattern)
629 "*List of pseudo-patterns describing the forms of date used in the diary. 628 "List of pseudo-patterns describing the forms of date used in the diary.
630The patterns on the list must be MUTUALLY EXCLUSIVE and should not match 629The patterns on the list must be MUTUALLY EXCLUSIVE and should not match
631any portion of the diary entry itself, just the date component. 630any portion of the diary entry itself, just the date component.
632 631
@@ -664,7 +663,7 @@ a portion of the first word of the diary entry."
664;;;###autoload 663;;;###autoload
665(defcustom european-calendar-display-form 664(defcustom european-calendar-display-form
666 '((if dayname (concat dayname ", ")) day " " monthname " " year) 665 '((if dayname (concat dayname ", ")) day " " monthname " " year)
667 "*Pseudo-pattern governing the way a date appears in the European style. 666 "Pseudo-pattern governing the way a date appears in the European style.
668See the documentation of `calendar-date-display-form' for an explanation." 667See the documentation of `calendar-date-display-form' for an explanation."
669 :type 'sexp 668 :type 'sexp
670 :group 'calendar) 669 :group 'calendar)
@@ -672,7 +671,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
672;;;###autoload 671;;;###autoload
673(defcustom american-calendar-display-form 672(defcustom american-calendar-display-form
674 '((if dayname (concat dayname ", ")) monthname " " day ", " year) 673 '((if dayname (concat dayname ", ")) monthname " " day ", " year)
675 "*Pseudo-pattern governing the way a date appears in the American style. 674 "Pseudo-pattern governing the way a date appears in the American style.
676See the documentation of `calendar-date-display-form' for an explanation." 675See the documentation of `calendar-date-display-form' for an explanation."
677 :type 'sexp 676 :type 'sexp
678 :group 'calendar) 677 :group 'calendar)
@@ -681,7 +680,7 @@ See the documentation of `calendar-date-display-form' for an explanation."
681 (if european-calendar-style 680 (if european-calendar-style
682 european-calendar-display-form 681 european-calendar-display-form
683 american-calendar-display-form) 682 american-calendar-display-form)
684 "*Pseudo-pattern governing the way a date appears. 683 "Pseudo-pattern governing the way a date appears.
685 684
686Used by the function `calendar-date-string', a pseudo-pattern is a list of 685Used by the function `calendar-date-string', a pseudo-pattern is a list of
687expressions that can involve the keywords `month', `day', and `year', all 686expressions that can involve the keywords `month', `day', and `year', all
@@ -722,7 +721,7 @@ See the documentation of the function `calendar-date-string'."
722 721
723;;;###autoload 722;;;###autoload
724(defcustom print-diary-entries-hook 'lpr-buffer 723(defcustom print-diary-entries-hook 'lpr-buffer
725 "*List of functions called after a temporary diary buffer is prepared. 724 "List of functions called after a temporary diary buffer is prepared.
726The buffer shows only the diary entries currently visible in the diary 725The buffer shows only the diary entries currently visible in the diary
727buffer. The default just does the printing. Other uses might include, for 726buffer. The default just does the printing. Other uses might include, for
728example, rearranging the lines into order by day and time, saving the buffer 727example, rearranging the lines into order by day and time, saving the buffer
@@ -732,7 +731,7 @@ instead of deleting it, or changing the function used to do the printing."
732 731
733;;;###autoload 732;;;###autoload
734(defcustom list-diary-entries-hook nil 733(defcustom list-diary-entries-hook nil
735 "*List of functions called after diary file is culled for relevant entries. 734 "List of functions called after diary file is culled for relevant entries.
736It is to be used for diary entries that are not found in the diary file. 735It is to be used for diary entries that are not found in the diary file.
737 736
738A function `include-other-diary-files' is provided for use as the value of 737A function `include-other-diary-files' is provided for use as the value of
@@ -763,14 +762,14 @@ lexicographic order."
763 762
764;;;###autoload 763;;;###autoload
765(defcustom diary-hook nil 764(defcustom diary-hook nil
766 "*List of functions called after the display of the diary. 765 "List of functions called after the display of the diary.
767Can be used for appointment notification." 766Can be used for appointment notification."
768 :type 'hook 767 :type 'hook
769 :group 'diary) 768 :group 'diary)
770 769
771;;;###autoload 770;;;###autoload
772(defcustom diary-display-hook nil 771(defcustom diary-display-hook nil
773 "*List of functions that handle the display of the diary. 772 "List of functions that handle the display of the diary.
774If nil (the default), `simple-diary-display' is used. Use `ignore' for no 773If nil (the default), `simple-diary-display' is used. Use `ignore' for no
775diary display. 774diary display.
776 775
@@ -796,7 +795,7 @@ diary buffer, set the variable `diary-list-include-blanks' to t."
796 795
797;;;###autoload 796;;;###autoload
798(defcustom nongregorian-diary-listing-hook nil 797(defcustom nongregorian-diary-listing-hook nil
799 "*List of functions called for listing diary file and included files. 798 "List of functions called for listing diary file and included files.
800As the files are processed for diary entries, these functions are used 799As the files are processed for diary entries, these functions are used
801to cull relevant entries. You can use either or both of 800to cull relevant entries. You can use either or both of
802`list-hebrew-diary-entries', `list-islamic-diary-entries' and 801`list-hebrew-diary-entries', `list-islamic-diary-entries' and
@@ -810,7 +809,7 @@ describes the style of such diary entries."
810 809
811;;;###autoload 810;;;###autoload
812(defcustom mark-diary-entries-hook nil 811(defcustom mark-diary-entries-hook nil
813 "*List of functions called after marking diary entries in the calendar. 812 "List of functions called after marking diary entries in the calendar.
814 813
815A function `mark-included-diary-files' is also provided for use as the 814A function `mark-included-diary-files' is also provided for use as the
816`mark-diary-entries-hook'; it enables you to use shared diary files together 815`mark-diary-entries-hook'; it enables you to use shared diary files together
@@ -828,7 +827,7 @@ function `include-other-diary-files' as part of `list-diary-entries-hook'."
828 827
829;;;###autoload 828;;;###autoload
830(defcustom nongregorian-diary-marking-hook nil 829(defcustom nongregorian-diary-marking-hook nil
831 "*List of functions called for marking diary file and included files. 830 "List of functions called for marking diary file and included files.
832As the files are processed for diary entries, these functions are used 831As the files are processed for diary entries, these functions are used
833to cull relevant entries. You can use either or both of 832to cull relevant entries. You can use either or both of
834`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and 833`mark-hebrew-diary-entries', `mark-islamic-diary-entries' and
@@ -842,7 +841,7 @@ describes the style of such diary entries."
842 841
843;;;###autoload 842;;;###autoload
844(defcustom diary-list-include-blanks nil 843(defcustom diary-list-include-blanks nil
845 "*If nil, do not include days with no diary entry in the list of diary entries. 844 "If nil, do not include days with no diary entry in the list of diary entries.
846Such days will then not be shown in the fancy diary buffer, even if they 845Such days will then not be shown in the fancy diary buffer, even if they
847are holidays." 846are holidays."
848 :type 'boolean 847 :type 'boolean
@@ -850,7 +849,7 @@ are holidays."
850 849
851;;;###autoload 850;;;###autoload
852(defcustom holidays-in-diary-buffer t 851(defcustom holidays-in-diary-buffer t
853 "*Non-nil means include holidays in the diary display. 852 "Non-nil means include holidays in the diary display.
854The holidays appear in the mode line of the diary buffer, or in the 853The holidays appear in the mode line of the diary buffer, or in the
855fancy diary buffer next to the date. This slows down the diary functions 854fancy diary buffer next to the date. This slows down the diary functions
856somewhat; setting it to nil makes the diary display faster." 855somewhat; setting it to nil makes the diary display faster."
@@ -880,7 +879,7 @@ somewhat; setting it to nil makes the diary display faster."
880 (holiday-fixed 10 31 "Halloween") 879 (holiday-fixed 10 31 "Halloween")
881 (holiday-fixed 11 11 "Veteran's Day") 880 (holiday-fixed 11 11 "Veteran's Day")
882 (holiday-float 11 4 4 "Thanksgiving")) 881 (holiday-float 11 4 4 "Thanksgiving"))
883 "*General holidays. Default value is for the United States. 882 "General holidays. Default value is for the United States.
884See the documentation for `calendar-holidays' for details." 883See the documentation for `calendar-holidays' for details."
885 :type 'sexp 884 :type 'sexp
886 :group 'holidays) 885 :group 'holidays)
@@ -891,7 +890,7 @@ See the documentation for `calendar-holidays' for details."
891(defcustom oriental-holidays 890(defcustom oriental-holidays
892 '((if (fboundp 'atan) 891 '((if (fboundp 'atan)
893 (holiday-chinese-new-year))) 892 (holiday-chinese-new-year)))
894 "*Oriental holidays. 893 "Oriental holidays.
895See the documentation for `calendar-holidays' for details." 894See the documentation for `calendar-holidays' for details."
896 :type 'sexp 895 :type 'sexp
897 :group 'holidays) 896 :group 'holidays)
@@ -900,7 +899,7 @@ See the documentation for `calendar-holidays' for details."
900(put 'local-holidays 'risky-local-variable t) 899(put 'local-holidays 'risky-local-variable t)
901;;;###autoload 900;;;###autoload
902(defcustom local-holidays nil 901(defcustom local-holidays nil
903 "*Local holidays. 902 "Local holidays.
904See the documentation for `calendar-holidays' for details." 903See the documentation for `calendar-holidays' for details."
905 :type 'sexp 904 :type 'sexp
906 :group 'holidays) 905 :group 'holidays)
@@ -909,7 +908,7 @@ See the documentation for `calendar-holidays' for details."
909(put 'other-holidays 'risky-local-variable t) 908(put 'other-holidays 'risky-local-variable t)
910;;;###autoload 909;;;###autoload
911(defcustom other-holidays nil 910(defcustom other-holidays nil
912 "*User defined holidays. 911 "User defined holidays.
913See the documentation for `calendar-holidays' for details." 912See the documentation for `calendar-holidays' for details."
914 :type 'sexp 913 :type 'sexp
915 :group 'holidays) 914 :group 'holidays)
@@ -1013,7 +1012,7 @@ See the documentation for `calendar-holidays' for details."
1013;;;###autoload 1012;;;###autoload
1014(defcustom hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2 1013(defcustom hebrew-holidays (append hebrew-holidays-1 hebrew-holidays-2
1015 hebrew-holidays-3 hebrew-holidays-4) 1014 hebrew-holidays-3 hebrew-holidays-4)
1016 "*Jewish holidays. 1015 "Jewish holidays.
1017See the documentation for `calendar-holidays' for details." 1016See the documentation for `calendar-holidays' for details."
1018 :type 'sexp 1017 :type 'sexp
1019 :group 'holidays) 1018 :group 'holidays)
@@ -1064,7 +1063,7 @@ See the documentation for `calendar-holidays' for details."
1064 (holiday-fixed 12 25 "Christmas") 1063 (holiday-fixed 12 25 "Christmas")
1065 (if all-christian-calendar-holidays 1064 (if all-christian-calendar-holidays
1066 (holiday-julian 12 25 "Eastern Orthodox Christmas"))) 1065 (holiday-julian 12 25 "Eastern Orthodox Christmas")))
1067 "*Christian holidays. 1066 "Christian holidays.
1068See the documentation for `calendar-holidays' for details." 1067See the documentation for `calendar-holidays' for details."
1069 :type 'sexp 1068 :type 'sexp
1070 :group 'holidays) 1069 :group 'holidays)
@@ -1099,7 +1098,7 @@ See the documentation for `calendar-holidays' for details."
1099 (holiday-islamic 10 1 "Id-al-Fitr")) 1098 (holiday-islamic 10 1 "Id-al-Fitr"))
1100 (if all-islamic-calendar-holidays 1099 (if all-islamic-calendar-holidays
1101 (holiday-islamic 12 10 "Id-al-Adha"))) 1100 (holiday-islamic 12 10 "Id-al-Adha")))
1102 "*Islamic holidays. 1101 "Islamic holidays.
1103See the documentation for `calendar-holidays' for details." 1102See the documentation for `calendar-holidays' for details."
1104 :type 'sexp 1103 :type 'sexp
1105 :group 'holidays) 1104 :group 'holidays)
@@ -1141,7 +1140,7 @@ See the documentation for `calendar-holidays' for details."
1141 (holiday-fixed 11 26 "Day of the Covenant")) 1140 (holiday-fixed 11 26 "Day of the Covenant"))
1142 (if all-bahai-calendar-holidays 1141 (if all-bahai-calendar-holidays
1143 (holiday-fixed 11 28 "Ascension of `Abdu'l-Baha"))) 1142 (holiday-fixed 11 28 "Ascension of `Abdu'l-Baha")))
1144 "*Baha'i holidays. 1143 "Baha'i holidays.
1145See the documentation for `calendar-holidays' for details." 1144See the documentation for `calendar-holidays' for details."
1146 :type 'sexp 1145 :type 'sexp
1147 :group 'holidays) 1146 :group 'holidays)
@@ -1173,7 +1172,7 @@ See the documentation for `calendar-holidays' for details."
1173 (/ calendar-daylight-savings-ends-time (float 60)) 1172 (/ calendar-daylight-savings-ends-time (float 60))
1174 calendar-daylight-time-zone-name) 1173 calendar-daylight-time-zone-name)
1175 "")))) 1174 ""))))
1176 "*Sun-related holidays. 1175 "Sun-related holidays.
1177See the documentation for `calendar-holidays' for details." 1176See the documentation for `calendar-holidays' for details."
1178 :type 'sexp 1177 :type 'sexp
1179 :group 'holidays) 1178 :group 'holidays)
@@ -1184,7 +1183,7 @@ See the documentation for `calendar-holidays' for details."
1184 (append general-holidays local-holidays other-holidays 1183 (append general-holidays local-holidays other-holidays
1185 christian-holidays hebrew-holidays islamic-holidays 1184 christian-holidays hebrew-holidays islamic-holidays
1186 bahai-holidays oriental-holidays solar-holidays) 1185 bahai-holidays oriental-holidays solar-holidays)
1187 "*List of notable days for the command \\[holidays]. 1186 "List of notable days for the command \\[holidays].
1188 1187
1189Additional holidays are easy to add to the list, just put them in the 1188Additional holidays are easy to add to the list, just put them in the
1190list `other-holidays' in your .emacs file. Similarly, by setting any 1189list `other-holidays' in your .emacs file. Similarly, by setting any
@@ -1304,6 +1303,15 @@ A negative YR is interpreted as BC; -1 being 1 BC, and so on."
1304 (and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr))) 1303 (and (< macro-y 0) (> ,mon 1) (setq ,yr (1- ,yr)))
1305 (if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc 1304 (if (< ,yr 1) (setq ,yr (1- ,yr))))) ; 0 AD -> -1 BC, etc
1306 1305
1306(defun calendar-increment-month (n &optional mon yr)
1307 "Return the Nth month after MON/YR.
1308The return value is a pair (MONTH . YEAR).
1309MON defaults to `displayed-month'. YR defaults to `displayed-year'."
1310 (unless mon (setq mon displayed-month))
1311 (unless yr (setq mon displayed-year))
1312 (increment-calendar-month mon yr n)
1313 (cons mon yr))
1314
1307(defmacro calendar-for-loop (var from init to final do &rest body) 1315(defmacro calendar-for-loop (var from init to final do &rest body)
1308 "Execute a for loop." 1316 "Execute a for loop."
1309 (declare (debug (symbolp "from" form "to" form "do" body))) 1317 (declare (debug (symbolp "from" form "to" form "do" body)))
@@ -1313,6 +1321,7 @@ A negative YR is interpreted as BC; -1 being 1 BC, and so on."
1313 1321
1314(defmacro calendar-sum (index initial condition expression) 1322(defmacro calendar-sum (index initial condition expression)
1315 "For INDEX = INITIAL et seq, as long as CONDITION holds, sum EXPRESSION." 1323 "For INDEX = INITIAL et seq, as long as CONDITION holds, sum EXPRESSION."
1324 (declare (debug (symbolp form form form)))
1316 `(let ((,index ,initial) 1325 `(let ((,index ,initial)
1317 (sum 0)) 1326 (sum 0))
1318 (while ,condition 1327 (while ,condition
@@ -2140,7 +2149,7 @@ the inserted text. Value is always t."
2140 2149
2141;;;###autoload 2150;;;###autoload
2142(defcustom calendar-week-start-day 0 2151(defcustom calendar-week-start-day 0
2143 "*The day of the week on which a week in the calendar begins. 2152 "The day of the week on which a week in the calendar begins.
21440 means Sunday (default), 1 means Monday, and so on. 21530 means Sunday (default), 1 means Monday, and so on.
2145 2154
2146If you change this variable directly (without using customize) 2155If you change this variable directly (without using customize)
@@ -2148,160 +2157,159 @@ after starting `calendar', you should call `redraw-calendar' to
2148update the calendar display to reflect the change, otherwise 2157update the calendar display to reflect the change, otherwise
2149movement commands will not work correctly." 2158movement commands will not work correctly."
2150 :type 'integer 2159 :type 'integer
2160 ;; Change the initialize so that if you reload calendar.el, it will not
2161 ;; cause a redraw (which may fail, e.g. with "invalid byte-code in
2162 ;; calendar.elc" because of the "byte-compile-dynamic").
2163 :initialize 'custom-initialize-default
2151 :set (lambda (sym val) 2164 :set (lambda (sym val)
2152 (set sym val) 2165 (set sym val)
2153 (redraw-calendar)) 2166 (redraw-calendar))
2154 :group 'calendar) 2167 :group 'calendar)
2155 2168
2156(defcustom calendar-debug-sexp nil 2169(defcustom calendar-debug-sexp nil
2157 "*Turn debugging on when evaluating a sexp in the diary or holiday list." 2170 "Turn debugging on when evaluating a sexp in the diary or holiday list."
2158 :type 'boolean 2171 :type 'boolean
2159 :group 'calendar) 2172 :group 'calendar)
2160 2173
2161(defvar calendar-mode-map nil) 2174(defvar calendar-mode-map nil)
2162(if calendar-mode-map 2175(if calendar-mode-map
2163 nil 2176 nil
2164 (setq calendar-mode-map (make-sparse-keymap)) 2177 (let ((map (make-keymap)))
2165 (require 'cal-menu) 2178 (suppress-keymap map)
2166 (calendar-for-loop i from 0 to 9 do 2179 (dolist (c '(narrow-to-region mark-word mark-sexp mark-paragraph
2167 (define-key calendar-mode-map (int-to-string i) 'digit-argument)) 2180 mark-defun mark-whole-buffer mark-page
2168 (let ((l (list 'narrow-to-region 'mark-word 'mark-sexp 'mark-paragraph 2181 downcase-region upcase-region kill-region
2169 'mark-defun 'mark-whole-buffer 'mark-page 2182 copy-region-as-kill capitalize-region write-region))
2170 'downcase-region 'upcase-region 'kill-region 2183 (define-key map (vector 'remap c) 'calendar-not-implemented))
2171 'copy-region-as-kill 'capitalize-region 'write-region))) 2184 (define-key map ">" 'scroll-calendar-right)
2172 (while l 2185 (define-key map "\C-x>" 'scroll-calendar-right)
2173 (substitute-key-definition (car l) 'calendar-not-implemented 2186 (define-key map [prior] 'scroll-calendar-right-three-months)
2174 calendar-mode-map global-map) 2187 (define-key map "\ev" 'scroll-calendar-right-three-months)
2175 (setq l (cdr l)))) 2188 (define-key map "<" 'scroll-calendar-left)
2176 (define-key calendar-mode-map "-" 'negative-argument) 2189 (define-key map "\C-x<" 'scroll-calendar-left)
2177 (define-key calendar-mode-map ">" 'scroll-calendar-right) 2190 (define-key map [next] 'scroll-calendar-left-three-months)
2178 (define-key calendar-mode-map "\C-x>" 'scroll-calendar-right) 2191 (define-key map "\C-v" 'scroll-calendar-left-three-months)
2179 (define-key calendar-mode-map [prior] 'scroll-calendar-right-three-months) 2192 (define-key map "\C-b" 'calendar-backward-day)
2180 (define-key calendar-mode-map "\ev" 'scroll-calendar-right-three-months) 2193 (define-key map "\C-p" 'calendar-backward-week)
2181 (define-key calendar-mode-map "<" 'scroll-calendar-left) 2194 (define-key map "\e{" 'calendar-backward-month)
2182 (define-key calendar-mode-map "\C-x<" 'scroll-calendar-left) 2195 (define-key map "\C-x[" 'calendar-backward-year)
2183 (define-key calendar-mode-map [next] 'scroll-calendar-left-three-months) 2196 (define-key map "\C-f" 'calendar-forward-day)
2184 (define-key calendar-mode-map "\C-v" 'scroll-calendar-left-three-months) 2197 (define-key map "\C-n" 'calendar-forward-week)
2185 (define-key calendar-mode-map "\C-b" 'calendar-backward-day) 2198 (define-key map [left] 'calendar-backward-day)
2186 (define-key calendar-mode-map "\C-p" 'calendar-backward-week) 2199 (define-key map [up] 'calendar-backward-week)
2187 (define-key calendar-mode-map "\e{" 'calendar-backward-month) 2200 (define-key map [right] 'calendar-forward-day)
2188 (define-key calendar-mode-map "\C-x[" 'calendar-backward-year) 2201 (define-key map [down] 'calendar-forward-week)
2189 (define-key calendar-mode-map "\C-f" 'calendar-forward-day) 2202 (define-key map "\e}" 'calendar-forward-month)
2190 (define-key calendar-mode-map "\C-n" 'calendar-forward-week) 2203 (define-key map "\C-x]" 'calendar-forward-year)
2191 (define-key calendar-mode-map [left] 'calendar-backward-day) 2204 (define-key map "\C-a" 'calendar-beginning-of-week)
2192 (define-key calendar-mode-map [up] 'calendar-backward-week) 2205 (define-key map "\C-e" 'calendar-end-of-week)
2193 (define-key calendar-mode-map [right] 'calendar-forward-day) 2206 (define-key map "\ea" 'calendar-beginning-of-month)
2194 (define-key calendar-mode-map [down] 'calendar-forward-week) 2207 (define-key map "\ee" 'calendar-end-of-month)
2195 (define-key calendar-mode-map "\e}" 'calendar-forward-month) 2208 (define-key map "\e<" 'calendar-beginning-of-year)
2196 (define-key calendar-mode-map "\C-x]" 'calendar-forward-year) 2209 (define-key map "\e>" 'calendar-end-of-year)
2197 (define-key calendar-mode-map "\C-a" 'calendar-beginning-of-week) 2210 (define-key map "\C-@" 'calendar-set-mark)
2198 (define-key calendar-mode-map "\C-e" 'calendar-end-of-week) 2211 ;; Many people are used to typing C-SPC and getting C-@.
2199 (define-key calendar-mode-map "\ea" 'calendar-beginning-of-month) 2212 (define-key map [?\C- ] 'calendar-set-mark)
2200 (define-key calendar-mode-map "\ee" 'calendar-end-of-month) 2213 (define-key map "\C-x\C-x" 'calendar-exchange-point-and-mark)
2201 (define-key calendar-mode-map "\e<" 'calendar-beginning-of-year) 2214 (define-key map "\e=" 'calendar-count-days-region)
2202 (define-key calendar-mode-map "\e>" 'calendar-end-of-year) 2215 (define-key map "gd" 'calendar-goto-date)
2203 (define-key calendar-mode-map "\C-@" 'calendar-set-mark) 2216 (define-key map "gD" 'calendar-goto-day-of-year)
2204 ;; Many people are used to typing C-SPC and getting C-@. 2217 (define-key map "gj" 'calendar-goto-julian-date)
2205 (define-key calendar-mode-map [?\C- ] 'calendar-set-mark) 2218 (define-key map "ga" 'calendar-goto-astro-day-number)
2206 (define-key calendar-mode-map "\C-x\C-x" 'calendar-exchange-point-and-mark) 2219 (define-key map "gh" 'calendar-goto-hebrew-date)
2207 (define-key calendar-mode-map "\e=" 'calendar-count-days-region) 2220 (define-key map "gi" 'calendar-goto-islamic-date)
2208 (define-key calendar-mode-map "gd" 'calendar-goto-date) 2221 (define-key map "gb" 'calendar-goto-bahai-date)
2209 (define-key calendar-mode-map "gD" 'calendar-goto-day-of-year) 2222 (define-key map "gC" 'calendar-goto-chinese-date)
2210 (define-key calendar-mode-map "gj" 'calendar-goto-julian-date) 2223 (define-key map "gk" 'calendar-goto-coptic-date)
2211 (define-key calendar-mode-map "ga" 'calendar-goto-astro-day-number) 2224 (define-key map "ge" 'calendar-goto-ethiopic-date)
2212 (define-key calendar-mode-map "gh" 'calendar-goto-hebrew-date) 2225 (define-key map "gp" 'calendar-goto-persian-date)
2213 (define-key calendar-mode-map "gi" 'calendar-goto-islamic-date) 2226 (define-key map "gc" 'calendar-goto-iso-date)
2214 (define-key calendar-mode-map "gb" 'calendar-goto-bahai-date) 2227 (define-key map "gw" 'calendar-goto-iso-week)
2215 (define-key calendar-mode-map "gC" 'calendar-goto-chinese-date) 2228 (define-key map "gf" 'calendar-goto-french-date)
2216 (define-key calendar-mode-map "gk" 'calendar-goto-coptic-date) 2229 (define-key map "gml" 'calendar-goto-mayan-long-count-date)
2217 (define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date) 2230 (define-key map "gmpc" 'calendar-previous-calendar-round-date)
2218 (define-key calendar-mode-map "gp" 'calendar-goto-persian-date) 2231 (define-key map "gmnc" 'calendar-next-calendar-round-date)
2219 (define-key calendar-mode-map "gc" 'calendar-goto-iso-date) 2232 (define-key map "gmph" 'calendar-previous-haab-date)
2220 (define-key calendar-mode-map "gw" 'calendar-goto-iso-week) 2233 (define-key map "gmnh" 'calendar-next-haab-date)
2221 (define-key calendar-mode-map "gf" 'calendar-goto-french-date) 2234 (define-key map "gmpt" 'calendar-previous-tzolkin-date)
2222 (define-key calendar-mode-map "gml" 'calendar-goto-mayan-long-count-date) 2235 (define-key map "gmnt" 'calendar-next-tzolkin-date)
2223 (define-key calendar-mode-map "gmpc" 'calendar-previous-calendar-round-date) 2236 (define-key map "Aa" 'appt-add)
2224 (define-key calendar-mode-map "gmnc" 'calendar-next-calendar-round-date) 2237 (define-key map "Ad" 'appt-delete)
2225 (define-key calendar-mode-map "gmph" 'calendar-previous-haab-date) 2238 (define-key map "S" 'calendar-sunrise-sunset)
2226 (define-key calendar-mode-map "gmnh" 'calendar-next-haab-date) 2239 (define-key map "M" 'calendar-phases-of-moon)
2227 (define-key calendar-mode-map "gmpt" 'calendar-previous-tzolkin-date) 2240 (define-key map " " 'scroll-other-window)
2228 (define-key calendar-mode-map "gmnt" 'calendar-next-tzolkin-date) 2241 (define-key map (kbd "DEL") 'scroll-other-window-down)
2229 (define-key calendar-mode-map "Aa" 'appt-add) 2242 (define-key map "\C-c\C-l" 'redraw-calendar)
2230 (define-key calendar-mode-map "Ad" 'appt-delete) 2243 (define-key map "." 'calendar-goto-today)
2231 (define-key calendar-mode-map "S" 'calendar-sunrise-sunset) 2244 (define-key map "o" 'calendar-other-month)
2232 (define-key calendar-mode-map "M" 'calendar-phases-of-moon) 2245 (define-key map "q" 'exit-calendar)
2233 (define-key calendar-mode-map " " 'scroll-other-window) 2246 (define-key map "a" 'list-calendar-holidays)
2234 (define-key calendar-mode-map (kbd "DEL") 'scroll-other-window-down) 2247 (define-key map "h" 'calendar-cursor-holidays)
2235 (define-key calendar-mode-map "\C-c\C-l" 'redraw-calendar) 2248 (define-key map "x" 'mark-calendar-holidays)
2236 (define-key calendar-mode-map "." 'calendar-goto-today) 2249 (define-key map "u" 'calendar-unmark)
2237 (define-key calendar-mode-map "o" 'calendar-other-month) 2250 (define-key map "m" 'mark-diary-entries)
2238 (define-key calendar-mode-map "q" 'exit-calendar) 2251 (define-key map "d" 'diary-view-entries)
2239 (define-key calendar-mode-map "a" 'list-calendar-holidays) 2252 (define-key map "D" 'view-other-diary-entries)
2240 (define-key calendar-mode-map "h" 'calendar-cursor-holidays) 2253 (define-key map "s" 'show-all-diary-entries)
2241 (define-key calendar-mode-map "x" 'mark-calendar-holidays) 2254 (define-key map "pd" 'calendar-print-day-of-year)
2242 (define-key calendar-mode-map "u" 'calendar-unmark) 2255 (define-key map "pC" 'calendar-print-chinese-date)
2243 (define-key calendar-mode-map "m" 'mark-diary-entries) 2256 (define-key map "pk" 'calendar-print-coptic-date)
2244 (define-key calendar-mode-map "d" 'diary-view-entries) 2257 (define-key map "pe" 'calendar-print-ethiopic-date)
2245 (define-key calendar-mode-map "D" 'view-other-diary-entries) 2258 (define-key map "pp" 'calendar-print-persian-date)
2246 (define-key calendar-mode-map "s" 'show-all-diary-entries) 2259 (define-key map "pc" 'calendar-print-iso-date)
2247 (define-key calendar-mode-map "pd" 'calendar-print-day-of-year) 2260 (define-key map "pj" 'calendar-print-julian-date)
2248 (define-key calendar-mode-map "pC" 'calendar-print-chinese-date) 2261 (define-key map "pa" 'calendar-print-astro-day-number)
2249 (define-key calendar-mode-map "pk" 'calendar-print-coptic-date) 2262 (define-key map "ph" 'calendar-print-hebrew-date)
2250 (define-key calendar-mode-map "pe" 'calendar-print-ethiopic-date) 2263 (define-key map "pi" 'calendar-print-islamic-date)
2251 (define-key calendar-mode-map "pp" 'calendar-print-persian-date) 2264 (define-key map "pb" 'calendar-print-bahai-date)
2252 (define-key calendar-mode-map "pc" 'calendar-print-iso-date) 2265 (define-key map "pf" 'calendar-print-french-date)
2253 (define-key calendar-mode-map "pj" 'calendar-print-julian-date) 2266 (define-key map "pm" 'calendar-print-mayan-date)
2254 (define-key calendar-mode-map "pa" 'calendar-print-astro-day-number) 2267 (define-key map "po" 'calendar-print-other-dates)
2255 (define-key calendar-mode-map "ph" 'calendar-print-hebrew-date) 2268 (define-key map "id" 'insert-diary-entry)
2256 (define-key calendar-mode-map "pi" 'calendar-print-islamic-date) 2269 (define-key map "iw" 'insert-weekly-diary-entry)
2257 (define-key calendar-mode-map "pb" 'calendar-print-bahai-date) 2270 (define-key map "im" 'insert-monthly-diary-entry)
2258 (define-key calendar-mode-map "pf" 'calendar-print-french-date) 2271 (define-key map "iy" 'insert-yearly-diary-entry)
2259 (define-key calendar-mode-map "pm" 'calendar-print-mayan-date) 2272 (define-key map "ia" 'insert-anniversary-diary-entry)
2260 (define-key calendar-mode-map "po" 'calendar-print-other-dates) 2273 (define-key map "ib" 'insert-block-diary-entry)
2261 (define-key calendar-mode-map "id" 'insert-diary-entry) 2274 (define-key map "ic" 'insert-cyclic-diary-entry)
2262 (define-key calendar-mode-map "iw" 'insert-weekly-diary-entry) 2275 (define-key map "ihd" 'insert-hebrew-diary-entry)
2263 (define-key calendar-mode-map "im" 'insert-monthly-diary-entry) 2276 (define-key map "ihm" 'insert-monthly-hebrew-diary-entry)
2264 (define-key calendar-mode-map "iy" 'insert-yearly-diary-entry) 2277 (define-key map "ihy" 'insert-yearly-hebrew-diary-entry)
2265 (define-key calendar-mode-map "ia" 'insert-anniversary-diary-entry) 2278 (define-key map "iid" 'insert-islamic-diary-entry)
2266 (define-key calendar-mode-map "ib" 'insert-block-diary-entry) 2279 (define-key map "iim" 'insert-monthly-islamic-diary-entry)
2267 (define-key calendar-mode-map "ic" 'insert-cyclic-diary-entry) 2280 (define-key map "iiy" 'insert-yearly-islamic-diary-entry)
2268 (define-key calendar-mode-map "ihd" 'insert-hebrew-diary-entry) 2281 (define-key map "iBd" 'insert-bahai-diary-entry)
2269 (define-key calendar-mode-map "ihm" 'insert-monthly-hebrew-diary-entry) 2282 (define-key map "iBm" 'insert-monthly-bahai-diary-entry)
2270 (define-key calendar-mode-map "ihy" 'insert-yearly-hebrew-diary-entry) 2283 (define-key map "iBy" 'insert-yearly-bahai-diary-entry)
2271 (define-key calendar-mode-map "iid" 'insert-islamic-diary-entry) 2284 (define-key map "?" 'calendar-goto-info-node)
2272 (define-key calendar-mode-map "iim" 'insert-monthly-islamic-diary-entry) 2285 (define-key map "tm" 'cal-tex-cursor-month)
2273 (define-key calendar-mode-map "iiy" 'insert-yearly-islamic-diary-entry) 2286 (define-key map "tM" 'cal-tex-cursor-month-landscape)
2274 (define-key calendar-mode-map "iBd" 'insert-bahai-diary-entry) 2287 (define-key map "td" 'cal-tex-cursor-day)
2275 (define-key calendar-mode-map "iBm" 'insert-monthly-bahai-diary-entry) 2288 (define-key map "tw1" 'cal-tex-cursor-week)
2276 (define-key calendar-mode-map "iBy" 'insert-yearly-bahai-diary-entry) 2289 (define-key map "tw2" 'cal-tex-cursor-week2)
2277 (define-key calendar-mode-map "?" 'calendar-goto-info-node) 2290 (define-key map "tw3" 'cal-tex-cursor-week-iso)
2278 (define-key calendar-mode-map "tm" 'cal-tex-cursor-month) 2291 (define-key map "tw4" 'cal-tex-cursor-week-monday)
2279 (define-key calendar-mode-map "tM" 'cal-tex-cursor-month-landscape) 2292 (define-key map "tfd" 'cal-tex-cursor-filofax-daily)
2280 (define-key calendar-mode-map "td" 'cal-tex-cursor-day) 2293 (define-key map "tfw" 'cal-tex-cursor-filofax-2week)
2281 (define-key calendar-mode-map "tw1" 'cal-tex-cursor-week) 2294 (define-key map "tfW" 'cal-tex-cursor-filofax-week)
2282 (define-key calendar-mode-map "tw2" 'cal-tex-cursor-week2) 2295 (define-key map "tfy" 'cal-tex-cursor-filofax-year)
2283 (define-key calendar-mode-map "tw3" 'cal-tex-cursor-week-iso) 2296 (define-key map "ty" 'cal-tex-cursor-year)
2284 (define-key calendar-mode-map "tw4" 'cal-tex-cursor-week-monday) 2297 (define-key map "tY" 'cal-tex-cursor-year-landscape)
2285 (define-key calendar-mode-map "tfd" 'cal-tex-cursor-filofax-daily) 2298 (setq calendar-mode-map map)
2286 (define-key calendar-mode-map "tfw" 'cal-tex-cursor-filofax-2week) 2299 ;; Require cal-menu after initializing calendar-mode-map because it uses it.
2287 (define-key calendar-mode-map "tfW" 'cal-tex-cursor-filofax-week) 2300 (require 'cal-menu)))
2288 (define-key calendar-mode-map "tfy" 'cal-tex-cursor-filofax-year)
2289 (define-key calendar-mode-map "ty" 'cal-tex-cursor-year)
2290 (define-key calendar-mode-map "tY" 'cal-tex-cursor-year-landscape))
2291 2301
2292(defun describe-calendar-mode () 2302(defun describe-calendar-mode ()
2293 "Create a help buffer with a brief description of the `calendar-mode'." 2303 "Create a help buffer with a brief description of the `calendar-mode'."
2294 (interactive) 2304 (interactive)
2295 (with-output-to-temp-buffer "*Help*" 2305 (help-setup-xref (list #'describe-calendar-mode) (interactive-p))
2306 (with-output-to-temp-buffer (help-buffer)
2296 (princ 2307 (princ
2297 (format 2308 (format
2298 "Calendar Mode:\nFor a complete description, type %s\n%s\n" 2309 "Calendar Mode:\nFor a complete description, type %s\n%s\n"
2299 (substitute-command-keys 2310 (substitute-command-keys
2300 "\\<calendar-mode-map>\\[describe-mode] from within the calendar") 2311 "\\<calendar-mode-map>\\[describe-mode] from within the calendar")
2301 (substitute-command-keys "\\{calendar-mode-map}"))) 2312 (substitute-command-keys "\\{calendar-mode-map}")))
2302 (save-excursion
2303 (set-buffer standard-output)
2304 (help-mode))
2305 (print-help-return-message))) 2313 (print-help-return-message)))
2306 2314
2307;; Calendar mode is suitable only for specially formatted data. 2315;; Calendar mode is suitable only for specially formatted data.
@@ -2451,12 +2459,11 @@ the STRINGS are just concatenated and the result truncated."
2451 (s (car strings)) 2459 (s (car strings))
2452 (strings (cdr strings)) 2460 (strings (cdr strings))
2453 (i 0)) 2461 (i 0))
2454 (while strings 2462 (dolist (string strings)
2455 (setq s (concat s 2463 (setq s (concat s
2456 (make-string (max 0 (/ (+ n i) m)) char) 2464 (make-string (max 0 (/ (+ n i) m)) char)
2457 (car strings))) 2465 string))
2458 (setq i (1+ i)) 2466 (setq i (1+ i)))
2459 (setq strings (cdr strings)))
2460 (substring s 0 length))) 2467 (substring s 0 length)))
2461 2468
2462(defun update-calendar-mode-line () 2469(defun update-calendar-mode-line ()
@@ -2478,7 +2485,7 @@ the STRINGS are just concatenated and the result truncated."
2478 list) 2485 list)
2479 (walk-windows (lambda (w) 2486 (walk-windows (lambda (w)
2480 (if (memq (window-buffer w) calendar-buffers) 2487 (if (memq (window-buffer w) calendar-buffers)
2481 (setq list (cons w list)))) 2488 (push w list)))
2482 nil t) 2489 nil t)
2483 list)) 2490 list))
2484 2491
@@ -2488,15 +2495,12 @@ the STRINGS are just concatenated and the result truncated."
2488 (buffers (list "*Yahrzeits*" lunar-phases-buffer holiday-buffer 2495 (buffers (list "*Yahrzeits*" lunar-phases-buffer holiday-buffer
2489 fancy-diary-buffer diary-buffer calendar-buffer 2496 fancy-diary-buffer diary-buffer calendar-buffer
2490 other-calendars-buffer)) 2497 other-calendars-buffer))
2491 (buffer-list nil) 2498 (buffer-list nil))
2492 b) 2499 (dolist (b buffers)
2493 (while buffers
2494 (setq b (car buffers))
2495 (setq b (cond ((stringp b) (get-buffer b)) 2500 (setq b (cond ((stringp b) (get-buffer b))
2496 ((bufferp b) b) 2501 ((bufferp b) b)
2497 (t nil))) 2502 (t nil)))
2498 (if b (setq buffer-list (cons b buffer-list))) 2503 (if b (push b buffer-list)))
2499 (setq buffers (cdr buffers)))
2500 buffer-list)) 2504 buffer-list))
2501 2505
2502(defun exit-calendar () 2506(defun exit-calendar ()
@@ -2642,7 +2646,7 @@ With argument, jump to mark, pop it, and put point at end of ring."
2642 (let ((date (calendar-cursor-to-date t))) 2646 (let ((date (calendar-cursor-to-date t)))
2643 (if (null arg) 2647 (if (null arg)
2644 (progn 2648 (progn
2645 (setq calendar-mark-ring (cons date calendar-mark-ring)) 2649 (push date calendar-mark-ring)
2646 ;; Since the top of the mark ring is the marked date in the 2650 ;; Since the top of the mark ring is the marked date in the
2647 ;; calendar, the mark ring in the calendar is one longer than 2651 ;; calendar, the mark ring in the calendar is one longer than
2648 ;; in other buffers to get the same effect. 2652 ;; in other buffers to get the same effect.
@@ -2949,16 +2953,18 @@ MARK defaults to `diary-entry-marker'."
2949 "Replace the date under the cursor in the calendar window with asterisks. 2953 "Replace the date under the cursor in the calendar window with asterisks.
2950This function can be used with the `today-visible-calendar-hook' run after the 2954This function can be used with the `today-visible-calendar-hook' run after the
2951calendar window has been prepared." 2955calendar window has been prepared."
2952 (let ((inhibit-read-only t)) 2956 (let ((inhibit-read-only t)
2953 (make-local-variable 'calendar-starred-day) 2957 (modified (buffer-modified-p)))
2954 (forward-char 1) 2958 (forward-char 1)
2955 (setq calendar-starred-day 2959 (set (make-local-variable 'calendar-starred-day)
2956 (string-to-number 2960 (string-to-number
2957 (buffer-substring (point) (- (point) 2)))) 2961 (buffer-substring (point) (- (point) 2))))
2958 (delete-char -2) 2962 ;; Insert before deleting, to better preserve markers.
2959 (insert "**") 2963 (insert "**")
2960 (backward-char 1) 2964 (forward-char -2)
2961 (set-buffer-modified-p nil))) 2965 (delete-char -2)
2966 (forward-char 1)
2967 (restore-buffer-modified-p modified)))
2962 2968
2963(defun calendar-mark-today () 2969(defun calendar-mark-today ()
2964 "Mark the date under the cursor in the calendar window. 2970 "Mark the date under the cursor in the calendar window.
@@ -3048,48 +3054,48 @@ Defaults to today's date if DATE is not given."
3048 (interactive) 3054 (interactive)
3049 (let* ((date (calendar-cursor-to-date t))) 3055 (let* ((date (calendar-cursor-to-date t)))
3050 (with-current-buffer (get-buffer-create other-calendars-buffer) 3056 (with-current-buffer (get-buffer-create other-calendars-buffer)
3051 (setq buffer-read-only nil) 3057 (let ((inhibit-read-only t)
3052 (calendar-set-mode-line 3058 (modified (buffer-modified-p)))
3053 (concat (calendar-date-string date) " (Gregorian)")) 3059 (calendar-set-mode-line
3054 (erase-buffer) 3060 (concat (calendar-date-string date) " (Gregorian)"))
3055 (insert 3061 (erase-buffer)
3056 (mapconcat 'identity 3062 (apply
3057 (list (calendar-day-of-year-string date) 3063 'insert
3058 (format "ISO date: %s" (calendar-iso-date-string date)) 3064 (delq nil
3059 (format "Julian date: %s" 3065 (list
3060 (calendar-julian-date-string date)) 3066 (calendar-day-of-year-string date) "\n"
3061 (format 3067 (format "ISO date: %s\n" (calendar-iso-date-string date))
3062 "Astronomical (Julian) day number (at noon UTC): %s.0" 3068 (format "Julian date: %s\n"
3063 (calendar-astro-date-string date)) 3069 (calendar-julian-date-string date))
3064 (format "Fixed (RD) date: %s" 3070 (format "Astronomical (Julian) day number (at noon UTC): %s.0\n"
3065 (calendar-absolute-from-gregorian date)) 3071 (calendar-astro-date-string date))
3066 (format "Hebrew date (before sunset): %s" 3072 (format "Fixed (RD) date: %s\n"
3067 (calendar-hebrew-date-string date)) 3073 (calendar-absolute-from-gregorian date))
3068 (format "Persian date: %s" 3074 (format "Hebrew date (before sunset): %s\n"
3069 (calendar-persian-date-string date)) 3075 (calendar-hebrew-date-string date))
3070 (let ((i (calendar-islamic-date-string date))) 3076 (format "Persian date: %s\n"
3071 (if (not (string-equal i "")) 3077 (calendar-persian-date-string date))
3072 (format "Islamic date (before sunset): %s" i))) 3078 (let ((i (calendar-islamic-date-string date)))
3073 (let ((b (calendar-bahai-date-string date))) 3079 (if (not (string-equal i ""))
3074 (if (not (string-equal b "")) 3080 (format "Islamic date (before sunset): %s\n" i)))
3075 (format "Baha'i date (before sunset): %s" b))) 3081 (let ((b (calendar-bahai-date-string date)))
3076 (format "Chinese date: %s" 3082 (if (not (string-equal b ""))
3077 (calendar-chinese-date-string date)) 3083 (format "Baha'i date (before sunset): %s\n" b)))
3078 (let ((c (calendar-coptic-date-string date))) 3084 (format "Chinese date: %s\n"
3079 (if (not (string-equal c "")) 3085 (calendar-chinese-date-string date))
3080 (format "Coptic date: %s" c))) 3086 (let ((c (calendar-coptic-date-string date)))
3081 (let ((e (calendar-ethiopic-date-string date))) 3087 (if (not (string-equal c ""))
3082 (if (not (string-equal e "")) 3088 (format "Coptic date: %s\n" c)))
3083 (format "Ethiopic date: %s" e))) 3089 (let ((e (calendar-ethiopic-date-string date)))
3084 (let ((f (calendar-french-date-string date))) 3090 (if (not (string-equal e ""))
3085 (if (not (string-equal f "")) 3091 (format "Ethiopic date: %s\n" e)))
3086 (format "French Revolutionary date: %s" f))) 3092 (let ((f (calendar-french-date-string date)))
3087 (format "Mayan date: %s" 3093 (if (not (string-equal f ""))
3088 (calendar-mayan-date-string date))) 3094 (format "French Revolutionary date: %s\n" f)))
3089 "\n")) 3095 (format "Mayan date: %s\n"
3090 (goto-char (point-min)) 3096 (calendar-mayan-date-string date)))))
3091 (set-buffer-modified-p nil) 3097 (goto-char (point-min))
3092 (setq buffer-read-only t) 3098 (restore-buffer-modified-p modified))
3093 (display-buffer other-calendars-buffer)))) 3099 (display-buffer other-calendars-buffer))))
3094 3100
3095(defun calendar-print-day-of-year () 3101(defun calendar-print-day-of-year ()
@@ -3099,11 +3105,15 @@ Defaults to today's date if DATE is not given."
3099 3105
3100(defun calendar-set-mode-line (str) 3106(defun calendar-set-mode-line (str)
3101 "Set mode line to STR, centered, surrounded by dashes." 3107 "Set mode line to STR, centered, surrounded by dashes."
3102 (setq mode-line-format 3108 (let* ((edges (window-edges))
3103 (calendar-string-spread
3104 (list str) ?-
3105 ;; As per doc of window-width, total visible mode-line length. 3109 ;; As per doc of window-width, total visible mode-line length.
3106 (let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges)))))) 3110 (width (- (nth 2 edges) (nth 0 edges))))
3111 (setq mode-line-format
3112 (if buffer-file-name
3113 `("-" mode-line-modified
3114 ,(calendar-string-spread (list str) ?- (- width 6))
3115 "---")
3116 (calendar-string-spread (list str) ?- width)))))
3107 3117
3108(defun calendar-mod (m n) 3118(defun calendar-mod (m n)
3109 "Non-negative remainder of M/N with N instead of 0." 3119 "Non-negative remainder of M/N with N instead of 0."
diff --git a/lisp/completion.el b/lisp/completion.el
index 28bf1dd10b9..e231906ad27 100644
--- a/lisp/completion.el
+++ b/lisp/completion.el
@@ -82,11 +82,11 @@
82;; SAVING/LOADING COMPLETIONS 82;; SAVING/LOADING COMPLETIONS
83;; Completions are automatically saved from one session to another 83;; Completions are automatically saved from one session to another
84;; (unless save-completions-flag or enable-completion is nil). 84;; (unless save-completions-flag or enable-completion is nil).
85;; Activating this minor-mode calling completion-initialize) causes Emacs 85;; Activating this minor-mode (calling completion-initialize) loads
86;; to load a completions database for a saved completions file 86;; a completions database for a saved completions file
87;; (default: ~/.completions). When you exit, Emacs saves a copy of the 87;; (default: ~/.completions). When you exit, Emacs saves a copy of the
88;; completions that you 88;; completions that you often use. When you next start, Emacs loads in
89;; often use. When you next start, Emacs loads in the saved completion file. 89;; the saved completion file.
90;; 90;;
91;; The number of completions saved depends loosely on 91;; The number of completions saved depends loosely on
92;; *saved-completions-decay-factor*. Completions that have never been 92;; *saved-completions-decay-factor*. Completions that have never been
@@ -2250,13 +2250,14 @@ Patched to remove the most recent completion."
2250TYPE is the type of the wrapper to be added. Can be :before or :under." 2250TYPE is the type of the wrapper to be added. Can be :before or :under."
2251 (put function-name 'completion-function 2251 (put function-name 'completion-function
2252 (cdr (assq type 2252 (cdr (assq type
2253 '((:separator 'use-completion-before-separator) 2253 '((:separator . use-completion-before-separator)
2254 (:before 'use-completion-before-point) 2254 (:before . use-completion-before-point)
2255 (:backward-under 'use-completion-backward-under) 2255 (:backward-under . use-completion-backward-under)
2256 (:backward 'use-completion-backward) 2256 (:backward . use-completion-backward)
2257 (:under 'use-completion-under-point) 2257 (:under . use-completion-under-point)
2258 (:under-or-before 'use-completion-under-or-before-point) 2258 (:under-or-before . use-completion-under-or-before-point)
2259 (:minibuffer-separator 'use-completion-minibuffer-separator)))))) 2259 (:minibuffer-separator
2260 . use-completion-minibuffer-separator))))))
2260 2261
2261(defun use-completion-minibuffer-separator () 2262(defun use-completion-minibuffer-separator ()
2262 (let ((completion-syntax-table completion-standard-syntax-table)) 2263 (let ((completion-syntax-table completion-standard-syntax-table))
@@ -2354,7 +2355,7 @@ TYPE is the type of the wrapper to be added. Can be :before or :under."
2354 (if dynamic-completion-mode 2355 (if dynamic-completion-mode
2355 (add-hook (car x) (cdr x)) 2356 (add-hook (car x) (cdr x))
2356 (remove-hook (car x) (cdr x)))) 2357 (remove-hook (car x) (cdr x))))
2357 2358
2358 ;; "Complete" Key Keybindings. We don't want to use a minor-mode 2359 ;; "Complete" Key Keybindings. We don't want to use a minor-mode
2359 ;; map because these have too high a priority. We could/should 2360 ;; map because these have too high a priority. We could/should
2360 ;; probably change the interpretation of minor-mode-map-alist such 2361 ;; probably change the interpretation of minor-mode-map-alist such
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index a5f9e301946..87dc594b0fe 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1470,22 +1470,19 @@ See "
1470 (if custom-raised-buttons 1470 (if custom-raised-buttons
1471 "`Raised' text indicates" 1471 "`Raised' text indicates"
1472 "Square brackets indicate"))) 1472 "Square brackets indicate")))
1473 (widget-create 'info-link 1473 (widget-create 'custom-manual
1474 :tag "Custom file" 1474 :tag "Custom file"
1475 :button-face 'custom-link
1476 :mouse-face 'highlight
1477 "(emacs)Saving Customizations") 1475 "(emacs)Saving Customizations")
1478 (widget-insert 1476 (widget-insert
1479 " for information on how to save in a different file.\n 1477 " for information on how to save in a different file.\n
1480See ") 1478See ")
1481 (widget-create 'info-link 1479 (widget-create 'custom-manual
1482 :tag "Help" 1480 :tag "Help"
1483 :button-face 'custom-link
1484 :mouse-face 'highlight
1485 :help-echo "Read the online help." 1481 :help-echo "Read the online help."
1486 "(emacs)Easy Customization") 1482 "(emacs)Easy Customization")
1487 (widget-insert " for more information.\n\n") 1483 (widget-insert " for more information.\n\n")
1488 (widget-insert "Operate on everything in this buffer:\n ")) 1484 (widget-insert "Operate on all settings in this buffer that \
1485are not marked HIDDEN:\n "))
1489 (widget-insert " ")) 1486 (widget-insert " "))
1490 (widget-create 'push-button 1487 (widget-create 'push-button
1491 :tag "Set for Current Session" 1488 :tag "Set for Current Session"
@@ -1496,10 +1493,8 @@ Make your editing in this buffer take effect for this session."
1496 (if (not custom-buffer-verbose-help) 1493 (if (not custom-buffer-verbose-help)
1497 (progn 1494 (progn
1498 (widget-insert " ") 1495 (widget-insert " ")
1499 (widget-create 'info-link 1496 (widget-create 'custom-manual
1500 :tag "Help" 1497 :tag "Help"
1501 :button-face 'custom-link
1502 :mouse-face 'highlight
1503 :help-echo "Read the online help." 1498 :help-echo "Read the online help."
1504 "(emacs)Easy Customization"))) 1499 "(emacs)Easy Customization")))
1505 (when (or custom-file user-init-file) 1500 (when (or custom-file user-init-file)
@@ -1647,7 +1642,7 @@ item in another window.\n\n"))
1647 (let ((custom-buffer-style 'tree)) 1642 (let ((custom-buffer-style 'tree))
1648 (custom-toggle-parent widget))) 1643 (custom-toggle-parent widget)))
1649 1644
1650(define-widget 'custom-browse-group-tag 'push-button 1645(define-widget 'custom-browse-group-tag 'custom-group-link
1651 "Show parent in other window when activated." 1646 "Show parent in other window when activated."
1652 :tag "Group" 1647 :tag "Group"
1653 :tag-glyph "folder" 1648 :tag-glyph "folder"
@@ -1657,7 +1652,7 @@ item in another window.\n\n"))
1657 (let ((parent (widget-get widget :parent))) 1652 (let ((parent (widget-get widget :parent)))
1658 (customize-group-other-window (widget-value parent)))) 1653 (customize-group-other-window (widget-value parent))))
1659 1654
1660(define-widget 'custom-browse-variable-tag 'push-button 1655(define-widget 'custom-browse-variable-tag 'custom-group-link
1661 "Show parent in other window when activated." 1656 "Show parent in other window when activated."
1662 :tag "Option" 1657 :tag "Option"
1663 :tag-glyph "option" 1658 :tag-glyph "option"
@@ -1667,7 +1662,7 @@ item in another window.\n\n"))
1667 (let ((parent (widget-get widget :parent))) 1662 (let ((parent (widget-get widget :parent)))
1668 (customize-variable-other-window (widget-value parent)))) 1663 (customize-variable-other-window (widget-value parent))))
1669 1664
1670(define-widget 'custom-browse-face-tag 'push-button 1665(define-widget 'custom-browse-face-tag 'custom-group-link
1671 "Show parent in other window when activated." 1666 "Show parent in other window when activated."
1672 :tag "Face" 1667 :tag "Face"
1673 :tag-glyph "face" 1668 :tag-glyph "face"
@@ -2009,13 +2004,7 @@ and `face'."
2009 :group 'custom-faces) 2004 :group 'custom-faces)
2010 2005
2011(defface custom-button-unraised 2006(defface custom-button-unraised
2012 '((((min-colors 88) 2007 '((t :inherit underline))
2013 (class color) (background light)) :foreground "blue1" :underline t)
2014 (((class color) (background light)) :foreground "blue" :underline t)
2015 (((min-colors 88)
2016 (class color) (background dark)) :foreground "cyan1" :underline t)
2017 (((class color) (background dark)) :foreground "cyan" :underline t)
2018 (t :underline t))
2019 "Face for custom buffer buttons if `custom-raised-buttons' is nil." 2008 "Face for custom buffer buttons if `custom-raised-buttons' is nil."
2020 :version "22.1" 2009 :version "22.1"
2021 :group 'custom-faces) 2010 :group 'custom-faces)
@@ -2070,15 +2059,10 @@ and `face'."
2070(put 'custom-state-face 'face-alias 'custom-state) 2059(put 'custom-state-face 'face-alias 'custom-state)
2071 2060
2072(defface custom-link 2061(defface custom-link
2073 '((((min-colors 88) 2062 '((t :inherit link))
2074 (class color) (background light)) :foreground "blue1" :underline t) 2063 "Face for links in customization buffers."
2075 (((class color) (background light)) :foreground "blue" :underline t) 2064 :version "22.1"
2076 (((min-colors 88) 2065 :group 'custom-faces)
2077 (class color) (background dark)) :foreground "cyan1" :underline t)
2078 (((class color) (background dark)) :foreground "cyan" :underline t)
2079 (t :underline t))
2080 "Face for Info links in customization buffers."
2081 :group 'info)
2082 2066
2083(define-widget 'custom 'default 2067(define-widget 'custom 'default
2084 "Customize a user option." 2068 "Customize a user option."
@@ -2245,8 +2229,6 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
2245 (insert " ") 2229 (insert " ")
2246 (push (widget-create-child-and-convert 2230 (push (widget-create-child-and-convert
2247 widget 'custom-group-link 2231 widget 'custom-group-link
2248 :button-face 'custom-link
2249 :mouse-face 'highlight
2250 :tag (custom-unlispify-tag-name symbol) 2232 :tag (custom-unlispify-tag-name symbol)
2251 symbol) 2233 symbol)
2252 buttons) 2234 buttons)
@@ -3323,7 +3305,7 @@ SPEC must be a full face spec."
3323(defvar custom-face-menu 3305(defvar custom-face-menu
3324 `(("Set for Current Session" custom-face-set) 3306 `(("Set for Current Session" custom-face-set)
3325 ,@(when (or custom-file user-init-file) 3307 ,@(when (or custom-file user-init-file)
3326 '(("Save for Future Sessions" custom-face-save-command))) 3308 '(("Save for Future Sessions" custom-face-save)))
3327 ("Undo Edits" custom-redraw 3309 ("Undo Edits" custom-redraw
3328 (lambda (widget) 3310 (lambda (widget)
3329 (memq (widget-get widget :custom-state) '(modified changed)))) 3311 (memq (widget-get widget :custom-state) '(modified changed))))
@@ -3448,13 +3430,8 @@ Optional EVENT is the location for the menu."
3448 (custom-face-state-set widget) 3430 (custom-face-state-set widget)
3449 (custom-redraw-magic widget))) 3431 (custom-redraw-magic widget)))
3450 3432
3451(defun custom-face-save-command (widget)
3452 "Save in `.emacs' the face attributes in WIDGET."
3453 (custom-face-save widget)
3454 (custom-save-all))
3455
3456(defun custom-face-save (widget) 3433(defun custom-face-save (widget)
3457 "Prepare for saving WIDGET's face attributes, but don't write `.emacs'." 3434 "Save in `.emacs' the face attributes in WIDGET."
3458 (let* ((symbol (widget-value widget)) 3435 (let* ((symbol (widget-value widget))
3459 (child (car (widget-get widget :children))) 3436 (child (car (widget-get widget :children)))
3460 (value (custom-post-filter-face-spec (widget-value child))) 3437 (value (custom-post-filter-face-spec (widget-value child)))
@@ -3480,6 +3457,10 @@ Optional EVENT is the location for the menu."
3480 (custom-face-state-set widget) 3457 (custom-face-state-set widget)
3481 (custom-redraw-magic widget))) 3458 (custom-redraw-magic widget)))
3482 3459
3460;; For backward compatibility.
3461(define-obsolete-function-alias 'custom-face-save-command 'custom-face-save
3462 "22.1")
3463
3483(defun custom-face-reset-saved (widget) 3464(defun custom-face-reset-saved (widget)
3484 "Restore WIDGET to the face's default attributes." 3465 "Restore WIDGET to the face's default attributes."
3485 (let* ((symbol (widget-value widget)) 3466 (let* ((symbol (widget-value widget))
@@ -3607,6 +3588,8 @@ restoring it to the state of a face that has never been customized."
3607 3588
3608(define-widget 'custom-group-link 'link 3589(define-widget 'custom-group-link 'link
3609 "Show parent in other window when activated." 3590 "Show parent in other window when activated."
3591 :button-face 'custom-link
3592 :mouse-face 'highlight
3610 :help-echo "Create customization buffer for this group." 3593 :help-echo "Create customization buffer for this group."
3611 :action 'custom-group-link-action) 3594 :action 'custom-group-link-action)
3612 3595
@@ -3805,8 +3788,6 @@ If GROUPS-ONLY non-nil, return only those members that are groups."
3805 (if (eq custom-buffer-style 'links) 3788 (if (eq custom-buffer-style 'links)
3806 (push (widget-create-child-and-convert 3789 (push (widget-create-child-and-convert
3807 widget 'custom-group-link 3790 widget 'custom-group-link
3808 :button-face 'custom-link
3809 :mouse-face 'highlight
3810 :tag "Go to Group" 3791 :tag "Go to Group"
3811 symbol) 3792 symbol)
3812 buttons) 3793 buttons)
@@ -4400,6 +4381,15 @@ The format is suitable for use with `easy-menu-define'."
4400 ["Erase Customization" Custom-reset-standard t] 4381 ["Erase Customization" Custom-reset-standard t]
4401 ["Info" (info "(emacs)Easy Customization") t])) 4382 ["Info" (info "(emacs)Easy Customization") t]))
4402 4383
4384(defvar custom-field-keymap
4385 (let ((map (copy-keymap widget-field-keymap)))
4386 (define-key map "\C-c\C-c" 'Custom-set)
4387 (define-key map "\C-x\C-s" 'Custom-save)
4388 map)
4389 "Keymap used inside editable fields in customization buffers.")
4390
4391(widget-put (get 'editable-field 'widget-type) :keymap custom-field-keymap)
4392
4403(defun Custom-goto-parent () 4393(defun Custom-goto-parent ()
4404 "Go to the parent group listed at the top of this buffer. 4394 "Go to the parent group listed at the top of this buffer.
4405If several parents are listed, go to the first of them." 4395If several parents are listed, go to the first of them."
@@ -4425,17 +4415,18 @@ If several parents are listed, go to the first of them."
4425 4415
4426The following commands are available: 4416The following commands are available:
4427 4417
4428Move to next button or editable field. \\[widget-forward] 4418\\<widget-keymap>\
4429Move to previous button or editable field. \\[widget-backward] 4419Move to next button, link or editable field. \\[widget-forward]
4430\\<widget-field-keymap>\ 4420Move to previous button, link or editable field. \\[widget-backward]
4421\\<custom-field-keymap>\
4431Complete content of editable text field. \\[widget-complete] 4422Complete content of editable text field. \\[widget-complete]
4432\\<custom-mode-map>\ 4423\\<custom-mode-map>\
4433Invoke button under the mouse pointer. \\[Custom-move-and-invoke] 4424Invoke button under the mouse pointer. \\[widget-move-and-invoke]
4434Invoke button under point. \\[widget-button-press] 4425Invoke button under point. \\[widget-button-press]
4435Set all options from current text. \\[Custom-set] 4426Set all options from current text. \\[Custom-set]
4436Make values in current text permanent. \\[Custom-save] 4427Make values in current text permanent. \\[Custom-save]
4437Make text match actual option values. \\[Custom-reset-current] 4428Make text match actual option values. \\[Custom-reset-current]
4438Reset options to permanent settings. \\[Custom-reset-saved] 4429Reset options to permanent settings. \\[Custom-reset-saved]
4439Erase customizations; set options 4430Erase customizations; set options
4440 and buffer text to the standard values. \\[Custom-reset-standard] 4431 and buffer text to the standard values. \\[Custom-reset-standard]
4441 4432
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 689c541140e..98e31081abf 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -966,7 +966,7 @@ directory DIRNAME."
966(defun desktop-load-file (function) 966(defun desktop-load-file (function)
967 "Load the file where auto loaded FUNCTION is defined." 967 "Load the file where auto loaded FUNCTION is defined."
968 (when function 968 (when function
969 (let ((fcell (symbol-function function))) 969 (let ((fcell (and (fboundp function) (symbol-function function))))
970 (when (and (listp fcell) 970 (when (and (listp fcell)
971 (eq 'autoload (car fcell))) 971 (eq 'autoload (car fcell)))
972 (load (cadr fcell)))))) 972 (load (cadr fcell))))))
diff --git a/lisp/dired.el b/lisp/dired.el
index 3cc83b29fdd..fe8f6996b28 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -286,6 +286,9 @@ In simple cases, this list contains one element.")
286This is an alist of the form (SUBDIR . SWITCHES).") 286This is an alist of the form (SUBDIR . SWITCHES).")
287(make-variable-buffer-local 'dired-switches-alist) 287(make-variable-buffer-local 'dired-switches-alist)
288 288
289(defvaralias 'dired-move-to-filename-regexp
290 'directory-listing-before-filename-regexp)
291
289(defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]" 292(defvar dired-subdir-regexp "^. \\([^\n\r]+\\)\\(:\\)[\n\r]"
290 "Regexp matching a maybe hidden subdirectory line in `ls -lR' output. 293 "Regexp matching a maybe hidden subdirectory line in `ls -lR' output.
291Subexpression 1 is the subdirectory proper, no trailing colon. 294Subexpression 1 is the subdirectory proper, no trailing colon.
@@ -2514,11 +2517,18 @@ if there are no flagged files."
2514 (set-window-start w2 1) 2517 (set-window-start w2 1)
2515 ))) 2518 )))
2516 2519
2517(defvar dired-no-confirm nil 2520(defcustom dired-no-confirm nil
2518 "A list of symbols for commands Dired should not confirm. 2521 "A list of symbols for commands Dired should not confirm.
2519Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress', 2522Command symbols are `byte-compile', `chgrp', `chmod', `chown', `compress',
2520`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink', 2523`copy', `delete', `hardlink', `load', `move', `print', `shell', `symlink',
2521`touch' and `uncompress'.") 2524`touch' and `uncompress'."
2525 :group 'dired
2526 :type '(set (const byte-compile) (const chgrp)
2527 (const chmod) (const chown) (const compress)
2528 (const copy) (const delete) (const hardlink)
2529 (const load) (const move) (const print)
2530 (const shell) (const symlink) (const touch)
2531 (const uncompress)))
2522 2532
2523(defun dired-mark-pop-up (bufname op-symbol files function &rest args) 2533(defun dired-mark-pop-up (bufname op-symbol files function &rest args)
2524 "Return FUNCTION's result on ARGS after showing which files are marked. 2534 "Return FUNCTION's result on ARGS after showing which files are marked.
@@ -3091,9 +3101,9 @@ With optional second arg NO-REVERT, don't refresh the listing afterwards."
3091 (if (eq major-mode 'dired-mode) (dired-sort-set-modeline)) 3101 (if (eq major-mode 'dired-mode) (dired-sort-set-modeline))
3092 (or no-revert (revert-buffer))) 3102 (or no-revert (revert-buffer)))
3093 3103
3094(make-variable-buffer-local 3104(defvar dired-subdir-alist-pre-R nil
3095 (defvar dired-subdir-alist-pre-R nil 3105 "Value of `dired-subdir-alist' before -R switch added.")
3096 "Value of `dired-subdir-alist' before -R switch added.")) 3106(make-variable-buffer-local 'dired-subdir-alist-pre-R)
3097 3107
3098(defun dired-sort-R-check (switches) 3108(defun dired-sort-R-check (switches)
3099 "Additional processing of -R in ls option string SWITCHES. 3109 "Additional processing of -R in ls option string SWITCHES.
diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 43e8b917ce8..4c218263a62 100644
--- a/lisp/emacs-lisp/find-func.el
+++ b/lisp/emacs-lisp/find-func.el
@@ -165,7 +165,7 @@ If nil, do not try to find the source code of functions and variables
165defined in C.") 165defined in C.")
166 166
167(defun find-function-C-source (fun-or-var file type) 167(defun find-function-C-source (fun-or-var file type)
168 "Find the source location where SUBR-OR-VAR is defined in FILE. 168 "Find the source location where FUN-OR-VAR is defined in FILE.
169TYPE should be nil to find a function, or `defvar' to find a variable." 169TYPE should be nil to find a function, or `defvar' to find a variable."
170 (unless find-function-C-source-directory 170 (unless find-function-C-source-directory
171 (setq find-function-C-source-directory 171 (setq find-function-C-source-directory
@@ -243,7 +243,7 @@ The search is done in the source for library LIBRARY."
243(defun find-function-noselect (function) 243(defun find-function-noselect (function)
244 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION. 244 "Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
245 245
246Finds the Emacs Lisp library containing the definition of FUNCTION 246Finds the source file containing the definition of FUNCTION
247in a buffer and the point of the definition. The buffer is 247in a buffer and the point of the definition. The buffer is
248not selected. 248not selected.
249 249
@@ -335,7 +335,7 @@ Set mark before moving, if the buffer already existed."
335(defun find-function (function) 335(defun find-function (function)
336 "Find the definition of the FUNCTION near point. 336 "Find the definition of the FUNCTION near point.
337 337
338Finds the Emacs Lisp library containing the definition of the function 338Finds the source file containing the definition of the function
339near point (selected by `function-called-at-point') in a buffer and 339near point (selected by `function-called-at-point') in a buffer and
340places point before the definition. 340places point before the definition.
341Set mark before moving, if the buffer already existed. 341Set mark before moving, if the buffer already existed.
@@ -356,7 +356,7 @@ See `find-function' for more details."
356 356
357;;;###autoload 357;;;###autoload
358(defun find-function-other-frame (function) 358(defun find-function-other-frame (function)
359 "Find, in ananother frame, the definition of FUNCTION near point. 359 "Find, in another frame, the definition of FUNCTION near point.
360 360
361See `find-function' for more details." 361See `find-function' for more details."
362 (interactive (find-function-read)) 362 (interactive (find-function-read))
@@ -364,24 +364,25 @@ See `find-function' for more details."
364 364
365;;;###autoload 365;;;###autoload
366(defun find-variable-noselect (variable &optional file) 366(defun find-variable-noselect (variable &optional file)
367 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. 367 "Return a pair `(BUFFER . POINT)' pointing to the definition of VARIABLE.
368 368
369Finds the Emacs Lisp library containing the definition of SYMBOL 369Finds the library containing the definition of VARIABLE in a buffer and
370in a buffer, and the point of the definition. It does not switch 370the point of the definition. The buffer is not selected.
371to the buffer or display it.
372 371
373The library where VARIABLE is defined is searched for in FILE or 372The library where VARIABLE is defined is searched for in FILE or
374`find-function-source-path', if non nil, otherwise in `load-path'." 373`find-function-source-path', if non nil, otherwise in `load-path'."
375 (if (not variable) 374 (if (not variable)
376 (error "You didn't specify a variable")) 375 (error "You didn't specify a variable")
377 (let ((library (or file (symbol-file variable 'defvar)))) 376 (let ((library (or file
378 (find-function-search-for-symbol variable 'defvar library))) 377 (symbol-file variable 'defvar)
378 (help-C-file-name variable 'var))))
379 (find-function-search-for-symbol variable 'defvar library))))
379 380
380;;;###autoload 381;;;###autoload
381(defun find-variable (variable) 382(defun find-variable (variable)
382 "Find the definition of the VARIABLE near point. 383 "Find the definition of the VARIABLE near point.
383 384
384Finds the Emacs Lisp library containing the definition of the variable 385Finds the library containing the definition of the variable
385near point (selected by `variable-at-point') in a buffer and 386near point (selected by `variable-at-point') in a buffer and
386places point before the definition. 387places point before the definition.
387 388
@@ -403,7 +404,7 @@ See `find-variable' for more details."
403 404
404;;;###autoload 405;;;###autoload
405(defun find-variable-other-frame (variable) 406(defun find-variable-other-frame (variable)
406 "Find, in annother frame, the definition of VARIABLE near point. 407 "Find, in another frame, the definition of VARIABLE near point.
407 408
408See `find-variable' for more details." 409See `find-variable' for more details."
409 (interactive (find-function-read 'defvar)) 410 (interactive (find-function-read 'defvar))
@@ -412,18 +413,22 @@ See `find-variable' for more details."
412;;;###autoload 413;;;###autoload
413(defun find-definition-noselect (symbol type &optional file) 414(defun find-definition-noselect (symbol type &optional file)
414 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL. 415 "Return a pair `(BUFFER . POINT)' pointing to the definition of SYMBOL.
415TYPE says what type of definition: nil for a function, 416TYPE says what type of definition: nil for a function, `defvar' for a
416`defvar' or `defface' for a variable or face. This function 417variabke, `defface' for a face. This function does not switch to the
417does not switch to the buffer or display it. 418buffer nor display it.
418 419
419The library where SYMBOL is defined is searched for in FILE or 420The library where SYMBOL is defined is searched for in FILE or
420`find-function-source-path', if non nil, otherwise in `load-path'." 421`find-function-source-path', if non nil, otherwise in `load-path'."
421 (if (not symbol) 422 (cond
422 (error "You didn't specify a symbol")) 423 ((not symbol)
423 (if (null type) 424 (error "You didn't specify a symbol"))
424 (find-function-noselect symbol) 425 ((null type)
426 (find-function-noselect symbol))
427 ((eq type 'defvar)
428 (find-variable-noselect symbol file))
429 (t
425 (let ((library (or file (symbol-file symbol type)))) 430 (let ((library (or file (symbol-file symbol type))))
426 (find-function-search-for-symbol symbol type library)))) 431 (find-function-search-for-symbol symbol type library)))))
427 432
428;; For symmetry, this should be called find-face; but some programs 433;; For symmetry, this should be called find-face; but some programs
429;; assume that, if that name is defined, it means something else. 434;; assume that, if that name is defined, it means something else.
@@ -480,7 +485,7 @@ Set mark before moving, if the buffer already existed."
480 485
481;;;###autoload 486;;;###autoload
482(defun find-variable-at-point () 487(defun find-variable-at-point ()
483 "Find directly the function at point in the other window." 488 "Find directly the variable at point in the other window."
484 (interactive) 489 (interactive)
485 (let ((symb (variable-at-point))) 490 (let ((symb (variable-at-point)))
486 (when (and symb (not (equal symb 0))) 491 (when (and symb (not (equal symb 0)))
diff --git a/lisp/faces.el b/lisp/faces.el
index 2bc3d3968e2..14613bec679 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1918,6 +1918,28 @@ created."
1918 :group 'basic-faces 1918 :group 'basic-faces
1919 :version "22.1") 1919 :version "22.1")
1920 1920
1921(defface link
1922 '((((class color) (min-colors 88) (background light))
1923 :foreground "blue1" :underline t)
1924 (((class color) (background light))
1925 :foreground "blue" :underline t)
1926 (((class color) (min-colors 88) (background dark))
1927 :foreground "cyan1" :underline t)
1928 (((class color) (background dark))
1929 :foreground "cyan" :underline t)
1930 (t :inherit underline))
1931 "Basic face for unvisited links."
1932 :group 'basic-faces
1933 :version "22.1")
1934
1935(defface link-visited
1936 '((default :inherit link)
1937 (((class color) (background light)) :foreground "magenta4")
1938 (((class color) (background dark)) :foreground "violet"))
1939 "Basic face for visited links."
1940 :group 'basic-faces
1941 :version "22.1")
1942
1921(defface highlight 1943(defface highlight
1922 '((((class color) (min-colors 88) (background light)) 1944 '((((class color) (min-colors 88) (background light))
1923 :background "darkseagreen2") 1945 :background "darkseagreen2")
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index acdcf68c7dc..f85aa37b3b5 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2127,7 +2127,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
2127 ;; Constant values. 2127 ;; Constant values.
2128 ("\\<:\\sw+\\>" 0 font-lock-builtin-face) 2128 ("\\<:\\sw+\\>" 0 font-lock-builtin-face)
2129 ;; ELisp and CLisp `&' keywords as types. 2129 ;; ELisp and CLisp `&' keywords as types.
2130 ("\\&\\sw+\\>" . font-lock-type-face) 2130 ("\\<\\&\\sw+\\>" . font-lock-type-face)
2131 ;; ELisp regexp grouping constructs 2131 ;; ELisp regexp grouping constructs
2132 ((lambda (bound) 2132 ((lambda (bound)
2133 (catch 'found 2133 (catch 'found
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 6e0405c24eb..fbbf7281b69 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,62 @@
12006-01-25 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * mm-uu.el (mm-uu-dissect-text-parts): Ignore it if a given part
4 is dissected into a single part of which the type is the same as
5 the given one.
6
72006-01-21 Kevin Ryde <user42@zip.com.au>
8
9 * mailcap.el (mailcap-parse-mailcap-extras): "test" key must go
10 into alists as symbol not string, since that's what
11 mailcap-viewer-passes-test and mailcap-mailcap-entry-passes-test
12 look for.
13
142006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
15
16 * mm-uu.el (mm-uu-dissect-text-parts): Reduce the number of
17 recursive calls.
18
192006-01-24 Katsumi Yamaoka <yamaoka@jpl.org>
20
21 * mm-view.el (mm-w3m-standalone-supports-m17n-p): New variable.
22 (mm-w3m-standalone-supports-m17n-p): New function.
23 (mm-inline-text-html-render-with-w3m-standalone): Use it to alter
24 w3m usage.
25
26 * gnus-art.el (gnus-article-wash-html-with-w3m-standalone): Use
27 mm-w3m-standalone-supports-m17n-p to alter w3m usage.
28
292006-01-23 Katsumi Yamaoka <yamaoka@jpl.org>
30
31 * mm-uu.el (mm-uu-dissect-text-parts): Decode content transfer
32 encoding.
33
342006-01-20 Reiner Steib <Reiner.Steib@gmx.de>
35
36 * mml.el (mml-attach-file): Describe `description' in doc string.
37 (mml-menu): Add Emacs MIME manual and PGG manual.
38
392006-01-19 Reiner Steib <Reiner.Steib@gmx.de>
40
41 * spam.el (spam-group-ham-mark-p, spam-group-spam-mark-p)
42 (spam-group-spam-marks, spam-list-articles, spam-group-ham-marks):
43 Revert 2006-01-08 change because the functions will be used in No
44 Gnus.
45
462006-01-19 Katsumi Yamaoka <yamaoka@jpl.org>
47
48 * mm-bodies.el (mm-decode-body): Don't decode decoded body.
49
50 * mm-uu.el (mm-uu-dissect-text-parts): Dissect dissected parts.
51
522006-01-17 Katsumi Yamaoka <yamaoka@jpl.org>
53
54 * mm-decode.el (mm-inlined-types): Add application/pgp.
55 (mm-automatic-display): Ditto.
56
57 * mm-uu.el (mm-uu-dissect-text-parts): Recognize application/pgp
58 part as text.
59
12006-01-16 Katsumi Yamaoka <yamaoka@jpl.org> 602006-01-16 Katsumi Yamaoka <yamaoka@jpl.org>
2 61
3 * nnrss.el: Update copyright. 62 * nnrss.el: Update copyright.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 92a4f09ded3..b51ceff29a9 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -2541,15 +2541,18 @@ charset defined in `gnus-summary-show-article-charset-alist' is used."
2541 2541
2542(defun gnus-article-wash-html-with-w3m-standalone () 2542(defun gnus-article-wash-html-with-w3m-standalone ()
2543 "Wash the current buffer with w3m." 2543 "Wash the current buffer with w3m."
2544 (unless (mm-coding-system-p charset) 2544 (if (mm-w3m-standalone-supports-m17n-p)
2545 ;; The default. 2545 (progn
2546 (setq charset 'iso-8859-1)) 2546 (unless (mm-coding-system-p charset) ;; Bound by `article-wash-html'.
2547 (let ((coding-system-for-write charset) 2547 ;; The default.
2548 (coding-system-for-read charset)) 2548 (setq charset 'iso-8859-1))
2549 (call-process-region 2549 (let ((coding-system-for-write charset)
2550 (point-min) (point-max) 2550 (coding-system-for-read charset))
2551 "w3m" t t nil "-dump" "-T" "text/html" 2551 (call-process-region
2552 "-I" (symbol-name charset) "-O" (symbol-name charset)))) 2552 (point-min) (point-max)
2553 "w3m" t t nil "-dump" "-T" "text/html"
2554 "-I" (symbol-name charset) "-O" (symbol-name charset))))
2555 (mm-inline-wash-with-stdin nil "w3m" "-dump" "-T" "text/html")))
2553 2556
2554(defun article-hide-list-identifiers () 2557(defun article-hide-list-identifiers ()
2555 "Remove list identifies from the Subject header. 2558 "Remove list identifies from the Subject header.
diff --git a/lisp/gnus/mailcap.el b/lisp/gnus/mailcap.el
index 166edb60f7a..80153645819 100644
--- a/lisp/gnus/mailcap.el
+++ b/lisp/gnus/mailcap.el
@@ -528,7 +528,12 @@ MAILCAPS if set; otherwise (on Unix) use the path from RFC 1524, plus
528 (skip-chars-forward ";")) 528 (skip-chars-forward ";"))
529 (setq done t)))) 529 (setq done t))))
530 (setq value (buffer-substring val-pos (point)))) 530 (setq value (buffer-substring val-pos (point))))
531 (setq results (cons (cons name value) results)) 531 ;; `test' as symbol, others like "copiousoutput" and "needsx11" as
532 ;; strings
533 (setq results (cons (cons (if (string-equal name "test")
534 'test
535 name)
536 value) results))
532 (skip-chars-forward " \";\n\t")) 537 (skip-chars-forward " \";\n\t"))
533 results))) 538 results)))
534 539
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index ed3dc28253d..7871ca9f253 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -1,7 +1,7 @@
1;;; mm-bodies.el --- Functions for decoding MIME things 1;;; mm-bodies.el --- Functions for decoding MIME things
2 2
3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
7;; MORIOKA Tomohiko <morioka@jaist.ac.jp> 7;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -248,7 +248,8 @@ decoding. If it is nil, default to `mail-parse-charset'."
248 (save-excursion 248 (save-excursion
249 (when encoding 249 (when encoding
250 (mm-decode-content-transfer-encoding encoding type)) 250 (mm-decode-content-transfer-encoding encoding type))
251 (when (featurep 'mule) ; Fixme: Wrong test for unibyte session. 251 (when (and (featurep 'mule) ;; Fixme: Wrong test for unibyte session.
252 (not (eq charset 'gnus-decoded)))
252 (let ((coding-system (mm-charset-to-coding-system charset))) 253 (let ((coding-system (mm-charset-to-coding-system charset)))
253 (if (and (not coding-system) 254 (if (and (not coding-system)
254 (listp mail-parse-ignored-charsets) 255 (listp mail-parse-ignored-charsets)
@@ -261,8 +262,7 @@ decoding. If it is nil, default to `mail-parse-charset'."
261 ;;in XEmacs 262 ;;in XEmacs
262 (mm-multibyte-p) 263 (mm-multibyte-p)
263 (or (not (eq coding-system 'ascii)) 264 (or (not (eq coding-system 'ascii))
264 (setq coding-system mail-parse-charset)) 265 (setq coding-system mail-parse-charset)))
265 (not (eq coding-system 'gnus-decoded)))
266 (mm-decode-coding-region (point-min) (point-max) 266 (mm-decode-coding-region (point-min) (point-max)
267 coding-system)) 267 coding-system))
268 (setq buffer-file-coding-system 268 (setq buffer-file-coding-system
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index 5b55af4d756..b275807c051 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1,7 +1,7 @@
1;;; mm-decode.el --- Functions for decoding MIME things 1;;; mm-decode.el --- Functions for decoding MIME things
2 2
3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> 6;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
7;; MORIOKA Tomohiko <morioka@jaist.ac.jp> 7;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
@@ -279,7 +279,9 @@ before the external MIME handler is invoked."
279 "application/x-emacs-lisp" 279 "application/x-emacs-lisp"
280 "application/pgp-signature" "application/x-pkcs7-signature" 280 "application/pgp-signature" "application/x-pkcs7-signature"
281 "application/pkcs7-signature" "application/x-pkcs7-mime" 281 "application/pkcs7-signature" "application/x-pkcs7-mime"
282 "application/pkcs7-mime") 282 "application/pkcs7-mime"
283 ;; Mutt still uses this even though it has already been withdrawn.
284 "application/pgp")
283 "List of media types that are to be displayed inline. 285 "List of media types that are to be displayed inline.
284See also `mm-inline-media-tests', which says how to display a media 286See also `mm-inline-media-tests', which says how to display a media
285type inline." 287type inline."
@@ -302,7 +304,9 @@ when selecting a different article."
302 "application/emacs-lisp" "application/x-emacs-lisp" 304 "application/emacs-lisp" "application/x-emacs-lisp"
303 "application/x-pkcs7-signature" 305 "application/x-pkcs7-signature"
304 "application/pkcs7-signature" "application/x-pkcs7-mime" 306 "application/pkcs7-signature" "application/x-pkcs7-mime"
305 "application/pkcs7-mime") 307 "application/pkcs7-mime"
308 ;; Mutt still uses this even though it has already been withdrawn.
309 "application/pgp")
306 "A list of MIME types to be displayed automatically." 310 "A list of MIME types to be displayed automatically."
307 :type '(repeat regexp) 311 :type '(repeat regexp)
308 :group 'mime-display) 312 :group 'mime-display)
diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el
index 312c3dd8542..fa36582af01 100644
--- a/lisp/gnus/mm-uu.el
+++ b/lisp/gnus/mm-uu.el
@@ -511,21 +511,40 @@ value of `mm-uu-text-plain-type'."
511 511
512(defun mm-uu-dissect-text-parts (handle) 512(defun mm-uu-dissect-text-parts (handle)
513 "Dissect text parts and put uu handles into HANDLE." 513 "Dissect text parts and put uu handles into HANDLE."
514 (let ((buffer (mm-handle-buffer handle)) 514 (let ((buffer (mm-handle-buffer handle)))
515 type children)
516 (cond ((stringp buffer) 515 (cond ((stringp buffer)
517 (dolist (elem (cdr handle)) 516 (dolist (elem (cdr handle))
518 (mm-uu-dissect-text-parts elem))) 517 (mm-uu-dissect-text-parts elem)))
519 ((bufferp buffer) 518 ((bufferp buffer)
520 (when (and (setq type (mm-handle-media-type handle)) 519 (let ((type (mm-handle-media-type handle))
521 (stringp type) 520 (case-fold-search t) ;; string-match
522 (string-match "\\`text/" type) 521 encoding children)
523 (with-current-buffer buffer 522 (when (and
524 (setq children 523 (stringp type)
525 (mm-uu-dissect t (mm-handle-type handle))))) 524 ;; Mutt still uses application/pgp even though
526 (kill-buffer buffer) 525 ;; it has already been withdrawn.
527 (setcar handle (car children)) 526 (string-match "\\`text/\\|\\`application/pgp\\'" type)
528 (setcdr handle (cdr children)))) 527 (setq children
528 (with-current-buffer buffer
529 (if (setq encoding (mm-handle-encoding handle))
530 ;; Inherit the multibyteness of the `buffer'.
531 (with-temp-buffer
532 (insert-buffer-substring buffer)
533 (mm-decode-content-transfer-encoding
534 encoding type)
535 (mm-uu-dissect t (mm-handle-type handle)))
536 (mm-uu-dissect t (mm-handle-type handle))))))
537 ;; Ignore it if a given part is dissected into a single
538 ;; part of which the type is the same as the given one.
539 (if (and (<= (length children) 2)
540 (string-equal (mm-handle-media-type (cadr children))
541 type))
542 (kill-buffer (mm-handle-buffer (cadr children)))
543 (kill-buffer buffer)
544 (setcdr handle (cdr children))
545 (setcar handle (car children)) ;; "multipart/mixed"
546 (dolist (elem (cdr children))
547 (mm-uu-dissect-text-parts elem))))))
529 (t 548 (t
530 (dolist (elem handle) 549 (dolist (elem handle)
531 (mm-uu-dissect-text-parts elem)))))) 550 (mm-uu-dissect-text-parts elem))))))
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 645e960b535..73cab0a5676 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -262,29 +262,57 @@
262 (delete-region ,(point-min-marker) 262 (delete-region ,(point-min-marker)
263 ,(point-max-marker))))))))) 263 ,(point-max-marker)))))))))
264 264
265(defvar mm-w3m-standalone-supports-m17n-p (if (featurep 'mule) 'undecided)
266 "*T means the w3m command supports the m17n feature.")
267
268(defun mm-w3m-standalone-supports-m17n-p ()
269 "Say whether the w3m command supports the m17n feature."
270 (cond ((eq mm-w3m-standalone-supports-m17n-p t) t)
271 ((eq mm-w3m-standalone-supports-m17n-p nil) nil)
272 ((not (featurep 'mule)) (setq mm-w3m-standalone-supports-m17n-p nil))
273 ((condition-case nil
274 (let ((coding-system-for-write 'iso-2022-jp)
275 (coding-system-for-read 'iso-2022-jp)
276 (str (mm-decode-coding-string "\
277\e$B#D#o#e#s!!#w#3#m!!#s#u#p#p#o#r#t#s!!#m#1#7#n!)\e(B" 'iso-2022-jp)))
278 (mm-with-multibyte-buffer
279 (insert str)
280 (call-process-region
281 (point-min) (point-max) "w3m" t t nil "-dump"
282 "-T" "text/html" "-I" "iso-2022-jp" "-O" "iso-2022-jp")
283 (goto-char (point-min))
284 (search-forward str nil t)))
285 (error nil))
286 (setq mm-w3m-standalone-supports-m17n-p t))
287 (t
288 ;;(message "You had better upgrade your w3m command")
289 (setq mm-w3m-standalone-supports-m17n-p nil))))
290
265(defun mm-inline-text-html-render-with-w3m-standalone (handle) 291(defun mm-inline-text-html-render-with-w3m-standalone (handle)
266 "Render a text/html part using w3m." 292 "Render a text/html part using w3m."
267 (let ((source (mm-get-part handle)) 293 (if (mm-w3m-standalone-supports-m17n-p)
268 (charset (mail-content-type-get (mm-handle-type handle) 'charset)) 294 (let ((source (mm-get-part handle))
269 cs) 295 (charset (mail-content-type-get (mm-handle-type handle) 'charset))
270 (unless (and charset 296 cs)
271 (setq cs (mm-charset-to-coding-system charset)) 297 (unless (and charset
272 (not (eq cs 'ascii))) 298 (setq cs (mm-charset-to-coding-system charset))
273 ;; The default. 299 (not (eq cs 'ascii)))
274 (setq charset "iso-8859-1" 300 ;; The default.
275 cs 'iso-8859-1)) 301 (setq charset "iso-8859-1"
276 (mm-insert-inline 302 cs 'iso-8859-1))
277 handle 303 (mm-insert-inline
278 (mm-with-unibyte-buffer 304 handle
279 (insert source) 305 (mm-with-unibyte-buffer
280 (mm-enable-multibyte) 306 (insert source)
281 (let ((coding-system-for-write 'binary) 307 (mm-enable-multibyte)
282 (coding-system-for-read cs)) 308 (let ((coding-system-for-write 'binary)
283 (call-process-region 309 (coding-system-for-read cs))
284 (point-min) (point-max) 310 (call-process-region
285 "w3m" t t nil "-dump" "-T" "text/html" 311 (point-min) (point-max)
286 "-I" charset "-O" charset)) 312 "w3m" t t nil "-dump" "-T" "text/html"
287 (buffer-string))))) 313 "-I" charset "-O" charset))
314 (buffer-string))))
315 (mm-inline-render-with-stdin handle nil "w3m" "-dump" "-T" "text/html")))
288 316
289(defun mm-links-remove-leading-blank () 317(defun mm-links-remove-leading-blank ()
290 ;; Delete the annoying three spaces preceding each line of links 318 ;; Delete the annoying three spaces preceding each line of links
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index f88276f4e69..7d7ea9e20a1 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -38,6 +38,7 @@
38 (autoload 'gnus-add-minor-mode "gnus-ems") 38 (autoload 'gnus-add-minor-mode "gnus-ems")
39 (autoload 'gnus-make-local-hook "gnus-util") 39 (autoload 'gnus-make-local-hook "gnus-util")
40 (autoload 'message-fetch-field "message") 40 (autoload 'message-fetch-field "message")
41 (autoload 'message-info "message")
41 (autoload 'fill-flowed-encode "flow-fill") 42 (autoload 'fill-flowed-encode "flow-fill")
42 (autoload 'message-posting-charset "message")) 43 (autoload 'message-posting-charset "message"))
43 44
@@ -916,7 +917,14 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
916 ;;["Narrow" mml-narrow-to-part t] 917 ;;["Narrow" mml-narrow-to-part t]
917 ["Quote MML" mml-quote-region t] 918 ["Quote MML" mml-quote-region t]
918 ["Validate MML" mml-validate t] 919 ["Validate MML" mml-validate t]
919 ["Preview" mml-preview t])) 920 ["Preview" mml-preview t]
921 "----"
922 ["Emacs MIME manual" (lambda () (interactive) (message-info 4))
923 ,@(if (featurep 'xemacs) '(t)
924 '(:help "Display the Emacs MIME manual"))]
925 ["PGG manual" (lambda () (interactive) (message-info 16))
926 ,@(if (featurep 'xemacs) '(t)
927 '(:help "Display the PGG manual"))]))
920 928
921(defvar mml-mode nil 929(defvar mml-mode nil
922 "Minor mode for editing MML.") 930 "Minor mode for editing MML.")
@@ -1035,9 +1043,12 @@ See Info node `(emacs-mime)Composing'.
1035The file is not inserted or encoded until you send the message with 1043The file is not inserted or encoded until you send the message with
1036`\\[message-send-and-exit]' or `\\[message-send]'. 1044`\\[message-send-and-exit]' or `\\[message-send]'.
1037 1045
1038FILE is the name of the file to attach. TYPE is its content-type, a 1046FILE is the name of the file to attach. TYPE is its
1039string of the form \"type/subtype\". DESCRIPTION is a one-line 1047content-type, a string of the form \"type/subtype\". DESCRIPTION
1040description of the attachment." 1048is a one-line description of the attachment. The DISPOSITION
1049specifies how the attachment is intended to be displayed. It can
1050be either \"inline\" (displayed automatically within the message
1051body) or \"attachment\" (separate from the body)."
1041 (interactive 1052 (interactive
1042 (let* ((file (mml-minibuffer-read-file "Attach file: ")) 1053 (let* ((file (mml-minibuffer-read-file "Attach file: "))
1043 (type (mml-minibuffer-read-type file)) 1054 (type (mml-minibuffer-read-type file))
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index 8b722c95586..32de2f60e22 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -467,14 +467,28 @@ spamoracle database."
467 "Logical exclusive `or'." 467 "Logical exclusive `or'."
468 (and (or a b) (not (and a b)))) 468 (and (or a b) (not (and a b))))
469 469
470(defun spam-group-ham-mark-p (group mark &optional spam)
471 (when (stringp group)
472 (let* ((marks (spam-group-ham-marks group spam))
473 (marks (if (symbolp mark)
474 marks
475 (mapcar 'symbol-value marks))))
476 (memq mark marks))))
477
478(defun spam-group-spam-mark-p (group mark)
479 (spam-group-ham-mark-p group mark t))
480
470(defun spam-group-ham-marks (group &optional spam) 481(defun spam-group-ham-marks (group &optional spam)
471 (when (stringp group) 482 (when (stringp group)
472 (let ((marks (car (if spam 483 (let* ((marks (if spam
473 (gnus-parameter-spam-marks group) 484 (gnus-parameter-spam-marks group)
474 (gnus-parameter-ham-marks group))))) 485 (gnus-parameter-ham-marks group)))
475 (if (listp (car marks)) 486 (marks (car marks))
476 (car marks) 487 (marks (if (listp (car marks)) (car marks) marks)))
477 marks)))) 488 marks)))
489
490(defun spam-group-spam-marks (group)
491 (spam-group-ham-marks group t))
478 492
479(defun spam-group-spam-contents-p (group) 493(defun spam-group-spam-contents-p (group)
480 (if (stringp group) 494 (if (stringp group)
@@ -1036,12 +1050,23 @@ functions")
1036 (nth 2 flist)))) 1050 (nth 2 flist))))
1037 1051
1038(defun spam-list-articles (articles classification) 1052(defun spam-list-articles (articles classification)
1039 (let ((marks (mapcar 'eval (spam-group-ham-marks gnus-newsgroup-name 1053 (let ((mark-check (if (eq classification 'spam)
1040 (eq classification 'spam)))) 1054 'spam-group-spam-mark-p
1041 list) 1055 'spam-group-ham-mark-p))
1056 list mark-cache-yes mark-cache-no)
1042 (dolist (article articles) 1057 (dolist (article articles)
1043 (if (memq (gnus-summary-article-mark article) marks) 1058 (let ((mark (gnus-summary-article-mark article)))
1044 (push article list))) 1059 (unless (memq mark mark-cache-no)
1060 (if (memq mark mark-cache-yes)
1061 (push article list)
1062 ;; else, we have to actually check the mark
1063 (if (funcall mark-check
1064 gnus-newsgroup-name
1065 mark)
1066 (progn
1067 (push article list)
1068 (push mark mark-cache-yes))
1069 (push mark mark-cache-no))))))
1045 list)) 1070 list))
1046 1071
1047(defun spam-register-routine (classification 1072(defun spam-register-routine (classification
diff --git a/lisp/hl-line.el b/lisp/hl-line.el
index 3dd56f2f239..c2d2d293010 100644
--- a/lisp/hl-line.el
+++ b/lisp/hl-line.el
@@ -1,7 +1,7 @@
1;;; hl-line.el --- highlight the current line 1;;; hl-line.el --- highlight the current line
2 2
3;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1998, 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Dave Love <fx@gnu.org> 6;; Author: Dave Love <fx@gnu.org>
7;; Maintainer: FSF 7;; Maintainer: FSF
@@ -58,7 +58,7 @@
58;; it to nil to avoid highlighting specific buffers, when the global 58;; it to nil to avoid highlighting specific buffers, when the global
59;; mode is used. 59;; mode is used.
60 60
61;; In default whole the line is highlighted. The range of highlighting 61;; By default the whole line is highlighted. The range of highlighting
62;; can be changed by defining an appropriate function as the 62;; can be changed by defining an appropriate function as the
63;; buffer-local value of `hl-line-range-function'. 63;; buffer-local value of `hl-line-range-function'.
64 64
@@ -130,7 +130,7 @@ addition to `hl-line-highlight' on `post-command-hook'."
130 (remove-hook 'pre-command-hook #'hl-line-unhighlight t))) 130 (remove-hook 'pre-command-hook #'hl-line-unhighlight t)))
131 131
132(defun hl-line-highlight () 132(defun hl-line-highlight ()
133 "Active the Hl-Line overlay on the current line." 133 "Activate the Hl-Line overlay on the current line."
134 (if hl-line-mode ; Might be changed outside the mode function. 134 (if hl-line-mode ; Might be changed outside the mode function.
135 (progn 135 (progn
136 (unless hl-line-overlay 136 (unless hl-line-overlay
@@ -179,9 +179,9 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and
179 (delete-overlay global-hl-line-overlay))) 179 (delete-overlay global-hl-line-overlay)))
180 180
181(defun hl-line-move (overlay) 181(defun hl-line-move (overlay)
182 "Move the hl-line-mode overlay. 182 "Move the Hl-Line overlay.
183If `hl-line-range-function' is non-nil, move the OVERLAY to the position 183If `hl-line-range-function' is non-nil, move the OVERLAY to the position
184where the function returns. If `hl-line-range-function' is nil, fill 184where the function returns. If `hl-line-range-function' is nil, fill
185the line including the point by OVERLAY." 185the line including the point by OVERLAY."
186 (let (tmp b e) 186 (let (tmp b e)
187 (if hl-line-range-function 187 (if hl-line-range-function
diff --git a/lisp/info.el b/lisp/info.el
index 61d59741078..912e31f62ad 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -129,21 +129,14 @@ The Lisp code is executed when the node is selected.")
129(put 'info-menu-5 'face-alias 'info-menu-star) 129(put 'info-menu-5 'face-alias 'info-menu-star)
130 130
131(defface info-xref 131(defface info-xref
132 '((((min-colors 88) 132 '((t :inherit link))
133 (class color) (background light)) :foreground "blue1" :underline t) 133 "Face for unvisited Info cross-references."
134 (((class color) (background light)) :foreground "blue" :underline t)
135 (((min-colors 88)
136 (class color) (background dark)) :foreground "cyan1" :underline t)
137 (((class color) (background dark)) :foreground "cyan" :underline t)
138 (t :underline t))
139 "Face for Info cross-references."
140 :group 'info) 134 :group 'info)
141 135
142(defface info-xref-visited 136(defface info-xref-visited
143 '((default :inherit info-xref) 137 '((t :inherit link-visited))
144 (((class color) (background light)) :foreground "magenta4")
145 (((class color) (background dark)) :foreground "violet"))
146 "Face for visited Info cross-references." 138 "Face for visited Info cross-references."
139 :version "22.1"
147 :group 'info) 140 :group 'info)
148 141
149(defcustom Info-fontify-visited-nodes t 142(defcustom Info-fontify-visited-nodes t
diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el
index 51d70faf76c..17a9df20843 100644
--- a/lisp/international/latexenc.el
+++ b/lisp/international/latexenc.el
@@ -1,6 +1,6 @@
1;;; latexenc.el --- guess correct coding system in LaTeX files 1;;; latexenc.el --- guess correct coding system in LaTeX files
2 2
3;; Copyright (C) 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Arne J,Ax(Brgensen <arne@arnested.dk> 5;; Author: Arne J,Ax(Brgensen <arne@arnested.dk>
6;; Keywords: mule, coding system, latex 6;; Keywords: mule, coding system, latex
@@ -167,6 +167,7 @@ coding system names is determined from `latex-inputenc-coding-alist'."
167 (setq latexenc-main-file (tex-guess-main-file))))) 167 (setq latexenc-main-file (tex-guess-main-file)))))
168 ;; if we found a master/main file get the coding system from it 168 ;; if we found a master/main file get the coding system from it
169 (if (and latexenc-main-file 169 (if (and latexenc-main-file
170 (file-regular-p latexenc-main-file)
170 (file-readable-p latexenc-main-file)) 171 (file-readable-p latexenc-main-file))
171 (let* ((latexenc-dont-use-tex-guess-main-file-flag t) 172 (let* ((latexenc-dont-use-tex-guess-main-file-flag t)
172 (latexenc-dont-use-TeX-master-flag t) 173 (latexenc-dont-use-TeX-master-flag t)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 332b57381c3..ce104f74b11 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -517,8 +517,8 @@ Type \\[isearch-exit] to exit, leaving point at location found.
517Type LFD (C-j) to match end of line. 517Type LFD (C-j) to match end of line.
518Type \\[isearch-repeat-forward] to search again forward,\ 518Type \\[isearch-repeat-forward] to search again forward,\
519 \\[isearch-repeat-backward] to search again backward. 519 \\[isearch-repeat-backward] to search again backward.
520Type \\[isearch-yank-word-or-char] to yank word from buffer onto end of search\ 520Type \\[isearch-yank-word-or-char] to yank next word or character in buffer
521 string and search for it. 521 onto the end of the search string, and search for it.
522Type \\[isearch-del-char] to delete character from end of search string. 522Type \\[isearch-del-char] to delete character from end of search string.
523Type \\[isearch-yank-char] to yank char from buffer onto end of search\ 523Type \\[isearch-yank-char] to yank char from buffer onto end of search\
524 string and search for it. 524 string and search for it.
diff --git a/lisp/log-view.el b/lisp/log-view.el
index 91320f08dd9..e7a58dad8b7 100644
--- a/lisp/log-view.el
+++ b/lisp/log-view.el
@@ -1,7 +1,7 @@
1;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output 1;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
2 2
3;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
4;; 2005 Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
5 5
6;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
7;; Keywords: rcs sccs cvs log version-control 7;; Keywords: rcs sccs cvs log version-control
@@ -225,8 +225,8 @@
225 225
226(defun log-view-minor-wrap (buf f) 226(defun log-view-minor-wrap (buf f)
227 (let ((data (with-current-buffer buf 227 (let ((data (with-current-buffer buf
228 (let* ((beg (if mark-active (region-beginning) (point))) 228 (let* ((beg (point))
229 (end (if mark-active (region-end) (point))) 229 (end (if mark-active (mark) (point)))
230 (fr (log-view-current-tag beg)) 230 (fr (log-view-current-tag beg))
231 (to (log-view-current-tag end))) 231 (to (log-view-current-tag end)))
232 (when (string-equal fr to) 232 (when (string-equal fr to)
@@ -235,8 +235,11 @@
235 (log-view-msg-next) 235 (log-view-msg-next)
236 (setq to (log-view-current-tag)))) 236 (setq to (log-view-current-tag))))
237 (cons 237 (cons
238 (cons (log-view-current-file) to) 238 ;; The first revision has to be the one at point, for
239 (cons (log-view-current-file) fr)))))) 239 ;; operations that only take one revision
240 ;; (e.g. cvs-mode-edit).
241 (cons (log-view-current-file) fr)
242 (cons (log-view-current-file) to))))))
240 (let ((cvs-branch-prefix (cdar data)) 243 (let ((cvs-branch-prefix (cdar data))
241 (cvs-secondary-branch-prefix (and (cdar data) (cddr data))) 244 (cvs-secondary-branch-prefix (and (cdar data) (cddr data)))
242 (cvs-minor-current-files 245 (cvs-minor-current-files
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index da801492210..7319589d9f0 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -543,7 +543,11 @@ This is set to nil by default.")
543 "*If non-nil, RMAIL uses MIME feature. 543 "*If non-nil, RMAIL uses MIME feature.
544If the value is t, RMAIL automatically shows MIME decoded message. 544If the value is t, RMAIL automatically shows MIME decoded message.
545If the value is neither t nor nil, RMAIL does not show MIME decoded message 545If the value is neither t nor nil, RMAIL does not show MIME decoded message
546until a user explicitly requires it." 546until a user explicitly requires it.
547
548Even if the value is non-nil, you can't use MIME feature
549if the feature specified by `rmail-mime-feature' is not available
550in your session."
547 :type '(choice (const :tag "on" t) 551 :type '(choice (const :tag "on" t)
548 (const :tag "off" nil) 552 (const :tag "off" nil)
549 (other :tag "when asked" ask)) 553 (other :tag "when asked" ask))
@@ -595,7 +599,10 @@ LIMIT is the position specifying the end of header.")
595(defvar rmail-mime-feature 'rmail-mime 599(defvar rmail-mime-feature 'rmail-mime
596 "Feature to require to load MIME support in Rmail. 600 "Feature to require to load MIME support in Rmail.
597When starting Rmail, if `rmail-enable-mime' is non-nil, 601When starting Rmail, if `rmail-enable-mime' is non-nil,
598this feature is required with `require'.") 602this feature is required with `require'.
603
604The default value is `rmail-mime'. This feature is provided by
605the rmail-mime package available at <http://www.m17n.org/rmail-mime/>.")
599 606
600;;;###autoload 607;;;###autoload
601(defvar rmail-decode-mime-charset t 608(defvar rmail-decode-mime-charset t
@@ -735,8 +742,14 @@ isn't provided."
735 (condition-case err 742 (condition-case err
736 (require rmail-mime-feature) 743 (require rmail-mime-feature)
737 (error 744 (error
738 (message "Feature `%s' not provided" rmail-mime-feature) 745 (display-warning
739 (sit-for 1) 746 :warning
747 (format "Although MIME support is requested
748by setting `rmail-enable-mime' to non-nil, the required feature
749`%s' (the value of `rmail-mime-feature')
750is not available in the current session.
751So, the MIME support is turned off for the moment."
752 rmail-mime-feature))
740 (setq rmail-enable-mime nil))))) 753 (setq rmail-enable-mime nil)))))
741 754
742 755
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index 97654ae92c5..bd37a41aef8 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -349,9 +349,11 @@ The optional fourth argument FROM-GNUS is set when called from GNUS."
349 (mail-fetch-field "sender") 349 (mail-fetch-field "sender")
350 "unknown")) 350 "unknown"))
351 " " (current-time-string) "\n")) 351 " " (current-time-string) "\n"))
352 (if mime-version 352 (when mime-version
353 (insert "MIME-Version: " mime-version 353 (insert "MIME-Version: " mime-version)
354 "\nContent-type: " content-type "\n")) 354 ;; Some malformed MIME messages set content-type to nil.
355 (when content-type
356 (insert "\nContent-type: " content-type "\n")))
355 ;; ``Quote'' "\nFrom " as "\n>From " 357 ;; ``Quote'' "\nFrom " as "\n>From "
356 ;; (note that this isn't really quoting, as there is no requirement 358 ;; (note that this isn't really quoting, as there is no requirement
357 ;; that "\n[>]+From " be quoted in the same transparent way.) 359 ;; that "\n[>]+From " be quoted in the same transparent way.)
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 53cc392ad7a..dc3742c231a 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -1,6 +1,6 @@
1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*- 1;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*-
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Michael Albinus <michael.albinus@gmx.de> 5;; Author: Michael Albinus <michael.albinus@gmx.de>
6;; Keywords: comm, processes 6;; Keywords: comm, processes
@@ -63,8 +63,40 @@ present for backward compatibility."
63 (a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist))) 63 (a2 (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)))
64 (setq file-name-handler-alist 64 (setq file-name-handler-alist
65 (delete a1 (delete a2 file-name-handler-alist))))) 65 (delete a1 (delete a2 file-name-handler-alist)))))
66(tramp-disable-ange-ftp) 66
67(eval-after-load "ange-ftp" '(tramp-disable-ange-ftp)) 67(eval-after-load "ange-ftp"
68 '(when (functionp 'tramp-disable-ange-ftp)
69 (tramp-disable-ange-ftp)))
70
71;;;###autoload
72(defun tramp-ftp-enable-ange-ftp ()
73 ;; The following code is commented out in Ange-FTP.
74
75 ;;; This regexp takes care of real ange-ftp file names (with a slash
76 ;;; and colon).
77 ;;; Don't allow the host name to end in a period--some systems use /.:
78 (or (assoc "^/[^/:]*[^/:.]:" file-name-handler-alist)
79 (setq file-name-handler-alist
80 (cons '("^/[^/:]*[^/:.]:" . ange-ftp-hook-function)
81 file-name-handler-alist)))
82
83 ;;; This regexp recognizes absolute filenames with only one component,
84 ;;; for the sake of hostname completion.
85 (or (assoc "^/[^/:]*\\'" file-name-handler-alist)
86 (setq file-name-handler-alist
87 (cons '("^/[^/:]*\\'" . ange-ftp-completion-hook-function)
88 file-name-handler-alist)))
89
90 ;;; This regexp recognizes absolute filenames with only one component
91 ;;; on Windows, for the sake of hostname completion.
92 (and (memq system-type '(ms-dos windows-nt))
93 (or (assoc "^[a-zA-Z]:/[^/:]*\\'" file-name-handler-alist)
94 (setq file-name-handler-alist
95 (cons '("^[a-zA-Z]:/[^/:]*\\'" .
96 ange-ftp-completion-hook-function)
97 file-name-handler-alist)))))
98
99(add-hook 'tramp-ftp-unload-hook 'tramp-ftp-enable-ange-ftp)
68 100
69;; Define FTP method ... 101;; Define FTP method ...
70(defcustom tramp-ftp-method "ftp" 102(defcustom tramp-ftp-method "ftp"
diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
index acb10727d46..666471d6429 100644
--- a/lisp/net/tramp-util.el
+++ b/lisp/net/tramp-util.el
@@ -1,7 +1,8 @@
1;;; -*- coding: iso-2022-7bit; -*- 1;;; -*- coding: iso-2022-7bit; -*-
2;;; tramp-util.el --- Misc utility functions to use with Tramp 2;;; tramp-util.el --- Misc utility functions to use with Tramp
3 3
4;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
5;; 2006 Free Software Foundation, Inc.
5 6
6;; Author: kai.grossjohann@gmx.net 7;; Author: kai.grossjohann@gmx.net
7;; Keywords: comm, extensions, processes 8;; Keywords: comm, extensions, processes
@@ -31,6 +32,10 @@
31(eval-when-compile (require 'cl)) 32(eval-when-compile (require 'cl))
32(require 'compile) 33(require 'compile)
33(require 'tramp) 34(require 'tramp)
35(add-hook 'tramp-util-unload-hook
36 '(lambda ()
37 (when (featurep 'tramp)
38 (unload-feature 'tramp 'force))))
34 39
35;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp 40;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
36;; specific functions, like compilation. 41;; specific functions, like compilation.
@@ -42,7 +47,7 @@
42 (defalias 'define-minor-mode 'identity) 47 (defalias 'define-minor-mode 'identity)
43 (defvar tramp-minor-mode)) 48 (defvar tramp-minor-mode))
44 (unless (featurep 'xemacs) 49 (unless (featurep 'xemacs)
45 (defalias 'add-menu-button 'identity))) 50 (defalias 'add-menu-button 'ignore)))
46 51
47(defvar tramp-minor-mode-map (make-sparse-keymap) 52(defvar tramp-minor-mode-map (make-sparse-keymap)
48 "Keymap for Tramp minor mode.") 53 "Keymap for Tramp minor mode.")
@@ -57,7 +62,14 @@
57 (and tramp-minor-mode (tramp-tramp-file-p default-directory)))) 62 (and tramp-minor-mode (tramp-tramp-file-p default-directory))))
58 63
59(add-hook 'find-file-hooks 'tramp-minor-mode t) 64(add-hook 'find-file-hooks 'tramp-minor-mode t)
65(add-hook 'tramp-util-unload-hook
66 '(lambda ()
67 (remove-hook 'find-file-hooks 'tramp-minor-mode)))
68
60(add-hook 'dired-mode-hook 'tramp-minor-mode t) 69(add-hook 'dired-mode-hook 'tramp-minor-mode t)
70(add-hook 'tramp-util-unload-hook
71 '(lambda ()
72 (remove-hook 'dired-mode-hook 'tramp-minor-mode)))
61 73
62(defun tramp-remap-command (old-command new-command) 74(defun tramp-remap-command (old-command new-command)
63 "Replaces bindings of OLD-COMMAND by NEW-COMMAND. 75 "Replaces bindings of OLD-COMMAND by NEW-COMMAND.
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
index c1806a4be24..368d85c8e57 100644
--- a/lisp/net/tramp-vc.el
+++ b/lisp/net/tramp-vc.el
@@ -1,7 +1,7 @@
1;;; tramp-vc.el --- Version control integration for TRAMP.el 1;;; tramp-vc.el --- Version control integration for TRAMP.el
2 2
3;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 3;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Daniel Pittman <daniel@danann.net> 6;; Author: Daniel Pittman <daniel@danann.net>
7;; Keywords: comm, processes 7;; Keywords: comm, processes
@@ -220,34 +220,37 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
220;; Daniel Pittman <daniel@danann.net> 220;; Daniel Pittman <daniel@danann.net>
221;;-(if (fboundp 'vc-call-backend) 221;;-(if (fboundp 'vc-call-backend)
222;;- () ;; This is the new VC for which we don't have an appropriate advice yet 222;;- () ;; This is the new VC for which we don't have an appropriate advice yet
223;;-)
223(unless (fboundp 'process-file) 224(unless (fboundp 'process-file)
224(if (fboundp 'vc-call-backend) 225 (if (fboundp 'vc-call-backend)
226 (defadvice vc-do-command
227 (around tramp-advice-vc-do-command
228 (buffer okstatus command file &rest flags)
229 activate)
230 "Invoke tramp-vc-do-command for tramp files."
231 (let ((file (symbol-value 'file))) ;pacify byte-compiler
232 (if (or (and (stringp file) (tramp-tramp-file-p file))
233 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
234 (setq ad-return-value
235 (apply 'tramp-vc-do-command-new buffer okstatus command
236 file ;(or file (buffer-file-name))
237 flags))
238 ad-do-it)))
225 (defadvice vc-do-command 239 (defadvice vc-do-command
226 (around tramp-advice-vc-do-command 240 (around tramp-advice-vc-do-command
227 (buffer okstatus command file &rest flags) 241 (buffer okstatus command file last &rest flags)
228 activate) 242 activate)
229 "Invoke tramp-vc-do-command for tramp files." 243 "Invoke tramp-vc-do-command for tramp files."
230 (let ((file (symbol-value 'file))) ;pacify byte-compiler 244 (let ((file (symbol-value 'file))) ;pacify byte-compiler
231 (if (or (and (stringp file) (tramp-tramp-file-p file)) 245 (if (or (and (stringp file) (tramp-tramp-file-p file))
232 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))) 246 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
233 (setq ad-return-value 247 (setq ad-return-value
234 (apply 'tramp-vc-do-command-new buffer okstatus command 248 (apply 'tramp-vc-do-command buffer okstatus command
235 file ;(or file (buffer-file-name)) 249 (or file (buffer-file-name)) last flags))
236 flags)) 250 ad-do-it))))
237 ad-do-it))) 251
238 (defadvice vc-do-command 252 (add-hook 'tramp-unload-hook
239 (around tramp-advice-vc-do-command 253 '(lambda () (ad-unadvise 'vc-do-command))))
240 (buffer okstatus command file last &rest flags)
241 activate)
242 "Invoke tramp-vc-do-command for tramp files."
243 (let ((file (symbol-value 'file))) ;pacify byte-compiler
244 (if (or (and (stringp file) (tramp-tramp-file-p file))
245 (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))))
246 (setq ad-return-value
247 (apply 'tramp-vc-do-command buffer okstatus command
248 (or file (buffer-file-name)) last flags))
249 ad-do-it)))))
250;;-)
251 254
252 255
253;; XEmacs uses this to do some of its work. Like vc-do-command, we 256;; XEmacs uses this to do some of its work. Like vc-do-command, we
@@ -324,6 +327,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
324 (or file (buffer-file-name)) args)) 327 (or file (buffer-file-name)) args))
325 ad-do-it))) 328 ad-do-it)))
326 329
330(add-hook 'tramp-unload-hook
331 '(lambda () (ad-unadvise 'vc-simple-command)))
332
327 333
328;; `vc-workfile-unchanged-p' 334;; `vc-workfile-unchanged-p'
329;; This function does not deal well with remote files, so we do the 335;; This function does not deal well with remote files, so we do the
@@ -364,6 +370,9 @@ Since TRAMP doesn't do async commands yet, this function doesn't, either."
364 (tramp-vc-workfile-unchanged-p filename want-differences-if-changed)) 370 (tramp-vc-workfile-unchanged-p filename want-differences-if-changed))
365 ad-do-it)) 371 ad-do-it))
366 372
373(add-hook 'tramp-unload-hook
374 '(lambda () (ad-unadvise 'vc-workfile-unchanged-p)))
375
367 376
368;; Redefine a function from vc.el -- allow tramp files. 377;; Redefine a function from vc.el -- allow tramp files.
369;; `save-match-data' seems not to be required -- it isn't in 378;; `save-match-data' seems not to be required -- it isn't in
@@ -445,6 +454,9 @@ filename we are thinking about..."
445 (tramp-handle-vc-user-login-name uid)))) ; get the owner name 454 (tramp-handle-vc-user-login-name uid)))) ; get the owner name
446 ad-do-it))) ; else call the original 455 ad-do-it))) ; else call the original
447 456
457(add-hook 'tramp-unload-hook
458 '(lambda () (ad-unadvise 'vc-user-login-name)))
459
448 460
449;; Determine the name of the user owning a file. 461;; Determine the name of the user owning a file.
450(defun tramp-file-owner (filename) 462(defun tramp-file-owner (filename)
@@ -486,6 +498,9 @@ filename we are thinking about..."
486 (tramp-file-owner filename)))) ; get the owner name 498 (tramp-file-owner filename)))) ; get the owner name
487 ad-do-it))) ; else call the original 499 ad-do-it))) ; else call the original
488 500
501(add-hook 'tramp-unload-hook
502 '(lambda () (ad-unadvise 'vc-file-owner)))
503
489 504
490;; We need to make the version control software backend version 505;; We need to make the version control software backend version
491;; information local to the current buffer. This is because each TRAMP 506;; information local to the current buffer. This is because each TRAMP
@@ -506,7 +521,11 @@ This makes remote VC work correctly at the cost of some processing time."
506 (tramp-tramp-file-p (buffer-file-name))) 521 (tramp-tramp-file-p (buffer-file-name)))
507 (make-local-variable 'vc-rcs-release) 522 (make-local-variable 'vc-rcs-release)
508 (setq vc-rcs-release nil))) 523 (setq vc-rcs-release nil)))
524
509(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t) 525(add-hook 'find-file-hooks 'tramp-vc-setup-for-remote t)
526(add-hook 'tramp-unload-hook
527 '(lambda ()
528 (remove-hook 'find-file-hooks 'tramp-vc-setup-for-remote)))
510 529
511;; No need to load this again if anyone asks. 530;; No need to load this again if anyone asks.
512(provide 'tramp-vc) 531(provide 'tramp-vc)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 8555c9a83c5..10a5dd9eedf 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2,7 +2,7 @@
2;;; tramp.el --- Transparent Remote Access, Multiple Protocol 2;;; tramp.el --- Transparent Remote Access, Multiple Protocol
3 3
4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 4;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
5;; 2005 Free Software Foundation, Inc. 5;; 2005, 2006 Free Software Foundation, Inc.
6 6
7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net> 7;; Author: Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
8;; Michael Albinus <michael.albinus@gmx.de> 8;; Michael Albinus <michael.albinus@gmx.de>
@@ -67,8 +67,15 @@
67 67
68;; The Tramp version number and bug report address, as prepared by configure. 68;; The Tramp version number and bug report address, as prepared by configure.
69(require 'trampver) 69(require 'trampver)
70(add-hook 'tramp-unload-hook
71 '(lambda ()
72 (when (featurep 'trampver)
73 (unload-feature 'trampver 'force))))
74
75(if (featurep 'xemacs)
76 (require 'timer-funcs)
77 (require 'timer))
70 78
71(require 'timer)
72(require 'format-spec) ;from Gnus 5.8, also in tar ball 79(require 'format-spec) ;from Gnus 5.8, also in tar ball
73;; As long as password.el is not part of (X)Emacs, it shouldn't 80;; As long as password.el is not part of (X)Emacs, it shouldn't
74;; be mandatory 81;; be mandatory
@@ -87,6 +94,10 @@
87 94
88(autoload 'tramp-uuencode-region "tramp-uu" 95(autoload 'tramp-uuencode-region "tramp-uu"
89 "Implementation of `uuencode' in Lisp.") 96 "Implementation of `uuencode' in Lisp.")
97(add-hook 'tramp-unload-hook
98 '(lambda ()
99 (when (featurep 'tramp-uu)
100 (unload-feature 'tramp-uu 'force))))
90 101
91(unless (fboundp 'uudecode-decode-region) 102(unless (fboundp 'uudecode-decode-region)
92 (autoload 'uudecode-decode-region "uudecode")) 103 (autoload 'uudecode-decode-region "uudecode"))
@@ -110,10 +121,20 @@ Nil means to use a separate filename syntax for Tramp.")
110;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore. 121;; tramp-ftp supports Ange-FTP only. Not suited for XEmacs therefore.
111(unless (featurep 'xemacs) 122(unless (featurep 'xemacs)
112 (eval-after-load "tramp" 123 (eval-after-load "tramp"
113 '(require 'tramp-ftp))) 124 '(progn
125 (require 'tramp-ftp)
126 (add-hook 'tramp-unload-hook
127 '(lambda ()
128 (when (featurep 'tramp-ftp)
129 (unload-feature 'tramp-ftp 'force)))))))
114(when (and tramp-unified-filenames (featurep 'xemacs)) 130(when (and tramp-unified-filenames (featurep 'xemacs))
115 (eval-after-load "tramp" 131 (eval-after-load "tramp"
116 '(require 'tramp-efs))) 132 '(progn
133 (require 'tramp-efs)
134 (add-hook 'tramp-unload-hook
135 '(lambda ()
136 (when (featurep 'tramp-efs)
137 (unload-feature 'tramp-efs 'force)))))))
117 138
118;; tramp-smb uses "smbclient" from Samba. 139;; tramp-smb uses "smbclient" from Samba.
119;; Not available under Cygwin and Windows, because they don't offer 140;; Not available under Cygwin and Windows, because they don't offer
@@ -121,7 +142,12 @@ Nil means to use a separate filename syntax for Tramp.")
121;; UNC file names like "//host/share/localname". 142;; UNC file names like "//host/share/localname".
122(unless (memq system-type '(cygwin windows-nt)) 143(unless (memq system-type '(cygwin windows-nt))
123 (eval-after-load "tramp" 144 (eval-after-load "tramp"
124 '(require 'tramp-smb))) 145 '(progn
146 (require 'tramp-smb)
147 (add-hook 'tramp-unload-hook
148 '(lambda ()
149 (when (featurep 'tramp-smb)
150 (unload-feature 'tramp-smb 'force)))))))
125 151
126(eval-when-compile 152(eval-when-compile
127 (require 'cl) 153 (require 'cl)
@@ -1445,7 +1471,7 @@ the visited file modtime.")
1445 ((fboundp 'md5-encode) 1471 ((fboundp 'md5-encode)
1446 (lambda (x) (base64-encode-string 1472 (lambda (x) (base64-encode-string
1447 (funcall (symbol-function 'md5-encode) x)))) 1473 (funcall (symbol-function 'md5-encode) x))))
1448 (t (error "Coulnd't find an `md5' function"))) 1474 (t (error "Couldn't find an `md5' function")))
1449 "Function to call for running the MD5 algorithm.") 1475 "Function to call for running the MD5 algorithm.")
1450 1476
1451(defvar tramp-end-of-output 1477(defvar tramp-end-of-output
@@ -2012,6 +2038,7 @@ The intent is to protect against `obsolete variable' warnings."
2012 (let ((,variable ,value)) 2038 (let ((,variable ,value))
2013 ,@body))) 2039 ,@body)))
2014(put 'tramp-let-maybe 'lisp-indent-function 2) 2040(put 'tramp-let-maybe 'lisp-indent-function 2)
2041(put 'tramp-let-maybe 'edebug-form-spec t)
2015 2042
2016;;; Config Manipulation Functions: 2043;;; Config Manipulation Functions:
2017 2044
@@ -2370,8 +2397,8 @@ target of the symlink differ."
2370 ;; 8. File modes, as a string of ten letters or dashes as in ls -l. 2397 ;; 8. File modes, as a string of ten letters or dashes as in ls -l.
2371 res-filemodes 2398 res-filemodes
2372 ;; 9. t iff file's gid would change if file were deleted and 2399 ;; 9. t iff file's gid would change if file were deleted and
2373 ;; recreated. 2400 ;; recreated. Will be set in `tramp-convert-file-attributes'
2374 nil ;hm? 2401 t
2375 ;; 10. inode number. 2402 ;; 10. inode number.
2376 res-inode 2403 res-inode
2377 ;; 11. Device number. Will be replaced by a virtual device number. 2404 ;; 11. Device number. Will be replaced by a virtual device number.
@@ -2627,9 +2654,12 @@ of."
2627(defun tramp-handle-file-ownership-preserved-p (filename) 2654(defun tramp-handle-file-ownership-preserved-p (filename)
2628 "Like `file-ownership-preserved-p' for tramp files." 2655 "Like `file-ownership-preserved-p' for tramp files."
2629 (with-parsed-tramp-file-name filename nil 2656 (with-parsed-tramp-file-name filename nil
2630 (or (not (file-exists-p filename)) 2657 (let ((attributes (file-attributes filename)))
2631 ;; Existing files must be writable. 2658 ;; Return t if the file doesn't exist, since it's true that no
2632 (zerop (tramp-run-test "-O" filename))))) 2659 ;; information would be lost by an (attempted) delete and create.
2660 (or (null attributes)
2661 (= (nth 2 attributes)
2662 (tramp-get-remote-uid multi-method method user host))))))
2633 2663
2634;; Other file name ops. 2664;; Other file name ops.
2635 2665
@@ -3487,6 +3517,17 @@ the result will be a local, non-Tramp, filename."
3487 (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname) 3517 (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname)
3488 (let ((uname (match-string 1 localname)) 3518 (let ((uname (match-string 1 localname))
3489 (fname (match-string 2 localname))) 3519 (fname (match-string 2 localname)))
3520 ;; We cannot simply apply "~/", because under sudo "~/" is
3521 ;; expanded to the local user home directory but to the
3522 ;; root home directory. On the other hand, using always
3523 ;; the default user name for tilde expansion is not
3524 ;; appropriate either, because ssh and companions might
3525 ;; use a user name from the config file.
3526 (when (and (string-equal uname "~")
3527 (string-match
3528 "\\`su\\(do\\)?\\'"
3529 (tramp-find-method multi-method method user host)))
3530 (setq uname (concat uname (or user "root"))))
3490 ;; CCC fanatic error checking? 3531 ;; CCC fanatic error checking?
3491 (set-buffer (tramp-get-buffer multi-method method user host)) 3532 (set-buffer (tramp-get-buffer multi-method method user host))
3492 (erase-buffer) 3533 (erase-buffer)
@@ -3499,17 +3540,24 @@ the result will be a local, non-Tramp, filename."
3499 (setq uname (buffer-substring (point) (tramp-line-end-position))) 3540 (setq uname (buffer-substring (point) (tramp-line-end-position)))
3500 (setq localname (concat uname fname)) 3541 (setq localname (concat uname fname))
3501 (erase-buffer))) 3542 (erase-buffer)))
3543 ;; There might be a double slash, for example when "~/"
3544 ;; expands to "/". Remove this.
3545 (while (string-match "//" localname)
3546 (setq localname (replace-match "/" t t localname)))
3502 ;; No tilde characters in file name, do normal 3547 ;; No tilde characters in file name, do normal
3503 ;; expand-file-name (this does "/./" and "/../"). We bind 3548 ;; expand-file-name (this does "/./" and "/../"). We bind
3504 ;; directory-sep-char here for XEmacs on Windows, which 3549 ;; directory-sep-char here for XEmacs on Windows, which would
3505 ;; would otherwise use backslash. 3550 ;; otherwise use backslash. `default-directory' is bound to
3551 ;; "/", because on Windows there would be problems with UNC
3552 ;; shares or Cygwin mounts.
3506 (tramp-let-maybe directory-sep-char ?/ 3553 (tramp-let-maybe directory-sep-char ?/
3507 (tramp-make-tramp-file-name 3554 (let ((default-directory "/"))
3508 multi-method (or method (tramp-find-default-method user host)) 3555 (tramp-make-tramp-file-name
3509 user host 3556 multi-method (or method (tramp-find-default-method user host))
3510 (tramp-drop-volume-letter 3557 user host
3511 (tramp-run-real-handler 'expand-file-name 3558 (tramp-drop-volume-letter
3512 (list localname))))))))) 3559 (tramp-run-real-handler 'expand-file-name
3560 (list localname))))))))))
3513 3561
3514;; old version follows. it uses ".." to cross file handler 3562;; old version follows. it uses ".." to cross file handler
3515;; boundaries. 3563;; boundaries.
@@ -4294,6 +4342,17 @@ Falls back to normal file name handler if no tramp file name handler exists."
4294 (cons tramp-completion-file-name-regexp 4342 (cons tramp-completion-file-name-regexp
4295 'tramp-completion-file-name-handler)) 4343 'tramp-completion-file-name-handler))
4296 4344
4345;;;###autoload
4346(defun tramp-unload-file-name-handler-alist ()
4347 (setq file-name-handler-alist
4348 (delete (rassoc 'tramp-file-name-handler
4349 file-name-handler-alist)
4350 (delete (rassoc 'tramp-completion-file-name-handler
4351 file-name-handler-alist)
4352 file-name-handler-alist))))
4353
4354(add-hook 'tramp-unload-hook 'tramp-unload-file-name-handler-alist)
4355
4297(defun tramp-repair-jka-compr () 4356(defun tramp-repair-jka-compr ()
4298 "If jka-compr is already loaded, move it to the front of 4357 "If jka-compr is already loaded, move it to the front of
4299`file-name-handler-alist'. On Emacs 22 or so this will not be 4358`file-name-handler-alist'. On Emacs 22 or so this will not be
@@ -4353,22 +4412,16 @@ necessary anymore."
4353 (read (current-buffer)))))) 4412 (read (current-buffer))))))
4354 (list (expand-file-name name)))))) 4413 (list (expand-file-name name))))))
4355 4414
4356;; Check for complete.el and override PC-expand-many-files if appropriate. 4415(eval-after-load "complete"
4357(eval-and-compile 4416 '(progn
4358 (defun tramp-save-PC-expand-many-files (name))); avoid compiler warning 4417 (defadvice PC-expand-many-files
4359 4418 (around tramp-advice-PC-expand-many-files (name) activate)
4360(defun tramp-setup-complete () 4419 "Invoke `tramp-handle-expand-many-files' for tramp files."
4361 (fset 'tramp-save-PC-expand-many-files 4420 (if (tramp-tramp-file-p name)
4362 (symbol-function 'PC-expand-many-files)) 4421 (setq ad-return-value (tramp-handle-expand-many-files name))
4363 (defun PC-expand-many-files (name) 4422 ad-do-it))
4364 (if (tramp-tramp-file-p name) 4423 (add-hook 'tramp-unload-hook
4365 (funcall (symbol-function 'expand-many-files) name) 4424 '(lambda () (ad-unadvise 'PC-expand-many-files)))))
4366 (tramp-save-PC-expand-many-files name))))
4367
4368;; Why isn't eval-after-load sufficient?
4369(if (fboundp 'PC-expand-many-files)
4370 (tramp-setup-complete)
4371 (eval-after-load "complete" '(tramp-setup-complete)))
4372 4425
4373;;; File name handler functions for completion mode 4426;;; File name handler functions for completion mode
4374 4427
@@ -4940,6 +4993,9 @@ Function may have 0-3 parameters."
4940 auto-save-default) 4993 auto-save-default)
4941 (auto-save-mode 1))) 4994 (auto-save-mode 1)))
4942(add-hook 'find-file-hooks 'tramp-set-auto-save t) 4995(add-hook 'find-file-hooks 'tramp-set-auto-save t)
4996(add-hook 'tramp-unload-hook
4997 '(lambda ()
4998 (remove-hook 'find-file-hooks 'tramp-set-auto-save)))
4943 4999
4944(defun tramp-run-test (switch filename) 5000(defun tramp-run-test (switch filename)
4945 "Run `test' on the remote system, given a SWITCH and a FILENAME. 5001 "Run `test' on the remote system, given a SWITCH and a FILENAME.
@@ -5532,6 +5588,7 @@ Maybe the different regular expressions need to be tuned.
5532 (or user (user-login-name)) host method) 5588 (or user (user-login-name)) host method)
5533 (let ((process-environment (copy-sequence process-environment))) 5589 (let ((process-environment (copy-sequence process-environment)))
5534 (setenv "TERM" tramp-terminal-type) 5590 (setenv "TERM" tramp-terminal-type)
5591 (setenv "PS1" "$ ")
5535 (let* ((default-directory (tramp-temporary-file-directory)) 5592 (let* ((default-directory (tramp-temporary-file-directory))
5536 ;; If we omit the conditional here, then we would use 5593 ;; If we omit the conditional here, then we would use
5537 ;; `undecided-dos' in some cases. With the conditional, 5594 ;; `undecided-dos' in some cases. With the conditional,
@@ -5608,6 +5665,7 @@ arguments, and xx will be used as the host name to connect to.
5608 (setq login-args (cons "-p" (cons (match-string 2 host) login-args))) 5665 (setq login-args (cons "-p" (cons (match-string 2 host) login-args)))
5609 (setq real-host (match-string 1 host))) 5666 (setq real-host (match-string 1 host)))
5610 (setenv "TERM" tramp-terminal-type) 5667 (setenv "TERM" tramp-terminal-type)
5668 (setenv "PS1" "$ ")
5611 (let* ((default-directory (tramp-temporary-file-directory)) 5669 (let* ((default-directory (tramp-temporary-file-directory))
5612 ;; If we omit the conditional, we would use 5670 ;; If we omit the conditional, we would use
5613 ;; `undecided-dos' in some cases. With the conditional, 5671 ;; `undecided-dos' in some cases. With the conditional,
@@ -5659,6 +5717,7 @@ prompt than you do, so it is not at all unlikely that the variable
5659 (or user "<root>") method) 5717 (or user "<root>") method)
5660 (let ((process-environment (copy-sequence process-environment))) 5718 (let ((process-environment (copy-sequence process-environment)))
5661 (setenv "TERM" tramp-terminal-type) 5719 (setenv "TERM" tramp-terminal-type)
5720 (setenv "PS1" "$ ")
5662 (let* ((default-directory (tramp-temporary-file-directory)) 5721 (let* ((default-directory (tramp-temporary-file-directory))
5663 ;; If we omit the conditional, we use `undecided-dos' in 5722 ;; If we omit the conditional, we use `undecided-dos' in
5664 ;; some cases. With the conditional, we use nil in these 5723 ;; some cases. With the conditional, we use nil in these
@@ -5723,6 +5782,7 @@ log in as u2 to h2."
5723 (tramp-message 7 "Opening `%s' connection..." multi-method) 5782 (tramp-message 7 "Opening `%s' connection..." multi-method)
5724 (let ((process-environment (copy-sequence process-environment))) 5783 (let ((process-environment (copy-sequence process-environment)))
5725 (setenv "TERM" tramp-terminal-type) 5784 (setenv "TERM" tramp-terminal-type)
5785 (setenv "PS1" "$ ")
5726 (let* ((default-directory (tramp-temporary-file-directory)) 5786 (let* ((default-directory (tramp-temporary-file-directory))
5727 ;; If we omit the conditional, we use `undecided-dos' in 5787 ;; If we omit the conditional, we use `undecided-dos' in
5728 ;; some cases. With the conditional, we use nil in these 5788 ;; some cases. With the conditional, we use nil in these
@@ -6203,8 +6263,17 @@ locale to C and sets up the remote shell search path."
6203 "ln" tramp-remote-path nil))) 6263 "ln" tramp-remote-path nil)))
6204 (when ln 6264 (when ln
6205 (tramp-set-connection-property "ln" ln multi-method method user host))) 6265 (tramp-set-connection-property "ln" ln multi-method method user host)))
6266 ;; Set uid and gid.
6206 (erase-buffer) 6267 (erase-buffer)
6268 (tramp-send-command multi-method method user host "id -u; id -g")
6269 (tramp-wait-for-output)
6270 (goto-char (point-min))
6271 (tramp-set-connection-property
6272 "uid" (read (current-buffer)) multi-method method user host)
6273 (tramp-set-connection-property
6274 "gid" (read (current-buffer)) multi-method method user host)
6207 ;; Find the right encoding/decoding commands to use. 6275 ;; Find the right encoding/decoding commands to use.
6276 (erase-buffer)
6208 (unless (tramp-method-out-of-band-p multi-method method user host) 6277 (unless (tramp-method-out-of-band-p multi-method method user host)
6209 (tramp-find-inline-encoding multi-method method user host)) 6278 (tramp-find-inline-encoding multi-method method user host))
6210 ;; If encoding/decoding command are given, test to see if they work. 6279 ;; If encoding/decoding command are given, test to see if they work.
@@ -6700,6 +6769,10 @@ Return ATTR."
6700 (unless (stringp (nth 8 attr)) 6769 (unless (stringp (nth 8 attr))
6701 ;; Convert file mode bits to string. 6770 ;; Convert file mode bits to string.
6702 (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr)))) 6771 (setcar (nthcdr 8 attr) (tramp-file-mode-from-int (nth 8 attr))))
6772 ;; Set file's gid change bit.
6773 (setcar (nthcdr 9 attr)
6774 (not (= (nth 3 attr)
6775 (tramp-get-remote-gid multi-method method user host))))
6703 ;; Set virtual device number. 6776 ;; Set virtual device number.
6704 (setcar (nthcdr 11 attr) 6777 (setcar (nthcdr 11 attr)
6705 (tramp-get-device multi-method method user host)) 6778 (tramp-get-device multi-method method user host))
@@ -6957,6 +7030,12 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
6957(defun tramp-get-remote-ln (multi-method method user host) 7030(defun tramp-get-remote-ln (multi-method method user host)
6958 (tramp-get-connection-property "ln" nil multi-method method user host)) 7031 (tramp-get-connection-property "ln" nil multi-method method user host))
6959 7032
7033(defun tramp-get-remote-uid (multi-method method user host)
7034 (tramp-get-connection-property "uid" nil multi-method method user host))
7035
7036(defun tramp-get-remote-gid (multi-method method user host)
7037 (tramp-get-connection-property "gid" nil multi-method method user host))
7038
6960;; Get a property of a TRAMP connection. 7039;; Get a property of a TRAMP connection.
6961(defun tramp-get-connection-property 7040(defun tramp-get-connection-property
6962 (property default multi-method method user host) 7041 (property default multi-method method user host)
@@ -6967,7 +7046,7 @@ If the value is not set for the connection, return `default'"
6967 (let (error) 7046 (let (error)
6968 (condition-case nil 7047 (condition-case nil
6969 (symbol-value (intern (concat "tramp-connection-property-" property))) 7048 (symbol-value (intern (concat "tramp-connection-property-" property)))
6970 (error default))))) 7049 (error default)))))
6971 7050
6972;; Set a property of a TRAMP connection. 7051;; Set a property of a TRAMP connection.
6973(defun tramp-set-connection-property 7052(defun tramp-set-connection-property
@@ -7045,7 +7124,9 @@ as default."
7045 "Invoke `tramp-handle-make-auto-save-file-name' for tramp files." 7124 "Invoke `tramp-handle-make-auto-save-file-name' for tramp files."
7046 (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name))) 7125 (if (and (buffer-file-name) (tramp-tramp-file-p (buffer-file-name)))
7047 (setq ad-return-value (tramp-handle-make-auto-save-file-name)) 7126 (setq ad-return-value (tramp-handle-make-auto-save-file-name))
7048 ad-do-it))) 7127 ad-do-it))
7128 (add-hook 'tramp-unload-hook
7129 '(lambda () (ad-unadvise 'make-auto-save-file-name))))
7049 7130
7050;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have 7131;; In Emacs < 22 and XEmacs < 21.5 autosaved remote files have
7051;; permission 0666 minus umask. This is a security threat. 7132;; permission 0666 minus umask. This is a security threat.
@@ -7069,7 +7150,10 @@ as default."
7069 (and (featurep 'xemacs) 7150 (and (featurep 'xemacs)
7070 (= emacs-major-version 21) 7151 (= emacs-major-version 21)
7071 (> emacs-minor-version 4))) 7152 (> emacs-minor-version 4)))
7072 (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)) 7153 (add-hook 'auto-save-hook 'tramp-set-auto-save-file-modes)
7154 (add-hook 'tramp-unload-hook
7155 '(lambda ()
7156 (remove-hook 'auto-save-hook 'tramp-set-auto-save-file-modes))))
7073 7157
7074(defun tramp-subst-strs-in-string (alist string) 7158(defun tramp-subst-strs-in-string (alist string)
7075 "Replace all occurrences of the string FROM with TO in STRING. 7159 "Replace all occurrences of the string FROM with TO in STRING.
@@ -7296,7 +7380,9 @@ Only works for Bourne-like shells."
7296 (setq ad-return-value (list name)))) 7380 (setq ad-return-value (list name))))
7297 ;; If it is not a Tramp file, just run the original function. 7381 ;; If it is not a Tramp file, just run the original function.
7298 (let ((res ad-do-it)) 7382 (let ((res ad-do-it))
7299 (setq ad-return-value (or res (list name)))))))) 7383 (setq ad-return-value (or res (list name)))))))
7384 (add-hook 'tramp-unload-hook
7385 '(lambda () (ad-unadvise 'file-expand-wildcards))))
7300 7386
7301;; Tramp version is useful in a number of situations. 7387;; Tramp version is useful in a number of situations.
7302 7388
@@ -7521,6 +7607,25 @@ Therefore, the contents of files might be included in the debug buffer(s).")
7521 7607
7522(defalias 'tramp-submit-bug 'tramp-bug) 7608(defalias 'tramp-submit-bug 'tramp-bug)
7523 7609
7610;; Checklist for `tramp-unload-hook'
7611;; - Unload all `tramp-*' packages
7612;; - Reset `file-name-handler-alist'
7613;; - Cleanup hooks where Tramp functions are in
7614;; - Cleanup advised functions
7615;; - Cleanup autoloads
7616;;;###autoload
7617(defun tramp-unload-tramp ()
7618 (interactive)
7619 ;; When Tramp is not loaded yet, its autoloads are still active.
7620 (tramp-unload-file-name-handler-alist)
7621 ;; ange-ftp settings must be enabled.
7622 (when (functionp 'tramp-ftp-enable-ange-ftp)
7623 (funcall (symbol-function 'tramp-ftp-enable-ange-ftp)))
7624 ;; `tramp-util' unloads also `tramp'.
7625 (condition-case nil ;; maybe its not loaded yet.
7626 (unload-feature (if (featurep 'tramp-util) 'tramp-util 'tramp) 'force)
7627 (error nil)))
7628
7524(provide 'tramp) 7629(provide 'tramp)
7525 7630
7526;; Make sure that we get integration with the VC package. 7631;; Make sure that we get integration with the VC package.
@@ -7528,7 +7633,12 @@ Therefore, the contents of files might be included in the debug buffer(s).")
7528;; This must come after (provide 'tramp) because tramp-vc.el 7633;; This must come after (provide 'tramp) because tramp-vc.el
7529;; requires tramp. 7634;; requires tramp.
7530(eval-after-load "vc" 7635(eval-after-load "vc"
7531 '(require 'tramp-vc)) 7636 '(progn
7637 (require 'tramp-vc)
7638 (add-hook 'tramp-unload-hook
7639 '(lambda ()
7640 (when (featurep 'tramp-vc)
7641 (unload-feature 'tramp-vc 'force))))))
7532 7642
7533;;; TODO: 7643;;; TODO:
7534 7644
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 650f1a727a7..632d958249d 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -30,7 +30,7 @@
30;; are auto-frobbed from configure.ac, so you should edit that file and run 30;; are auto-frobbed from configure.ac, so you should edit that file and run
31;; "autoconf && ./configure" to change them. 31;; "autoconf && ./configure" to change them.
32 32
33(defconst tramp-version "2.0.51" 33(defconst tramp-version "2.0.52"
34 "This version of Tramp.") 34 "This version of Tramp.")
35 35
36(defconst tramp-bug-report-address "tramp-devel@gnu.org" 36(defconst tramp-bug-report-address "tramp-devel@gnu.org"
diff --git a/lisp/outline.el b/lisp/outline.el
index 8a05aaf0cd9..eed84bd61c7 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -803,11 +803,12 @@ Show the heading too, if it is currently invisible."
803 (outline-flag-subtree t)) 803 (outline-flag-subtree t))
804 804
805(defun hide-leaves () 805(defun hide-leaves ()
806 "Hide all body after this heading at deeper levels." 806 "Hide the body after this heading and at deeper levels."
807 (interactive) 807 (interactive)
808 (save-excursion 808 (save-excursion
809 (outline-back-to-heading) 809 (outline-back-to-heading)
810 (outline-end-of-heading) 810;; Turned off to fix bug reported by Otto Maddox on 22 Nov 2005.
811;; (outline-end-of-heading)
811 (hide-region-body (point) (progn (outline-end-of-subtree) (point))))) 812 (hide-region-body (point) (progn (outline-end-of-subtree) (point)))))
812 813
813(defun show-subtree () 814(defun show-subtree ()
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index 85e15470dbc..32dfd6254c3 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -89,7 +89,7 @@
89 (set what ww) 89 (set what ww)
90 first)) 90 first))
91 91
92(defvar doc-mode-map 92(defvar doctor-mode-map
93 (let ((map (make-sparse-keymap))) 93 (let ((map (make-sparse-keymap)))
94 (define-key map "\n" 'doctor-read-print) 94 (define-key map "\n" 'doctor-read-print)
95 (define-key map "\r" 'doctor-ret-or-read) 95 (define-key map "\r" 'doctor-ret-or-read)
diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el
index cf119bde719..06a141016e5 100644
--- a/lisp/progmodes/cpp.el
+++ b/lisp/progmodes/cpp.el
@@ -526,6 +526,8 @@ You can also use the keyboard accelerators indicated like this: [K]ey."
526 'cpp-edit-toggle-unknown) 526 'cpp-edit-toggle-unknown)
527 (insert (format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression" 527 (insert (format "\n\n\n%39s: %14s %14s %7s\n\n" "Expression"
528 "[T]rue Face" "[F]alse Face" "[W]rite")) 528 "[T]rue Face" "[F]alse Face" "[W]rite"))
529
530 (setq symbols (reverse symbols))
529 (while symbols 531 (while symbols
530 (let* ((symbol (car symbols)) 532 (let* ((symbol (car symbols))
531 (entry (assoc symbol cpp-edit-list)) 533 (entry (assoc symbol cpp-edit-list))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 6ed2e39e4e8..0ed58fd558e 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1743,7 +1743,7 @@ lines count as headers.
1743 (set (make-local-variable 'eldoc-documentation-function) 1743 (set (make-local-variable 'eldoc-documentation-function)
1744 #'python-eldoc-function) 1744 #'python-eldoc-function)
1745 (add-hook 'eldoc-mode-hook 1745 (add-hook 'eldoc-mode-hook
1746 '(lambda () (run-python 0 t)) nil t) ; need it running 1746 '(lambda () (run-python nil t)) nil t) ; need it running
1747 (if (featurep 'hippie-exp) 1747 (if (featurep 'hippie-exp)
1748 (set (make-local-variable 'hippie-expand-try-functions-list) 1748 (set (make-local-variable 'hippie-expand-try-functions-list)
1749 (cons 'python-try-complete hippie-expand-try-functions-list))) 1749 (cons 'python-try-complete hippie-expand-try-functions-list)))
diff --git a/lisp/ses.el b/lisp/ses.el
index 4c959c015a7..debb22d84db 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1,6 +1,6 @@
1;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*- 1;;; ses.el -- Simple Emacs Spreadsheet -*- coding: utf-8 -*-
2 2
3;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
4 4
5;; Author: Jonathan Yavner <jyavner@member.fsf.org> 5;; Author: Jonathan Yavner <jyavner@member.fsf.org>
6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org> 6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@@ -148,8 +148,7 @@ Each function is called with ARG=1."
148 (newmap (make-sparse-keymap))) 148 (newmap (make-sparse-keymap)))
149 (set-keymap-parent newmap minibuffer-local-map) 149 (set-keymap-parent newmap minibuffer-local-map)
150 (while keys 150 (while keys
151 (define-key newmap (car keys) (cadr keys)) 151 (define-key newmap (pop keys) (pop keys)))
152 (setq keys (cddr keys)))
153 newmap) 152 newmap)
154 "Local keymap for SES minibuffer cell-editing.") 153 "Local keymap for SES minibuffer cell-editing.")
155 154
@@ -1865,20 +1864,20 @@ cell formula was unsafe and user declined confirmation."
1865(defun ses-read-cell (row col newval) 1864(defun ses-read-cell (row col newval)
1866 "Self-insert for initial character of cell function." 1865 "Self-insert for initial character of cell function."
1867 (interactive 1866 (interactive
1868 (let ((initial (this-command-keys)) 1867 (let* ((initial (this-command-keys))
1869 (rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell)))) 1868 (rowcol (progn (ses-check-curcell) (ses-sym-rowcol ses--curcell)))
1869 (curval (ses-cell-formula (car rowcol) (cdr rowcol))))
1870 (barf-if-buffer-read-only) 1870 (barf-if-buffer-read-only)
1871 (if (string= initial "\"")
1872 (setq initial "\"\"") ;Enter a string
1873 (if (string= initial "(")
1874 (setq initial "()"))) ;Enter a formula list
1875 (list (car rowcol) 1871 (list (car rowcol)
1876 (cdr rowcol) 1872 (cdr rowcol)
1877 (read-from-minibuffer (format "Cell %s: " ses--curcell) 1873 (read-from-minibuffer
1878 (cons initial 2) 1874 (format "Cell %s: " ses--curcell)
1879 ses-mode-edit-map 1875 (cons (if (equal initial "\"") "\"\""
1880 t ;Convert to Lisp object 1876 (if (equal initial "(") "()" initial)) 2)
1881 'ses-read-cell-history)))) 1877 ses-mode-edit-map
1878 t ;Convert to Lisp object
1879 'ses-read-cell-history
1880 (prin1-to-string curval)))))
1882 (when (ses-edit-cell row col newval) 1881 (when (ses-edit-cell row col newval)
1883 (ses-command-hook) ;Update cell widths before movement 1882 (ses-command-hook) ;Update cell widths before movement
1884 (dolist (x ses-after-entry-functions) 1883 (dolist (x ses-after-entry-functions)
diff --git a/lisp/simple.el b/lisp/simple.el
index 1f00d52155e..087961fabac 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1,7 +1,7 @@
1;;; simple.el --- basic editing commands for Emacs 1;;; simple.el --- basic editing commands for Emacs
2 2
3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 3;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 4;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Maintainer: FSF 6;; Maintainer: FSF
7;; Keywords: internal 7;; Keywords: internal
@@ -3185,8 +3185,9 @@ for mark off the local mark ring \(this does not affect the global
3185mark ring\). Use \\[pop-global-mark] to jump to a mark off the global 3185mark ring\). Use \\[pop-global-mark] to jump to a mark off the global
3186mark ring \(see `pop-global-mark'\). 3186mark ring \(see `pop-global-mark'\).
3187 3187
3188Repeating the \\[set-mark-command] command without the prefix jumps to 3188If `set-mark-command-repeat-pop' is non-nil, repeating
3189the next position off the local (or global) mark ring. 3189the \\[set-mark-command] command with no prefix pops the next position
3190off the local (or global) mark ring and jumps there.
3190 3191
3191With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \ 3192With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \
3192\\[universal-argument] \\[set-mark-command], unconditionally 3193\\[universal-argument] \\[set-mark-command], unconditionally
@@ -3734,7 +3735,13 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
3734 (or arg (setq arg 1)) 3735 (or arg (setq arg 1))
3735 (if (/= arg 1) 3736 (if (/= arg 1)
3736 (line-move (1- arg) t)) 3737 (line-move (1- arg) t))
3737 (beginning-of-line 1) 3738
3739 ;; Move to beginning-of-line, ignoring fields and invisibles.
3740 (skip-chars-backward "^\n")
3741 (while (and (not (bobp)) (line-move-invisible-p (1- (point))))
3742 (goto-char (previous-char-property-change (1- (point))))
3743 (skip-chars-backward "^\n"))
3744
3738 (let ((orig (point))) 3745 (let ((orig (point)))
3739 (vertical-motion 0) 3746 (vertical-motion 0)
3740 (if (/= orig (point)) 3747 (if (/= orig (point))
@@ -5028,8 +5035,8 @@ select the completion near point.\n\n")))))
5028 (goto-char (point-min)) 5035 (goto-char (point-min))
5029 (search-forward "\n\n") 5036 (search-forward "\n\n")
5030 (forward-line 1)))) 5037 (forward-line 1))))
5031 5038
5032;; Support keyboard commands to turn on various modifiers. 5039;;; Support keyboard commands to turn on various modifiers.
5033 5040
5034;; These functions -- which are not commands -- each add one modifier 5041;; These functions -- which are not commands -- each add one modifier
5035;; to the following event. 5042;; to the following event.
@@ -5094,7 +5101,7 @@ PREFIX is the string that represents this modifier in an event type symbol."
5094(define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier) 5101(define-key function-key-map [?\C-x ?@ ?a] 'event-apply-alt-modifier)
5095(define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier) 5102(define-key function-key-map [?\C-x ?@ ?S] 'event-apply-shift-modifier)
5096(define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier) 5103(define-key function-key-map [?\C-x ?@ ?c] 'event-apply-control-modifier)
5097 5104
5098;;;; Keypad support. 5105;;;; Keypad support.
5099 5106
5100;;; Make the keypad keys act like ordinary typing keys. If people add 5107;;; Make the keypad keys act like ordinary typing keys. If people add
@@ -5189,7 +5196,8 @@ after it has been set up properly in other respects."
5189 (error "Cannot clone a file-visiting buffer")) 5196 (error "Cannot clone a file-visiting buffer"))
5190 (if (get major-mode 'no-clone) 5197 (if (get major-mode 'no-clone)
5191 (error "Cannot clone a buffer in %s mode" mode-name)) 5198 (error "Cannot clone a buffer in %s mode" mode-name))
5192 (list (if current-prefix-arg (read-string "Name: ")) 5199 (list (if current-prefix-arg
5200 (read-buffer "Name of new cloned buffer: " (current-buffer)))
5193 t))) 5201 t)))
5194 (if buffer-file-name 5202 (if buffer-file-name
5195 (error "Cannot clone a file-visiting buffer")) 5203 (error "Cannot clone a file-visiting buffer"))
@@ -5236,7 +5244,12 @@ after it has been set up properly in other respects."
5236 ;; Run any hooks (typically set up by the major mode 5244 ;; Run any hooks (typically set up by the major mode
5237 ;; for cloning to work properly). 5245 ;; for cloning to work properly).
5238 (run-hooks 'clone-buffer-hook)) 5246 (run-hooks 'clone-buffer-hook))
5239 (if display-flag (pop-to-buffer new)) 5247 (if display-flag
5248 ;; Presumably the current buffer is shown in the selected frame, so
5249 ;; we want to display the clone elsewhere.
5250 (let ((same-window-regexps nil)
5251 (same-window-buffer-names))
5252 (pop-to-buffer new)))
5240 new)) 5253 new))
5241 5254
5242 5255
@@ -5259,7 +5272,7 @@ front of the list of recently selected ones."
5259 (if (get major-mode 'no-clone-indirect) 5272 (if (get major-mode 'no-clone-indirect)
5260 (error "Cannot indirectly clone a buffer in %s mode" mode-name)) 5273 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
5261 (list (if current-prefix-arg 5274 (list (if current-prefix-arg
5262 (read-string "BName of indirect buffer: ")) 5275 (read-buffer "Name of indirect buffer: " (current-buffer)))
5263 t))) 5276 t)))
5264 (if (get major-mode 'no-clone-indirect) 5277 (if (get major-mode 'no-clone-indirect)
5265 (error "Cannot indirectly clone a buffer in %s mode" mode-name)) 5278 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
@@ -5278,7 +5291,13 @@ front of the list of recently selected ones."
5278Select the new buffer in another window. 5291Select the new buffer in another window.
5279Optional second arg NORECORD non-nil means do not put this buffer at 5292Optional second arg NORECORD non-nil means do not put this buffer at
5280the front of the list of recently selected ones." 5293the front of the list of recently selected ones."
5281 (interactive "bClone buffer in other window: ") 5294 (interactive
5295 (progn
5296 (if (get major-mode 'no-clone-indirect)
5297 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
5298 (list (if current-prefix-arg
5299 (read-buffer "Name of indirect buffer: " (current-buffer)))
5300 t)))
5282 (let ((pop-up-windows t)) 5301 (let ((pop-up-windows t))
5283 (set-buffer buffer) 5302 (set-buffer buffer)
5284 (clone-indirect-buffer nil t norecord))) 5303 (clone-indirect-buffer nil t norecord)))
diff --git a/lisp/startup.el b/lisp/startup.el
index df20bc14685..d2f5de838c8 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -41,7 +41,9 @@
41 :group 'internal) 41 :group 'internal)
42 42
43(defcustom inhibit-splash-screen nil 43(defcustom inhibit-splash-screen nil
44 "*Non-nil inhibits the startup screen. 44 "Non-nil inhibits the startup screen.
45It also inhibits display of the initial message in the *scratch* buffer.
46
45This is for use in your personal init file, once you are familiar 47This is for use in your personal init file, once you are familiar
46with the contents of the startup screen." 48with the contents of the startup screen."
47 :type 'boolean 49 :type 'boolean
@@ -1087,7 +1089,9 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
1087 1089
1088") 1090")
1089 "Initial message displayed in *scratch* buffer at startup. 1091 "Initial message displayed in *scratch* buffer at startup.
1090If this is nil, no message will be displayed." 1092If this is nil, no message will be displayed.
1093If `inhibit-splash-screen' is non-nil, then no message is displayed,
1094regardless of the value of this variable."
1091 :type '(choice (text :tag "Message") 1095 :type '(choice (text :tag "Message")
1092 (const :tag "none" nil)) 1096 (const :tag "none" nil))
1093 :group 'initialization) 1097 :group 'initialization)
@@ -1631,7 +1635,7 @@ normal otherwise."
1631 (longopts 1635 (longopts
1632 (append '(("--funcall") ("--load") ("--insert") ("--kill") 1636 (append '(("--funcall") ("--load") ("--insert") ("--kill")
1633 ("--directory") ("--eval") ("--execute") ("--no-splash") 1637 ("--directory") ("--eval") ("--execute") ("--no-splash")
1634 ("--find-file") ("--visit") ("--file")) 1638 ("--find-file") ("--visit") ("--file") ("--no-desktop"))
1635 (mapcar (lambda (elt) 1639 (mapcar (lambda (elt)
1636 (list (concat "-" (car elt)))) 1640 (list (concat "-" (car elt))))
1637 command-switch-alist))) 1641 command-switch-alist)))
@@ -1731,6 +1735,13 @@ normal otherwise."
1731 ((equal argi "-kill") 1735 ((equal argi "-kill")
1732 (kill-emacs t)) 1736 (kill-emacs t))
1733 1737
1738 ;; This is for when they use --no-desktop with -q, or
1739 ;; don't load Desktop in their .emacs. If desktop.el
1740 ;; _is_ loaded, it will handle this switch, and we
1741 ;; won't see it by the time we get here.
1742 ((equal argi "-no-desktop")
1743 (message "\"--no-desktop\" ignored because the Desktop package is not loaded"))
1744
1734 ((string-match "^\\+[0-9]+\\'" argi) 1745 ((string-match "^\\+[0-9]+\\'" argi)
1735 (setq line (string-to-number argi))) 1746 (setq line (string-to-number argi)))
1736 1747
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index ac067f34fef..a083d308036 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -1,7 +1,7 @@
1;;; w32-win.el --- parse switches controlling interface with W32 window system 1;;; w32-win.el --- parse switches controlling interface with W32 window system
2 2
3;; Copyright (C) 1993, 1994, 2002, 2003, 2004, 3;; Copyright (C) 1993, 1994, 2002, 2003, 2004,
4;; 2005 Free Software Foundation, Inc. 4;; 2005, 2006 Free Software Foundation, Inc.
5 5
6;; Author: Kevin Gallo 6;; Author: Kevin Gallo
7;; Keywords: terminals 7;; Keywords: terminals
@@ -1232,7 +1232,7 @@ font dialog to get the matching FONTS. Otherwise use a pop-up menu
1232 (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll") 1232 (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll")
1233 (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll") 1233 (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll")
1234 (tiff "libtiff3.dll" "libtiff.dll") 1234 (tiff "libtiff3.dll" "libtiff.dll")
1235 (gif "libungif.dll"))) 1235 (gif "giflib4.dll" "libungif4.dll" "libungif.dll")))
1236 1236
1237;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166 1237;; arch-tag: 69fb1701-28c2-4890-b351-3d1fe4b4f166
1238;;; w32-win.el ends here 1238;;; w32-win.el ends here
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 6bb3c0d642c..c708355ce7e 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1049,6 +1049,7 @@ At most `bibtex-entry-kill-ring-max' items are kept here.")
1049 "Completion table for BibTeX string keys. 1049 "Completion table for BibTeX string keys.
1050Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.") 1050Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
1051(make-variable-buffer-local 'bibtex-strings) 1051(make-variable-buffer-local 'bibtex-strings)
1052(put 'bibtex-strings 'risky-local-variable t)
1052 1053
1053(defvar bibtex-reference-keys 1054(defvar bibtex-reference-keys
1054 (lazy-completion-table bibtex-reference-keys 1055 (lazy-completion-table bibtex-reference-keys
@@ -1056,6 +1057,7 @@ Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.")
1056 "Completion table for BibTeX reference keys. 1057 "Completion table for BibTeX reference keys.
1057The CDRs of the elements are t for header keys and nil for crossref keys.") 1058The CDRs of the elements are t for header keys and nil for crossref keys.")
1058(make-variable-buffer-local 'bibtex-reference-keys) 1059(make-variable-buffer-local 'bibtex-reference-keys)
1060(put 'bibtex-reference-keys 'risky-local-variable t)
1059 1061
1060(defvar bibtex-buffer-last-parsed-tick nil 1062(defvar bibtex-buffer-last-parsed-tick nil
1061 "Value of `buffer-modified-tick' last time buffer was parsed for keys.") 1063 "Value of `buffer-modified-tick' last time buffer was parsed for keys.")
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index a4930324e95..61192bbbe1c 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -2080,7 +2080,8 @@ The word checked is the word at the mouse position."
2080 corrects) 2080 corrects)
2081 '())) 2081 '()))
2082 (affix (car (cdr (cdr (cdr poss))))) 2082 (affix (car (cdr (cdr (cdr poss)))))
2083 (base-menu (let ((save (if (consp affix) 2083 show-affix-info
2084 (base-menu (let ((save (if (and (consp affix) show-affix-info)
2084 (list 2085 (list
2085 (list (concat "Save affix: " (car affix)) 2086 (list (concat "Save affix: " (car affix))
2086 'save) 2087 'save)
@@ -2121,7 +2122,8 @@ The word checked is the word at the mouse position."
2121 corrects) 2122 corrects)
2122 '())) 2123 '()))
2123 (affix (car (cdr (cdr (cdr poss))))) 2124 (affix (car (cdr (cdr (cdr poss)))))
2124 (menu (let ((save (if (consp affix) 2125 show-affix-info
2126 (menu (let ((save (if (and (consp affix) show-affix-info)
2125 (vector 2127 (vector
2126 (concat "Save affix: " (car affix)) 2128 (concat "Save affix: " (car affix))
2127 (list 'flyspell-do-correct 2129 (list 'flyspell-do-correct
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 7c686091319..926cc56bfe9 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <dominik at science dot uva dot nl> 5;; Author: Carsten Dominik <dominik at science dot uva dot nl>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ 7;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
8;; Version: 4.03 8;; Version: 4.04
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -81,6 +81,10 @@
81;; 81;;
82;; Changes since version 4.00: 82;; Changes since version 4.00:
83;; --------------------------- 83;; ---------------------------
84;; Version 4.04
85;; - Cleanup tags display in agenda.
86;; - Bug fixes.
87;;
84;; Version 4.03 88;; Version 4.03
85;; - Table alignment fixed for use with wide characters. 89;; - Table alignment fixed for use with wide characters.
86;; - `C-c -' leaves cursor in current table line. 90;; - `C-c -' leaves cursor in current table line.
@@ -111,7 +115,7 @@
111 115
112;;; Customization variables 116;;; Customization variables
113 117
114(defvar org-version "4.03" 118(defvar org-version "4.04"
115 "The version number of the file org.el.") 119 "The version number of the file org.el.")
116(defun org-version () 120(defun org-version ()
117 (interactive) 121 (interactive)
@@ -608,7 +612,8 @@ the prefix, you could use:
608 612
609 (setq org-agenda-prefix-format \" %-11:c% s\") 613 (setq org-agenda-prefix-format \" %-11:c% s\")
610 614
611See also the variable `org-agenda-remove-times-when-in-prefix'." 615See also the variables `org-agenda-remove-times-when-in-prefix' and
616`org-agenda-remove-tags-when-in-prefix'."
612 :type 'string 617 :type 'string
613 :group 'org-agenda) 618 :group 'org-agenda)
614 619
@@ -691,6 +696,16 @@ agenda entries."
691 :group 'org-agenda 696 :group 'org-agenda
692 :type 'boolean) 697 :type 'boolean)
693 698
699(defcustom org-agenda-remove-tags-when-in-prefix nil
700 "Non-nil means, the tags from copy of headline in agenda.
701When this is the symbol `prefix', only remove tags when
702`org-agenda-prefix-format' contains a `%T' specifier."
703 :group 'org-agenda
704 :type '(choice
705 (const :tag "Always" t)
706 (const :tag "Never" nil)
707 (const :tag "When prefix format contains %T" prefix)))
708
694(defgroup org-structure nil 709(defgroup org-structure nil
695 "Options concerning structure editing in Org-mode." 710 "Options concerning structure editing in Org-mode."
696 :tag "Org Structure" 711 :tag "Org Structure"
@@ -1875,42 +1890,43 @@ When this is non-nil, the headline after the keyword is set to the
1875 1890
1876;; Tell the compiler about dynamically scoped variables, 1891;; Tell the compiler about dynamically scoped variables,
1877;; and variables from other packages 1892;; and variables from other packages
1878(defvar zmacs-regions) 1893(eval-when-compile
1879(defvar original-date) 1894 (defvar zmacs-regions)
1880(defvar org-transient-mark-mode) 1895 (defvar original-date)
1881(defvar org-old-auto-fill-inhibit-regexp) 1896 (defvar org-transient-mark-mode)
1882(defvar orgtbl-mode-menu) 1897 (defvar org-old-auto-fill-inhibit-regexp)
1883(defvar org-html-entities) 1898 (defvar orgtbl-mode-menu)
1884(defvar org-goto-start-pos) 1899 (defvar org-html-entities)
1885(defvar org-cursor-color) 1900 (defvar org-goto-start-pos)
1886(defvar org-time-was-given) 1901 (defvar org-cursor-color)
1887(defvar org-ts-what) 1902 (defvar org-time-was-given)
1888(defvar mark-active) 1903 (defvar org-ts-what)
1889(defvar timecnt) 1904 (defvar mark-active)
1890(defvar levels-open) 1905 (defvar timecnt)
1891(defvar title) 1906 (defvar levels-open)
1892(defvar author) 1907 (defvar title)
1893(defvar email) 1908 (defvar author)
1894(defvar text) 1909 (defvar email)
1895(defvar entry) 1910 (defvar text)
1896(defvar date) 1911 (defvar entry)
1897(defvar language) 1912 (defvar date)
1898(defvar options) 1913 (defvar language)
1899(defvar ans1) 1914 (defvar options)
1900(defvar ans2) 1915 (defvar ans1)
1901(defvar starting-day) 1916 (defvar ans2)
1902(defvar include-all-loc) 1917 (defvar starting-day)
1903(defvar vm-message-pointer) 1918 (defvar include-all-loc)
1904(defvar vm-folder-directory) 1919 (defvar vm-message-pointer)
1905(defvar wl-summary-buffer-elmo-folder) 1920 (defvar vm-folder-directory)
1906(defvar wl-summary-buffer-folder-name) 1921 (defvar wl-summary-buffer-elmo-folder)
1907(defvar gnus-group-name) 1922 (defvar wl-summary-buffer-folder-name)
1908(defvar gnus-article-current) 1923 (defvar gnus-group-name)
1909(defvar w3m-current-url) 1924 (defvar gnus-article-current)
1910(defvar org-selected-point) 1925 (defvar w3m-current-url)
1911(defvar calendar-mode-map) 1926 (defvar org-selected-point)
1912(defvar remember-save-after-remembering) 1927 (defvar calendar-mode-map)
1913(defvar remember-data-file) 1928 (defvar remember-save-after-remembering)
1929 (defvar remember-data-file))
1914 1930
1915 1931
1916;;; Define the mode 1932;;; Define the mode
@@ -3100,7 +3116,7 @@ heading be marked DONE, and the current time will be added."
3100 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location) 3116 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location)
3101 (progn 3117 (progn
3102 (setq file (format (match-string 1 org-archive-location) 3118 (setq file (format (match-string 1 org-archive-location)
3103 (file-name-nondirectory buffer-file-name)) 3119 (file-name-nondirectory (buffer-file-name)))
3104 heading (match-string 2 org-archive-location))) 3120 heading (match-string 2 org-archive-location)))
3105 (error "Invalid `org-archive-location'")) 3121 (error "Invalid `org-archive-location'"))
3106 (if (> (length file) 0) 3122 (if (> (length file) 0)
@@ -4031,8 +4047,9 @@ in the timestamp determines what will be changed."
4031 (nthcdr 6 time0)))) 4047 (nthcdr 6 time0))))
4032 (if (eq what 'calendar) 4048 (if (eq what 'calendar)
4033 (let ((cal-date 4049 (let ((cal-date
4034 (save-match-data 4050 (save-excursion
4035 (with-current-buffer "*Calendar*" 4051 (save-match-data
4052 (set-buffer "*Calendar*")
4036 (calendar-cursor-to-date))))) 4053 (calendar-cursor-to-date)))))
4037 (setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month 4054 (setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month
4038 (setcar (nthcdr 3 time0) (nth 1 cal-date)) ; day 4055 (setcar (nthcdr 3 time0) (nth 1 cal-date)) ; day
@@ -4285,7 +4302,7 @@ first press `1' to indicate that the agenda should be temporarily (until the
4285next use of \\[org-agenda]) restricted to the current file." 4302next use of \\[org-agenda]) restricted to the current file."
4286 (interactive "P") 4303 (interactive "P")
4287 (catch 'exit 4304 (catch 'exit
4288 (let ((restrict-ok (and buffer-file-name (eq major-mode 'org-mode))) 4305 (let ((restrict-ok (and (buffer-file-name) (eq major-mode 'org-mode)))
4289 (custom org-agenda-custom-commands) 4306 (custom org-agenda-custom-commands)
4290 c entry key type string) 4307 c entry key type string)
4291 (put 'org-agenda-files 'org-restrict nil) 4308 (put 'org-agenda-files 'org-restrict nil)
@@ -4320,7 +4337,7 @@ C Configure your own agenda commands")
4320 (message "") 4337 (message "")
4321 (when (equal c ?1) 4338 (when (equal c ?1)
4322 (if restrict-ok 4339 (if restrict-ok
4323 (put 'org-agenda-files 'org-restrict (list buffer-file-name)) 4340 (put 'org-agenda-files 'org-restrict (list (buffer-file-name)))
4324 (error "Cannot restrict agenda to current buffer")) 4341 (error "Cannot restrict agenda to current buffer"))
4325 (message "Press key for agenda command%s" 4342 (message "Press key for agenda command%s"
4326 (if restrict-ok " (restricted to current file)" "")) 4343 (if restrict-ok " (restricted to current file)" ""))
@@ -4444,8 +4461,8 @@ dates."
4444 (dotodo include-all) 4461 (dotodo include-all)
4445 (doclosed org-agenda-show-log) 4462 (doclosed org-agenda-show-log)
4446 (org-agenda-keep-modes keep-modes) 4463 (org-agenda-keep-modes keep-modes)
4447 (entry buffer-file-name) 4464 (entry (buffer-file-name))
4448 (org-agenda-files (list buffer-file-name)) 4465 (org-agenda-files (list (buffer-file-name)))
4449 (date (calendar-current-date)) 4466 (date (calendar-current-date))
4450 (win (selected-window)) 4467 (win (selected-window))
4451 (pos1 (point)) 4468 (pos1 (point))
@@ -4672,9 +4689,10 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
4672 (erase-buffer) 4689 (erase-buffer)
4673 (org-agenda-mode) (setq buffer-read-only nil) 4690 (org-agenda-mode) (setq buffer-read-only nil)
4674 (set (make-local-variable 'org-agenda-type) 'todo) 4691 (set (make-local-variable 'org-agenda-type) 'todo)
4692 (set (make-local-variable 'last-arg) arg)
4675 (set (make-local-variable 'org-todo-keywords) kwds) 4693 (set (make-local-variable 'org-todo-keywords) kwds)
4676 (set (make-local-variable 'org-agenda-redo-command) 4694 (set (make-local-variable 'org-agenda-redo-command)
4677 `(org-todo-list (or current-prefix-arg ',arg) t)) 4695 '(org-todo-list (or current-prefix-arg last-arg) t))
4678 (setq files (org-agenda-files) 4696 (setq files (org-agenda-files)
4679 rtnall nil) 4697 rtnall nil)
4680 (while (setq file (pop files)) 4698 (while (setq file (pop files))
@@ -4971,7 +4989,7 @@ date. Itt also removes lines that contain only whitespace."
4971 "Make the position visible." 4989 "Make the position visible."
4972 (if (and org-disable-agenda-to-diary ;; called from org-agenda 4990 (if (and org-disable-agenda-to-diary ;; called from org-agenda
4973 (stringp string) 4991 (stringp string)
4974 buffer-file-name) 4992 (buffer-file-name))
4975 (setq string (org-modify-diary-entry-string string)))))) 4993 (setq string (org-modify-diary-entry-string string))))))
4976 4994
4977(defun org-modify-diary-entry-string (string) 4995(defun org-modify-diary-entry-string (string)
@@ -4983,7 +5001,7 @@ date. Itt also removes lines that contain only whitespace."
4983 'help-echo 5001 'help-echo
4984 (format 5002 (format
4985 "mouse-2 or RET jump to diary file %s" 5003 "mouse-2 or RET jump to diary file %s"
4986 (abbreviate-file-name buffer-file-name)) 5004 (abbreviate-file-name (buffer-file-name)))
4987 'org-agenda-diary-link t 5005 'org-agenda-diary-link t
4988 'org-marker (org-agenda-new-marker (point-at-bol))) 5006 'org-marker (org-agenda-new-marker (point-at-bol)))
4989 string) 5007 string)
@@ -5005,7 +5023,7 @@ If the current buffer visits an agenda file, find the next one in the list.
5005If the current buffer does not, find the first agenda file." 5023If the current buffer does not, find the first agenda file."
5006 (interactive) 5024 (interactive)
5007 (let ((files (append org-agenda-files (list (car org-agenda-files)))) 5025 (let ((files (append org-agenda-files (list (car org-agenda-files))))
5008 (tcf (if buffer-file-name (file-truename buffer-file-name))) 5026 (tcf (if (buffer-file-name) (file-truename (buffer-file-name))))
5009 file) 5027 file)
5010 (unless files (error "No agenda files")) 5028 (unless files (error "No agenda files"))
5011 (catch 'exit 5029 (catch 'exit
@@ -5016,28 +5034,30 @@ If the current buffer does not, find the first agenda file."
5016 (throw 'exit t)))) 5034 (throw 'exit t))))
5017 (find-file (car org-agenda-files))))) 5035 (find-file (car org-agenda-files)))))
5018 5036
5019(defun org-agenda-file-to-end () 5037(defun org-agenda-file-to-end (&optional file)
5020 "Move/add the current file to the end of the agenda fiole list. 5038 "Move/add the current file to the end of the agenda fiole list.
5021If the file is not present in the list, append it to the list. If it is 5039I the file is not present in the list, it is appended ot the list. If it is
5022present, move it there." 5040present, it is moved there."
5023 (interactive) 5041 (interactive)
5024 (org-agenda-file-to-front 'to-end)) 5042 (org-agenda-file-to-front 'to-end file))
5025 5043
5026(defun org-agenda-file-to-front (&optional to-end) 5044(defun org-agenda-file-to-front (&optional to-end file)
5027 "Move/add the current file to the top of the agenda file list. 5045 "Move/add the current file to the top of the agenda file list.
5028If the file is not present in the list, add it to the front. If it is 5046If the file is not present in the list, it is added to the front. If it is
5029present, it move it there. With optional argument TO-END, add/move to the 5047present, it is moved there. With optional argument TO-END, add/move to the
5030end of the list." 5048end of the list."
5031 (interactive "P") 5049 (interactive "P")
5032 (let* ((file-alist (mapcar (lambda (x) 5050 (let ((file-alist (mapcar (lambda (x)
5033 (cons (file-truename x) x)) 5051 (cons (file-truename x) x))
5034 org-agenda-files)) 5052 org-agenda-files))
5035 (ctf (file-truename buffer-file-name)) 5053 (ctf (file-truename (buffer-file-name)))
5036 (had (assoc ctf file-alist)) 5054 x had)
5037 (x (or had (cons ctf (abbreviate-file-name buffer-file-name))))) 5055 (setq x (assoc ctf file-alist) had x)
5038 (setq file-alist (if to-end 5056
5039 (append (delq x file-alist) (list x)) 5057 (if (not x) (setq x (cons ctf (abbreviate-file-name (buffer-file-name)))))
5040 (cons x (delq x file-alist)))) 5058 (if to-end
5059 (setq file-alist (append (delq x file-alist) (list x)))
5060 (setq file-alist (cons x (delq x file-alist))))
5041 (setq org-agenda-files (mapcar 'cdr file-alist)) 5061 (setq org-agenda-files (mapcar 'cdr file-alist))
5042 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode)) 5062 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode))
5043 (customize-save-variable 'org-agenda-files org-agenda-files)) 5063 (customize-save-variable 'org-agenda-files org-agenda-files))
@@ -5050,7 +5070,7 @@ end of the list."
5050These are the files which are being checked for agenda entries. 5070These are the files which are being checked for agenda entries.
5051Optional argument FILE means, use this file instead of the current." 5071Optional argument FILE means, use this file instead of the current."
5052 (interactive) 5072 (interactive)
5053 (let* ((file (or file buffer-file-name)) 5073 (let* ((file (or file (buffer-file-name)))
5054 (true-file (file-truename file)) 5074 (true-file (file-truename file))
5055 (afile (abbreviate-file-name file)) 5075 (afile (abbreviate-file-name file))
5056 (files (delq nil (mapcar 5076 (files (delq nil (mapcar
@@ -5174,9 +5194,9 @@ function from a program - use `org-agenda-get-day-entries' instead."
5174 (cond 5194 (cond
5175 ((null org-category) 5195 ((null org-category)
5176 (setq org-category 5196 (setq org-category
5177 (if buffer-file-name 5197 (if (buffer-file-name)
5178 (file-name-sans-extension 5198 (file-name-sans-extension
5179 (file-name-nondirectory buffer-file-name)) 5199 (file-name-nondirectory (buffer-file-name)))
5180 "???"))) 5200 "???")))
5181 ((symbolp org-category) (symbol-name org-category)) 5201 ((symbolp org-category) (symbol-name org-category))
5182 (t org-category)) 5202 (t org-category))
@@ -5265,6 +5285,27 @@ the documentation of `org-diary'."
5265 (throw 'exit t))) 5285 (throw 'exit t)))
5266 nil))) 5286 nil)))
5267 5287
5288(defun org-get-tags-at (&optional pos)
5289 "Get a list of all headline targs applicable at POS.
5290POS defaults to point. If tags are inherited, the list contains
5291the targets in the same sequence as the headlines appear, i.e.
5292the tags of the current headline come last."
5293 (interactive)
5294 (let (tags)
5295 (save-excursion
5296 (goto-char (or pos (point)))
5297 (save-match-data
5298 (org-back-to-heading t)
5299 (condition-case nil
5300 (while t
5301 (if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
5302 (setq tags (append (org-split-string (match-string 1) ":") tags)))
5303 (or org-use-tag-inheritance (error ""))
5304 (org-up-heading-all 1))
5305 (error nil))))
5306 (message "%s" tags)
5307 tags))
5308
5268(defun org-agenda-get-todos () 5309(defun org-agenda-get-todos ()
5269 "Return the TODO information for agenda display." 5310 "Return the TODO information for agenda display."
5270 (let* ((props (list 'face nil 5311 (let* ((props (list 'face nil
@@ -5273,7 +5314,7 @@ the documentation of `org-diary'."
5273 'keymap org-agenda-keymap 5314 'keymap org-agenda-keymap
5274 'help-echo 5315 'help-echo
5275 (format "mouse-2 or RET jump to org file %s" 5316 (format "mouse-2 or RET jump to org file %s"
5276 (abbreviate-file-name buffer-file-name)))) 5317 (abbreviate-file-name (buffer-file-name)))))
5277 (regexp (concat "[\n\r]\\*+ *\\(" 5318 (regexp (concat "[\n\r]\\*+ *\\("
5278 (if org-select-this-todo-keyword 5319 (if org-select-this-todo-keyword
5279 (concat "\\<\\(" org-select-this-todo-keyword 5320 (concat "\\<\\(" org-select-this-todo-keyword
@@ -5315,7 +5356,7 @@ the documentation of `org-diary'."
5315 'keymap org-agenda-keymap 5356 'keymap org-agenda-keymap
5316 'help-echo 5357 'help-echo
5317 (format "mouse-2 or RET jump to org file %s" 5358 (format "mouse-2 or RET jump to org file %s"
5318 (abbreviate-file-name buffer-file-name)))) 5359 (abbreviate-file-name (buffer-file-name)))))
5319 (regexp (regexp-quote 5360 (regexp (regexp-quote
5320 (substring 5361 (substring
5321 (format-time-string 5362 (format-time-string
@@ -5392,7 +5433,7 @@ the documentation of `org-diary'."
5392 'keymap org-agenda-keymap 5433 'keymap org-agenda-keymap
5393 'help-echo 5434 'help-echo
5394 (format "mouse-2 or RET jump to org file %s" 5435 (format "mouse-2 or RET jump to org file %s"
5395 (abbreviate-file-name buffer-file-name)))) 5436 (abbreviate-file-name (buffer-file-name)))))
5396 (regexp (concat 5437 (regexp (concat
5397 "\\<" org-closed-string " *\\[" 5438 "\\<" org-closed-string " *\\["
5398 (regexp-quote 5439 (regexp-quote
@@ -5448,7 +5489,7 @@ the documentation of `org-diary'."
5448 'keymap org-agenda-keymap 5489 'keymap org-agenda-keymap
5449 'help-echo 5490 'help-echo
5450 (format "mouse-2 or RET jump to org file %s" 5491 (format "mouse-2 or RET jump to org file %s"
5451 (abbreviate-file-name buffer-file-name)))) 5492 (abbreviate-file-name (buffer-file-name)))))
5452 (regexp org-deadline-time-regexp) 5493 (regexp org-deadline-time-regexp)
5453 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar 5494 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
5454 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar 5495 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@@ -5510,7 +5551,7 @@ the documentation of `org-diary'."
5510 'keymap org-agenda-keymap 5551 'keymap org-agenda-keymap
5511 'help-echo 5552 'help-echo
5512 (format "mouse-2 or RET jump to org file %s" 5553 (format "mouse-2 or RET jump to org file %s"
5513 (abbreviate-file-name buffer-file-name)))) 5554 (abbreviate-file-name (buffer-file-name)))))
5514 (regexp org-scheduled-time-regexp) 5555 (regexp org-scheduled-time-regexp)
5515 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar 5556 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar
5516 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar 5557 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar
@@ -5559,7 +5600,7 @@ the documentation of `org-diary'."
5559 'keymap org-agenda-keymap 5600 'keymap org-agenda-keymap
5560 'help-echo 5601 'help-echo
5561 (format "mouse-2 or RET jump to org file %s" 5602 (format "mouse-2 or RET jump to org file %s"
5562 (abbreviate-file-name buffer-file-name)))) 5603 (abbreviate-file-name (buffer-file-name)))))
5563 (regexp org-tr-regexp) 5604 (regexp org-tr-regexp)
5564 (d0 (calendar-absolute-from-gregorian date)) 5605 (d0 (calendar-absolute-from-gregorian date))
5565 marker hdmarker ee txt d1 d2 s1 s2 timestr category tags) 5606 marker hdmarker ee txt d1 d2 s1 s2 timestr category tags)
@@ -5631,9 +5672,10 @@ After a match, the following groups carry important information:
5631(defvar org-prefix-has-time nil 5672(defvar org-prefix-has-time nil
5632 "A flag, set by `org-compile-prefix-format'. 5673 "A flag, set by `org-compile-prefix-format'.
5633The flag is set if the currently compiled format contains a `%t'.") 5674The flag is set if the currently compiled format contains a `%t'.")
5675(defvar org-prefix-has-tag nil
5676 "A flag, set by `org-compile-prefix-format'.
5677The flag is set if the currently compiled format contains a `%T'.")
5634 5678
5635(defvar time) ;Needed for the eval of the prefix format.
5636(defvar tag) ;Presumably, same thing as above.
5637(defun org-format-agenda-item (extra txt &optional category tags dotime noprefix) 5679(defun org-format-agenda-item (extra txt &optional category tags dotime noprefix)
5638 "Format TXT to be inserted into the agenda buffer. 5680 "Format TXT to be inserted into the agenda buffer.
5639In particular, it adds the prefix and corresponding text properties. EXTRA 5681In particular, it adds the prefix and corresponding text properties. EXTRA
@@ -5651,9 +5693,9 @@ only the correctly processes TXT should be returned - this is used by
5651 (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt))) 5693 (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
5652 (let* ((category (or category 5694 (let* ((category (or category
5653 org-category 5695 org-category
5654 (if buffer-file-name 5696 (if (buffer-file-name)
5655 (file-name-sans-extension 5697 (file-name-sans-extension
5656 (file-name-nondirectory buffer-file-name)) 5698 (file-name-nondirectory (buffer-file-name)))
5657 ""))) 5699 "")))
5658 (tag (or (nth (1- (length tags)) tags) "")) 5700 (tag (or (nth (1- (length tags)) tags) ""))
5659 time ;; needed for the eval of the prefix format 5701 time ;; needed for the eval of the prefix format
@@ -5681,6 +5723,12 @@ only the correctly processes TXT should be returned - this is used by
5681 (if s1 (setq s1 (org-get-time-of-day s1 'string))) 5723 (if s1 (setq s1 (org-get-time-of-day s1 'string)))
5682 (if s2 (setq s2 (org-get-time-of-day s2 'string)))) 5724 (if s2 (setq s2 (org-get-time-of-day s2 'string))))
5683 5725
5726 (when (and (or (eq org-agenda-remove-tags-when-in-prefix t)
5727 (and org-agenda-remove-tags-when-in-prefix
5728 org-prefix-has-tag))
5729 (string-match ":[a-zA-Z_:]+:[ \t]*$" txt))
5730 (setq txt (replace-match "" t t txt)))
5731
5684 ;; Create the final string 5732 ;; Create the final string
5685 (if noprefix 5733 (if noprefix
5686 (setq rtn txt) 5734 (setq rtn txt)
@@ -5738,7 +5786,7 @@ only the correctly processes TXT should be returned - this is used by
5738 "Compile the prefix format into a Lisp form that can be evaluated. 5786 "Compile the prefix format into a Lisp form that can be evaluated.
5739The resulting form is returned and stored in the variable 5787The resulting form is returned and stored in the variable
5740`org-prefix-format-compiled'." 5788`org-prefix-format-compiled'."
5741 (setq org-prefix-has-time nil) 5789 (setq org-prefix-has-time nil org-prefix-has-tag nil)
5742 (let ((start 0) varform vars var (s format)e c f opt) 5790 (let ((start 0) varform vars var (s format)e c f opt)
5743 (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)" 5791 (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)"
5744 s start) 5792 s start)
@@ -5749,6 +5797,7 @@ The resulting form is returned and stored in the variable
5749 opt (match-beginning 1) 5797 opt (match-beginning 1)
5750 start (1+ (match-beginning 0))) 5798 start (1+ (match-beginning 0)))
5751 (if (equal var 'time) (setq org-prefix-has-time t)) 5799 (if (equal var 'time) (setq org-prefix-has-time t))
5800 (if (equal var 'tag) (setq org-prefix-has-tag t))
5752 (setq f (concat "%" (match-string 2 s) "s")) 5801 (setq f (concat "%" (match-string 2 s) "s"))
5753 (if opt 5802 (if opt
5754 (setq varform 5803 (setq varform
@@ -5783,7 +5832,7 @@ HH:MM."
5783 (string-to-number (match-string 3 s)) 5832 (string-to-number (match-string 3 s))
5784 0))) 5833 0)))
5785 (t1 (concat " " 5834 (t1 (concat " "
5786 (if (< t0 100) "0" "") (if (< t0 10) "0" "") 5835 (if (< t0 100) "0" "") (if (< t0 10) "0" "")
5787 (int-to-string t0)))) 5836 (int-to-string t0))))
5788 (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0))))) 5837 (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0)))))
5789 5838
@@ -5816,9 +5865,6 @@ HH:MM."
5816 ((< tb ta) +1) 5865 ((< tb ta) +1)
5817 (t nil)))) 5866 (t nil))))
5818 5867
5819(defvar time-up) (defvar time-down)
5820(defvar priority-up) (defvar priority-down)
5821(defvar category-up) (defvar category-down) (defvar category-keep)
5822(defun org-entries-lessp (a b) 5868(defun org-entries-lessp (a b)
5823 "Predicate for sorting agenda entries." 5869 "Predicate for sorting agenda entries."
5824 ;; The following variables will be used when the form is evaluated. 5870 ;; The following variables will be used when the form is evaluated.
@@ -6260,7 +6306,7 @@ d are included in the output."
6260 'keymap org-agenda-keymap 6306 'keymap org-agenda-keymap
6261 'help-echo 6307 'help-echo
6262 (format "mouse-2 or RET jump to org file %s" 6308 (format "mouse-2 or RET jump to org file %s"
6263 (abbreviate-file-name buffer-file-name)))) 6309 (abbreviate-file-name (buffer-file-name)))))
6264 lspos 6310 lspos
6265 tags tags-list tags-alist (llast 0) rtn level category i txt 6311 tags tags-list tags-alist (llast 0) rtn level category i txt
6266 todo marker) 6312 todo marker)
@@ -6551,7 +6597,10 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
6551 (skip-chars-backward 6597 (skip-chars-backward
6552 (concat (if org-allow-space-in-links "^" "^ ") 6598 (concat (if org-allow-space-in-links "^" "^ ")
6553 org-non-link-chars)) 6599 org-non-link-chars))
6554 (when (looking-at org-link-regexp) 6600 (when (or (looking-at org-link-regexp)
6601 (and (re-search-forward org-link-regexp (point-at-eol) t)
6602 (<= (match-beginning 0) pos)
6603 (>= (match-end 0) pos)))
6555 (setq type (match-string 1) 6604 (setq type (match-string 1)
6556 path (match-string 2)) 6605 path (match-string 2))
6557 (throw 'match t))) 6606 (throw 'match t)))
@@ -6589,7 +6638,7 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
6589 (cond 6638 (cond
6590 6639
6591 ((string= type "tags") 6640 ((string= type "tags")
6592 (org-tags-view path in-emacs)) 6641 (org-tags-view in-emacs path))
6593 ((string= type "camel") 6642 ((string= type "camel")
6594 (org-link-search 6643 (org-link-search
6595 path 6644 path
@@ -6862,7 +6911,7 @@ openen in emacs.
6862If the file does not exist, an error is thrown." 6911If the file does not exist, an error is thrown."
6863 (setq in-emacs (or in-emacs line search)) 6912 (setq in-emacs (or in-emacs line search))
6864 (let* ((file (if (equal path "") 6913 (let* ((file (if (equal path "")
6865 buffer-file-name 6914 (buffer-file-name)
6866 (convert-standard-filename (org-expand-file-name path)))) 6915 (convert-standard-filename (org-expand-file-name path))))
6867 (dfile (downcase file)) 6916 (dfile (downcase file))
6868 ext cmd apps) 6917 ext cmd apps)
@@ -6893,7 +6942,7 @@ If the file does not exist, an error is thrown."
6893 (shell-command (concat cmd " &")))) 6942 (shell-command (concat cmd " &"))))
6894 ((or (stringp cmd) 6943 ((or (stringp cmd)
6895 (eq cmd 'emacs)) 6944 (eq cmd 'emacs))
6896 (unless (equal (file-truename file) (file-truename buffer-file-name)) 6945 (unless (equal (file-truename file) (file-truename (buffer-file-name)))
6897 (funcall (cdr (assq 'file org-link-frame-setup)) file)) 6946 (funcall (cdr (assq 'file org-link-frame-setup)) file))
6898 (if line (goto-line line) 6947 (if line (goto-line line)
6899 (if search (org-link-search search)))) 6948 (if search (org-link-search search))))
@@ -6956,7 +7005,7 @@ For file links, arg negates `org-context-in-file-links'."
6956 (save-excursion 7005 (save-excursion
6957 (vm-select-folder-buffer) 7006 (vm-select-folder-buffer)
6958 (let* ((message (car vm-message-pointer)) 7007 (let* ((message (car vm-message-pointer))
6959 (folder buffer-file-name) 7008 (folder (buffer-file-name))
6960 (subject (vm-su-subject message)) 7009 (subject (vm-su-subject message))
6961 (author (vm-su-full-name message)) 7010 (author (vm-su-full-name message))
6962 (message-id (vm-su-message-id message))) 7011 (message-id (vm-su-message-id message)))
@@ -6987,7 +7036,7 @@ For file links, arg negates `org-context-in-file-links'."
6987 (save-excursion 7036 (save-excursion
6988 (save-restriction 7037 (save-restriction
6989 (rmail-narrow-to-non-pruned-header) 7038 (rmail-narrow-to-non-pruned-header)
6990 (let ((folder buffer-file-name) 7039 (let ((folder (buffer-file-name))
6991 (message-id (mail-fetch-field "message-id")) 7040 (message-id (mail-fetch-field "message-id"))
6992 (author (mail-fetch-field "from")) 7041 (author (mail-fetch-field "from"))
6993 (subject (mail-fetch-field "subject"))) 7042 (subject (mail-fetch-field "subject")))
@@ -7041,7 +7090,7 @@ For file links, arg negates `org-context-in-file-links'."
7041 ((eq major-mode 'org-mode) 7090 ((eq major-mode 'org-mode)
7042 ;; Just link to current headline 7091 ;; Just link to current headline
7043 (setq cpltxt (concat "file:" 7092 (setq cpltxt (concat "file:"
7044 (abbreviate-file-name buffer-file-name))) 7093 (abbreviate-file-name (buffer-file-name))))
7045 ;; Add a context search string 7094 ;; Add a context search string
7046 (when (org-xor org-context-in-file-links arg) 7095 (when (org-xor org-context-in-file-links arg)
7047 (if (save-excursion 7096 (if (save-excursion
@@ -7059,10 +7108,10 @@ For file links, arg negates `org-context-in-file-links'."
7059 ))))) 7108 )))))
7060 (setq link (org-make-link cpltxt))) 7109 (setq link (org-make-link cpltxt)))
7061 7110
7062 (buffer-file-name 7111 ((buffer-file-name)
7063 ;; Just link to this file here. 7112 ;; Just link to this file here.
7064 (setq cpltxt (concat "file:" 7113 (setq cpltxt (concat "file:"
7065 (abbreviate-file-name buffer-file-name))) 7114 (abbreviate-file-name (buffer-file-name))))
7066 ;; Add a context string 7115 ;; Add a context string
7067 (when (org-xor org-context-in-file-links arg) 7116 (when (org-xor org-context-in-file-links arg)
7068 (setq cpltxt 7117 (setq cpltxt
@@ -7197,7 +7246,7 @@ is in the current directory or below."
7197 (case-fold-search nil) 7246 (case-fold-search nil)
7198 (search (match-string 2 link))) 7247 (search (match-string 2 link)))
7199 (when (save-match-data 7248 (when (save-match-data
7200 (equal (file-truename buffer-file-name) 7249 (equal (file-truename (buffer-file-name))
7201 (file-truename path))) 7250 (file-truename path)))
7202 (if (save-match-data 7251 (if (save-match-data
7203 (string-match (concat "^" org-camel-regexp "$") search)) 7252 (string-match (concat "^" org-camel-regexp "$") search))
@@ -7356,7 +7405,7 @@ See also the variable `org-reverse-note-order'."
7356 (let ((all org-reverse-note-order) 7405 (let ((all org-reverse-note-order)
7357 entry) 7406 entry)
7358 (while (setq entry (pop all)) 7407 (while (setq entry (pop all))
7359 (if (string-match (car entry) buffer-file-name) 7408 (if (string-match (car entry) (buffer-file-name))
7360 (throw 'exit (cdr entry)))) 7409 (throw 'exit (cdr entry))))
7361 nil))))) 7410 nil)))))
7362 7411
@@ -10010,7 +10059,7 @@ underlined headlines. The default is 3."
10010 (level 0) line txt 10059 (level 0) line txt
10011 (umax nil) 10060 (umax nil)
10012 (case-fold-search nil) 10061 (case-fold-search nil)
10013 (filename (concat (file-name-sans-extension buffer-file-name) 10062 (filename (concat (file-name-sans-extension (buffer-file-name))
10014 ".txt")) 10063 ".txt"))
10015 (buffer (find-file-noselect filename)) 10064 (buffer (find-file-noselect filename))
10016 (levels-open (make-vector org-level-max nil)) 10065 (levels-open (make-vector org-level-max nil))
@@ -10159,7 +10208,7 @@ underlined headlines. The default is 3."
10159Also removes the first line of the buffer if it specifies a mode, 10208Also removes the first line of the buffer if it specifies a mode,
10160and all options lines." 10209and all options lines."
10161 (interactive) 10210 (interactive)
10162 (let* ((filename (concat (file-name-sans-extension buffer-file-name) 10211 (let* ((filename (concat (file-name-sans-extension (buffer-file-name))
10163 ".txt")) 10212 ".txt"))
10164 (buffer (find-file-noselect filename)) 10213 (buffer (find-file-noselect filename))
10165 (ore (concat 10214 (ore (concat
@@ -10233,7 +10282,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
10233 org-export-with-sub-superscripts 10282 org-export-with-sub-superscripts
10234 org-export-with-emphasize 10283 org-export-with-emphasize
10235 org-export-with-TeX-macros 10284 org-export-with-TeX-macros
10236 (file-name-nondirectory buffer-file-name) 10285 (file-name-nondirectory (buffer-file-name))
10237 (if (equal org-todo-interpretation 'sequence) 10286 (if (equal org-todo-interpretation 'sequence)
10238 (mapconcat 'identity org-todo-keywords " ") 10287 (mapconcat 'identity org-todo-keywords " ")
10239 "TODO FEEDBACK VERIFY DONE") 10288 "TODO FEEDBACK VERIFY DONE")
@@ -10306,7 +10355,7 @@ The prefix ARG specifies how many levels of the outline should become
10306headlines. The default is 3. Lower levels will become bulleted lists." 10355headlines. The default is 3. Lower levels will become bulleted lists."
10307 (interactive "P") 10356 (interactive "P")
10308 (org-export-as-html arg 'hidden) 10357 (org-export-as-html arg 'hidden)
10309 (org-open-file buffer-file-name)) 10358 (org-open-file (buffer-file-name)))
10310 10359
10311(defun org-export-as-html-batch () 10360(defun org-export-as-html-batch ()
10312 "Call `org-export-as-html', may be used in batch processing as 10361 "Call `org-export-as-html', may be used in batch processing as
@@ -10336,7 +10385,7 @@ headlines. The default is 3. Lower levels will become bulleted lists."
10336 (lines (org-export-find-first-heading-line all_lines)) 10385 (lines (org-export-find-first-heading-line all_lines))
10337 (level 0) (line "") (origline "") txt todo 10386 (level 0) (line "") (origline "") txt todo
10338 (umax nil) 10387 (umax nil)
10339 (filename (concat (file-name-sans-extension buffer-file-name) 10388 (filename (concat (file-name-sans-extension (buffer-file-name))
10340 ".html")) 10389 ".html"))
10341 (buffer (find-file-noselect filename)) 10390 (buffer (find-file-noselect filename))
10342 (levels-open (make-vector org-level-max nil)) 10391 (levels-open (make-vector org-level-max nil))
@@ -10999,7 +11048,7 @@ When LEVEL is non-nil, increase section numbers on that level."
10999The iCalendar file will be located in the same directory as the Org-mode 11048The iCalendar file will be located in the same directory as the Org-mode
11000file, but with extension `.ics'." 11049file, but with extension `.ics'."
11001 (interactive) 11050 (interactive)
11002 (org-export-icalendar nil buffer-file-name)) 11051 (org-export-icalendar nil (buffer-file-name)))
11003 11052
11004;;;###autoload 11053;;;###autoload
11005(defun org-export-icalendar-all-agenda-files () 11054(defun org-export-icalendar-all-agenda-files ()
@@ -11036,7 +11085,7 @@ file and store it under the name `org-combined-agenda-icalendar-file'."
11036 (set-buffer (org-get-agenda-file-buffer file)) 11085 (set-buffer (org-get-agenda-file-buffer file))
11037 (setq category (or org-category 11086 (setq category (or org-category
11038 (file-name-sans-extension 11087 (file-name-sans-extension
11039 (file-name-nondirectory buffer-file-name)))) 11088 (file-name-nondirectory (buffer-file-name)))))
11040 (if (symbolp category) (setq category (symbol-name category))) 11089 (if (symbolp category) (setq category (symbol-name category)))
11041 (let ((standard-output ical-buffer)) 11090 (let ((standard-output ical-buffer))
11042 (if combine 11091 (if combine
@@ -12137,27 +12186,6 @@ Show the heading too, if it is currently invisible."
12137 (org-invisible-p))) 12186 (org-invisible-p)))
12138 (org-show-hierarchy-above))) 12187 (org-show-hierarchy-above)))
12139 12188
12140(defun org-get-tags-at (&optional pos)
12141 "Get a list of all headline targs applicable at POS.
12142POS defaults to point. If tags are inherited, the list contains
12143the targets in the same sequence as the headlines appear, i.e.
12144the tags of the current headline come last."
12145 (interactive)
12146 (let (tags)
12147 (save-excursion
12148 (goto-char (or pos (point)))
12149 (save-match-data
12150 (org-back-to-heading t)
12151 (condition-case nil
12152 (while t
12153 (if (looking-at "[^\r\n]+?:\\([a-zA-Z_:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
12154 (setq tags (append (org-split-string (match-string 1) ":") tags)))
12155 (or org-use-tag-inheritance (error ""))
12156 (org-up-heading-all 1))
12157 (error nil))))
12158 (message "%s" tags)
12159 tags))
12160
12161;;; Finish up 12189;;; Finish up
12162 12190
12163(provide 'org) 12191(provide 'org)
@@ -12166,4 +12194,5 @@ the tags of the current headline come last."
12166 12194
12167;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd 12195;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
12168;;; org.el ends here 12196;;; org.el ends here
12197
12169 12198
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 80f062ae3fe..db8d2c94c46 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -913,7 +913,7 @@ This is always set to nil at the entry to `table-with-cache-buffer' before execu
913 "For mode line indicator") 913 "For mode line indicator")
914;; This is not a real minor-mode but placed in the minor-mode-alist 914;; This is not a real minor-mode but placed in the minor-mode-alist
915;; so that we can show the indicator on the mode line handy. 915;; so that we can show the indicator on the mode line handy.
916(make-variable-buffer-local table-mode-indicator) 916(make-variable-buffer-local 'table-mode-indicator)
917(unless (assq table-mode-indicator minor-mode-alist) 917(unless (assq table-mode-indicator minor-mode-alist)
918 (push '(table-mode-indicator (table-fixed-width-mode " Fixed-Table" " Table")) 918 (push '(table-mode-indicator (table-fixed-width-mode " Fixed-Table" " Table"))
919 minor-mode-alist)) 919 minor-mode-alist))
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index 2a8f6b217d4..f4b283bf7f2 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -3,6 +3,7 @@
3;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. 3;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca> 5;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca>
6;; Maintainer: FSF
6;; Keywords: Multimedia 7;; Keywords: Multimedia
7 8
8;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
@@ -21,23 +22,24 @@
21;; along with GNU Emacs; see the file COPYING. If not, write to the 22;; along with GNU Emacs; see the file COPYING. If not, write to the
22;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 23;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23;; Boston, MA 02110-1301, USA. 24;; Boston, MA 02110-1301, USA.
24;;
25;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some time
26;; The peoples at #emacs@freenode.net for numerous help
27;; RMS for emacs and the GNU project.
28;;
29 25
30;;; Commentary: 26;;; Commentary:
31 27
32;; This package create two new mode: thumbs-mode and 28;; This package create two new modes: thumbs-mode and thumbs-view-image-mode.
33;; thumbs-view-image-mode. It is used for images browsing and viewing 29;; It is used for basic browsing and viewing of images from within Emacs.
34;; from within Emacs. Minimal image manipulation functions are also 30;; Minimal image manipulation functions are also available via external
35;; available via external programs. 31;; programs. If you want to do more complex tasks like categorise and tag
32;; your images, use tumme.el
36;; 33;;
37;; The 'convert' program from 'ImageMagick' 34;; The 'convert' program from 'ImageMagick'
38;; [URL:http://www.imagemagick.org/] is required. 35;; [URL:http://www.imagemagick.org/] is required.
39;; 36;;
37;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some
38;; time. The peoples at #emacs@freenode.net for numerous help. RMS
39;; for emacs and the GNU project.
40;;
40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42;;
41;; CHANGELOG 43;; CHANGELOG
42;; 44;;
43;; This is version 2.0 45;; This is version 2.0
@@ -48,8 +50,8 @@
48;; That should be a directory containing image files. 50;; That should be a directory containing image files.
49;; from dired, C-t m enter in thumbs-mode with all marked files 51;; from dired, C-t m enter in thumbs-mode with all marked files
50;; C-t a enter in thumbs-mode with all files in current-directory 52;; C-t a enter in thumbs-mode with all files in current-directory
51;; In thumbs-mode, pressing <return> on a image will bring you in image view mode 53;; In thumbs-mode, pressing <return> on a image will bring you in image view
52;; for that image. C-h m will give you a list of available keybinding. 54;; mode for that image. C-h m will give you a list of available keybinding.
53 55
54;;; History: 56;;; History:
55;; 57;;
@@ -75,13 +77,18 @@
75 :type 'string 77 :type 'string
76 :group 'thumbs) 78 :group 'thumbs)
77 79
78(defcustom thumbs-per-line 5 80(defcustom thumbs-per-line 4
79 "*Number of thumbnails per line to show in directory." 81 "Number of thumbnails per line to show in directory."
82 :type 'integer
83 :group 'thumbs)
84
85(defcustom thumbs-max-image-number 16
86 "Maximum number of images initially displayed in thumbs buffer."
80 :type 'integer 87 :type 'integer
81 :group 'thumbs) 88 :group 'thumbs)
82 89
83(defcustom thumbs-thumbsdir-max-size 50000000 90(defcustom thumbs-thumbsdir-max-size 50000000
84 "Max size for thumbnails directory. 91 "Maximum size for thumbnails directory.
85When it reaches that size (in bytes), a warning is sent." 92When it reaches that size (in bytes), a warning is sent."
86 :type 'integer 93 :type 'integer
87 :group 'thumbs) 94 :group 'thumbs)
@@ -121,7 +128,7 @@ than `thumbs-thumbsdir-max-size'."
121 :group 'thumbs) 128 :group 'thumbs)
122 129
123(defcustom thumbs-image-resizing-step 10 130(defcustom thumbs-image-resizing-step 10
124 "Step by which to resize image." 131 "Step by which to resize image as a percentage."
125 :type 'integer 132 :type 'integer
126 :group 'thumbs) 133 :group 'thumbs)
127 134
@@ -146,6 +153,11 @@ this value can let another user see some of your images."
146 "Filename of current image.") 153 "Filename of current image.")
147(make-variable-buffer-local 'thumbs-current-image-filename) 154(make-variable-buffer-local 'thumbs-current-image-filename)
148 155
156(defvar thumbs-extra-images 1
157 "Counter for showing extra images in thumbs buffer.")
158(make-variable-buffer-local 'thumbs-extra-images)
159(put 'thumbs-extra-images 'permanent-local t)
160
149(defvar thumbs-current-image-size nil 161(defvar thumbs-current-image-size nil
150 "Size of current image.") 162 "Size of current image.")
151 163
@@ -153,10 +165,14 @@ this value can let another user see some of your images."
153 "Number of current image.") 165 "Number of current image.")
154(make-variable-buffer-local 'thumbs-image-num) 166(make-variable-buffer-local 'thumbs-image-num)
155 167
168(defvar thumbs-buffer nil
169 "Name of buffer containing thumbnails associated with image.")
170(make-variable-buffer-local 'thumbs-buffer)
171
156(defvar thumbs-current-dir nil 172(defvar thumbs-current-dir nil
157 "Current directory.") 173 "Current directory.")
158 174
159(defvar thumbs-markedL nil 175(defvar thumbs-marked-list nil
160 "List of marked files.") 176 "List of marked files.")
161 177
162(defalias 'thumbs-gensym 178(defalias 'thumbs-gensym
@@ -199,21 +215,21 @@ Create the thumbnails directory if it does not exist."
199If the total size of all files in `thumbs-thumbsdir' is bigger than 215If the total size of all files in `thumbs-thumbsdir' is bigger than
200`thumbs-thumbsdir-max-size', files are deleted until the max size is 216`thumbs-thumbsdir-max-size', files are deleted until the max size is
201reached." 217reached."
202 (let* ((filesL 218 (let* ((files-list
203 (sort 219 (sort
204 (mapcar 220 (mapcar
205 (lambda (f) 221 (lambda (f)
206 (let ((fattribsL (file-attributes f))) 222 (let ((fattribs-list (file-attributes f)))
207 `(,(nth 4 fattribsL) ,(nth 7 fattribsL) ,f))) 223 `(,(nth 4 fattribs-list) ,(nth 7 fattribs-list) ,f)))
208 (directory-files (thumbs-thumbsdir) t (image-file-name-regexp))) 224 (directory-files (thumbs-thumbsdir) t (image-file-name-regexp)))
209 '(lambda (l1 l2) (time-less-p (car l1) (car l2))))) 225 '(lambda (l1 l2) (time-less-p (car l1) (car l2)))))
210 (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) filesL)))) 226 (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files-list))))
211 (while (> dirsize thumbs-thumbsdir-max-size) 227 (while (> dirsize thumbs-thumbsdir-max-size)
212 (progn 228 (progn
213 (message "Deleting file %s" (cadr (cdar filesL)))) 229 (message "Deleting file %s" (cadr (cdar files-list))))
214 (delete-file (cadr (cdar filesL))) 230 (delete-file (cadr (cdar files-list)))
215 (setq dirsize (- dirsize (car (cdar filesL)))) 231 (setq dirsize (- dirsize (car (cdar files-list))))
216 (setq filesL (cdr filesL))))) 232 (setq files-list (cdr files-list)))))
217 233
218;; Check the thumbsnail directory size and clean it if necessary. 234;; Check the thumbsnail directory size and clean it if necessary.
219(when thumbs-thumbsdir-auto-clean 235(when thumbs-thumbsdir-auto-clean
@@ -238,75 +254,47 @@ ACTION-PREFIX is the symbol to place before the ACTION command
238 filein 254 filein
239 (or output-format "jpeg") 255 (or output-format "jpeg")
240 fileout))) 256 fileout)))
241 (shell-command command))) 257 (call-process shell-file-name nil nil nil "-c" command)))
242 258
243(defun thumbs-increment-image-size-element (n d) 259(defun thumbs-new-image-size (s increment)
244 "Increment number N by D percent." 260 "New image (a cons of width x height)."
245 (round (+ n (/ (* d n) 100)))) 261 (let ((d (* increment thumbs-image-resizing-step)))
246 262 (cons
247(defun thumbs-decrement-image-size-element (n d) 263 (round (+ (car s) (/ (* d (car s)) 100)))
248 "Decrement number N by D percent." 264 (round (+ (cdr s) (/ (* d (cdr s)) 100))))))
249 (round (- n (/ (* d n) 100)))) 265
250 266(defun thumbs-resize-image-1 (&optional increment size)
251(defun thumbs-increment-image-size (s)
252 "Increment S (a cons of width x height)."
253 (cons
254 (thumbs-increment-image-size-element (car s)
255 thumbs-image-resizing-step)
256 (thumbs-increment-image-size-element (cdr s)
257 thumbs-image-resizing-step)))
258
259(defun thumbs-decrement-image-size (s)
260 "Decrement S (a cons of width x height)."
261 (cons
262 (thumbs-decrement-image-size-element (car s)
263 thumbs-image-resizing-step)
264 (thumbs-decrement-image-size-element (cdr s)
265 thumbs-image-resizing-step)))
266
267(defun thumbs-resize-image (&optional increment size)
268 "Resize image in current buffer. 267 "Resize image in current buffer.
269If INCREMENT is set, make the image bigger, else smaller. 268If SIZE is specified use it. Otherwise make the image larger or
270Or, alternatively, a SIZE may be specified." 269smaller according to whether INCREMENT is 1 or -1."
271 (interactive) 270 (let* ((buffer-read-only nil)
272 ;; cleaning of old temp file 271 (old thumbs-current-tmp-filename)
273 (condition-case nil 272 (x (or size
274 (apply 'delete-file 273 (thumbs-new-image-size thumbs-current-image-size increment)))
275 (directory-files 274 (tmp (thumbs-temp-file)))
276 (thumbs-temp-dir) t
277 thumbs-temp-prefix))
278 (error nil))
279 (let ((buffer-read-only nil)
280 (x (if size
281 size
282 (if increment
283 (thumbs-increment-image-size
284 thumbs-current-image-size)
285 (thumbs-decrement-image-size
286 thumbs-current-image-size))))
287 (tmp (thumbs-temp-file)))
288 (erase-buffer) 275 (erase-buffer)
289 (thumbs-call-convert thumbs-current-image-filename 276 (thumbs-call-convert (or old thumbs-current-image-filename)
290 tmp "sample" 277 tmp "sample"
291 (concat (number-to-string (car x)) "x" 278 (concat (number-to-string (car x)) "x"
292 (number-to-string (cdr x)))) 279 (number-to-string (cdr x))))
293 (thumbs-insert-image tmp 'jpeg 0) 280 (save-excursion
281 (thumbs-insert-image tmp 'jpeg 0))
294 (setq thumbs-current-tmp-filename tmp))) 282 (setq thumbs-current-tmp-filename tmp)))
295 283
296(defun thumbs-resize-interactive (width height) 284(defun thumbs-resize-image (width height)
297 "Resize image interactively to specified WIDTH and HEIGHT." 285 "Resize image interactively to specified WIDTH and HEIGHT."
298 (interactive "nWidth: \nnHeight: ") 286 (interactive "nWidth: \nnHeight: ")
299 (thumbs-resize-image nil (cons width height))) 287 (thumbs-resize-image-1 nil (cons width height)))
300 288
301(defun thumbs-resize-image-size-down () 289(defun thumbs-shrink-image ()
302 "Resize image (smaller)." 290 "Resize image (smaller)."
303 (interactive) 291 (interactive)
304 (thumbs-resize-image nil)) 292 (thumbs-resize-image-1 -1))
305 293
306(defun thumbs-resize-image-size-up () 294(defun thumbs-enlarge-image ()
307 "Resize image (bigger)." 295 "Resize image (bigger)."
308 (interactive) 296 (interactive)
309 (thumbs-resize-image t)) 297 (thumbs-resize-image-1 1))
310 298
311(defun thumbs-thumbname (img) 299(defun thumbs-thumbname (img)
312 "Return a thumbnail name for the image IMG." 300 "Return a thumbnail name for the image IMG."
@@ -376,70 +364,81 @@ If MARKED is non-nil, the image is marked."
376If MARKED is non-nil, the image is marked." 364If MARKED is non-nil, the image is marked."
377 (thumbs-insert-image 365 (thumbs-insert-image
378 (thumbs-make-thumb img) 'jpeg thumbs-relief marked) 366 (thumbs-make-thumb img) 'jpeg thumbs-relief marked)
379 (put-text-property (1- (point)) (point) 367 (add-text-properties (1- (point)) (point)
380 'thumb-image-file img)) 368 `(thumb-image-file ,img
381 369 help-echo ,(file-name-nondirectory img))))
382(defun thumbs-do-thumbs-insertion (L) 370
383 "Insert all thumbs in list L." 371(defun thumbs-do-thumbs-insertion (list)
384 (let ((i 0)) 372 "Insert all thumbnails into thumbs buffer."
385 (dolist (img L) 373 (let* ((i 0)
374 (length (length list))
375 (diff (- length (* thumbs-max-image-number thumbs-extra-images))))
376 (nbutlast list diff)
377 (dolist (img list)
386 (thumbs-insert-thumb img 378 (thumbs-insert-thumb img
387 (member img thumbs-markedL)) 379 (member img thumbs-marked-list))
388 (when (= 0 (mod (setq i (1+ i)) thumbs-per-line)) 380 (when (= 0 (mod (setq i (1+ i)) thumbs-per-line))
389 (newline))) 381 (newline)))
390 (unless (bobp) (newline)))) 382 (unless (bobp) (newline))
383 (if diff (message "Type + to display more images."))))
391 384
392(defun thumbs-show-thumbs-list (L &optional buffer-name same-window) 385(defun thumbs-show-thumbs-list (list &optional dir same-window)
393 (unless (and (display-images-p) 386 (unless (and (display-images-p)
394 (image-type-available-p 'jpeg)) 387 (image-type-available-p 'jpeg))
395 (error "Required image type is not supported in this Emacs session")) 388 (error "Required image type is not supported in this Emacs session"))
396 (funcall (if same-window 'switch-to-buffer 'pop-to-buffer) 389 (funcall (if same-window 'switch-to-buffer 'pop-to-buffer)
397 (or buffer-name "*THUMB-View*")) 390 (if dir (concat "*Thumbs: " dir) "*THUMB-View*"))
398 (let ((inhibit-read-only t)) 391 (let ((inhibit-read-only t))
399 (erase-buffer) 392 (erase-buffer)
400 (thumbs-mode) 393 (thumbs-mode)
401 (thumbs-do-thumbs-insertion L) 394 (setq thumbs-buffer (current-buffer))
395 (if dir (setq default-directory dir))
396 (thumbs-do-thumbs-insertion list)
402 (goto-char (point-min)) 397 (goto-char (point-min))
403 (set (make-local-variable 'thumbs-current-dir) default-directory))) 398 (set (make-local-variable 'thumbs-current-dir) default-directory)))
404 399
405;;;###autoload 400;;;###autoload
406(defun thumbs-show-all-from-dir (dir &optional reg same-window) 401(defun thumbs-show-from-dir (dir &optional reg same-window)
407 "Make a preview buffer for all images in DIR. 402 "Make a preview buffer for all images in DIR.
408Optional argument REG to select file matching a regexp, 403Optional argument REG to select file matching a regexp,
409and SAME-WINDOW to show thumbs in the same window." 404and SAME-WINDOW to show thumbs in the same window."
410 (interactive "DDir: ") 405 (interactive "DDir: ")
411 (thumbs-show-thumbs-list 406 (thumbs-show-thumbs-list
412 (directory-files dir t 407 (directory-files dir t (or reg (image-file-name-regexp)))
413 (or reg (image-file-name-regexp))) 408 dir same-window))
414 (concat "*Thumbs: " dir) same-window))
415 409
416;;;###autoload 410;;;###autoload
417(defun thumbs-dired-show-marked () 411(defun thumbs-dired-show-marked ()
418 "In dired, make a thumbs buffer with all marked files." 412 "In dired, make a thumbs buffer with marked files."
419 (interactive) 413 (interactive)
420 (thumbs-show-thumbs-list (dired-get-marked-files) nil t)) 414 (thumbs-show-thumbs-list (dired-get-marked-files) nil t))
421 415
422;;;###autoload 416;;;###autoload
423(defun thumbs-dired-show-all () 417(defun thumbs-dired-show ()
424 "In dired, make a thumbs buffer with all files in current directory." 418 "In dired, make a thumbs buffer with all files in current directory."
425 (interactive) 419 (interactive)
426 (thumbs-show-all-from-dir default-directory nil t)) 420 (thumbs-show-from-dir default-directory nil t))
427 421
428;;;###autoload 422;;;###autoload
429(defalias 'thumbs 'thumbs-show-all-from-dir) 423(defalias 'thumbs 'thumbs-show-from-dir)
430 424
431(defun thumbs-find-image (img &optional num otherwin) 425(defun thumbs-find-image (img &optional num otherwin)
432 (funcall 426 (let ((buffer (current-buffer)))
433 (if otherwin 'switch-to-buffer-other-window 'switch-to-buffer) 427 (funcall
434 (concat "*Image: " (file-name-nondirectory img) " - " 428 (if otherwin 'switch-to-buffer-other-window 'switch-to-buffer)
435 (number-to-string (or num 0)) "*")) 429 "*Image*")
436 (thumbs-view-image-mode) 430 (thumbs-view-image-mode)
437 (let ((inhibit-read-only t)) 431 (setq mode-name
438 (setq thumbs-current-image-filename img 432 (concat "image-view-mode: " (file-name-nondirectory img)
439 thumbs-current-tmp-filename nil 433 " - " (number-to-string num)))
440 thumbs-image-num (or num 0)) 434 (setq thumbs-buffer buffer)
441 (delete-region (point-min)(point-max)) 435 (let ((inhibit-read-only t))
442 (thumbs-insert-image img (thumbs-image-type img) 0))) 436 (setq thumbs-current-image-filename img
437 thumbs-current-tmp-filename nil
438 thumbs-image-num (or num 0))
439 (delete-region (point-min)(point-max))
440 (save-excursion
441 (thumbs-insert-image img (thumbs-image-type img) 0)))))
443 442
444(defun thumbs-find-image-at-point (&optional img otherwin) 443(defun thumbs-find-image-at-point (&optional img otherwin)
445 "Display image IMG for thumbnail at point. 444 "Display image IMG for thumbnail at point.
@@ -484,16 +483,18 @@ Open another window."
484 483
485(defun thumbs-file-alist () 484(defun thumbs-file-alist ()
486 "Make an alist of elements (POS . FILENAME) for all images in thumb buffer." 485 "Make an alist of elements (POS . FILENAME) for all images in thumb buffer."
487 (save-excursion 486 (with-current-buffer thumbs-buffer
488 (let (list) 487 (save-excursion
489 (goto-char (point-min)) 488 (let (list)
490 (while (not (eobp)) 489 (goto-char (point-min))
491 (if (thumbs-current-image) 490 (while (not (eobp))
492 (push (cons (point-marker) 491 (unless (= 0 (mod (point) (1+ thumbs-per-line)))
493 (thumbs-current-image)) 492 (if (thumbs-current-image)
494 list)) 493 (push (cons (point-marker)
495 (forward-char 1)) 494 (thumbs-current-image))
496 list))) 495 list)))
496 (forward-char 1))
497 (nreverse list)))))
497 498
498(defun thumbs-file-list () 499(defun thumbs-file-list ()
499 "Make a list of file names for all images in thumb buffer." 500 "Make a list of file names for all images in thumb buffer."
@@ -509,9 +510,9 @@ Open another window."
509(defun thumbs-delete-images () 510(defun thumbs-delete-images ()
510 "Delete the image at point (and its thumbnail) (or marked files if any)." 511 "Delete the image at point (and its thumbnail) (or marked files if any)."
511 (interactive) 512 (interactive)
512 (let ((files (or thumbs-markedL (list (thumbs-current-image))))) 513 (let ((files (or thumbs-marked-list (list (thumbs-current-image)))))
513 (if (yes-or-no-p (format "Really delete %d files? " (length files))) 514 (if (yes-or-no-p (format "Really delete %d files? " (length files)))
514 (let ((thumbs-fileL (thumbs-file-alist)) 515 (let ((thumbs-file-list (thumbs-file-alist))
515 (inhibit-read-only t)) 516 (inhibit-read-only t))
516 (dolist (x files) 517 (dolist (x files)
517 (let (failure) 518 (let (failure)
@@ -521,24 +522,24 @@ Open another window."
521 (delete-file (thumbs-thumbname x))) 522 (delete-file (thumbs-thumbname x)))
522 (file-error (setq failure t))) 523 (file-error (setq failure t)))
523 (unless failure 524 (unless failure
524 (when (rassoc x thumbs-fileL) 525 (when (rassoc x thumbs-file-list)
525 (goto-char (car (rassoc x thumbs-fileL))) 526 (goto-char (car (rassoc x thumbs-file-list)))
526 (delete-region (point) (1+ (point)))) 527 (delete-region (point) (1+ (point))))
527 (setq thumbs-markedL 528 (setq thumbs-marked-list
528 (delq x thumbs-markedL))))))))) 529 (delq x thumbs-marked-list)))))))))
529 530
530(defun thumbs-rename-images (newfile) 531(defun thumbs-rename-images (newfile)
531 "Rename the image at point (and its thumbnail) (or marked files if any)." 532 "Rename the image at point (and its thumbnail) (or marked files if any)."
532 (interactive "FRename to file or directory: ") 533 (interactive "FRename to file or directory: ")
533 (let ((files (or thumbs-markedL (list (thumbs-current-image)))) 534 (let ((files (or thumbs-marked-list (list (thumbs-current-image))))
534 failures) 535 failures)
535 (if (and (not (file-directory-p newfile)) 536 (if (and (not (file-directory-p newfile))
536 thumbs-markedL) 537 thumbs-marked-list)
537 (if (file-exists-p newfile) 538 (if (file-exists-p newfile)
538 (error "Renaming marked files to file name `%s'" newfile) 539 (error "Renaming marked files to file name `%s'" newfile)
539 (make-directory newfile t))) 540 (make-directory newfile t)))
540 (if (yes-or-no-p (format "Really rename %d files? " (length files))) 541 (if (yes-or-no-p (format "Really rename %d files? " (length files)))
541 (let ((thumbs-fileL (thumbs-file-alist)) 542 (let ((thumbs-file-list (thumbs-file-alist))
542 (inhibit-read-only t)) 543 (inhibit-read-only t))
543 (dolist (file files) 544 (dolist (file files)
544 (let (failure) 545 (let (failure)
@@ -552,11 +553,11 @@ Open another window."
552 (file-error (setq failure t) 553 (file-error (setq failure t)
553 (push file failures))) 554 (push file failures)))
554 (unless failure 555 (unless failure
555 (when (rassoc file thumbs-fileL) 556 (when (rassoc file thumbs-file-list)
556 (goto-char (car (rassoc file thumbs-fileL))) 557 (goto-char (car (rassoc file thumbs-file-list)))
557 (delete-region (point) (1+ (point)))) 558 (delete-region (point) (1+ (point))))
558 (setq thumbs-markedL 559 (setq thumbs-marked-list
559 (delq file thumbs-markedL))))))) 560 (delq file thumbs-marked-list)))))))
560 (if failures 561 (if failures
561 (display-warning 'file-error 562 (display-warning 'file-error
562 (format "Rename failures for %s into %s" 563 (format "Rename failures for %s into %s"
@@ -571,31 +572,38 @@ Open another window."
571(defun thumbs-show-image-num (num) 572(defun thumbs-show-image-num (num)
572 "Show the image with number NUM." 573 "Show the image with number NUM."
573 (let ((image-buffer (get-buffer-create "*Image*"))) 574 (let ((image-buffer (get-buffer-create "*Image*")))
574 (let ((i (thumbs-current-image))) 575 (let ((img (cdr (nth (1- num) (thumbs-file-alist)))))
575 (with-current-buffer image-buffer 576 (with-current-buffer image-buffer
576 (thumbs-insert-image i (thumbs-image-type i) 0)) 577 (setq mode-name
578 (concat "image-view-mode: " (file-name-nondirectory img)
579 " - " (number-to-string num)))
580 (let ((inhibit-read-only t))
581 (erase-buffer)
582 (thumbs-insert-image img (thumbs-image-type img) 0)
583 (goto-char (point-min))))
577 (setq thumbs-image-num num 584 (setq thumbs-image-num num
578 thumbs-current-image-filename i)))) 585 thumbs-current-image-filename img))))
586
587(defun thumbs-previous-image ()
588 "Show the previous image."
589 (interactive)
590 (let* ((i (- thumbs-image-num 1))
591 (number (length (thumbs-file-alist))))
592 (if (= i 0) (setq i (1- number)))
593 (thumbs-show-image-num i)))
579 594
580(defun thumbs-next-image () 595(defun thumbs-next-image ()
581 "Show the next image." 596 "Show the next image."
582 (interactive) 597 (interactive)
583 (let* ((i (1+ thumbs-image-num)) 598 (let* ((i (1+ thumbs-image-num))
584 (list (thumbs-file-alist)) 599 (number (length (thumbs-file-alist))))
585 (l (caar list))) 600 (if (= i number) (setq i 1))
586 (while (and (/= i thumbs-image-num) (not (assoc i list)))
587 (setq i (if (>= i l) 1 (1+ i))))
588 (thumbs-show-image-num i))) 601 (thumbs-show-image-num i)))
589 602
590(defun thumbs-previous-image () 603(defun thumbs-display-thumbs-buffer ()
591 "Show the previous image." 604 "Display the associated thumbs buffer."
592 (interactive) 605 (interactive)
593 (let* ((i (- thumbs-image-num 1)) 606 (display-buffer thumbs-buffer))
594 (list (thumbs-file-alist))
595 (l (caar list)))
596 (while (and (/= i thumbs-image-num) (not (assoc i list)))
597 (setq i (if (<= i 1) l (1- i))))
598 (thumbs-show-image-num i)))
599 607
600(defun thumbs-redraw-buffer () 608(defun thumbs-redraw-buffer ()
601 "Redraw the current thumbs buffer." 609 "Redraw the current thumbs buffer."
@@ -612,10 +620,11 @@ Open another window."
612 (let ((elt (thumbs-current-image))) 620 (let ((elt (thumbs-current-image)))
613 (unless elt 621 (unless elt
614 (error "No image here")) 622 (error "No image here"))
615 (push elt thumbs-markedL) 623 (push elt thumbs-marked-list)
616 (let ((inhibit-read-only t)) 624 (let ((inhibit-read-only t))
617 (delete-char 1) 625 (delete-char 1)
618 (thumbs-insert-thumb elt t))) 626 (save-excursion
627 (thumbs-insert-thumb elt t))))
619 (when (eolp) (forward-char))) 628 (when (eolp) (forward-char)))
620 629
621(defun thumbs-unmark () 630(defun thumbs-unmark ()
@@ -624,32 +633,34 @@ Open another window."
624 (let ((elt (thumbs-current-image))) 633 (let ((elt (thumbs-current-image)))
625 (unless elt 634 (unless elt
626 (error "No image here")) 635 (error "No image here"))
627 (setq thumbs-markedL (delete elt thumbs-markedL)) 636 (setq thumbs-marked-list (delete elt thumbs-marked-list))
628 (let ((inhibit-read-only t)) 637 (let ((inhibit-read-only t))
629 (delete-char 1) 638 (delete-char 1)
630 (thumbs-insert-thumb elt nil))) 639 (save-excursion
640 (thumbs-insert-thumb elt nil))))
631 (when (eolp) (forward-char))) 641 (when (eolp) (forward-char)))
632 642
643
644;; cleaning of old temp files
645(mapc 'delete-file
646 (directory-files (thumbs-temp-dir) t thumbs-temp-prefix))
647
633;; Image modification routines 648;; Image modification routines
634 649
635(defun thumbs-modify-image (action &optional arg) 650(defun thumbs-modify-image (action &optional arg)
636 "Call convert to do ACTION on image with argument ARG. 651 "Call convert to do ACTION on image with argument ARG.
637ACTION and ARG should be a valid convert command." 652ACTION and ARG should be a valid convert command."
638 (interactive "sAction: \nsValue: ") 653 (interactive "sAction: \nsValue: ")
639 ;; cleaning of old temp file 654 (let* ((buffer-read-only nil)
640 (mapc 'delete-file 655 (old thumbs-current-tmp-filename)
641 (directory-files 656 (tmp (thumbs-temp-file)))
642 (thumbs-temp-dir)
643 t
644 thumbs-temp-prefix))
645 (let ((buffer-read-only nil)
646 (tmp (thumbs-temp-file)))
647 (erase-buffer) 657 (erase-buffer)
648 (thumbs-call-convert thumbs-current-image-filename 658 (thumbs-call-convert (or old thumbs-current-image-filename)
649 tmp 659 tmp
650 action 660 action
651 (or arg "")) 661 (or arg ""))
652 (thumbs-insert-image tmp 'jpeg 0) 662 (save-excursion
663 (thumbs-insert-image tmp 'jpeg 0))
653 (setq thumbs-current-tmp-filename tmp))) 664 (setq thumbs-current-tmp-filename tmp)))
654 665
655(defun thumbs-emboss-image (emboss) 666(defun thumbs-emboss-image (emboss)
@@ -699,17 +710,24 @@ ACTION and ARG should be a valid convert command."
699 (forward-char -1)) 710 (forward-char -1))
700 (thumbs-show-name)) 711 (thumbs-show-name))
701 712
713(defun thumbs-backward-line ()
714 "Move up one line."
715 (interactive)
716 (forward-line -1)
717 (thumbs-show-name))
718
702(defun thumbs-forward-line () 719(defun thumbs-forward-line ()
703 "Move down one line." 720 "Move down one line."
704 (interactive) 721 (interactive)
705 (forward-line 1) 722 (forward-line 1)
706 (thumbs-show-name)) 723 (thumbs-show-name))
707 724
708(defun thumbs-backward-line () 725(defun thumbs-show-more-images (&optional arg)
709 "Move up one line." 726 "Show more than `thumbs-max-image-number' images, if present."
710 (interactive) 727 (interactive "P")
711 (forward-line -1) 728 (or arg (setq arg 1))
712 (thumbs-show-name)) 729 (setq thumbs-extra-images (+ thumbs-extra-images arg))
730 (thumbs-dired-show))
713 731
714(defun thumbs-show-name () 732(defun thumbs-show-name ()
715 "Show the name of the current file." 733 "Show the name of the current file."
@@ -744,6 +762,7 @@ ACTION and ARG should be a valid convert command."
744 (define-key map [left] 'thumbs-backward-char) 762 (define-key map [left] 'thumbs-backward-char)
745 (define-key map [up] 'thumbs-backward-line) 763 (define-key map [up] 'thumbs-backward-line)
746 (define-key map [down] 'thumbs-forward-line) 764 (define-key map [down] 'thumbs-forward-line)
765 (define-key map "+" 'thumbs-show-more-images)
747 (define-key map "d" 'thumbs-dired) 766 (define-key map "d" 'thumbs-dired)
748 (define-key map "m" 'thumbs-mark) 767 (define-key map "m" 'thumbs-mark)
749 (define-key map "u" 'thumbs-unmark) 768 (define-key map "u" 'thumbs-unmark)
@@ -759,18 +778,19 @@ ACTION and ARG should be a valid convert command."
759 fundamental-mode "thumbs" 778 fundamental-mode "thumbs"
760 "Preview images in a thumbnails buffer" 779 "Preview images in a thumbnails buffer"
761 (setq buffer-read-only t) 780 (setq buffer-read-only t)
762 (set (make-local-variable 'thumbs-markedL) nil)) 781 (set (make-local-variable 'thumbs-marked-list) nil))
763 782
764(defvar thumbs-view-image-mode-map 783(defvar thumbs-view-image-mode-map
765 (let ((map (make-sparse-keymap))) 784 (let ((map (make-sparse-keymap)))
766 (define-key map [prior] 'thumbs-previous-image) 785 (define-key map [prior] 'thumbs-previous-image)
767 (define-key map [next] 'thumbs-next-image) 786 (define-key map [next] 'thumbs-next-image)
768 (define-key map "-" 'thumbs-resize-image-size-down) 787 (define-key map "^" 'thumbs-display-thumbs-buffer)
769 (define-key map "+" 'thumbs-resize-image-size-up) 788 (define-key map "-" 'thumbs-shrink-image)
789 (define-key map "+" 'thumbs-enlarge-image)
770 (define-key map "<" 'thumbs-rotate-left) 790 (define-key map "<" 'thumbs-rotate-left)
771 (define-key map ">" 'thumbs-rotate-right) 791 (define-key map ">" 'thumbs-rotate-right)
772 (define-key map "e" 'thumbs-emboss-image) 792 (define-key map "e" 'thumbs-emboss-image)
773 (define-key map "r" 'thumbs-resize-interactive) 793 (define-key map "r" 'thumbs-resize-image)
774 (define-key map "s" 'thumbs-save-current-image) 794 (define-key map "s" 'thumbs-save-current-image)
775 (define-key map "q" 'thumbs-kill-buffer) 795 (define-key map "q" 'thumbs-kill-buffer)
776 (define-key map "w" 'thumbs-set-root) 796 (define-key map "w" 'thumbs-set-root)
@@ -790,7 +810,7 @@ ACTION and ARG should be a valid convert command."
790 (thumbs-call-setroot-command (dired-get-filename))) 810 (thumbs-call-setroot-command (dired-get-filename)))
791 811
792;; Modif to dired mode map 812;; Modif to dired mode map
793(define-key dired-mode-map "\C-ta" 'thumbs-dired-show-all) 813(define-key dired-mode-map "\C-ta" 'thumbs-dired-show)
794(define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked) 814(define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked)
795(define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot) 815(define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot)
796 816
diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el
index e301804cf17..0729064c72b 100644
--- a/lisp/vc-rcs.el
+++ b/lisp/vc-rcs.el
@@ -152,8 +152,8 @@ For a description of possible values, see `vc-check-master-templates'."
152 (vc-file-setprop file 'vc-checkout-model 'locking)))) 152 (vc-file-setprop file 'vc-checkout-model 'locking))))
153 state) 153 state)
154 (if (not (vc-mistrust-permissions file)) 154 (if (not (vc-mistrust-permissions file))
155 (let* ((attributes (file-attributes file)) 155 (let* ((attributes (file-attributes file 'string))
156 (owner-uid (nth 2 attributes)) 156 (owner-name (nth 2 attributes))
157 (permissions (nth 8 attributes))) 157 (permissions (nth 8 attributes)))
158 (cond ((string-match ".r-..-..-." permissions) 158 (cond ((string-match ".r-..-..-." permissions)
159 (vc-file-setprop file 'vc-checkout-model 'locking) 159 (vc-file-setprop file 'vc-checkout-model 'locking)
@@ -162,7 +162,7 @@ For a description of possible values, see `vc-check-master-templates'."
162 (if (eq (vc-checkout-model file) 'locking) 162 (if (eq (vc-checkout-model file) 'locking)
163 (if (file-ownership-preserved-p file) 163 (if (file-ownership-preserved-p file)
164 'edited 164 'edited
165 (vc-user-login-name owner-uid)) 165 owner-name)
166 (if (vc-rcs-workfile-is-newer file) 166 (if (vc-rcs-workfile-is-newer file)
167 'edited 167 'edited
168 'up-to-date))) 168 'up-to-date)))
diff --git a/lisp/vc-sccs.el b/lisp/vc-sccs.el
index 8f00e1df627..c4047d1b3ec 100644
--- a/lisp/vc-sccs.el
+++ b/lisp/vc-sccs.el
@@ -122,15 +122,15 @@ For a description of possible values, see `vc-check-master-templates'."
122 ;; We have to be careful not to exclude files with execute bits on; 122 ;; We have to be careful not to exclude files with execute bits on;
123 ;; scripts can be under version control too. Also, we must ignore the 123 ;; scripts can be under version control too. Also, we must ignore the
124 ;; group-read and other-read bits, since paranoid users turn them off. 124 ;; group-read and other-read bits, since paranoid users turn them off.
125 (let* ((attributes (file-attributes file)) 125 (let* ((attributes (file-attributes file 'string))
126 (owner-uid (nth 2 attributes)) 126 (owner-name (nth 2 attributes))
127 (permissions (nth 8 attributes))) 127 (permissions (nth 8 attributes)))
128 (if (string-match ".r-..-..-." permissions) 128 (if (string-match ".r-..-..-." permissions)
129 'up-to-date 129 'up-to-date
130 (if (string-match ".rw..-..-." permissions) 130 (if (string-match ".rw..-..-." permissions)
131 (if (file-ownership-preserved-p file) 131 (if (file-ownership-preserved-p file)
132 'edited 132 'edited
133 (vc-user-login-name owner-uid)) 133 owner-name)
134 ;; Strange permissions. 134 ;; Strange permissions.
135 ;; Fall through to real state computation. 135 ;; Fall through to real state computation.
136 (vc-sccs-state file)))) 136 (vc-sccs-state file))))