aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorPaul Eggert2011-03-01 17:52:03 -0800
committerPaul Eggert2011-03-01 17:52:03 -0800
commitba46f4d85a6938273f52a8cdf7e09d9afee61d7f (patch)
tree606ec46b703532d463ccddf287f0053430eb1f4a /lisp
parentd9d0d182da35312ed0d7a9859b9c6a03994d86d8 (diff)
parent0dc3e4109e0c41bbf5fdcae0ff1156162719693e (diff)
downloademacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.tar.gz
emacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.zip
Merge from mainline.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog385
-rw-r--r--lisp/ChangeLog.102
-rw-r--r--lisp/ChangeLog.129
-rw-r--r--lisp/ChangeLog.310
-rw-r--r--lisp/allout.el8
-rw-r--r--lisp/calc/calc-ext.el2
-rw-r--r--lisp/calc/calc-math.el2
-rw-r--r--lisp/calc/calc-vec.el13
-rw-r--r--lisp/calendar/cal-hebrew.el47
-rw-r--r--lisp/cedet/semantic/analyze.el2
-rw-r--r--lisp/cedet/semantic/complete.el2
-rw-r--r--lisp/cedet/semantic/edit.el4
-rw-r--r--lisp/cedet/semantic/format.el2
-rw-r--r--lisp/cedet/semantic/java.el2
-rw-r--r--lisp/dired-aux.el6
-rw-r--r--lisp/dired-x.el115
-rw-r--r--lisp/dired.el14
-rw-r--r--lisp/emacs-lisp/assoc.el10
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el4
-rw-r--r--lisp/emacs-lisp/cl-macs.el2
-rw-r--r--lisp/emacs-lisp/package-x.el89
-rw-r--r--lisp/emacs-lisp/pcase.el111
-rw-r--r--lisp/emulation/viper-cmd.el2
-rw-r--r--lisp/erc/ChangeLog.016
-rw-r--r--lisp/facemenu.el24
-rw-r--r--lisp/files.el18
-rw-r--r--lisp/gnus/ChangeLog68
-rw-r--r--lisp/gnus/auth-source.el150
-rw-r--r--lisp/gnus/gnus-agent.el14
-rw-r--r--lisp/gnus/gnus-art.el34
-rw-r--r--lisp/gnus/gnus-demon.el2
-rw-r--r--lisp/gnus/gnus-gravatar.el3
-rw-r--r--lisp/gnus/gnus-group.el15
-rw-r--r--lisp/gnus/gnus-range.el8
-rw-r--r--lisp/gnus/gnus-start.el27
-rw-r--r--lisp/gnus/gnus.el4
-rw-r--r--lisp/gnus/nnimap.el13
-rw-r--r--lisp/gnus/nntp.el2
-rw-r--r--lisp/gnus/sieve.el103
-rw-r--r--lisp/ido.el8
-rw-r--r--lisp/international/mule-cmds.el4
-rw-r--r--lisp/mail/rmail.el4
-rw-r--r--lisp/net/tramp-cmds.el6
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/obsolete/sym-comp.el2
-rw-r--r--lisp/org/ChangeLog11
-rw-r--r--lisp/password-cache.el6
-rw-r--r--lisp/progmodes/cperl-mode.el16
-rw-r--r--lisp/progmodes/idlwave.el4
-rw-r--r--lisp/progmodes/vhdl-mode.el8
-rw-r--r--lisp/replace.el2
-rw-r--r--lisp/term/screen.el11
-rw-r--r--lisp/textmodes/paragraphs.el2
53 files changed, 859 insertions, 561 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c44c491cad0..8d891b22fd0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,117 @@
12011-03-01 Juanma Barranquero <lekktu@gmail.com>
2
3 * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring.
4
52011-03-01 Glenn Morris <rgm@gnu.org>
6
7 * calendar/cal-hebrew.el (calendar-hebrew-birthday, diary-hebrew-date):
8 Rename and rework functions added in previous change.
9
102011-03-01 Ed Reingold <reingold@emr.cs.iit.edu>
11
12 * calendar/cal-hebrew.el (hebrew-calendar-birthday)
13 (diary-hebrew-birthday): New functions.
14
152011-03-01 Glenn Morris <rgm@gnu.org>
16
17 * dired.el (dired-safe-switches-p): Beef it up.
18 (dired-actual-switches): Use it for the safe-local prop. (Bug#3230)
19
202011-03-01 Stefan Monnier <monnier@iro.umontreal.ca>
21
22 * dired.el (dired-safe-switches-p): New function.
23
242011-03-01 Glenn Morris <rgm@gnu.org>
25
26 * files.el (dir-locals-collect-variables):
27 Add the ability to exclude subdirectories. (Bug#8100)
28
29 * dired-x.el (dired-omit-here-always): Add `(subdirs . nil)' to locals.
30
312011-02-28 Christoph Scholtes <cschol2112@googlemail.com>
32
33 * ido.el (ido-everywhere): Doc fix.
34 (ido-mode): Doc fix.
35
362011-02-28 Glenn Morris <rgm@gnu.org>
37
38 * dired-x.el (dired-guess-shell-alist-default): Use \\', not $.
39
402011-02-28 Michael Albinus <michael.albinus@gmx.de>
41
42 * net/tramp-cmds.el (tramp-append-tramp-buffers): Dump load-path
43 shadows.
44
452011-02-28 Antoine Levitt <antoine.levitt@gmail.com> (tiny change)
46
47 * dired-x.el (dired-guess-shell-alist-default): Add rar and 7z.
48
492011-02-28 Juanma Barranquero <lekktu@gmail.com>
50
51 * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1):
52 Fix typos in docstrings.
53
542011-02-28 Stephen Berman <stephen.berman@gmx.net>
55
56 * dired-aux.el (dired-update-file-line):
57 Fix 2010-11-09 change. (Bug#8131)
58
592011-02-28 Eli Zaretskii <eliz@gnu.org>
60
61 * international/mule-cmds.el (set-default-coding-systems): Use the
62 -unix variant of encoding in default-keyboard-coding-system.
63 (Bug#8122)
64
652011-02-27 Chong Yidong <cyd@stupidchicken.com>
66
67 * facemenu.el (list-colors-display): Use with-help-window (Bug#8048).
68
692011-02-27 Prestoo Ten <prestooten@gmail.com> (tiny change)
70
71 * term/screen.el: New file (Bug#2650).
72
732011-02-27 Stefan Monnier <monnier@iro.umontreal.ca>
74
75 * emacs-lisp/pcase.el (pcase--if): Try to invert test to reduce depth.
76 (pcase-mutually-exclusive-predicates): New var.
77 (pcase--split-consp, pcase--split-pred): Use it.
78 (pcase--split-equal, pcase--split-member): When splitting against
79 a pure predicate, run it to know the outcome.
80 (pcase--u1): Mark vars that are actually used.
81 (pcase--q1): Avoid introducing unused vars.
82
832011-02-27 Jay Belanger <jay.p.belanger@gmail.com>
84
85 * calc/calc-ext.el (calc-init-extensions):
86 Autoload `calc-l-prefix-help' instead of `calc-ul-prefix-help'.
87
88 * calc/calc-math.el (calcFunc-log10): Don't signal an error in
89 symbolic mode.
90
91 * calc/calc-vec.el (calcFunc-subscr): Return nil if the first
92 argument is a variable.
93
942011-02-26 Stefan Monnier <monnier@iro.umontreal.ca>
95
96 * emacs-lisp/assoc.el: Remove misleading `sort' (bug#8126).
97 (aput, adelete, amake): Replace `eval' -> `symbol-value'.
98 Suggested by Michael Heerdegen <michael_heerdegen@web.de>.
99
1002011-02-25 Teodor Zlatanov <tzz@lifelogs.com>
101
102 * password-cache.el (password-in-cache-p): Convenience function to
103 check if a key is in the cache, even if the value is nil.
104
1052011-02-25 Jambunathan K <kjambunathan@gmail.com>
106
107 * emacs-lisp/package-x.el (package--archive-contents-from-url)
108 (package--archive-contents-from-file): New functions.
109 (package-update-news-on-upload): New var.
110 (package-upload-buffer-internal): Extract archive-contents from
111 package-archive-upload-base if it is not found at archive-url.
112 Obey package-update-news-on-upload.
113 (package-upload-buffer, package-upload-file): Doc fix.
114
12011-02-24 Glenn Morris <rgm@gnu.org> 1152011-02-24 Glenn Morris <rgm@gnu.org>
2 116
3 * files-x.el (modify-dir-local-variable): Handle dir-locals from 117 * files-x.el (modify-dir-local-variable): Handle dir-locals from
@@ -1461,8 +1575,7 @@
1461 (allout-command-prefix) (allout-prefixed-keybindings) 1575 (allout-command-prefix) (allout-prefixed-keybindings)
1462 (allout-unprefixed-keybindings): 1576 (allout-unprefixed-keybindings):
1463 Use allout-compose-and-institute-keymap to process the bindings. 1577 Use allout-compose-and-institute-keymap to process the bindings.
1464 (allout-unprefixed-keybindings): Remove extraneous '?' question 1578 (allout-unprefixed-keybindings): Remove extraneous '?' question marks.
1465 marks.
1466 (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h - 1579 (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
1467 user can customize if they want to use that binding. 1580 user can customize if they want to use that binding.
1468 Bind allout-copy-topic-as-kill to (prefixed) \M-k. 1581 Bind allout-copy-topic-as-kill to (prefixed) \M-k.
@@ -1471,14 +1584,12 @@
1471 (allout-hotspot-key-handler): Remove attempt to resolve the key 1584 (allout-hotspot-key-handler): Remove attempt to resolve the key
1472 through the literal key-string lookup on allout-keybindings-list. 1585 through the literal key-string lookup on allout-keybindings-list.
1473 That probably hasn't worked for a Long Time, and removal of 1586 That probably hasn't worked for a Long Time, and removal of
1474 allout-keybindings-list further simplifies the keybindings 1587 allout-keybindings-list further simplifies the keybindings situation.
1475 situation.
1476 (allout-pre-command-business): Use allout-mode-map-value instead 1588 (allout-pre-command-business): Use allout-mode-map-value instead
1477 of allout-mode-map. 1589 of allout-mode-map.
1478 (allout-preempt-trailing-ctrl-h): Remove. The user can customize 1590 (allout-preempt-trailing-ctrl-h): Remove. The user can customize
1479 the bindings if they want to use a keybinding having a trailing 1591 the bindings if they want to use a keybinding having a trailing
1480 \C-h. No deprecation needed since this feature was never in a 1592 \C-h. No deprecation needed since this feature was never in a release.
1481 release.
1482 (allout-keybindings-list): Remove. It's not been useful for a 1593 (allout-keybindings-list): Remove. It's not been useful for a
1483 while. (See allout-hotspot-key-handler changes, above.) 1594 while. (See allout-hotspot-key-handler changes, above.)
1484 (produce-allout-mode-map): Remove. Consolidate into 1595 (produce-allout-mode-map): Remove. Consolidate into
@@ -2660,7 +2771,7 @@
2660 this original name from `bookmark-name-from-record' reverting part 2771 this original name from `bookmark-name-from-record' reverting part
2661 of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm. 2772 of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm.
2662 As Drew Adams pointed out, there was no reason to cause churn for 2773 As Drew Adams pointed out, there was no reason to cause churn for
2663 third-party callers. 2774 third-party callers. (Bug#7609)
2664 2775
26652010-12-12 Alan Mackenzie <acm@muc.de> 27762010-12-12 Alan Mackenzie <acm@muc.de>
2666 2777
@@ -3006,7 +3117,6 @@
3006 3117
3007 * net/tramp-cmds.el: Remove solved todo item. 3118 * net/tramp-cmds.el: Remove solved todo item.
3008 3119
3009 * net/tramp-efs.el:
3010 * net/tramp-ftp.el: 3120 * net/tramp-ftp.el:
3011 * net/tramp-gvfs.el: 3121 * net/tramp-gvfs.el:
3012 * net/tramp-gw.el: 3122 * net/tramp-gw.el:
@@ -4620,7 +4730,7 @@
4620 4730
46212010-10-24 Michael McNamara <mac@mail.brushroad.com> 47312010-10-24 Michael McNamara <mac@mail.brushroad.com>
4622 4732
4623 * verilog-mode.el (verilog-directive-re): Make this variable 4733 * progmodes/verilog-mode.el (verilog-directive-re): Make this variable
4624 auto-built for efficiency of execution and updating. 4734 auto-built for efficiency of execution and updating.
4625 (verilog-extended-complete-re): Support 'pure' fucntion & task 4735 (verilog-extended-complete-re): Support 'pure' fucntion & task
4626 declarations (these have no bodies). 4736 declarations (these have no bodies).
@@ -4654,7 +4764,7 @@
4654 4764
46552010-10-24 Wilson Snyder <wsnyder@wsnyder.org> 47652010-10-24 Wilson Snyder <wsnyder@wsnyder.org>
4656 4766
4657 * verilog-mode.el (verilog-auto-inst, verilog-gate-ios) 4767 * progmodes/verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
4658 (verilog-gate-keywords, verilog-read-sub-decls) 4768 (verilog-gate-keywords, verilog-read-sub-decls)
4659 (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios) 4769 (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios)
4660 (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support 4770 (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support
@@ -6251,8 +6361,8 @@
6251 Use `tramp-compat-funcall'. 6361 Use `tramp-compat-funcall'.
6252 6362
6253 * net/tramp.el (tramp-process-actions): 6363 * net/tramp.el (tramp-process-actions):
6254 * net/tramp-gvfs.el (tramp-handle-vc-registered): 6364 * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion):
6255 * net/tramp-sh.el (tramp-gvfs-handler-askquestion) 6365 * net/tramp-sh.el (tramp-handle-vc-registered)
6256 (tramp-get-remote-stat, tramp-get-remote-readlink): 6366 (tramp-get-remote-stat, tramp-get-remote-readlink):
6257 Use `tramp-compat-with-temp-message'. 6367 Use `tramp-compat-with-temp-message'.
6258 6368
@@ -7299,48 +7409,6 @@
7299 7409
7300 * whitespace.el (whitespace-style): Adjust type declaration. 7410 * whitespace.el (whitespace-style): Adjust type declaration.
7301 7411
73022010-08-26 Magnus Henoch <magnus.henoch@gmail.com>
7303
7304 * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
7305 empty argument to gvfs-copy.
7306
73072010-08-26 Chong Yidong <cyd@stupidchicken.com>
7308
7309 * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
7310 handle new TRASH arg of `delete-file'.
7311
73122010-08-26 Christian Lynbech <christian.lynbech@tieto.com> (tiny change)
7313
7314 * net/tramp.el (tramp-handle-insert-directory): Don't use
7315 `forward-word', its default syntax could be changed.
7316
73172010-08-26 Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>
7318 Michael Albinus <michael.albinus@gmx.de>
7319
7320 Implement compression for inline methods.
7321
7322 * net/tramp.el (tramp-inline-compress-start-size): New defcustom.
7323 (tramp-copy-size-limit): Allow also nil.
7324 (tramp-inline-compress-commands): New defconst.
7325 (tramp-find-inline-compress, tramp-get-inline-compress)
7326 (tramp-get-inline-coding): New defuns.
7327 (tramp-get-remote-coding, tramp-get-local-coding): Remove,
7328 replaced by `tramp-get-inline-coding'.
7329 (tramp-handle-file-local-copy, tramp-handle-write-region)
7330 (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
7331
73322010-08-26 Noah Lavine <noah549@gmail.com> (tiny change)
7333
7334 Detect ssh 'ControlMaster' argument automatically in some cases.
7335
7336 * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
7337 (tramp-default-method): Use it.
7338
73392010-08-26 Karel Klíč <kklic@redhat.com>
7340
7341 * net/tramp.el (tramp-file-name-for-operation):
7342 Add file-selinux-context.
7343
73442010-08-26 Łukasz Stelmach <lukasz.stelmach@iem.pw.edu.pl> (tiny change) 74122010-08-26 Łukasz Stelmach <lukasz.stelmach@iem.pw.edu.pl> (tiny change)
7345 7413
7346 * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921). 7414 * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
@@ -7372,210 +7440,14 @@
7372 7440
7373 Sync with Tramp 2.1.19. 7441 Sync with Tramp 2.1.19.
7374 7442
7375 * net/tramp-cmds.el (tramp-cleanup-all-connections) 7443 * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Protect
7376 (tramp-reporter-dump-variable, tramp-load-report-modules) 7444 deleting tmpfile.
7377 (tramp-append-tramp-buffers): Use `tramp-compat-funcall'. 7445 (tramp-gvfs-maybe-open-connection): Use `tramp-compat-funcall'.
7378 (tramp-bug): Recommend setting of `tramp-verbose' to 9.
7379
7380 * net/tramp-compat.el (top): Do not autoload
7381 `tramp-handle-file-remote-p'. Load tramp-util.el and tramp-vc.el
7382 only when `start-file-process' is not bound.
7383 (byte-compile-not-obsolete-vars): Define if not bound.
7384 (tramp-compat-funcall): New defmacro.
7385 (tramp-compat-line-beginning-position)
7386 (tramp-compat-line-end-position)
7387 (tramp-compat-temporary-file-directory)
7388 (tramp-compat-make-temp-file, tramp-compat-file-attributes)
7389 (tramp-compat-copy-file, tramp-compat-copy-directory)
7390 (tramp-compat-delete-file, tramp-compat-delete-directory)
7391 (tramp-compat-number-sequence, tramp-compat-process-running-p):
7392 Use it.
7393 (tramp-advice-file-expand-wildcards): Do not use
7394 `tramp-handle-file-remote-p'.
7395 (tramp-compat-make-temp-file): Simplify fallback implementation.
7396 (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
7397 (tramp-compat-copy-tree): Remove function.
7398 (tramp-compat-delete-file): New defun.
7399 (tramp-compat-delete-directory): Provide implementation for older
7400 Emacsen.
7401 (tramp-compat-file-attributes): Handle only
7402 `wrong-number-of-arguments' error.
7403 7446
7404 * net/tramp-fish.el (tramp-fish-handle-copy-file): 7447 * net/tramp.el (tramp-handle-expand-file-name)
7405 Add PRESERVE_SELINUX_CONTEXT.
7406 (tramp-fish-handle-delete-file): Add TRASH arg.
7407 (tramp-fish-handle-directory-files-and-attributes):
7408 Do not use `tramp-fish-handle-file-attributes.
7409 (tramp-fish-handle-file-local-copy)
7410 (tramp-fish-handle-insert-file-contents)
7411 (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
7412
7413 * net/tramp-gvfs.el (top): Require url-util.
7414 (tramp-gvfs-mount-point): Remove.
7415 (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
7416 and `set-file-selinux-context'.
7417 (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
7418 (tramp-gvfs-handle-file-selinux-context)
7419 (tramp-gvfs-handle-set-file-selinux-context): New defuns.
7420 (with-tramp-dbus-call-method): Format trace message.
7421 (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
7422 (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
7423 Implement backup call, when operation on local files fails.
7424 Use progress reporter. Flush properties of changed files.
7425 (tramp-gvfs-handle-delete-file): Add TRASH arg.
7426 Use `tramp-compat-delete-file'.
7427 (tramp-gvfs-handle-expand-file-name): Expand "~/".
7428 (tramp-gvfs-handle-make-directory): Make more traces.
7429 (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
7430 (tramp-gvfs-url-file-name): Hexify file name in url.
7431 (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
7432 into account for the resulting file name.
7433 (tramp-gvfs-handler-askquestion): Preserve current message, in
7434 order to let progress reporter continue afterwards. (Bug#6257)
7435 Return dummy mountpoint, when the answer is "no".
7436 See `tramp-gvfs-maybe-open-connection'.
7437 (tramp-gvfs-handler-mounted-unmounted)
7438 (tramp-gvfs-connection-mounted-p): Test also for new mountspec
7439 attribute "default_location". Set "prefix" property.
7440 Handle default-location.
7441 (tramp-gvfs-mount-spec): Return both prefix and mountspec.
7442 (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
7443 exists. Raise an error, if not (due to a corresponding answer
7444 "no" in interactive questions, for example).
7445 Use `tramp-compat-funcall'.
7446
7447 * net/tramp-imap.el (top): Autoload `epg-make-context'.
7448 (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
7449 (tramp-imap-do-copy-or-rename-file)
7450 (tramp-imap-handle-insert-file-contents)
7451 (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
7452 (tramp-imap-handle-delete-file): Add TRASH arg.
7453
7454 * net/tramp-smb.el (tramp-smb-handle-copy-file):
7455 Add PRESERVE-SELINUX-CONTEXT.
7456 (tramp-smb-handle-copy-file)
7457 (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
7458 (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
7459 Use `with-progress-reporter'.
7460 (tramp-smb-handle-delete-file): Add TRASH arg.
7461
7462 * net/tramp.el (tramp-methods): Move hostname to the end in all
7463 ssh `tramp-login-args'. Add `tramp-async-args' attribute where
7464 appropriate.
7465 (tramp-verbose): Describe verbose level 9.
7466 (tramp-completion-function-alist)
7467 (tramp-file-name-regexp, tramp-chunksize)
7468 (tramp-local-coding-commands, tramp-remote-coding-commands)
7469 (with-connection-property, tramp-completion-mode-p)
7470 (tramp-action-process-alive, tramp-action-out-of-band)
7471 (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
7472 (tramp-exists-file-name-handler): Fix docstring.
7473 (tramp-remote-process-environment): Use `format' instead of
7474 `concat'. Protect version string by apostroph.
7475 (tramp-shell-prompt-pattern): Do not use a shy group in case of
7476 XEmacs.
7477 (tramp-file-name-regexp-unified)
7478 (tramp-completion-file-name-regexp-unified): On W32 systems, do
7479 not regard the volume letter as remote filename. (Bug#5447)
7480 (tramp-perl-file-attributes)
7481 (tramp-perl-directory-files-and-attributes): Don't pass "$3".
7482 (tramp-vc-registered-read-file-names): Read input as
7483 here-document, otherwise the command could exceed maximum length
7484 of command line.
7485 (tramp-file-name-handler-alist): Add `file-selinux-context' and
7486 `set-file-selinux-context'.
7487 (tramp-debug-message): Add `tramp-compat-funcall' to ignored
7488 backtrace functions.
7489 (tramp-error-with-buffer): Don't show the connection buffer when
7490 we are in completion mode.
7491 (tramp-progress-reporter-update, tramp-remote-selinux-p)
7492 (tramp-handle-file-selinux-context)
7493 (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
7494 (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
7495 New defuns.
7496 (with-progress-reporter): New defmacro.
7497 (tramp-debug-outline-regexp): New defconst.
7498 (top, tramp-rfn-eshadow-setup-minibuffer)
7499 (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
7500 (tramp-handle-dired-compress-file, tramp-handle-shell-command)
7501 (tramp-completion-mode-p, tramp-check-for-regexp)
7502 (tramp-open-connection-setup-interactive-shell)
7503 (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
7504 (tramp-time-diff, tramp-coding-system-change-eol-conversion)
7505 (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
7506 Use `tramp-compat-funcall'.
7507 (tramp-handle-make-symbolic-link): Flush file properties.
7508 (tramp-handle-load, tramp-handle-file-local-copy)
7509 (tramp-handle-insert-file-contents, tramp-handle-write-region)
7510 (tramp-handle-vc-registered, tramp-maybe-send-script)
7511 (tramp-find-shell): Use `with-progress-reporter'.
7512 (tramp-do-file-attributes-with-stat): Add space in format string,
7513 in order to work around a bug in pdksh. Reported by Gilles Pion
7514 <gpion@lfdj.com>.
7515 (tramp-handle-verify-visited-file-modtime): Do not send a command
7516 when the connection is not established.
7517 (tramp-handle-set-file-times): Simplify the check for utc.
7518 (tramp-handle-directory-files-and-attributes)
7519 (tramp-get-remote-path): Use `copy-tree'.
7520 (tramp-completion-handle-file-name-all-completions): Ensure, that
7521 non remote files are still checked. Oops.
7522 (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
7523 Handle PRESERVE-SELINUX-CONTEXT.
7524 (tramp-do-copy-or-rename-file): Add progress reporter.
7525 (tramp-do-copy-or-rename-file-directly): Do not use
7526 `tramp-handle-file-remote-p'.
7527 (tramp-do-copy-or-rename-file-out-of-band):
7528 Use `tramp-compat-delete-directory'.
7529 (tramp-do-copy-or-rename-file-out-of-band)
7530 (tramp-compute-multi-hops, tramp-maybe-open-connection):
7531 Use `format-spec-make'.
7532 (tramp-handle-delete-file): Add TRASH arg.
7533 (tramp-handle-dired-uncache): Flush directory cache, not only file
7534 cache.
7535 (tramp-handle-expand-file-name)
7536 (tramp-completion-handle-file-name-all-completions) 7448 (tramp-completion-handle-file-name-all-completions)
7537 (tramp-completion-handle-file-name-completion): 7449 (tramp-completion-handle-file-name-completion):
7538 Use `tramp-connectable-p'. 7450 Use `tramp-connectable-p'.
7539 (tramp-handle-start-file-process): Set connection property "vec".
7540 Use it, in order to invalidate file caches. Check only for
7541 `remote-tty' process property.
7542 Implement tty setting. (Bug#4604, Bug#6360)
7543 (tramp-file-name-for-operation): Add `call-process-region' and
7544 `set-file-selinux-context'.
7545 (tramp-find-foreign-file-name-handler)
7546 (tramp-advice-make-auto-save-file-name)
7547 (tramp-set-auto-save-file-modes): Remove superfluous check for
7548 `stringp'. This is done inside `tramp-tramp-file-p'.
7549 (tramp-file-name-handler): Trace 'quit. Catch the error for some
7550 operations when we are in completion mode. This gives the user
7551 the chance to correct the file name in the minibuffer.
7552 (tramp-completion-mode-p): Use `non-essential'.
7553 (tramp-handle-file-name-all-completions): Backward/ XEmacs
7554 compatibility: Use `completion-ignore-case' if
7555 `read-file-name-completion-ignore-case' does not exist.
7556 (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
7557 (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
7558 `tramp-open-shell'.
7559 (tramp-action-password): Hide password prompt before next run.
7560 (tramp-process-actions): Widen connection buffer for the trace.
7561 (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
7562 process property. Trace stty settings if `tramp-verbose' >= 9.
7563 Apply workaround for IRIX64 bug. Move argument of last
7564 `tramp-send-command' where it belongs to.
7565 (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
7566 front of `login-args'.
7567 (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
7568 on "/dev/null" instead of "/".
7569 (tramp-get-ls-command-with-dired): Make test for "--dired"
7570 stronger.
7571 (tramp-set-auto-save-file-modes): Adapt version check.
7572 (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
7573 (tramp-handle-process-file): Call the program in a subshell, in
7574 order to preserve working directory.
7575 (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
7576 `tramp-remote-sh' from `tramp-methods'.
7577 (tramp-get-ls-command): Make test for "--color=never" stronger.
7578 (tramp-check-for-regexp): Use (forward-line 1).
7579 7451
7580 * net/trampver.el: Update release number. 7452 * net/trampver.el: Update release number.
7581 7453
@@ -9847,9 +9719,8 @@
9847 * net/tramp-ftp.el (tramp-ftp-file-name-handler): 9719 * net/tramp-ftp.el (tramp-ftp-file-name-handler):
9848 Use `delete-file' instead of `tramp-compat-delete-file'. 9720 Use `delete-file' instead of `tramp-compat-delete-file'.
9849 9721
9850 * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg. 9722 * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Use
9851 (tramp-gvfs-handle-write-region): Use `delete-file' instead of 9723 `delete-file' instead of `tramp-compat-delete-file'.
9852 `tramp-compat-delete-file'.
9853 9724
9854 * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file): 9725 * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file):
9855 Use `delete-file' instead of `tramp-compat-delete-file'. 9726 Use `delete-file' instead of `tramp-compat-delete-file'.
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 83ee20fa497..1c2f2b5b015 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -20591,7 +20591,7 @@
20591 20591
20592 * viper-cmd.el (viper-change-state): Got rid of make-local-hook. 20592 * viper-cmd.el (viper-change-state): Got rid of make-local-hook.
20593 (viper-special-read-and-insert-char): Make C-m work right in the r 20593 (viper-special-read-and-insert-char): Make C-m work right in the r
20594 comand. 20594 command.
20595 (viper-buffer-search-enable): Fixed format string. 20595 (viper-buffer-search-enable): Fixed format string.
20596 20596
20597 * viper-ex.el (ex-token-alist): Use ex-set-visited-file-name 20597 * viper-ex.el (ex-token-alist): Use ex-set-visited-file-name
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
index d2f7cab27f0..35572bd6105 100644
--- a/lisp/ChangeLog.12
+++ b/lisp/ChangeLog.12
@@ -10699,9 +10699,6 @@
10699 output of the next command. Reported by M Jared Finder 10699 output of the next command. Reported by M Jared Finder
10700 <jared@hpalace.com>. 10700 <jared@hpalace.com>.
10701 10701
10702 * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
10703 for `process-file', in order to let it work for older Emacsen too.
10704
107052006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de> 107022006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de>
10706 10703
10707 * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function. 10704 * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
@@ -11678,7 +11675,7 @@
11678 make underlining work for wide characters. 11675 make underlining work for wide characters.
11679 (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind 11676 (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind
11680 TAB to `org-cycle', to make sure that no binding in 11677 TAB to `org-cycle', to make sure that no binding in
11681 `outline-mode-map' can supercede it. 11678 `outline-mode-map' can supersede it.
11682 11679
116832006-03-14 Ken Manheimer <ken.manheimer@gmail.com> 116802006-03-14 Ken Manheimer <ken.manheimer@gmail.com>
11684 11681
@@ -19139,7 +19136,7 @@
19139 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to 19136 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
19140 pgg-decrypt-region. 19137 pgg-decrypt-region.
19141 (pgg-pending-timers): A new hash for tracking the passphrase cache 19138 (pgg-pending-timers): A new hash for tracking the passphrase cache
19142 timers, so that new ones supercede old ones. 19139 timers, so that new ones supersede old ones.
19143 (pgg-add-passphrase-to-cache): Rename from 19140 (pgg-add-passphrase-to-cache): Rename from
19144 `pgg-add-passphrase-cache' to reduce confusion (all callers 19141 `pgg-add-passphrase-cache' to reduce confusion (all callers
19145 changed). Modified to cancel old timers when new ones are added. 19142 changed). Modified to cancel old timers when new ones are added.
@@ -19225,7 +19222,7 @@
19225 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to 19222 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
19226 pgg-decrypt-region. 19223 pgg-decrypt-region.
19227 (pgg-pending-timers): A new hash for tracking the passphrase cache 19224 (pgg-pending-timers): A new hash for tracking the passphrase cache
19228 timers, so that new ones supercede old ones. 19225 timers, so that new ones supersede old ones.
19229 (pgg-add-passphrase-to-cache): Rename from 19226 (pgg-add-passphrase-to-cache): Rename from
19230 `pgg-add-passphrase-cache' to reduce confusion (all callers 19227 `pgg-add-passphrase-cache' to reduce confusion (all callers
19231 changed). Modified to cancel old timers when new ones are added. 19228 changed). Modified to cancel old timers when new ones are added.
diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3
index b54580ff0bc..8cafac2c0c4 100644
--- a/lisp/ChangeLog.3
+++ b/lisp/ChangeLog.3
@@ -4906,7 +4906,7 @@
4906 * two-column.el: Doc fixes. 4906 * two-column.el: Doc fixes.
4907 4907
4908 * loaddefs.el (function-keymap): Definition deleted; this has been 4908 * loaddefs.el (function-keymap): Definition deleted; this has been
4909 superceded by function-key-map. 4909 superseded by function-key-map.
4910 4910
4911 * gomoku.el (gomoku-mode-map): Use function key symbols, instead 4911 * gomoku.el (gomoku-mode-map): Use function key symbols, instead
4912 of the keypad.el facilities. 4912 of the keypad.el facilities.
@@ -6056,7 +6056,7 @@
6056 and `fill-column'. Code now actually sets `left-margin' and 6056 and `fill-column'. Code now actually sets `left-margin' and
6057 `fill-column', as advertised. 6057 `fill-column', as advertised.
6058 * text-mode.el (change-log-mode): Function deleted, since it's 6058 * text-mode.el (change-log-mode): Function deleted, since it's
6059 been superceded by the one in add-log.el. 6059 been superseded by the one in add-log.el.
6060 6060
60611992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) 60611992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu)
6062 6062
@@ -6070,7 +6070,7 @@
6070 6070
60711992-06-12 Jim Blandy (jimb@pogo.cs.oberlin.edu) 60711992-06-12 Jim Blandy (jimb@pogo.cs.oberlin.edu)
6072 6072
6073 * isearch-mode.el: New package, which will probably supercede 6073 * isearch-mode.el: New package, which will probably supersede
6074 isearch.el. 6074 isearch.el.
6075 (isearch-mode-map, isearch-mode-meta-map): When initializing 6075 (isearch-mode-map, isearch-mode-meta-map): When initializing
6076 these, remember that vectors are no longer keymaps. 6076 these, remember that vectors are no longer keymaps.
@@ -10009,7 +10009,7 @@
10009 display-time-string. 10009 display-time-string.
10010 (rmail-pop-up): Default display-time-hook to automatically retrieve 10010 (rmail-pop-up): Default display-time-hook to automatically retrieve
10011 new mail if the variable rmail-pop-up is non-nil. 10011 new mail if the variable rmail-pop-up is non-nil.
10012 (add-clock-handler): Removed; superceded by timer.el. 10012 (add-clock-handler): Removed; superseded by timer.el.
10013 10013
10014 * loaddefs.el: Removed add-clock-handler. 10014 * loaddefs.el: Removed add-clock-handler.
10015 10015
@@ -10032,7 +10032,7 @@
10032 10032
10033 * loaddefs.el: Autoload for diff. 10033 * loaddefs.el: Autoload for diff.
10034 10034
10035 * files.el (diff): Superceded by diff.el. 10035 * files.el (diff): Superseded by diff.el.
10036 (diff-switches-function): Still needs to be merged into diff.el. 10036 (diff-switches-function): Still needs to be merged into diff.el.
10037 10037
10038 * diff.el: New file. 10038 * diff.el: New file.
diff --git a/lisp/allout.el b/lisp/allout.el
index d881e1177fa..ca72806b7d9 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -339,7 +339,7 @@ The types of elements in the layout specification are:
339 -- positive numbers open to the relative depth indicated by the 339 -- positive numbers open to the relative depth indicated by the
340 number, but do not force already opened subtopics to be closed. 340 number, but do not force already opened subtopics to be closed.
341 -- 0 means to close topic -- hide all subitems. 341 -- 0 means to close topic -- hide all subitems.
342 : -- repeat spec -- apply the preceeding element to all siblings at 342 : -- repeat spec -- apply the preceding element to all siblings at
343 current level, *up to* those siblings that would be covered by specs 343 current level, *up to* those siblings that would be covered by specs
344 following the `:' on the list. Ie, apply to all topics at level but 344 following the `:' on the list. Ie, apply to all topics at level but
345 trailing ones accounted for by trailing specs. (Only the first of 345 trailing ones accounted for by trailing specs. (Only the first of
@@ -3125,7 +3125,7 @@ situation."
3125 nil) 3125 nil)
3126 ;; rationale: if any intervening items were at a lower depth, we 3126 ;; rationale: if any intervening items were at a lower depth, we
3127 ;; would now be on the first offspring at the target depth -- ie, 3127 ;; would now be on the first offspring at the target depth -- ie,
3128 ;; the preceeding item (per the search direction) must be at a 3128 ;; the preceding item (per the search direction) must be at a
3129 ;; lesser depth. that's all we need to check. 3129 ;; lesser depth. that's all we need to check.
3130 (if backward (allout-next-heading) (allout-previous-heading)) 3130 (if backward (allout-next-heading) (allout-previous-heading))
3131 (if (< allout-recent-depth target-depth) 3131 (if (< allout-recent-depth target-depth)
@@ -4246,7 +4246,7 @@ With a negative argument, the item is shifted out using
4246 4246
4247With an argument greater than one, shift-in the item but not its 4247With an argument greater than one, shift-in the item but not its
4248offspring, making the item into a sibling of its former children, 4248offspring, making the item into a sibling of its former children,
4249and a child of sibling that formerly preceeded it. 4249and a child of sibling that formerly preceded it.
4250 4250
4251You are not allowed to shift the first offspring of a topic 4251You are not allowed to shift the first offspring of a topic
4252inwards, because that would yield a \"containment 4252inwards, because that would yield a \"containment
@@ -5364,7 +5364,7 @@ header and body. The elements of that list are:
5364 5364
5365 (goto-char start) 5365 (goto-char start)
5366 (beginning-of-line) 5366 (beginning-of-line)
5367 ;; Goto initial topic, and register preceeding stuff, if any: 5367 ;; Goto initial topic, and register preceding stuff, if any:
5368 (if (> (allout-goto-prefix-doublechecked) start) 5368 (if (> (allout-goto-prefix-doublechecked) start)
5369 ;; First topic follows beginning point -- register preliminary stuff: 5369 ;; First topic follows beginning point -- register preliminary stuff:
5370 (setq result 5370 (setq result
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index fcc3ecc1ab1..ec4e902f33d 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1061,7 +1061,7 @@ calc-full-help calc-g-prefix-help calc-help-prefix
1061calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help 1061calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help
1062calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help 1062calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help
1063calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help 1063calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help
1064calc-t-prefix-help calc-u-prefix-help calc-ul-prefix-help 1064calc-t-prefix-help calc-u-prefix-help calc-l-prefix-help
1065calc-v-prefix-help) 1065calc-v-prefix-help)
1066 1066
1067 ("calc-incom" calc-begin-complex calc-begin-vector calc-comma 1067 ("calc-incom" calc-begin-complex calc-begin-vector calc-comma
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index 185ed18ed42..92af9263b28 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -1574,7 +1574,7 @@ If this can't be done, return NIL."
1574 (if calc-infinite-mode 1574 (if calc-infinite-mode
1575 '(neg (var inf var-inf)) 1575 '(neg (var inf var-inf))
1576 (math-reject-arg x "*Logarithm of zero"))) 1576 (math-reject-arg x "*Logarithm of zero")))
1577 (calc-symbolic-mode (signal 'inexact-result nil)) 1577 ;;(calc-symbolic-mode (signal 'inexact-result nil))
1578 ((Math-numberp x) 1578 ((Math-numberp x)
1579 (math-with-extra-prec 2 1579 (math-with-extra-prec 2
1580 (let ((xf (math-float x))) 1580 (let ((xf (math-float x)))
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index 5dfbc2d51f5..47ef3241b3e 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -759,12 +759,13 @@
759 (math-reject-arg n "*Index out of range"))))) 759 (math-reject-arg n "*Index out of range")))))
760 760
761(defun calcFunc-subscr (mat n &optional m) 761(defun calcFunc-subscr (mat n &optional m)
762 (setq mat (calcFunc-mrow mat n)) 762 (if (eq (car-safe mat) 'var) nil
763 (if m 763 (setq mat (calcFunc-mrow mat n))
764 (if (math-num-integerp n) 764 (if m
765 (calcFunc-mrow mat m) 765 (if (math-num-integerp n)
766 (calcFunc-mcol mat m)) 766 (calcFunc-mrow mat m)
767 mat)) 767 (calcFunc-mcol mat m))
768 mat)))
768 769
769;;; Get the Nth column of a matrix. 770;;; Get the Nth column of a matrix.
770(defun math-mat-col (mat n) 771(defun math-mat-col (mat n)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index f2dfc3c51fe..63e7484e127 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -792,6 +792,20 @@ from the cursor position."
792(define-obsolete-function-alias 'list-yahrzeit-dates 792(define-obsolete-function-alias 'list-yahrzeit-dates
793 'calendar-hebrew-list-yahrzeits "23.1") 793 'calendar-hebrew-list-yahrzeits "23.1")
794 794
795(defun calendar-hebrew-birthday (date year)
796 "Absolute date of the anniversary of Hebrew birth DATE, in Hebrew YEAR."
797 (let ((b-day (calendar-extract-day date))
798 (b-month (calendar-extract-month date))
799 (b-year (calendar-extract-year date)))
800 ;; If it's Adar in a normal Hebrew year or Adar II in a Hebrew leap year...
801 (if (= b-month (calendar-hebrew-last-month-of-year b-year))
802 ;; ...then use the same day in last month of Hebrew year.
803 (calendar-hebrew-to-absolute
804 (list (calendar-hebrew-last-month-of-year year) b-day year))
805 ;; Else use the normal anniversary of the birth date,
806 ;; or the corresponding day in years without that date.
807 (+ (calendar-hebrew-to-absolute (list b-month 1 year)) b-day -1))))
808
795(defvar date) 809(defvar date)
796 810
797;; To be called from diary-list-sexp-entries, where DATE is bound. 811;; To be called from diary-list-sexp-entries, where DATE is bound.
@@ -800,6 +814,37 @@ from the cursor position."
800 "Hebrew calendar equivalent of date diary entry." 814 "Hebrew calendar equivalent of date diary entry."
801 (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date))) 815 (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date)))
802 816
817(defvar entry)
818(declare-function diary-ordinal-suffix "diary-lib" (n))
819
820;;;###diary-autoload
821(defun diary-hebrew-birthday (month day year &optional after-sunset)
822 "Hebrew birthday diary entry.
823Entry applies if date is birthdate (MONTH DAY YEAR), or the day before.
824The order of the input parameters changes according to
825`calendar-date-style' (e.g. to DAY MONTH YEAR in the European style).
826
827Assumes the associated diary entry is the name of the person.
828
829Although the date of birth is specified by the *civil* calendar,
830this function determines the proper Hebrew calendar birthday.
831If the optional argument AFTER-SUNSET is non-nil, this means the
832birth occurred after local sunset on the given civil date.
833In this case, the following civil date corresponds to the Hebrew birthday."
834 (let* ((h-date (calendar-hebrew-from-absolute
835 (+ (calendar-absolute-from-gregorian
836 (diary-make-date month day year))
837 (if after-sunset 1 0))))
838 (h-year (calendar-extract-year h-date)) ; birth-day
839 (d (calendar-absolute-from-gregorian date)) ; today
840 (h-yr (calendar-extract-year (calendar-hebrew-from-absolute d)))
841 (age (- h-yr h-year)) ; current H year - birth H-year
842 (b-date (calendar-hebrew-birthday h-date h-yr)))
843 (and (> age 0) (memq b-date (list d (1+ d)))
844 (format "%s's %d%s Hebrew birthday%s" entry age
845 (diary-ordinal-suffix age)
846 (if (= b-date d) "" " (evening)")))))
847
803;;;###diary-autoload 848;;;###diary-autoload
804(defun diary-hebrew-omer (&optional mark) 849(defun diary-hebrew-omer (&optional mark)
805 "Omer count diary entry. 850 "Omer count diary entry.
@@ -829,8 +874,6 @@ use when highlighting the day in the calendar."
829;;;###diary-autoload 874;;;###diary-autoload
830(define-obsolete-function-alias 'diary-omer 'diary-hebrew-omer "23.1") 875(define-obsolete-function-alias 'diary-omer 'diary-hebrew-omer "23.1")
831 876
832(defvar entry)
833
834(autoload 'diary-make-date "diary-lib") 877(autoload 'diary-make-date "diary-lib")
835 878
836(declare-function diary-ordinal-suffix "diary-lib" (n)) 879(declare-function diary-ordinal-suffix "diary-lib" (n))
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 8a0fbd5cc37..5cdd1577a6e 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -100,7 +100,7 @@ Usually bound to the dimension of a single symbol or command.")
100 :type list 100 :type list
101 :documentation "List of tags defining local text. 101 :documentation "List of tags defining local text.
102This can be nil, or a list where the last element can be a string 102This can be nil, or a list where the last element can be a string
103representing text that may be incomplete. Preceeding elements 103representing text that may be incomplete. Preceding elements
104must be semantic tags representing variables or functions 104must be semantic tags representing variables or functions
105called in a dereference sequence.") 105called in a dereference sequence.")
106 (prefixclass :initarg :prefixclass 106 (prefixclass :initarg :prefixclass
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 31e92724a00..47cb722e005 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1264,7 +1264,7 @@ inserted into the current context.")
1264;; generated by a collector. This format is in semanticdb search 1264;; generated by a collector. This format is in semanticdb search
1265;; form. This vaguely standard form is a bit challenging to navigate 1265;; form. This vaguely standard form is a bit challenging to navigate
1266;; because the tags do not contain buffer info, but the file associated 1266;; because the tags do not contain buffer info, but the file associated
1267;; with the tags preceed the tag in the list. 1267;; with the tags precedes the tag in the list.
1268;; 1268;;
1269;; Basic displayors don't care, and can strip the results. 1269;; Basic displayors don't care, and can strip the results.
1270;; Advanced highlighting displayors need to know when they need 1270;; Advanced highlighting displayors need to know when they need
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el
index ef206fd3122..7f7e82a95c2 100644
--- a/lisp/cedet/semantic/edit.el
+++ b/lisp/cedet/semantic/edit.el
@@ -426,7 +426,7 @@ See `semantic-edits-change-leaf-tag' for details on parents."
426 ;; confirmed as the lineage of `overlapped-tags' 426 ;; confirmed as the lineage of `overlapped-tags'
427 ;; which must have a value by now. 427 ;; which must have a value by now.
428 428
429 ;; Loop over the search list to find the preceeding CDR. 429 ;; Loop over the search list to find the preceding CDR.
430 ;; Fortunatly, (car overlapped-tags) happens to be 430 ;; Fortunatly, (car overlapped-tags) happens to be
431 ;; the first tag positionally. 431 ;; the first tag positionally.
432 (let ((tokstart (semantic-tag-start (car overlapped-tags)))) 432 (let ((tokstart (semantic-tag-start (car overlapped-tags))))
@@ -874,7 +874,7 @@ pre-positioned to a convenient location."
874 )) 874 ))
875 (message "To Remove Middle Tag: (%s)" 875 (message "To Remove Middle Tag: (%s)"
876 (semantic-format-tag-name first))) 876 (semantic-format-tag-name first)))
877 ;; Find in the cache the preceeding tag 877 ;; Find in the cache the preceding tag
878 (while (and cachestart (not (eq first (car (cdr cachestart))))) 878 (while (and cachestart (not (eq first (car (cdr cachestart)))))
879 (setq cachestart (cdr cachestart))) 879 (setq cachestart (cdr cachestart)))
880 ;; Find the last tag 880 ;; Find the last tag
diff --git a/lisp/cedet/semantic/format.el b/lisp/cedet/semantic/format.el
index ecd03ccec73..fa6e7517624 100644
--- a/lisp/cedet/semantic/format.el
+++ b/lisp/cedet/semantic/format.el
@@ -296,7 +296,7 @@ local definitions."
296 296
297(define-overloadable-function semantic-format-tag-canonical-name (tag &optional parent color) 297(define-overloadable-function semantic-format-tag-canonical-name (tag &optional parent color)
298 "Return a canonical name for TAG. 298 "Return a canonical name for TAG.
299A canonical name includes the names of any parents or namespaces preceeding 299A canonical name includes the names of any parents or namespaces preceding
300the tag. 300the tag.
301Optional argument PARENT is the parent type if TAG is a detail. 301Optional argument PARENT is the parent type if TAG is a detail.
302Optional argument COLOR means highlight the prototype with font-lock colors.") 302Optional argument COLOR means highlight the prototype with font-lock colors.")
diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el
index 4489d0ffae5..71a205386db 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -256,7 +256,7 @@ Optional argument COLOR indicates that color should be mixed in."
256(define-mode-local-override semantic-documentation-for-tag 256(define-mode-local-override semantic-documentation-for-tag
257 java-mode (&optional tag nosnarf) 257 java-mode (&optional tag nosnarf)
258 "Find documentation from TAG and return it as a clean string. 258 "Find documentation from TAG and return it as a clean string.
259Java have documentation set in a comment preceeding TAG's definition. 259Java has documentation set in a comment preceding TAG's definition.
260Attempt to strip out comment syntactic sugar, unless optional argument 260Attempt to strip out comment syntactic sugar, unless optional argument
261NOSNARF is non-nil. 261NOSNARF is non-nil.
262If NOSNARF is 'lex, then return the semantic lex token." 262If NOSNARF is 'lex, then return the semantic lex token."
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 986c9edfd2d..c533c81be0e 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1025,9 +1025,9 @@ See Info node `(emacs)Subdir switches' for more details."
1025 ;; Keeps any marks that may be present in column one (doing this 1025 ;; Keeps any marks that may be present in column one (doing this
1026 ;; here is faster than with dired-add-entry's optional arg). 1026 ;; here is faster than with dired-add-entry's optional arg).
1027 ;; Does not update other dired buffers. Use dired-relist-entry for that. 1027 ;; Does not update other dired buffers. Use dired-relist-entry for that.
1028 (let ((char (following-char)) 1028 (let* ((opoint (line-beginning-position))
1029 (opoint (line-beginning-position)) 1029 (char (char-after opoint))
1030 (buffer-read-only)) 1030 (buffer-read-only))
1031 (delete-region opoint (progn (forward-line 1) (point))) 1031 (delete-region opoint (progn (forward-line 1) (point)))
1032 (if file 1032 (if file
1033 (progn 1033 (progn
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index ce07676fc99..9941c7a0db5 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -786,6 +786,7 @@ See also `dired-enable-local-variables'."
786 'hack-dir-local-variables-non-file-buffer "24.1") 786 'hack-dir-local-variables-non-file-buffer "24.1")
787 787
788;; Not sure this is worth having a dedicated command for... 788;; Not sure this is worth having a dedicated command for...
789;; See the more general features in files-x.el.
789(defun dired-omit-here-always () 790(defun dired-omit-here-always ()
790 "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'. 791 "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'.
791If in a Dired buffer, reverts it." 792If in a Dired buffer, reverts it."
@@ -798,7 +799,9 @@ replace it with a dir-locals-file `./%s'"
798 (if (file-exists-p dir-locals-file) 799 (if (file-exists-p dir-locals-file)
799 (message "File `./%s' already exists." dir-locals-file) 800 (message "File `./%s' already exists." dir-locals-file)
800 (with-temp-buffer 801 (with-temp-buffer
801 (insert "((dired-mode . ((dired-omit-mode . t))))\n") 802 (insert "\
803\((dired-mode . ((subdirs . nil)
804 (dired-omit-mode . t))))\n")
802 (write-file dir-locals-file)) 805 (write-file dir-locals-file))
803 ;; Run extra-hooks and revert directory. 806 ;; Run extra-hooks and revert directory.
804 (when (derived-mode-p 'dired-mode) 807 (when (derived-mode-p 'dired-mode)
@@ -845,7 +848,7 @@ replace it with a dir-locals-file `./%s'"
845 848
846(defvar dired-guess-shell-alist-default 849(defvar dired-guess-shell-alist-default
847 (list 850 (list
848 (list "\\.tar$" 851 (list "\\.tar\\'"
849 '(if dired-guess-shell-gnutar 852 '(if dired-guess-shell-gnutar
850 (concat dired-guess-shell-gnutar " xvf") 853 (concat dired-guess-shell-gnutar " xvf")
851 "tar xvf") 854 "tar xvf")
@@ -863,7 +866,7 @@ replace it with a dir-locals-file `./%s'"
863 866
864 ;; REGEXPS for compressed archives must come before the .Z rule to 867 ;; REGEXPS for compressed archives must come before the .Z rule to
865 ;; be recognized: 868 ;; be recognized:
866 (list "\\.tar\\.Z$" 869 (list "\\.tar\\.Z\\'"
867 ;; Untar it. 870 ;; Untar it.
868 '(if dired-guess-shell-gnutar 871 '(if dired-guess-shell-gnutar
869 (concat dired-guess-shell-gnutar " zxvf") 872 (concat dired-guess-shell-gnutar " zxvf")
@@ -873,7 +876,7 @@ replace it with a dir-locals-file `./%s'"
873 " " dired-guess-shell-znew-switches)) 876 " " dired-guess-shell-znew-switches))
874 877
875 ;; gzip'ed archives 878 ;; gzip'ed archives
876 (list "\\.t\\(ar\\.\\)?gz$" 879 (list "\\.t\\(ar\\.\\)?gz\\'"
877 '(if dired-guess-shell-gnutar 880 '(if dired-guess-shell-gnutar
878 (concat dired-guess-shell-gnutar " zxvf") 881 (concat dired-guess-shell-gnutar " zxvf")
879 (concat "gunzip -qc * | tar xvf -")) 882 (concat "gunzip -qc * | tar xvf -"))
@@ -893,7 +896,7 @@ replace it with a dir-locals-file `./%s'"
893 (concat "gunzip -qc * | tar tvf -"))) 896 (concat "gunzip -qc * | tar tvf -")))
894 897
895 ;; bzip2'ed archives 898 ;; bzip2'ed archives
896 (list "\\.t\\(ar\\.bz2\\|bz\\)$" 899 (list "\\.t\\(ar\\.bz2\\|bz\\)\\'"
897 "bunzip2 -c * | tar xvf -" 900 "bunzip2 -c * | tar xvf -"
898 ;; Extract files into a separate subdirectory 901 ;; Extract files into a separate subdirectory
899 '(concat "mkdir " (file-name-sans-extension file) 902 '(concat "mkdir " (file-name-sans-extension file)
@@ -903,7 +906,7 @@ replace it with a dir-locals-file `./%s'"
903 "bunzip2") 906 "bunzip2")
904 907
905 ;; xz'ed archives 908 ;; xz'ed archives
906 (list "\\.t\\(ar\\.\\)?xz$" 909 (list "\\.t\\(ar\\.\\)?xz\\'"
907 "unxz -c * | tar xvf -" 910 "unxz -c * | tar xvf -"
908 ;; Extract files into a separate subdirectory 911 ;; Extract files into a separate subdirectory
909 '(concat "mkdir " (file-name-sans-extension file) 912 '(concat "mkdir " (file-name-sans-extension file)
@@ -912,94 +915,96 @@ replace it with a dir-locals-file `./%s'"
912 ;; Optional decompression. 915 ;; Optional decompression.
913 "unxz") 916 "unxz")
914 917
915 '("\\.shar\\.Z$" "zcat * | unshar") 918 '("\\.shar\\.Z\\'" "zcat * | unshar")
916 '("\\.shar\\.g?z$" "gunzip -qc * | unshar") 919 '("\\.shar\\.g?z\\'" "gunzip -qc * | unshar")
917 920
918 '("\\.e?ps$" "ghostview" "xloadimage" "lpr") 921 '("\\.e?ps\\'" "ghostview" "xloadimage" "lpr")
919 (list "\\.e?ps\\.g?z$" "gunzip -qc * | ghostview -" 922 (list "\\.e?ps\\.g?z\\'" "gunzip -qc * | ghostview -"
920 ;; Optional decompression. 923 ;; Optional decompression.
921 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 924 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
922 (list "\\.e?ps\\.Z$" "zcat * | ghostview -" 925 (list "\\.e?ps\\.Z\\'" "zcat * | ghostview -"
923 ;; Optional conversion to gzip format. 926 ;; Optional conversion to gzip format.
924 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 927 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
925 " " dired-guess-shell-znew-switches)) 928 " " dired-guess-shell-znew-switches))
926 929
927 '("\\.patch$" "cat * | patch") 930 '("\\.patch\\'" "cat * | patch")
928 (list "\\.patch\\.g?z$" "gunzip -qc * | patch" 931 (list "\\.patch\\.g?z\\'" "gunzip -qc * | patch"
929 ;; Optional decompression. 932 ;; Optional decompression.
930 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 933 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
931 (list "\\.patch\\.Z$" "zcat * | patch" 934 (list "\\.patch\\.Z\\'" "zcat * | patch"
932 ;; Optional conversion to gzip format. 935 ;; Optional conversion to gzip format.
933 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 936 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
934 " " dired-guess-shell-znew-switches)) 937 " " dired-guess-shell-znew-switches))
935 938
936 ;; The following four extensions are useful with dired-man ("N" key) 939 ;; The following four extensions are useful with dired-man ("N" key)
937 (list "\\.\\(?:[0-9]\\|man\\)$" '(progn (require 'man) 940 (list "\\.\\(?:[0-9]\\|man\\)\\'" '(progn (require 'man)
938 (if (Man-support-local-filenames) 941 (if (Man-support-local-filenames)
939 "man -l" 942 "man -l"
940 "cat * | tbl | nroff -man -h"))) 943 "cat * | tbl | nroff -man -h")))
941 (list "\\.\\(?:[0-9]\\|man\\)\\.g?z$" '(progn (require 'man) 944 (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'" '(progn (require 'man)
942 (if (Man-support-local-filenames) 945 (if (Man-support-local-filenames)
943 "man -l" 946 "man -l"
944 "gunzip -qc * | tbl | nroff -man -h")) 947 "gunzip -qc * | tbl | nroff -man -h"))
945 ;; Optional decompression. 948 ;; Optional decompression.
946 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 949 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
947 (list "\\.[0-9]\\.Z$" '(progn (require 'man) 950 (list "\\.[0-9]\\.Z\\'" '(progn (require 'man)
948 (if (Man-support-local-filenames) 951 (if (Man-support-local-filenames)
949 "man -l" 952 "man -l"
950 "zcat * | tbl | nroff -man -h")) 953 "zcat * | tbl | nroff -man -h"))
951 ;; Optional conversion to gzip format. 954 ;; Optional conversion to gzip format.
952 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 955 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
953 " " dired-guess-shell-znew-switches)) 956 " " dired-guess-shell-znew-switches))
954 '("\\.pod$" "perldoc" "pod2man * | nroff -man") 957 '("\\.pod\\'" "perldoc" "pod2man * | nroff -man")
955 958
956 '("\\.dvi$" "xdvi" "dvips") ; preview and printing 959 '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing
957 '("\\.au$" "play") ; play Sun audiofiles 960 '("\\.au\\'" "play") ; play Sun audiofiles
958 '("\\.mpe?g$\\|\\.avi$" "xine -p") 961 '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p")
959 '("\\.ogg$" "ogg123") 962 '("\\.ogg\\'" "ogg123")
960 '("\\.mp3$" "mpg123") 963 '("\\.mp3\\'" "mpg123")
961 '("\\.wav$" "play") 964 '("\\.wav\\'" "play")
962 '("\\.uu$" "uudecode") ; for uudecoded files 965 '("\\.uu\\'" "uudecode") ; for uudecoded files
963 '("\\.hqx$" "mcvert") 966 '("\\.hqx\\'" "mcvert")
964 '("\\.sh$" "sh") ; execute shell scripts 967 '("\\.sh\\'" "sh") ; execute shell scripts
965 '("\\.xbm$" "bitmap") ; view X11 bitmaps 968 '("\\.xbm\\'" "bitmap") ; view X11 bitmaps
966 '("\\.gp$" "gnuplot") 969 '("\\.gp\\'" "gnuplot")
967 '("\\.p[bgpn]m$" "xloadimage") 970 '("\\.p[bgpn]m\\'" "xloadimage")
968 '("\\.gif$" "xloadimage") ; view gif pictures 971 '("\\.gif\\'" "xloadimage") ; view gif pictures
969 '("\\.tif$" "xloadimage") 972 '("\\.tif\\'" "xloadimage")
970 '("\\.png$" "display") ; xloadimage 4.1 doesn't grok PNG 973 '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG
971 '("\\.jpe?g$" "xloadimage") 974 '("\\.jpe?g\\'" "xloadimage")
972 '("\\.fig$" "xfig") ; edit fig pictures 975 '("\\.fig\\'" "xfig") ; edit fig pictures
973 '("\\.out$" "xgraph") ; for plotting purposes. 976 '("\\.out\\'" "xgraph") ; for plotting purposes.
974 '("\\.tex$" "latex" "tex") 977 '("\\.tex\\'" "latex" "tex")
975 '("\\.texi\\(nfo\\)?$" "makeinfo" "texi2dvi") 978 '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi")
976 '("\\.pdf$" "xpdf") 979 '("\\.pdf\\'" "xpdf")
977 '("\\.doc$" "antiword" "strings") 980 '("\\.doc\\'" "antiword" "strings")
978 '("\\.rpm$" "rpm -qilp" "rpm -ivh") 981 '("\\.rpm\\'" "rpm -qilp" "rpm -ivh")
979 '("\\.dia$" "dia") 982 '("\\.dia\\'" "dia")
980 '("\\.mgp$" "mgp") 983 '("\\.mgp\\'" "mgp")
981 984
982 ;; Some other popular archivers. 985 ;; Some other popular archivers.
983 (list "\\.zip$" "unzip" "unzip -l" 986 (list "\\.zip\\'" "unzip" "unzip -l"
984 ;; Extract files into a separate subdirectory 987 ;; Extract files into a separate subdirectory
985 '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q") 988 '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q")
986 " -d " (file-name-sans-extension file))) 989 " -d " (file-name-sans-extension file)))
987 '("\\.zoo$" "zoo x//") 990 '("\\.zoo\\'" "zoo x//")
988 '("\\.lzh$" "lharc x") 991 '("\\.lzh\\'" "lharc x")
989 '("\\.arc$" "arc x") 992 '("\\.arc\\'" "arc x")
990 '("\\.shar$" "unshar") 993 '("\\.shar\\'" "unshar")
994 '("\\.rar\\'" "unrar x")
995 '("\\.7z\\'" "7z x")
991 996
992 ;; Compression. 997 ;; Compression.
993 (list "\\.g?z$" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 998 (list "\\.g?z\\'" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
994 (list "\\.dz$" "dictunzip") 999 (list "\\.dz\\'" "dictunzip")
995 (list "\\.bz2$" "bunzip2") 1000 (list "\\.bz2\\'" "bunzip2")
996 (list "\\.xz$" "unxz") 1001 (list "\\.xz\\'" "unxz")
997 (list "\\.Z$" "uncompress" 1002 (list "\\.Z\\'" "uncompress"
998 ;; Optional conversion to gzip format. 1003 ;; Optional conversion to gzip format.
999 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 1004 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
1000 " " dired-guess-shell-znew-switches)) 1005 " " dired-guess-shell-znew-switches))
1001 1006
1002 '("\\.sign?$" "gpg --verify")) 1007 '("\\.sign?\\'" "gpg --verify"))
1003 1008
1004 "Default alist used for shell command guessing. 1009 "Default alist used for shell command guessing.
1005See `dired-guess-shell-alist-user'.") 1010See `dired-guess-shell-alist-user'.")
diff --git a/lisp/dired.el b/lisp/dired.el
index 3f31ba58139..c113f0cb2f4 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -249,9 +249,19 @@ Local to each dired buffer. May be a list, in which case the car is the
249directory name and the cdr is the list of files to mention. 249directory name and the cdr is the list of files to mention.
250The directory name must be absolute, but need not be fully expanded.") 250The directory name must be absolute, but need not be fully expanded.")
251 251
252;; Beware of "-l;reboot" etc. See bug#3230.
253(defun dired-safe-switches-p (switches)
254 "Return non-nil if string SWITCHES does not look risky for dired."
255 (or (not switches)
256 (and (stringp switches)
257 (< (length switches) 100) ; arbitrary
258 (string-match "\\` *-[- [:alnum:]]+\\'" switches))))
259
252(defvar dired-actual-switches nil 260(defvar dired-actual-switches nil
253 "The value of `dired-listing-switches' used to make this buffer's text.") 261 "The value of `dired-listing-switches' used to make this buffer's text.")
254 262
263(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
264
255(defvar dired-re-inode-size "[0-9 \t]*" 265(defvar dired-re-inode-size "[0-9 \t]*"
256 "Regexp for optional initial inode and file size as made by `ls -i -s'.") 266 "Regexp for optional initial inode and file size as made by `ls -i -s'.")
257 267
@@ -3614,7 +3624,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
3614;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command 3624;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
3615;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown 3625;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown
3616;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff 3626;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
3617;;;;;; dired-diff) "dired-aux" "dired-aux.el" "9d6333fab9c0f1b49e0bf2a536b8f245") 3627;;;;;; dired-diff) "dired-aux" "dired-aux.el" "154cdfbf451aedec60c5012b625ff329")
3618;;; Generated autoloads from dired-aux.el 3628;;; Generated autoloads from dired-aux.el
3619 3629
3620(autoload 'dired-diff "dired-aux" "\ 3630(autoload 'dired-diff "dired-aux" "\
@@ -4073,7 +4083,7 @@ true then the type of the file linked to by FILE is printed instead.
4073;;;*** 4083;;;***
4074 4084
4075;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" 4085;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
4076;;;;;; "515e1dbc42acebd9a0175c4209b6673c") 4086;;;;;; "3b8851132739ab3f9054bf639873c53e")
4077;;; Generated autoloads from dired-x.el 4087;;; Generated autoloads from dired-x.el
4078 4088
4079(autoload 'dired-jump "dired-x" "\ 4089(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/emacs-lisp/assoc.el b/lisp/emacs-lisp/assoc.el
index aa85916cc3f..31be851f2dd 100644
--- a/lisp/emacs-lisp/assoc.el
+++ b/lisp/emacs-lisp/assoc.el
@@ -1,4 +1,4 @@
1;;; assoc.el --- insert/delete/sort functions on association lists 1;;; assoc.el --- insert/delete functions on association lists
2 2
3;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc. 3;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
4 4
@@ -35,7 +35,7 @@ head is one matching KEY. Returns the sorted list and doesn't affect
35the order of any other key-value pair. Side effect sets alist to new 35the order of any other key-value pair. Side effect sets alist to new
36sorted list." 36sorted list."
37 (set alist-symbol 37 (set alist-symbol
38 (sort (copy-alist (eval alist-symbol)) 38 (sort (copy-alist (symbol-value alist-symbol))
39 (function (lambda (a b) (equal (car a) key)))))) 39 (function (lambda (a b) (equal (car a) key))))))
40 40
41 41
@@ -75,7 +75,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
75 (lexical-let ((elem (aelement key value)) 75 (lexical-let ((elem (aelement key value))
76 alist) 76 alist)
77 (asort alist-symbol key) 77 (asort alist-symbol key)
78 (setq alist (eval alist-symbol)) 78 (setq alist (symbol-value alist-symbol))
79 (cond ((null alist) (set alist-symbol elem)) 79 (cond ((null alist) (set alist-symbol elem))
80 ((anot-head-p alist key) (set alist-symbol (nconc elem alist))) 80 ((anot-head-p alist key) (set alist-symbol (nconc elem alist)))
81 (value (setcar alist (car elem))) 81 (value (setcar alist (car elem)))
@@ -87,7 +87,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
87Alist is referenced by ALIST-SYMBOL and the key-value pair to remove 87Alist is referenced by ALIST-SYMBOL and the key-value pair to remove
88is pair matching KEY. Returns the altered alist." 88is pair matching KEY. Returns the altered alist."
89 (asort alist-symbol key) 89 (asort alist-symbol key)
90 (lexical-let ((alist (eval alist-symbol))) 90 (lexical-let ((alist (symbol-value alist-symbol)))
91 (cond ((null alist) nil) 91 (cond ((null alist) nil)
92 ((anot-head-p alist key) alist) 92 ((anot-head-p alist key) alist)
93 (t (set alist-symbol (cdr alist)))))) 93 (t (set alist-symbol (cdr alist))))))
@@ -133,7 +133,7 @@ extra values are ignored. Returns the created alist."
133 (t 133 (t
134 (amake alist-symbol keycdr valcdr) 134 (amake alist-symbol keycdr valcdr)
135 (aput alist-symbol keycar valcar)))) 135 (aput alist-symbol keycar valcar))))
136 (eval alist-symbol)) 136 (symbol-value alist-symbol))
137 137
138(provide 'assoc) 138(provide 'assoc)
139 139
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 8e192a18459..08001171ed1 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -282,7 +282,7 @@ Not documented
282;;;;;; do-all-symbols do-symbols dotimes dolist do* do loop return-from 282;;;;;; do-all-symbols do-symbols dotimes dolist do* do loop return-from
283;;;;;; return block etypecase typecase ecase case load-time-value 283;;;;;; return block etypecase typecase ecase case load-time-value
284;;;;;; eval-when destructuring-bind function* defmacro* defun* gentemp 284;;;;;; eval-when destructuring-bind function* defmacro* defun* gentemp
285;;;;;; gensym) "cl-macs" "cl-macs.el" "0904b956872432ae7cc5fa9abcefce63") 285;;;;;; gensym) "cl-macs" "cl-macs.el" "b3031039e82679e5b013ce1cbf174ee8")
286;;; Generated autoloads from cl-macs.el 286;;; Generated autoloads from cl-macs.el
287 287
288(autoload 'gensym "cl-macs" "\ 288(autoload 'gensym "cl-macs" "\
@@ -505,7 +505,7 @@ lexical closures as in Common Lisp.
505(autoload 'lexical-let* "cl-macs" "\ 505(autoload 'lexical-let* "cl-macs" "\
506Like `let*', but lexically scoped. 506Like `let*', but lexically scoped.
507The main visible difference is that lambdas inside BODY, and in 507The main visible difference is that lambdas inside BODY, and in
508successive bindings within BINDINGS, will create lexical closures 508successive bindings within VARLIST, will create lexical closures
509as in Common Lisp. This is similar to the behavior of `let*' in 509as in Common Lisp. This is similar to the behavior of `let*' in
510Common Lisp. 510Common Lisp.
511 511
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 80e95724f1f..c57d37703b0 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1470,7 +1470,7 @@ lexical closures as in Common Lisp.
1470(defmacro lexical-let* (bindings &rest body) 1470(defmacro lexical-let* (bindings &rest body)
1471 "Like `let*', but lexically scoped. 1471 "Like `let*', but lexically scoped.
1472The main visible difference is that lambdas inside BODY, and in 1472The main visible difference is that lambdas inside BODY, and in
1473successive bindings within BINDINGS, will create lexical closures 1473successive bindings within VARLIST, will create lexical closures
1474as in Common Lisp. This is similar to the behavior of `let*' in 1474as in Common Lisp. This is similar to the behavior of `let*' in
1475Common Lisp. 1475Common Lisp.
1476\n(fn VARLIST BODY)" 1476\n(fn VARLIST BODY)"
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index b9994be3d39..61f23abf0a7 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -40,6 +40,9 @@
40(defvar package-archive-upload-base nil 40(defvar package-archive-upload-base nil
41 "Base location for uploading to package archive.") 41 "Base location for uploading to package archive.")
42 42
43(defvar package-update-news-on-upload nil
44 "Whether package upload should also update NEWS and RSS feeds.")
45
43(defun package--encode (string) 46(defun package--encode (string)
44 "Encode a string by replacing some characters with XML entities." 47 "Encode a string by replacing some characters with XML entities."
45 ;; We need a special case for translating "&" to "&amp;". 48 ;; We need a special case for translating "&" to "&amp;".
@@ -86,6 +89,36 @@
86 (unless old-buffer 89 (unless old-buffer
87 (kill-buffer (current-buffer))))))) 90 (kill-buffer (current-buffer)))))))
88 91
92(defun package--archive-contents-from-url (archive-url)
93 "Parse archive-contents file at ARCHIVE-URL.
94Return the file contents, as a string, or nil if unsuccessful."
95 (ignore-errors
96 (when archive-url
97 (let* ((buffer (url-retrieve-synchronously
98 (concat archive-url "archive-contents"))))
99 (set-buffer buffer)
100 (package-handle-response)
101 (re-search-forward "^$" nil 'move)
102 (forward-char)
103 (delete-region (point-min) (point))
104 (prog1 (package-read-from-string
105 (buffer-substring-no-properties (point-min) (point-max)))
106 (kill-buffer buffer))))))
107
108(defun package--archive-contents-from-file (file)
109 "Parse the given archive-contents file."
110 (if (not (file-exists-p file))
111 ;; no existing archive-contents, possibly a new ELPA repo.
112 (list package-archive-version)
113 (let ((dont-kill (find-buffer-visiting file)))
114 (with-current-buffer (let ((find-file-visit-truename t))
115 (find-file-noselect file))
116 (prog1
117 (package-read-from-string
118 (buffer-substring-no-properties (point-min) (point-max)))
119 (unless dont-kill
120 (kill-buffer (current-buffer))))))))
121
89(defun package-maint-add-news-item (title description archive-url) 122(defun package-maint-add-news-item (title description archive-url)
90 "Add a news item to the ELPA web pages. 123 "Add a news item to the ELPA web pages.
91TITLE is the title of the news item. 124TITLE is the title of the news item.
@@ -111,11 +144,20 @@ PKG-INFO is the package info, see `package-buffer-info'.
111EXTENSION is the file extension, a string. It can be either 144EXTENSION is the file extension, a string. It can be either
112\"el\" or \"tar\". 145\"el\" or \"tar\".
113 146
147The variable `package-archive-upload-base' specifies the upload
148destination. If this is nil, signal an error.
149
114Optional arg ARCHIVE-URL is the URL of the destination archive. 150Optional arg ARCHIVE-URL is the URL of the destination archive.
115If nil, the \"gnu\" archive is used." 151If it is non-nil, compute the new \"archive-contents\" file
116 (unless archive-url 152starting from the existing \"archive-contents\" at that URL. In
117 (or (setq archive-url (cdr (assoc "gnu" package-archives))) 153addition, if `package-update-news-on-upload' is non-nil, call
118 (error "No destination URL"))) 154`package--update-news' to add a news item at that URL.
155
156If ARCHIVE-URL is nil, compute the new \"archive-contents\" file
157from the \"archive-contents\" at `package-archive-upload-base',
158if it exists."
159 (unless package-archive-upload-base
160 (error "No destination specified in `package-archive-upload-base'"))
119 (save-excursion 161 (save-excursion
120 (save-restriction 162 (save-restriction
121 (let* ((file-type (cond 163 (let* ((file-type (cond
@@ -131,21 +173,14 @@ If nil, the \"gnu\" archive is used."
131 (pkg-version (aref pkg-info 3)) 173 (pkg-version (aref pkg-info 3))
132 (commentary (aref pkg-info 4)) 174 (commentary (aref pkg-info 4))
133 (split-version (version-to-list pkg-version)) 175 (split-version (version-to-list pkg-version))
134 (pkg-buffer (current-buffer)) 176 (pkg-buffer (current-buffer)))
135 177
136 ;; Download latest archive-contents. 178 ;; Get archive-contents from ARCHIVE-URL if it's non-nil, or
137 (buffer (url-retrieve-synchronously 179 ;; from `package-archive-upload-base' otherwise.
138 (concat archive-url "archive-contents")))) 180 (let ((contents (or (package--archive-contents-from-url archive-url)
139 181 (package--archive-contents-from-file
140 ;; Parse archive-contents. 182 (concat package-archive-upload-base
141 (set-buffer buffer) 183 "archive-contents"))))
142 (package-handle-response)
143 (re-search-forward "^$" nil 'move)
144 (forward-char)
145 (delete-region (point-min) (point))
146 (let ((contents (package-read-from-string
147 (buffer-substring-no-properties (point-min)
148 (point-max))))
149 (new-desc (vector split-version requires desc file-type))) 184 (new-desc (vector split-version requires desc file-type)))
150 (if (> (car contents) package-archive-version) 185 (if (> (car contents) package-archive-version)
151 (error "Unrecognized archive version %d" (car contents))) 186 (error "Unrecognized archive version %d" (car contents)))
@@ -176,7 +211,6 @@ If nil, the \"gnu\" archive is used."
176 (symbol-name pkg-name) "-readme.txt"))) 211 (symbol-name pkg-name) "-readme.txt")))
177 212
178 (set-buffer pkg-buffer) 213 (set-buffer pkg-buffer)
179 (kill-buffer buffer)
180 (write-region (point-min) (point-max) 214 (write-region (point-min) (point-max)
181 (concat package-archive-upload-base 215 (concat package-archive-upload-base
182 file-name "-" pkg-version 216 file-name "-" pkg-version
@@ -184,8 +218,10 @@ If nil, the \"gnu\" archive is used."
184 nil nil nil 'excl) 218 nil nil nil 'excl)
185 219
186 ;; Write a news entry. 220 ;; Write a news entry.
187 (package--update-news (concat file-name "." extension) 221 (and package-update-news-on-upload
188 pkg-version desc archive-url) 222 archive-url
223 (package--update-news (concat file-name "." extension)
224 pkg-version desc archive-url))
189 225
190 ;; special-case "package": write a second copy so that the 226 ;; special-case "package": write a second copy so that the
191 ;; installer can easily find the latest version. 227 ;; installer can easily find the latest version.
@@ -196,7 +232,9 @@ If nil, the \"gnu\" archive is used."
196 nil nil nil 'ask))))))) 232 nil nil nil 'ask)))))))
197 233
198(defun package-upload-buffer () 234(defun package-upload-buffer ()
199 "Upload a single .el file to ELPA from the current buffer." 235 "Upload the current buffer as a single-file Emacs Lisp package.
236The variable `package-archive-upload-base' specifies the upload
237destination."
200 (interactive) 238 (interactive)
201 (save-excursion 239 (save-excursion
202 (save-restriction 240 (save-restriction
@@ -205,6 +243,13 @@ If nil, the \"gnu\" archive is used."
205 (package-upload-buffer-internal pkg-info "el"))))) 243 (package-upload-buffer-internal pkg-info "el")))))
206 244
207(defun package-upload-file (file) 245(defun package-upload-file (file)
246 "Upload the Emacs Lisp package FILE to the package archive.
247Interactively, prompt for FILE. The package is considered a
248single-file package if FILE ends in \".el\", and a multi-file
249package if FILE ends in \".tar\".
250
251The variable `package-archive-upload-base' specifies the upload
252destination."
208 (interactive "fPackage file name: ") 253 (interactive "fPackage file name: ")
209 (with-temp-buffer 254 (with-temp-buffer
210 (insert-file-contents-literally file) 255 (insert-file-contents-literally file)
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 3179672a3ec..916dcd4785c 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2010-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
4 4
5;; Author: Stefan Monnier <monnier@iro.umontreal.ca> 5;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6;; Keywords: 6;; Keywords:
7 7
8;; This file is part of GNU Emacs. 8;; This file is part of GNU Emacs.
9 9
@@ -32,6 +32,14 @@
32;; could be defined this way, as a shorthand for (pred (lambda (_) BOOLEXP)). 32;; could be defined this way, as a shorthand for (pred (lambda (_) BOOLEXP)).
33;; But better would be if we could define new ways to match by having the 33;; But better would be if we could define new ways to match by having the
34;; extension provide its own `pcase--split-<foo>' thingy. 34;; extension provide its own `pcase--split-<foo>' thingy.
35;; - provide something like (setq VAR) so a var can be set rather than
36;; let-bound.
37;; - provide a way to fallthrough to other cases.
38;; - try and be more clever to reduce the size of the decision tree, and
39;; to reduce the number of leafs that need to be turned into function:
40;; - first, do the tests shared by all remaining branches (it will have
41;; to be performed anyway, so better so it first so it's shared).
42;; - then choose the test that discriminates more (?).
35;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to 43;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to
36;; generate a lex-style DFA to decide whether to run E1 or E2. 44;; generate a lex-style DFA to decide whether to run E1 or E2.
37 45
@@ -67,12 +75,12 @@ If a SYMBOL is used twice in the same pattern (i.e. the pattern is
67QPatterns can take the following forms: 75QPatterns can take the following forms:
68 (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr. 76 (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr.
69 ,UPAT matches if the UPattern UPAT matches. 77 ,UPAT matches if the UPattern UPAT matches.
70 STRING matches if the object is `equal' to STRING. 78 STRING matches if the object is `equal' to STRING.
71 ATOM matches if the object is `eq' to ATOM. 79 ATOM matches if the object is `eq' to ATOM.
72QPatterns for vectors are not implemented yet. 80QPatterns for vectors are not implemented yet.
73 81
74PRED can take the form 82PRED can take the form
75 FUNCTION in which case it gets called with one argument. 83 FUNCTION in which case it gets called with one argument.
76 (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments. 84 (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments.
77A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION). 85A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION).
78PRED patterns can refer to variables bound earlier in the pattern. 86PRED patterns can refer to variables bound earlier in the pattern.
@@ -209,6 +217,7 @@ of the form (UPAT EXP)."
209(defun pcase--if (test then else) 217(defun pcase--if (test then else)
210 (cond 218 (cond
211 ((eq else :pcase--dontcare) then) 219 ((eq else :pcase--dontcare) then)
220 ((eq then :pcase--dontcare) (debug) else) ;Can/should this ever happen?
212 ((eq (car-safe else) 'if) 221 ((eq (car-safe else) 'if)
213 (if (equal test (nth 1 else)) 222 (if (equal test (nth 1 else))
214 ;; Doing a test a second time: get rid of the redundancy. 223 ;; Doing a test a second time: get rid of the redundancy.
@@ -223,6 +232,8 @@ of the form (UPAT EXP)."
223 `(cond (,test ,then) 232 `(cond (,test ,then)
224 ;; Doing a test a second time: get rid of the redundancy, as above. 233 ;; Doing a test a second time: get rid of the redundancy, as above.
225 ,@(remove (assoc test else) (cdr else)))) 234 ,@(remove (assoc test else) (cdr else))))
235 ;; Invert the test if that lets us reduce the depth of the tree.
236 ((memq (car-safe then) '(if cond)) (pcase--if `(not ,test) else then))
226 (t `(if ,test ,then ,else)))) 237 (t `(if ,test ,then ,else))))
227 238
228(defun pcase--upat (qpattern) 239(defun pcase--upat (qpattern)
@@ -264,6 +275,22 @@ MATCH is the pattern that needs to be matched, of the form:
264(defun pcase--and (match matches) 275(defun pcase--and (match matches)
265 (if matches `(and ,match ,@matches) match)) 276 (if matches `(and ,match ,@matches) match))
266 277
278(defconst pcase-mutually-exclusive-predicates
279 '((symbolp . integerp)
280 (symbolp . numberp)
281 (symbolp . consp)
282 (symbolp . arrayp)
283 (symbolp . stringp)
284 (integerp . consp)
285 (integerp . arrayp)
286 (integerp . stringp)
287 (numberp . consp)
288 (numberp . arrayp)
289 (numberp . stringp)
290 (consp . arrayp)
291 (consp . stringp)
292 (arrayp . stringp)))
293
267(defun pcase--split-match (sym splitter match) 294(defun pcase--split-match (sym splitter match)
268 (case (car match) 295 (case (car match)
269 ((match) 296 ((match)
@@ -324,8 +351,14 @@ MATCH is the pattern that needs to be matched, of the form:
324 (cons `(and (match ,syma . ,(pcase--upat (car qpat))) 351 (cons `(and (match ,syma . ,(pcase--upat (car qpat)))
325 (match ,symd . ,(pcase--upat (cdr qpat)))) 352 (match ,symd . ,(pcase--upat (cdr qpat))))
326 :pcase--fail))) 353 :pcase--fail)))
327 ;; A QPattern but not for a cons, can only go the `else' side. 354 ;; A QPattern but not for a cons, can only go to the `else' side.
328 ((eq (car-safe pat) '\`) (cons :pcase--fail nil)))) 355 ((eq (car-safe pat) '\`) (cons :pcase--fail nil))
356 ((and (eq (car-safe pat) 'pred)
357 (or (member (cons 'consp (cadr pat))
358 pcase-mutually-exclusive-predicates)
359 (member (cons (cadr pat) 'consp)
360 pcase-mutually-exclusive-predicates)))
361 (cons :pcase--fail nil))))
329 362
330(defun pcase--split-equal (elem pat) 363(defun pcase--split-equal (elem pat)
331 (cond 364 (cond
@@ -337,7 +370,12 @@ MATCH is the pattern that needs to be matched, of the form:
337 ;; (or (integerp (cadr pat)) (symbolp (cadr pat)) 370 ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
338 ;; (consp (cadr pat))) 371 ;; (consp (cadr pat)))
339 ) 372 )
340 (cons :pcase--fail nil)))) 373 (cons :pcase--fail nil))
374 ((and (eq (car-safe pat) 'pred)
375 (symbolp (cadr pat))
376 (get (cadr pat) 'side-effect-free)
377 (funcall (cadr pat) elem))
378 (cons :pcase--succeed nil))))
341 379
342(defun pcase--split-member (elems pat) 380(defun pcase--split-member (elems pat)
343 ;; Based on pcase--split-equal. 381 ;; Based on pcase--split-equal.
@@ -354,13 +392,39 @@ MATCH is the pattern that needs to be matched, of the form:
354 ;; (or (integerp (cadr pat)) (symbolp (cadr pat)) 392 ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
355 ;; (consp (cadr pat))) 393 ;; (consp (cadr pat)))
356 ) 394 )
357 (cons :pcase--fail nil)))) 395 (cons :pcase--fail nil))
396 ((and (eq (car-safe pat) 'pred)
397 (symbolp (cadr pat))
398 (get (cadr pat) 'side-effect-free)
399 (let ((p (cadr pat)) (all t))
400 (dolist (elem elems)
401 (unless (funcall p elem) (setq all nil)))
402 all))
403 (cons :pcase--succeed nil))))
358 404
359(defun pcase--split-pred (upat pat) 405(defun pcase--split-pred (upat pat)
360 ;; FIXME: For predicates like (pred (> a)), two such predicates may 406 ;; FIXME: For predicates like (pred (> a)), two such predicates may
361 ;; actually refer to different variables `a'. 407 ;; actually refer to different variables `a'.
362 (if (equal upat pat) 408 (cond
363 (cons :pcase--succeed :pcase--fail))) 409 ((equal upat pat) (cons :pcase--succeed :pcase--fail))
410 ((and (eq 'pred (car upat))
411 (eq 'pred (car-safe pat))
412 (or (member (cons (cadr upat) (cadr pat))
413 pcase-mutually-exclusive-predicates)
414 (member (cons (cadr pat) (cadr upat))
415 pcase-mutually-exclusive-predicates)))
416 (cons :pcase--fail nil))
417 ;; ((and (eq 'pred (car upat))
418 ;; (eq '\` (car-safe pat))
419 ;; (symbolp (cadr upat))
420 ;; (or (symbolp (cadr pat)) (stringp (cadr pat)) (numberp (cadr pat)))
421 ;; (get (cadr upat) 'side-effect-free)
422 ;; (progn (message "Trying predicate %S" (cadr upat))
423 ;; (ignore-errors
424 ;; (funcall (cadr upat) (cadr pat)))))
425 ;; (message "Simplify pred %S against %S" upat pat)
426 ;; (cons nil :pcase--fail))
427 ))
364 428
365(defun pcase--fgrep (vars sexp) 429(defun pcase--fgrep (vars sexp)
366 "Check which of the symbols VARS appear in SEXP." 430 "Check which of the symbols VARS appear in SEXP."
@@ -375,7 +439,7 @@ MATCH is the pattern that needs to be matched, of the form:
375;; bootstrapping problems. 439;; bootstrapping problems.
376(defun pcase--u1 (matches code vars rest) 440(defun pcase--u1 (matches code vars rest)
377 "Return code that runs CODE (with VARS) if MATCHES match. 441 "Return code that runs CODE (with VARS) if MATCHES match.
378and otherwise defers to REST which is a list of branches of the form 442Otherwise, it defers to REST which is a list of branches of the form
379\(ELSE-MATCH ELSE-CODE . ELSE-VARS)." 443\(ELSE-MATCH ELSE-CODE . ELSE-VARS)."
380 ;; Depending on the order in which we choose to check each of the MATCHES, 444 ;; Depending on the order in which we choose to check each of the MATCHES,
381 ;; the resulting tree may be smaller or bigger. So in general, we'd want 445 ;; the resulting tree may be smaller or bigger. So in general, we'd want
@@ -433,6 +497,7 @@ and otherwise defers to REST which is a list of branches of the form
433 ((eq upat 'dontcare) :pcase--dontcare) 497 ((eq upat 'dontcare) :pcase--dontcare)
434 ((functionp upat) (error "Feature removed, use (pred %s)" upat)) 498 ((functionp upat) (error "Feature removed, use (pred %s)" upat))
435 ((memq (car-safe upat) '(guard pred)) 499 ((memq (car-safe upat) '(guard pred))
500 (if (eq (car upat) 'pred) (put sym 'pcase-used t))
436 (destructuring-bind (then-rest &rest else-rest) 501 (destructuring-bind (then-rest &rest else-rest)
437 (pcase--split-rest 502 (pcase--split-rest
438 sym (apply-partially #'pcase--split-pred upat) rest) 503 sym (apply-partially #'pcase--split-pred upat) rest)
@@ -459,6 +524,7 @@ and otherwise defers to REST which is a list of branches of the form
459 (pcase--u1 matches code vars then-rest) 524 (pcase--u1 matches code vars then-rest)
460 (pcase--u else-rest)))) 525 (pcase--u else-rest))))
461 ((symbolp upat) 526 ((symbolp upat)
527 (put sym 'pcase-used t)
462 (if (not (assq upat vars)) 528 (if (not (assq upat vars))
463 (pcase--u1 matches code (cons (cons upat sym) vars) rest) 529 (pcase--u1 matches code (cons (cons upat sym) vars) rest)
464 ;; Non-linear pattern. Turn it into an `eq' test. 530 ;; Non-linear pattern. Turn it into an `eq' test.
@@ -466,6 +532,7 @@ and otherwise defers to REST which is a list of branches of the form
466 matches) 532 matches)
467 code vars rest))) 533 code vars rest)))
468 ((eq (car-safe upat) '\`) 534 ((eq (car-safe upat) '\`)
535 (put sym 'pcase-used t)
469 (pcase--q1 sym (cadr upat) matches code vars rest)) 536 (pcase--q1 sym (cadr upat) matches code vars rest))
470 ((eq (car-safe upat) 'or) 537 ((eq (car-safe upat) 'or)
471 (let ((all (> (length (cdr upat)) 1)) 538 (let ((all (> (length (cdr upat)) 1))
@@ -524,7 +591,7 @@ and otherwise defers to REST which is a list of branches of the form
524 591
525(defun pcase--q1 (sym qpat matches code vars rest) 592(defun pcase--q1 (sym qpat matches code vars rest)
526 "Return code that runs CODE if SYM matches QPAT and if MATCHES match. 593 "Return code that runs CODE if SYM matches QPAT and if MATCHES match.
527and if not, defers to REST which is a list of branches of the form 594Otherwise, it defers to REST which is a list of branches of the form
528\(OTHER_MATCH OTHER-CODE . OTHER-VARS)." 595\(OTHER_MATCH OTHER-CODE . OTHER-VARS)."
529 (cond 596 (cond
530 ((eq (car-safe qpat) '\,) (error "Can't use `,UPATTERN")) 597 ((eq (car-safe qpat) '\,) (error "Can't use `,UPATTERN"))
@@ -539,14 +606,20 @@ and if not, defers to REST which is a list of branches of the form
539 (pcase--split-rest sym 606 (pcase--split-rest sym
540 (apply-partially #'pcase--split-consp syma symd) 607 (apply-partially #'pcase--split-consp syma symd)
541 rest) 608 rest)
542 (pcase--if `(consp ,sym) 609 (let ((then-body (pcase--u1 `((match ,syma . ,(pcase--upat (car qpat)))
543 `(let ((,syma (car ,sym)) 610 (match ,symd . ,(pcase--upat (cdr qpat)))
544 (,symd (cdr ,sym))) 611 ,@matches)
545 ,(pcase--u1 `((match ,syma . ,(pcase--upat (car qpat))) 612 code vars then-rest)))
546 (match ,symd . ,(pcase--upat (cdr qpat))) 613 (pcase--if
547 ,@matches) 614 `(consp ,sym)
548 code vars then-rest)) 615 ;; We want to be careful to only add bindings that are used.
549 (pcase--u else-rest))))) 616 ;; The byte-compiler could do that for us, but it would have to pay
617 ;; attention to the `consp' test in order to figure out that car/cdr
618 ;; can't signal errors and our byte-compiler is not that clever.
619 `(let (,@(if (get syma 'pcase-used) `((,syma (car ,sym))))
620 ,@(if (get symd 'pcase-used) `((,symd (cdr ,sym)))))
621 ,then-body)
622 (pcase--u else-rest))))))
550 ((or (integerp qpat) (symbolp qpat) (stringp qpat)) 623 ((or (integerp qpat) (symbolp qpat) (stringp qpat))
551 (destructuring-bind (then-rest &rest else-rest) 624 (destructuring-bind (then-rest &rest else-rest)
552 (pcase--split-rest sym (apply-partially 'pcase--split-equal qpat) rest) 625 (pcase--split-rest sym (apply-partially 'pcase--split-equal qpat) rest)
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index fae249da9d3..d9b79ccd317 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -2375,7 +2375,7 @@ problems."
2375 (if (eq viper-intermediate-command 'viper-repeat) 2375 (if (eq viper-intermediate-command 'viper-repeat)
2376 (viper-change-subr (mark t) (point)) 2376 (viper-change-subr (mark t) (point))
2377 (viper-change (mark t) (point))) 2377 (viper-change (mark t) (point)))
2378 ;; com is set to ?r when we repeat this comand with dot 2378 ;; com is set to ?r when we repeat this command with dot
2379 (viper-set-destructive-command (list 'viper-substitute val ?r nil nil nil)) 2379 (viper-set-destructive-command (list 'viper-substitute val ?r nil nil nil))
2380 )) 2380 ))
2381 2381
diff --git a/lisp/erc/ChangeLog.01 b/lisp/erc/ChangeLog.01
index 962acd5bfc6..4016586abc7 100644
--- a/lisp/erc/ChangeLog.01
+++ b/lisp/erc/ChangeLog.01
@@ -584,9 +584,9 @@
584 584
585 * debian/maint/conffiles.in: new file 585 * debian/maint/conffiles.in: new file
586 586
587 * debian/maint/conffiles: superceded by conffiles.in 587 * debian/maint/conffiles: superseded by conffiles.in
588 588
589 * debian/scripts/startup: superceded by startup.erc 589 * debian/scripts/startup: superseded by startup.erc
590 590
5912001-10-25 Mario Lang <mlang@delysid.org> 5912001-10-25 Mario Lang <mlang@delysid.org>
592 592
@@ -609,7 +609,7 @@
609 609
610 * debian/maint/postinst, debian/maint/prerm, debian/scripts/install, 610 * debian/maint/postinst, debian/maint/prerm, debian/scripts/install,
611 debian/scripts/remove: 611 debian/scripts/remove:
612 removed, superceded by it's .in counterpart 612 removed, superseded by its .in counterpart
613 613
6142001-10-25 Mario Lang <mlang@delysid.org> 6142001-10-25 Mario Lang <mlang@delysid.org>
615 615
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index 360383aa32b..97862afb678 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -562,17 +562,23 @@ You can change the color sort order by customizing `list-colors-sort'."
562 (let ((lc (nthcdr (1- (display-color-cells)) list))) 562 (let ((lc (nthcdr (1- (display-color-cells)) list)))
563 (if lc 563 (if lc
564 (setcdr lc nil))))) 564 (setcdr lc nil)))))
565 (let ((buf (get-buffer-create "*Colors*"))) 565 (unless buffer-name
566 (with-current-buffer buf 566 (setq buffer-name "*Colors*"))
567 (with-help-window buffer-name
568 (with-current-buffer standard-output
567 (erase-buffer) 569 (erase-buffer)
568 (setq truncate-lines t) 570 (setq truncate-lines t)))
569 ;; Display buffer before generating content to allow 571 (let ((buf (get-buffer buffer-name))
570 ;; `list-colors-print' to get the right window-width. 572 (inhibit-read-only t))
573 ;; Display buffer before generating content, to allow
574 ;; `list-colors-print' to get the right window-width.
575 (with-selected-window (or (get-buffer-window buf t) (selected-window))
576 (with-current-buffer buf
577 (list-colors-print list callback)
578 (set-buffer-modified-p nil)))
579 (when callback
571 (pop-to-buffer buf) 580 (pop-to-buffer buf)
572 (list-colors-print list callback) 581 (message "Click on a color to select it."))))
573 (set-buffer-modified-p nil)))
574 (if callback
575 (message "Click on a color to select it.")))
576 582
577(defun list-colors-print (list &optional callback) 583(defun list-colors-print (list &optional callback)
578 (let ((callback-fn 584 (let ((callback-fn
diff --git a/lisp/files.el b/lisp/files.el
index 5890bf9b8c9..8849e264151 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3394,8 +3394,19 @@ Return the new variables list."
3394 (cdr entry) root variables)))) 3394 (cdr entry) root variables))))
3395 ((or (not key) 3395 ((or (not key)
3396 (derived-mode-p key)) 3396 (derived-mode-p key))
3397 (setq variables (dir-locals-collect-mode-variables 3397 (let* ((alist (cdr entry))
3398 (cdr entry) variables)))))) 3398 (subdirs (assq 'subdirs alist)))
3399 (if (or (not subdirs)
3400 (progn
3401 (setq alist (delq subdirs alist))
3402 (cdr-safe subdirs))
3403 ;; TODO someone might want to extend this to allow
3404 ;; integer values for subdir, where N means
3405 ;; variables apply to this directory and N levels
3406 ;; below it (0 == nil).
3407 (equal root default-directory))
3408 (setq variables (dir-locals-collect-mode-variables
3409 alist variables))))))))
3399 (error 3410 (error
3400 ;; The file's content might be invalid (e.g. have a merge conflict), but 3411 ;; The file's content might be invalid (e.g. have a merge conflict), but
3401 ;; that shouldn't prevent the user from opening the file. 3412 ;; that shouldn't prevent the user from opening the file.
@@ -5837,6 +5848,9 @@ normally equivalent short `-D' option is just passed on to
5837 (file-name-directory file) 5848 (file-name-directory file)
5838 (file-name-directory (expand-file-name file)))) 5849 (file-name-directory (expand-file-name file))))
5839 (pattern (file-name-nondirectory file))) 5850 (pattern (file-name-nondirectory file)))
5851 ;; NB since switches is passed to the shell, be
5852 ;; careful of malicious values, eg "-l;reboot".
5853 ;; See eg dired-safe-switches-p.
5840 (call-process 5854 (call-process
5841 shell-file-name nil t nil 5855 shell-file-name nil t nil
5842 "-c" 5856 "-c"
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 9dd315782ff..4562d544a58 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,71 @@
12011-03-01 Julien Danjou <julien@danjou.info>
2
3 * gnus-art.el (list-identifier): Add list-identifier as a parameter
4 group.
5 (article-hide-list-identifiers): Use list-identifier group parameter.
6
72011-02-28 Julien Danjou <julien@danjou.info>
8
9 * sieve.el (sieve-buffer-script-name): New local variable to store
10 sieve script name.
11 (sieve-edit-script): Store sieve script name.
12 (sieve-upload): Use sieve script name when uploading.
13 (sieve-upload): Use substitute-command-keys.
14 (sieve-edit-script): Use substitute-command-keys.
15 (sieve-refresh-scriptlist): Use substitute-command-keys.
16 (sieve-manage-mode-map): Define keymap properly.
17 (sieve-manage-mode): Do not set mode name manually, change mode-name to
18 (sieve-refresh-scriptlist): Use substitute-command-keys."Sieve-manage".
19 Remove commented code about cvs.
20 (sieve-manage-quit): New function.
21 (sieve-manage-mode-map): Bind 'q' to sieve-manage-quit.
22
232011-02-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
24
25 * gnus-group.el (gnus-import-other-newsrc-file): New function.
26
272011-02-25 Teodor Zlatanov <tzz@lifelogs.com>
28
29 * auth-source.el (auth-source-search): Cache empty result sets.
30
31 * auth-source.el (auth-source-save-behavior): New variable to replace
32 `auth-source-never-create'.
33 (auth-source-netrc-create): Use it.
34 (auth-source-never-save): Remove.
35
362011-02-25 Lars Ingebrigtsen <larsi@gnus.org>
37
38 * nnimap.el (nnimap-stream): Doc fix.
39 (nnimap-open-connection-1): Reverse the order of the ports to that the
40 prompted-for port is first.
41
42 * gnus-start.el (gnus-get-unread-articles): Don't clobber the async
43 retrieval by the no-group selection.
44
45 * gnus-demon.el (gnus-demon-init): run-with-timer should be called with
46 numerical parameters.
47
482011-02-25 Julien Danjou <julien@danjou.info>
49
50 * gnus-gravatar.el: Use gnus-with-article-buffer.
51
52 * gnus-art.el (gnus-with-article-buffer): Check that the
53 gnus-article-buffer is alive.
54
552011-02-24 Teodor Zlatanov <tzz@lifelogs.com>
56
57 * auth-source.el (auth-source-creation-prompts): New variable to manage
58 creation-time prompts.
59 (auth-source-search): Document it.
60 (auth-source-format-prompt): Add utility function.
61 (auth-source-netrc-create): Don't default the user name to
62 user-login-name. Use `auth-source-creation-prompts' and some default
63 prompts for user, host, port, and password (the default generic prompt
64 remains ugly).
65 (auth-source-never-save): Add customizable option to never save info.
66 (auth-source-netrc-create): Use it and improve save prompts. Fix help
67 mode excursion.
68
12011-02-24 Katsumi Yamaoka <yamaoka@jpl.org> 692011-02-24 Katsumi Yamaoka <yamaoka@jpl.org>
2 70
3 * auth-source.el (auth-source-netrc-create): Use `read-char' with no 71 * auth-source.el (auth-source-netrc-create): Use `read-char' with no
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 63ec93dd760..500de10b71c 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -137,8 +137,21 @@ let-binding."
137(defvar auth-source-creation-defaults nil 137(defvar auth-source-creation-defaults nil
138 "Defaults for creating token values. Usually let-bound.") 138 "Defaults for creating token values. Usually let-bound.")
139 139
140(defvar auth-source-creation-prompts nil
141 "Default prompts for token values. Usually let-bound.")
142
140(make-obsolete 'auth-source-hide-passwords nil "Emacs 24.1") 143(make-obsolete 'auth-source-hide-passwords nil "Emacs 24.1")
141 144
145(defcustom auth-source-save-behavior 'ask
146 "If set, auth-source will respect it for save behavior."
147 :group 'auth-source
148 :version "23.2" ;; No Gnus
149 :type `(choice
150 :tag "auth-source new token save behavior"
151 (const :tag "Always save" t)
152 (const :tag "Never save" nil)
153 (const :tag "Ask" ask)))
154
142(defvar auth-source-magic "auth-source-magic ") 155(defvar auth-source-magic "auth-source-magic ")
143 156
144(defcustom auth-source-do-cache t 157(defcustom auth-source-do-cache t
@@ -435,12 +448,18 @@ parameter, that parameter will be required in the resulting
435token. The value for that parameter will be obtained from the 448token. The value for that parameter will be obtained from the
436search parameters or from user input. If any queries are needed, 449search parameters or from user input. If any queries are needed,
437the alist `auth-source-creation-defaults' will be checked for the 450the alist `auth-source-creation-defaults' will be checked for the
438default prompt. 451default value. If the user, host, or port are missing, the alist
452`auth-source-creation-prompts' will be used to look up the
453prompts IN THAT ORDER (so the 'user prompt will be queried first,
454then 'host, then 'port, and finally 'secret). Each prompt string
455can use %u, %h, and %p to show the user, host, and port.
439 456
440Here's an example: 457Here's an example:
441 458
442\(let ((auth-source-creation-defaults '((user . \"defaultUser\") 459\(let ((auth-source-creation-defaults '((user . \"defaultUser\")
443 (A . \"default A\")))) 460 (A . \"default A\")))
461 (auth-source-creation-prompts
462 '((password . \"Enter IMAP password for %h:%p: \"))))
444 (auth-source-search :host '(\"nonesuch\" \"twosuch\") :type 'netrc :max 1 463 (auth-source-search :host '(\"nonesuch\" \"twosuch\") :type 'netrc :max 1
445 :P \"pppp\" :Q \"qqqq\" 464 :P \"pppp\" :Q \"qqqq\"
446 :create '(A B Q))) 465 :create '(A B Q)))
@@ -452,12 +471,11 @@ which says:
452 471
453 Create a new entry if you found none. The netrc backend will 472 Create a new entry if you found none. The netrc backend will
454 automatically require host, user, and port. The host will be 473 automatically require host, user, and port. The host will be
455 'nonesuch' and Q will be 'qqqq'. We prompt for A with default 474 'nonesuch' and Q will be 'qqqq'. We prompt for the password
456 'default A', for B and port with default nil, and for the 475 with the shown prompt. We will not prompt for Q. The resulting
457 user with default 'defaultUser'. We will not prompt for Q. The 476 token will have keys user, host, port, A, B, and Q. It will not
458 resulting token will have keys user, host, port, A, B, and Q. 477 have P with any value, even though P is used in the search to
459 It will not have P with any value, even though P is used in the 478 find only entries that have P set to 'pppp'.\"
460 search to find only entries that have P set to 'pppp'.\"
461 479
462When multiple values are specified in the search parameter, the 480When multiple values are specified in the search parameter, the
463user is prompted for which one. So :host (X Y Z) would ask the 481user is prompted for which one. So :host (X Y Z) would ask the
@@ -506,10 +524,13 @@ must call it to obtain the actual value."
506 (keys (loop for i below (length spec) by 2 524 (keys (loop for i below (length spec) by 2
507 unless (memq (nth i spec) ignored-keys) 525 unless (memq (nth i spec) ignored-keys)
508 collect (nth i spec))) 526 collect (nth i spec)))
527 (cached (auth-source-remembered-p spec))
528 ;; note that we may have cached results but found is still nil
529 ;; (there were no results from the search)
509 (found (auth-source-recall spec)) 530 (found (auth-source-recall spec))
510 filtered-backends accessor-key backend) 531 filtered-backends accessor-key backend)
511 532
512 (if (and found auth-source-do-cache) 533 (if (and cached auth-source-do-cache)
513 (auth-source-do-debug 534 (auth-source-do-debug
514 "auth-source-search: found %d CACHED results matching %S" 535 "auth-source-search: found %d CACHED results matching %S"
515 (length found) spec) 536 (length found) spec)
@@ -562,7 +583,8 @@ must call it to obtain the actual value."
562 "auth-source-search: CREATED %d results (max %d) matching %S" 583 "auth-source-search: CREATED %d results (max %d) matching %S"
563 (length found) max spec)) 584 (length found) max spec))
564 585
565 (when (and found auth-source-do-cache) 586 ;; note we remember the lack of result too, if it's applicable
587 (when auth-source-do-cache
566 (auth-source-remember spec found))) 588 (auth-source-remember spec found)))
567 589
568 found)) 590 found))
@@ -636,6 +658,11 @@ Returns the deleted entries."
636 (password-read-from-cache 658 (password-read-from-cache
637 (concat auth-source-magic (format "%S" spec)))) 659 (concat auth-source-magic (format "%S" spec))))
638 660
661(defun auth-source-remembered-p (spec)
662 "Check if SPEC is remembered."
663 (password-in-cache-p
664 (concat auth-source-magic (format "%S" spec))))
665
639(defun auth-source-forget (spec) 666(defun auth-source-forget (spec)
640 "Forget any cached data matching SPEC exactly. 667 "Forget any cached data matching SPEC exactly.
641 668
@@ -646,7 +673,10 @@ Returns t or nil for forgotten or not found."
646;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym)) 673;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym))
647 674
648;;; (auth-source-remember '(:host "wedd") '(4 5 6)) 675;;; (auth-source-remember '(:host "wedd") '(4 5 6))
676;;; (auth-source-remembered-p '(:host "wedd"))
649;;; (auth-source-remember '(:host "xedd") '(1 2 3)) 677;;; (auth-source-remember '(:host "xedd") '(1 2 3))
678;;; (auth-source-remembered-p '(:host "xedd"))
679;;; (auth-source-remembered-p '(:host "zedd"))
650;;; (auth-source-recall '(:host "xedd")) 680;;; (auth-source-recall '(:host "xedd"))
651;;; (auth-source-recall '(:host t)) 681;;; (auth-source-recall '(:host t))
652;;; (auth-source-forget+ :host t) 682;;; (auth-source-forget+ :host t)
@@ -903,6 +933,17 @@ See `auth-source-search' for details on SPEC."
903 (nth 0 v) 933 (nth 0 v)
904 v)) 934 v))
905 935
936;; (auth-source-format-prompt "test %u %h %p" '((?u "user") (?h "host")))
937
938(defun auth-source-format-prompt (prompt alist)
939 "Format PROMPT using %x (for any character x) specifiers in ALIST."
940 (dolist (cell alist)
941 (let ((c (nth 0 cell))
942 (v (nth 1 cell)))
943 (when (and c v)
944 (setq prompt (replace-regexp-in-string (format "%%%c" c) v prompt)))))
945 prompt)
946
906;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t) 947;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t)
907;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B))) 948;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B)))
908 949
@@ -954,31 +995,50 @@ See `auth-source-search' for details on SPEC."
954 ;; the default supplementals are simple: for the user, 995 ;; the default supplementals are simple: for the user,
955 ;; try (user-login-name), otherwise take given-default 996 ;; try (user-login-name), otherwise take given-default
956 (default (cond 997 (default (cond
957 ((and (not given-default) (eq r 'user)) 998 ;; don't default the user name
958 (user-login-name)) 999 ;; ((and (not given-default) (eq r 'user))
959 (t given-default)))) 1000 ;; (user-login-name))
1001 (t given-default)))
1002 (printable-defaults (list
1003 (cons 'user
1004 (or
1005 (auth-source-netrc-element-or-first
1006 (aget valist 'user))
1007 (plist-get artificial :user)
1008 "[any user]"))
1009 (cons 'host
1010 (or
1011 (auth-source-netrc-element-or-first
1012 (aget valist 'host))
1013 (plist-get artificial :host)
1014 "[any host]"))
1015 (cons 'port
1016 (or
1017 (auth-source-netrc-element-or-first
1018 (aget valist 'port))
1019 (plist-get artificial :port)
1020 "[any port]"))))
1021 (prompt (or (aget auth-source-creation-prompts r)
1022 (case r
1023 ('secret "%p password for user %u, host %h: ")
1024 ('user "%p user name: ")
1025 ('host "%p host name for user %u: ")
1026 ('port "%p port for user %u and host %h: "))
1027 (format "Enter %s (%%u@%%h:%%p): " r)))
1028 (prompt (auth-source-format-prompt
1029 prompt
1030 `((?u ,(aget printable-defaults 'user))
1031 (?h ,(aget printable-defaults 'host))
1032 (?p ,(aget printable-defaults 'port))))))
960 1033
961 ;; store the data, prompting for the password if needed 1034 ;; store the data, prompting for the password if needed
962 (setq data 1035 (setq data
963 (cond 1036 (cond
964 ((and (null data) (eq r 'secret)) 1037 ((and (null data) (eq r 'secret))
965 ;; special case prompt for passwords 1038 ;; special case prompt for passwords
966 (read-passwd (format "Password for %s@%s:%s: " 1039 (read-passwd prompt))
967 (or 1040 ((null data)
968 (auth-source-netrc-element-or-first 1041 (read-string prompt default))
969 (aget valist 'user))
970 (plist-get artificial :user)
971 "[any user]")
972 (or
973 (auth-source-netrc-element-or-first
974 (aget valist 'host))
975 (plist-get artificial :host)
976 "[any host]")
977 (or
978 (auth-source-netrc-element-or-first
979 (aget valist 'port))
980 (plist-get artificial :port)
981 "[any port]"))))
982 (t (or data default)))) 1042 (t (or data default))))
983 1043
984 (when data 1044 (when data
@@ -1026,22 +1086,42 @@ See `auth-source-search' for details on SPEC."
1026 (goto-char (point-max)) 1086 (goto-char (point-max))
1027 1087
1028 ;; ask AFTER we've successfully opened the file 1088 ;; ask AFTER we've successfully opened the file
1029 (let ((prompt (format "Add to file %s? %s: " 1089 (let ((prompt (format "Save auth info to file %s? %s: "
1030 file 1090 file
1031 "(y)es/(n)o but use it/(e)dit line/(s)kip file")) 1091 "y/n/N/e/?"))
1032 done k) 1092 (done (not (eq auth-source-save-behavior 'ask)))
1093 (bufname "*auth-source Help*")
1094 k)
1033 (while (not done) 1095 (while (not done)
1034 (message "%s" prompt) 1096 (message "%s" prompt)
1035 (setq k (read-char)) 1097 (setq k (read-char))
1036 (case k 1098 (case k
1037 (?y (setq done t)) 1099 (?y (setq done t))
1100 (?? (save-excursion
1101 (with-output-to-temp-buffer bufname
1102 (princ
1103 (concat "(y)es, save\n"
1104 "(n)o but use the info\n"
1105 "(N)o and don't ask to save again\n"
1106 "(e)dit the line\n"
1107 "(?) for help as you can see.\n"))
1108 (set-buffer standard-output)
1109 (help-mode))))
1038 (?n (setq add "" 1110 (?n (setq add ""
1039 done t)) 1111 done t))
1040 (?s (setq add "" 1112 (?N (setq add ""
1041 done 'skip)) 1113 done t
1114 auth-source-save-behavior nil))
1042 (?e (setq add (read-string "Line to add: " add))) 1115 (?e (setq add (read-string "Line to add: " add)))
1043 (t nil))) 1116 (t nil)))
1044 1117
1118 (when (get-buffer-window bufname)
1119 (delete-window (get-buffer-window bufname)))
1120
1121 ;; make sure the info is not saved
1122 (when (null auth-source-save-behavior)
1123 (setq add ""))
1124
1045 (when (< 0 (length add)) 1125 (when (< 0 (length add))
1046 (progn 1126 (progn
1047 (unless (bolp) 1127 (unless (bolp)
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 204d63d37e4..989488c0995 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -441,7 +441,7 @@ manipulated as follows:
441 (setf (gnus-agent-cat-groups old-category) 441 (setf (gnus-agent-cat-groups old-category)
442 (delete group (gnus-agent-cat-groups 442 (delete group (gnus-agent-cat-groups
443 old-category)))))) 443 old-category))))))
444 ;; Purge cache as preceeding loop invalidated it. 444 ;; Purge cache as preceding loop invalidated it.
445 (setq gnus-category-group-cache nil)) 445 (setq gnus-category-group-cache nil))
446 446
447 (setcdr (or (assq 'agent-groups category) 447 (setcdr (or (assq 'agent-groups category)
@@ -1195,7 +1195,7 @@ downloadable."
1195 (mapc #'gnus-summary-remove-process-mark 1195 (mapc #'gnus-summary-remove-process-mark
1196 (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded)) 1196 (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded))
1197 1197
1198 ;; The preceeding call to (gnus-agent-summary-fetch-group) 1198 ;; The preceding call to (gnus-agent-summary-fetch-group)
1199 ;; updated the temporary gnus-newsgroup-downloadable to 1199 ;; updated the temporary gnus-newsgroup-downloadable to
1200 ;; remove each article successfully fetched. Now, I 1200 ;; remove each article successfully fetched. Now, I
1201 ;; update the real gnus-newsgroup-downloadable to only 1201 ;; update the real gnus-newsgroup-downloadable to only
@@ -1520,14 +1520,14 @@ downloaded into the agent."
1520 header-number) 1520 header-number)
1521 ;; Check each article 1521 ;; Check each article
1522 (while (setq article (pop articles)) 1522 (while (setq article (pop articles))
1523 ;; Skip alist entries preceeding this article 1523 ;; Skip alist entries preceding this article
1524 (while (> article (or (caar alist) (1+ article))) 1524 (while (> article (or (caar alist) (1+ article)))
1525 (setq alist (cdr alist))) 1525 (setq alist (cdr alist)))
1526 1526
1527 ;; Prune off articles that we have already fetched. 1527 ;; Prune off articles that we have already fetched.
1528 (unless (and (eq article (caar alist)) 1528 (unless (and (eq article (caar alist))
1529 (cdar alist)) 1529 (cdar alist))
1530 ;; Skip headers preceeding this article 1530 ;; Skip headers preceding this article
1531 (while (> article 1531 (while (> article
1532 (setq header-number 1532 (setq header-number
1533 (let* ((header (car headers))) 1533 (let* ((header (car headers)))
@@ -3437,7 +3437,7 @@ missing NOV entry. Run gnus-agent-regenerate-group to restore it.")))
3437 3437
3438 ;; If considering all articles is set, I can only 3438 ;; If considering all articles is set, I can only
3439 ;; expire article IDs that are no longer in the 3439 ;; expire article IDs that are no longer in the
3440 ;; active range (That is, articles that preceed the 3440 ;; active range (That is, articles that precede the
3441 ;; first article in the new alist). 3441 ;; first article in the new alist).
3442 (if (and gnus-agent-consider-all-articles 3442 (if (and gnus-agent-consider-all-articles
3443 (>= article-number (car active))) 3443 (>= article-number (car active)))
@@ -3715,7 +3715,7 @@ has been fetched."
3715 (gnus-agent-append-to-list tail-uncached v1)) 3715 (gnus-agent-append-to-list tail-uncached v1))
3716 (setq arts (cdr arts)) 3716 (setq arts (cdr arts))
3717 (setq ref (cdr ref))) 3717 (setq ref (cdr ref)))
3718 (t ; reference article (v2) preceeds the list being filtered 3718 (t ; reference article (v2) precedes the list being filtered
3719 (setq ref (cdr ref)))))) 3719 (setq ref (cdr ref))))))
3720 (while arts 3720 (while arts
3721 (gnus-agent-append-to-list tail-uncached (pop arts))) 3721 (gnus-agent-append-to-list tail-uncached (pop arts)))
@@ -4020,7 +4020,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
4020 ;; article (with the exception of the last ID in the list - it's 4020 ;; article (with the exception of the last ID in the list - it's
4021 ;; special) that no longer appears in the overview. In this 4021 ;; special) that no longer appears in the overview. In this
4022 ;; situtation, the last article ID in the list implies that it, 4022 ;; situtation, the last article ID in the list implies that it,
4023 ;; and every article ID preceeding it, have been fetched from the 4023 ;; and every article ID preceding it, have been fetched from the
4024 ;; server. 4024 ;; server.
4025 4025
4026 (if gnus-agent-consider-all-articles 4026 (if gnus-agent-consider-all-articles
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 5b3489a72ee..7469c4445c6 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1253,6 +1253,24 @@ predicate. See Info node `(gnus)Customizing Articles'."
1253 :link '(custom-manual "(gnus)Customizing Articles") 1253 :link '(custom-manual "(gnus)Customizing Articles")
1254 :type gnus-article-treat-custom) 1254 :type gnus-article-treat-custom)
1255 1255
1256(gnus-define-group-parameter
1257 list-identifier
1258 :variable-document
1259 "Alist of regexps and correspondent identifiers."
1260 :variable-group gnus-article-washing
1261 :parameter-type
1262 '(choice :tag "Identifier"
1263 :value nil
1264 (symbol :tag "Item in `gnus-list-identifiers'" none)
1265 regexp
1266 (const :tag "None" nil))
1267 :parameter-document
1268 "If non-nil, specify how to remove `identifiers' from articles' subject.
1269
1270Any symbol is used to look up a regular expression to match the
1271banner in `gnus-list-identifiers'. A string is used as a regular
1272expression to match the identifier directly.")
1273
1256(make-obsolete-variable 'gnus-treat-strip-pgp nil 1274(make-obsolete-variable 'gnus-treat-strip-pgp nil
1257 "Gnus 5.10 (Emacs 22.1)") 1275 "Gnus 5.10 (Emacs 22.1)")
1258 1276
@@ -1725,9 +1743,10 @@ Initialized from `text-mode-syntax-table.")
1725(put 'gnus-with-article-headers 'edebug-form-spec '(body)) 1743(put 'gnus-with-article-headers 'edebug-form-spec '(body))
1726 1744
1727(defmacro gnus-with-article-buffer (&rest forms) 1745(defmacro gnus-with-article-buffer (&rest forms)
1728 `(with-current-buffer gnus-article-buffer 1746 `(when (buffer-live-p gnus-article-buffer)
1729 (let ((inhibit-read-only t)) 1747 (with-current-buffer gnus-article-buffer
1730 ,@forms))) 1748 (let ((inhibit-read-only t))
1749 ,@forms))))
1731 1750
1732(put 'gnus-with-article-buffer 'lisp-indent-function 0) 1751(put 'gnus-with-article-buffer 'lisp-indent-function 0)
1733(put 'gnus-with-article-buffer 'edebug-form-spec '(body)) 1752(put 'gnus-with-article-buffer 'edebug-form-spec '(body))
@@ -3055,10 +3074,11 @@ images if any to the browser, and deletes them when exiting the group
3055The `gnus-list-identifiers' variable specifies what to do." 3074The `gnus-list-identifiers' variable specifies what to do."
3056 (interactive) 3075 (interactive)
3057 (let ((inhibit-point-motion-hooks t) 3076 (let ((inhibit-point-motion-hooks t)
3058 (regexp (if (consp gnus-list-identifiers) 3077 (regexp (or (gnus-parameter-list-identifier gnus-newsgroup-name)
3059 (mapconcat 'identity gnus-list-identifiers " *\\|") 3078 (if (consp gnus-list-identifiers)
3060 gnus-list-identifiers)) 3079 (mapconcat 'identity gnus-list-identifiers " *\\|")
3061 (inhibit-read-only t)) 3080 gnus-list-identifiers)))
3081 (inhibit-read-only t))
3062 (when regexp 3082 (when regexp
3063 (save-excursion 3083 (save-excursion
3064 (save-restriction 3084 (save-restriction
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index 2a45b9363f4..419346b7191 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -140,7 +140,7 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
140 ;; (func number nil) 140 ;; (func number nil)
141 ;; Call every `time' 141 ;; Call every `time'
142 ((and (numberp time) (null idle)) 142 ((and (numberp time) (null idle))
143 (run-with-timer t time 'gnus-demon-run-callback func))))) 143 (run-with-timer time time 'gnus-demon-run-callback func)))))
144 (when timer 144 (when timer
145 (add-to-list 'gnus-demon-timers timer))))) 145 (add-to-list 'gnus-demon-timers timer)))))
146 146
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index 7208889a163..98b1f3bd18c 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -80,9 +80,8 @@ If nil, default to `gravatar-size'."
80 "Insert GRAVATAR for ADDRESS in HEADER in current article buffer. 80 "Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
81Set image category to CATEGORY." 81Set image category to CATEGORY."
82 (unless (eq gravatar 'error) 82 (unless (eq gravatar 'error)
83 (with-current-buffer gnus-article-buffer 83 (gnus-with-article-buffer
84 (let ((mark (point-marker)) 84 (let ((mark (point-marker))
85 (inhibit-read-only t)
86 (inhibit-point-motion-hooks t) 85 (inhibit-point-motion-hooks t)
87 (case-fold-search t)) 86 (case-fold-search t))
88 (save-restriction 87 (save-restriction
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 30cd1275e7b..832cd758b61 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -4400,6 +4400,21 @@ and the second element is the address."
4400(defun gnus-group-set-params-info (group params) 4400(defun gnus-group-set-params-info (group params)
4401 (gnus-group-set-info params group 'params)) 4401 (gnus-group-set-info params group 'params))
4402 4402
4403;; Ad-hoc function for inserting data from a different newsrc.eld
4404;; file. Use with caution, if at all.
4405(defun gnus-import-other-newsrc-file (file)
4406 (with-temp-buffer
4407 (insert-file file)
4408 (let (form)
4409 (while (ignore-errors
4410 (setq form (read (current-buffer))))
4411 (when (and (consp form)
4412 (eq (cadr form) 'gnus-newsrc-alist))
4413 (let ((infos (cadr (nth 2 form))))
4414 (dolist (info infos)
4415 (when (gnus-get-info (car info))
4416 (gnus-set-info (car info) info)))))))))
4417
4403(defun gnus-add-marked-articles (group type articles &optional info force) 4418(defun gnus-add-marked-articles (group type articles &optional info force)
4404 ;; Add ARTICLES of TYPE to the info of GROUP. 4419 ;; Add ARTICLES of TYPE to the info of GROUP.
4405 ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't 4420 ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't
diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el
index 794d1642cdd..ce5a837eaef 100644
--- a/lisp/gnus/gnus-range.el
+++ b/lisp/gnus/gnus-range.el
@@ -116,10 +116,10 @@ Both ranges must be in ascending order."
116 ;; All done with range2 116 ;; All done with range2
117 (setq r nil)) 117 (setq r nil))
118 ((< max1 min2) 118 ((< max1 min2)
119 ;; No overlap: range1 preceeds range2 119 ;; No overlap: range1 precedes range2
120 (pop r)) 120 (pop r))
121 ((< max2 min1) 121 ((< max2 min1)
122 ;; No overlap: range2 preceeds range1 122 ;; No overlap: range2 precedes range1
123 (pop range2)) 123 (pop range2))
124 ((and (<= min2 min1) (<= max1 max2)) 124 ((and (<= min2 min1) (<= max1 max2))
125 ;; Complete overlap: range1 removed 125 ;; Complete overlap: range1 removed
@@ -232,10 +232,10 @@ RANGE1 and RANGE2 have to be sorted over <."
232 (setq range1 (cdr range1) 232 (setq range1 (cdr range1)
233 range2 (cdr range2)) 233 range2 (cdr range2))
234 (while (and min1 min2) 234 (while (and min1 min2)
235 (cond ((< max1 min2) ; range1 preceeds range2 235 (cond ((< max1 min2) ; range1 precedes range2
236 (setq range1 (cdr range1) 236 (setq range1 (cdr range1)
237 min1 nil)) 237 min1 nil))
238 ((< max2 min1) ; range2 preceeds range1 238 ((< max2 min1) ; range2 precedes range1
239 (setq range2 (cdr range2) 239 (setq range2 (cdr range2)
240 min2 nil)) 240 min2 nil))
241 (t ; some sort of overlap is occurring 241 (t ; some sort of overlap is occurring
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index dea6aabc75b..ebfa53f841e 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1513,7 +1513,7 @@ If SCAN, request a scan of that group as well."
1513 (num 0)) 1513 (num 0))
1514 1514
1515 ;; These checks are present in gnus-activate-group but skipped 1515 ;; These checks are present in gnus-activate-group but skipped
1516 ;; due to setting dont-check in the preceeding call. 1516 ;; due to setting dont-check in the preceding call.
1517 1517
1518 ;; If a cache is present, we may have to alter the active info. 1518 ;; If a cache is present, we may have to alter the active info.
1519 (when (and gnus-use-cache info) 1519 (when (and gnus-use-cache info)
@@ -1690,6 +1690,16 @@ If SCAN, request a scan of that group as well."
1690 method)) 1690 method))
1691 (setcar elem method)) 1691 (setcar elem method))
1692 (push (list method 'ok) methods))))) 1692 (push (list method 'ok) methods)))))
1693
1694 ;; If we have primary/secondary select methods, but no groups from
1695 ;; them, we still want to issue a retrieval request from them.
1696 (dolist (method (cons gnus-select-method
1697 gnus-secondary-select-methods))
1698 (when (and (not (assoc method type-cache))
1699 (gnus-check-backend-function 'request-list (car method)))
1700 (with-current-buffer nntp-server-buffer
1701 (gnus-read-active-file-1 method nil))))
1702
1693 ;; Start early async retrieval of data. 1703 ;; Start early async retrieval of data.
1694 (dolist (elem type-cache) 1704 (dolist (elem type-cache)
1695 (destructuring-bind (method method-type infos dummy) elem 1705 (destructuring-bind (method method-type infos dummy) elem
@@ -1712,15 +1722,6 @@ If SCAN, request a scan of that group as well."
1712 (setcar (nthcdr 3 elem) 1722 (setcar (nthcdr 3 elem)
1713 (gnus-retrieve-group-data-early method infos))))))) 1723 (gnus-retrieve-group-data-early method infos)))))))
1714 1724
1715 ;; If we have primary/secondary select methods, but no groups from
1716 ;; them, we still want to issue a retrieval request from them.
1717 (dolist (method (cons gnus-select-method
1718 gnus-secondary-select-methods))
1719 (when (and (not (assoc method type-cache))
1720 (gnus-check-backend-function 'request-list (car method)))
1721 (with-current-buffer nntp-server-buffer
1722 (gnus-read-active-file-1 method nil))))
1723
1724 ;; Do the rest of the retrieval. 1725 ;; Do the rest of the retrieval.
1725 (dolist (elem type-cache) 1726 (dolist (elem type-cache)
1726 (destructuring-bind (method method-type infos early-data) elem 1727 (destructuring-bind (method method-type infos early-data) elem
@@ -1886,7 +1887,7 @@ If SCAN, request a scan of that group as well."
1886 ;; OK - I'm done 1887 ;; OK - I'm done
1887 (setq articles nil)) 1888 (setq articles nil))
1888 ((< range article) 1889 ((< range article)
1889 ;; this range preceeds the article. Leave the range unmodified. 1890 ;; this range precedes the article. Leave the range unmodified.
1890 (pop ranges) 1891 (pop ranges)
1891 ranges) 1892 ranges)
1892 ((= range article) 1893 ((= range article)
@@ -1909,11 +1910,11 @@ If SCAN, request a scan of that group as well."
1909 (setcar ranges min) 1910 (setcar ranges min)
1910 ranges) 1911 ranges)
1911 ((< max article) 1912 ((< max article)
1912 ;; this range preceeds the article. Leave the range unmodified. 1913 ;; this range precedes the article. Leave the range unmodified.
1913 (pop ranges) 1914 (pop ranges)
1914 ranges) 1915 ranges)
1915 ((< article min) 1916 ((< article min)
1916 ;; this article preceeds the range. Return null to move to the 1917 ;; this article precedes the range. Return null to move to the
1917 ;; next article 1918 ;; next article
1918 nil) 1919 nil)
1919 (t 1920 (t
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 42acb65ff9f..a5c727925f6 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -3114,6 +3114,10 @@ Return nil if not defined."
3114(defmacro gnus-get-info (group) 3114(defmacro gnus-get-info (group)
3115 `(nth 2 (gnus-gethash ,group gnus-newsrc-hashtb))) 3115 `(nth 2 (gnus-gethash ,group gnus-newsrc-hashtb)))
3116 3116
3117(defun gnus-set-info (group info)
3118 (setcar (nthcdr 2 (gnus-gethash group gnus-newsrc-hashtb))
3119 info))
3120
3117;;; Load the compatibility functions. 3121;;; Load the compatibility functions.
3118 3122
3119(require 'gnus-ems) 3123(require 'gnus-ems)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index b2733407836..c579261e356 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -62,8 +62,9 @@ it will default to `imap'.")
62 62
63(defvoo nnimap-stream 'undecided 63(defvoo nnimap-stream 'undecided
64 "How nnimap will talk to the IMAP server. 64 "How nnimap will talk to the IMAP server.
65Values are `ssl', `network', `starttls' or `shell'. 65Values are `ssl', `network', `network-only, `starttls' or
66The default is to try `ssl' first, and then `network'.") 66`shell'. The default is to try `ssl' first, and then
67`network'.")
67 68
68(defvoo nnimap-shell-program (if (boundp 'imap-shell-program) 69(defvoo nnimap-shell-program (if (boundp 'imap-shell-program)
69 (if (listp imap-shell-program) 70 (if (listp imap-shell-program)
@@ -337,7 +338,7 @@ textual parts.")
337 (eq nnimap-stream 'starttls)) 338 (eq nnimap-stream 'starttls))
338 (nnheader-message 7 "Opening connection to %s..." 339 (nnheader-message 7 "Opening connection to %s..."
339 nnimap-address) 340 nnimap-address)
340 '("143" "imap")) 341 '("imap" "143"))
341 ((eq nnimap-stream 'shell) 342 ((eq nnimap-stream 'shell)
342 (nnheader-message 7 "Opening connection to %s via shell..." 343 (nnheader-message 7 "Opening connection to %s via shell..."
343 nnimap-address) 344 nnimap-address)
@@ -345,16 +346,16 @@ textual parts.")
345 ((memq nnimap-stream '(ssl tls)) 346 ((memq nnimap-stream '(ssl tls))
346 (nnheader-message 7 "Opening connection to %s via tls..." 347 (nnheader-message 7 "Opening connection to %s via tls..."
347 nnimap-address) 348 nnimap-address)
348 '("143" "993" "imap" "imaps")) 349 '("imaps" "imap" "993" "143"))
349 (t 350 (t
350 (error "Unknown stream type: %s" nnimap-stream)))) 351 (error "Unknown stream type: %s" nnimap-stream))))
351 (proto-stream-always-use-starttls t) 352 (proto-stream-always-use-starttls t)
352 login-result credentials) 353 login-result credentials)
353 (when nnimap-server-port 354 (when nnimap-server-port
354 (setq ports (append ports (list nnimap-server-port)))) 355 (push nnimap-server-port ports))
355 (destructuring-bind (stream greeting capabilities stream-type) 356 (destructuring-bind (stream greeting capabilities stream-type)
356 (open-protocol-stream 357 (open-protocol-stream
357 "*nnimap*" (current-buffer) nnimap-address (car (last ports)) 358 "*nnimap*" (current-buffer) nnimap-address (car ports)
358 :type nnimap-stream 359 :type nnimap-stream
359 :shell-command nnimap-shell-program 360 :shell-command nnimap-shell-program
360 :capability-command "1 CAPABILITY\r\n" 361 :capability-command "1 CAPABILITY\r\n"
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 09ecfb8f6b7..66a6365cb3b 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -1672,7 +1672,7 @@ password contained in '~/.nntp-authinfo'."
1672 1672
1673 ;; Some nntp servers seem to have an extension to the XOVER 1673 ;; Some nntp servers seem to have an extension to the XOVER
1674 ;; extension. On these servers, requesting an article range 1674 ;; extension. On these servers, requesting an article range
1675 ;; preceeding the active range does not return an error as 1675 ;; preceding the active range does not return an error as
1676 ;; specified in the RFC. What we instead get is the NOV entry 1676 ;; specified in the RFC. What we instead get is the NOV entry
1677 ;; for the first available article. Obviously, a client can 1677 ;; for the first available article. Obviously, a client can
1678 ;; use that entry to avoid making unnecessary requests. The 1678 ;; use that entry to avoid making unnecessary requests. The
diff --git a/lisp/gnus/sieve.el b/lisp/gnus/sieve.el
index 31b2665a644..2111d34eac5 100644
--- a/lisp/gnus/sieve.el
+++ b/lisp/gnus/sieve.el
@@ -98,39 +98,40 @@ require \"fileinto\";
98 98
99(defvar sieve-manage-buffer nil) 99(defvar sieve-manage-buffer nil)
100(defvar sieve-buffer-header-end nil) 100(defvar sieve-buffer-header-end nil)
101(defvar sieve-buffer-script-name nil
102 "The real script name of the buffer.")
103(make-local-variable 'sieve-buffer-script-name)
101 104
102;; Sieve-manage mode: 105;; Sieve-manage mode:
103 106
104(defvar sieve-manage-mode-map nil 107(defvar sieve-manage-mode-map
108 (let ((map (make-sparse-keymap)))
109 ;; various
110 (define-key map "?" 'sieve-help)
111 (define-key map "h" 'sieve-help)
112 (define-key map "q" 'sieve-bury-buffer)
113 ;; activating
114 (define-key map "m" 'sieve-activate)
115 (define-key map "u" 'sieve-deactivate)
116 (define-key map "\M-\C-?" 'sieve-deactivate-all)
117 ;; navigation keys
118 (define-key map "\C-p" 'sieve-prev-line)
119 (define-key map [up] 'sieve-prev-line)
120 (define-key map "\C-n" 'sieve-next-line)
121 (define-key map [down] 'sieve-next-line)
122 (define-key map " " 'sieve-next-line)
123 (define-key map "n" 'sieve-next-line)
124 (define-key map "p" 'sieve-prev-line)
125 (define-key map "\C-m" 'sieve-edit-script)
126 (define-key map "f" 'sieve-edit-script)
127 (define-key map "o" 'sieve-edit-script-other-window)
128 (define-key map "r" 'sieve-remove)
129 (define-key map "q" 'sieve-manage-quit)
130 (define-key map [(down-mouse-2)] 'sieve-edit-script)
131 (define-key map [(down-mouse-3)] 'sieve-manage-mode-menu)
132 map)
105 "Keymap for `sieve-manage-mode'.") 133 "Keymap for `sieve-manage-mode'.")
106 134
107(if sieve-manage-mode-map
108 ()
109 (setq sieve-manage-mode-map (make-sparse-keymap))
110 (suppress-keymap sieve-manage-mode-map)
111 ;; various
112 (define-key sieve-manage-mode-map "?" 'sieve-help)
113 (define-key sieve-manage-mode-map "h" 'sieve-help)
114 (define-key sieve-manage-mode-map "q" 'sieve-bury-buffer)
115 ;; activating
116 (define-key sieve-manage-mode-map "m" 'sieve-activate)
117 (define-key sieve-manage-mode-map "u" 'sieve-deactivate)
118 (define-key sieve-manage-mode-map "\M-\C-?" 'sieve-deactivate-all)
119 ;; navigation keys
120 (define-key sieve-manage-mode-map "\C-p" 'sieve-prev-line)
121 (define-key sieve-manage-mode-map [up] 'sieve-prev-line)
122 (define-key sieve-manage-mode-map "\C-n" 'sieve-next-line)
123 (define-key sieve-manage-mode-map [down] 'sieve-next-line)
124 (define-key sieve-manage-mode-map " " 'sieve-next-line)
125 (define-key sieve-manage-mode-map "n" 'sieve-next-line)
126 (define-key sieve-manage-mode-map "p" 'sieve-prev-line)
127 (define-key sieve-manage-mode-map "\C-m" 'sieve-edit-script)
128 (define-key sieve-manage-mode-map "f" 'sieve-edit-script)
129 (define-key sieve-manage-mode-map "o" 'sieve-edit-script-other-window)
130 (define-key sieve-manage-mode-map "r" 'sieve-remove)
131 (define-key sieve-manage-mode-map [(down-mouse-2)] 'sieve-edit-script)
132 (define-key sieve-manage-mode-map [(down-mouse-3)] 'sieve-manage-mode-menu))
133
134(easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map 135(easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map
135 "Sieve Menu." 136 "Sieve Menu."
136 '("Manage Sieve" 137 '("Manage Sieve"
@@ -138,21 +139,21 @@ require \"fileinto\";
138 ["Activate script" sieve-activate t] 139 ["Activate script" sieve-activate t]
139 ["Deactivate script" sieve-deactivate t])) 140 ["Deactivate script" sieve-deactivate t]))
140 141
141(define-derived-mode sieve-manage-mode fundamental-mode "SIEVE" 142(define-derived-mode sieve-manage-mode fundamental-mode "Sieve-manage"
142 "Mode used for sieve script management." 143 "Mode used for sieve script management."
143 (setq mode-name "SIEVE")
144 (buffer-disable-undo (current-buffer)) 144 (buffer-disable-undo (current-buffer))
145 (setq truncate-lines t) 145 (setq truncate-lines t)
146 (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map)) 146 (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map))
147 147
148(put 'sieve-manage-mode 'mode-class 'special) 148(put 'sieve-manage-mode 'mode-class 'special)
149 149
150;; This is necessary to allow correct handling of \\[cvs-mode-diff-map]
151;; in substitute-command-keys.
152;(fset 'sieve-manage-mode-map sieve-manage-mode-map)
153
154;; Commands used in sieve-manage mode: 150;; Commands used in sieve-manage mode:
155 151
152(defun sieve-manage-quit ()
153 "Quit."
154 (interactive)
155 (kill-buffer (current-buffer)))
156
156(defun sieve-activate (&optional pos) 157(defun sieve-activate (&optional pos)
157 (interactive "d") 158 (interactive "d")
158 (let ((name (sieve-script-at-point)) err) 159 (let ((name (sieve-script-at-point)) err)
@@ -204,7 +205,10 @@ require \"fileinto\";
204 (switch-to-buffer (get-buffer-create "template.siv")) 205 (switch-to-buffer (get-buffer-create "template.siv"))
205 (insert sieve-template)) 206 (insert sieve-template))
206 (sieve-mode) 207 (sieve-mode)
207 (message "Press C-c C-l to upload script to server."))) 208 (setq sieve-buffer-script-name name)
209 (message
210 (substitute-command-keys
211 "Press \\[sieve-upload] to upload script to server."))))
208 212
209(defmacro sieve-change-region (&rest body) 213(defmacro sieve-change-region (&rest body)
210 "Turns off sieve-region before executing BODY, then re-enables it after. 214 "Turns off sieve-region before executing BODY, then re-enables it after.
@@ -337,13 +341,18 @@ Server : " server ":" (or port "2000") "
337 ;; get list of script names and print them 341 ;; get list of script names and print them
338 (let ((scripts (sieve-manage-listscripts sieve-manage-buffer))) 342 (let ((scripts (sieve-manage-listscripts sieve-manage-buffer)))
339 (if (null scripts) 343 (if (null scripts)
340 (insert (format (concat "No scripts on server, press RET on %s to " 344 (insert
341 "create a new script.\n") sieve-new-script)) 345 (substitute-command-keys
342 (insert (format (concat "%d script%s on server, press RET on a script " 346 (format
343 "name edits it, or\npress RET on %s to create " 347 "No scripts on server, press \\[sieve-edit-script] on %s to create a new script.\n"
344 "a new script.\n") (length scripts) 348 sieve-new-script)))
345 (if (eq (length scripts) 1) "" "s") 349 (insert
346 sieve-new-script))) 350 (substitute-command-keys
351 (format (concat "%d script%s on server, press \\[sieve-edit-script] on a script "
352 "name edits it, or\npress \\[sieve-edit-script] on %s to create "
353 "a new script.\n") (length scripts)
354 (if (eq (length scripts) 1) "" "s")
355 sieve-new-script))))
347 (save-excursion 356 (save-excursion
348 (sieve-insert-scripts (list sieve-new-script)) 357 (sieve-insert-scripts (list sieve-new-script))
349 (sieve-insert-scripts scripts))) 358 (sieve-insert-scripts scripts)))
@@ -363,15 +372,15 @@ Server : " server ":" (or port "2000") "
363;;;###autoload 372;;;###autoload
364(defun sieve-upload (&optional name) 373(defun sieve-upload (&optional name)
365 (interactive) 374 (interactive)
366 (unless name
367 (setq name (buffer-name)))
368 (when (or (get-buffer sieve-buffer) (call-interactively 'sieve-manage)) 375 (when (or (get-buffer sieve-buffer) (call-interactively 'sieve-manage))
369 (let ((script (buffer-string)) err) 376 (let ((script (buffer-string)) err)
370 (with-current-buffer (get-buffer sieve-buffer) 377 (with-current-buffer (get-buffer sieve-buffer)
371 (setq err (sieve-manage-putscript name script sieve-manage-buffer)) 378 (setq err (sieve-manage-putscript
379 (or name sieve-buffer-script-name (buffer-name))
380 script sieve-manage-buffer))
372 (if (sieve-manage-ok-p err) 381 (if (sieve-manage-ok-p err)
373 (message (concat 382 (message (substitute-command-keys
374 "Sieve upload done. Use `C-c RET' to manage scripts.")) 383 "Sieve upload done. Use \\[sieve-manage] to manage scripts."))
375 (message "Sieve upload failed: %s" (nth 2 err))))))) 384 (message "Sieve upload failed: %s" (nth 2 err)))))))
376 385
377;;;###autoload 386;;;###autoload
diff --git a/lisp/ido.el b/lisp/ido.el
index d1f2cea83f8..2e67e367a8f 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1472,8 +1472,8 @@ Removes badly formatted data and ignored directories."
1472 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)) 1472 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
1473 1473
1474(define-minor-mode ido-everywhere 1474(define-minor-mode ido-everywhere
1475 "Toggle using ido speed-ups everywhere file and directory names are read. 1475 "Toggle using ido-mode everywhere file and directory names are read.
1476With ARG, turn ido speed-up on if arg is positive, off otherwise." 1476With ARG, turn ido-mode on if arg is positive, off otherwise."
1477 :global t 1477 :global t
1478 :group 'ido 1478 :group 'ido
1479 (when (get 'ido-everywhere 'file) 1479 (when (get 'ido-everywhere 'file)
@@ -1494,8 +1494,8 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
1494 1494
1495;;;###autoload 1495;;;###autoload
1496(defun ido-mode (&optional arg) 1496(defun ido-mode (&optional arg)
1497 "Toggle ido speed-ups on or off. 1497 "Toggle ido mode on or off.
1498With ARG, turn ido speed-up on if arg is positive, off otherwise. 1498With ARG, turn ido-mode on if arg is positive, off otherwise.
1499Turning on ido-mode will remap (via a minor-mode keymap) the default 1499Turning on ido-mode will remap (via a minor-mode keymap) the default
1500keybindings for the `find-file' and `switch-to-buffer' families of 1500keybindings for the `find-file' and `switch-to-buffer' families of
1501commands to the ido versions of these functions. 1501commands to the ido versions of these functions.
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 8672fca3a85..5f4d3ea849e 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -366,7 +366,9 @@ This also sets the following values:
366 (coding-system-get coding-system 'ascii-compatible-p))) 366 (coding-system-get coding-system 'ascii-compatible-p)))
367 (setq default-file-name-coding-system coding-system))) 367 (setq default-file-name-coding-system coding-system)))
368 (setq default-terminal-coding-system coding-system) 368 (setq default-terminal-coding-system coding-system)
369 (setq default-keyboard-coding-system coding-system) 369 ;; Prevent default-terminal-coding-system from converting ^M to ^J.
370 (setq default-keyboard-coding-system
371 (coding-system-change-eol-conversion coding-system 'unix))
370 ;; Preserve eol-type from existing default-process-coding-systems. 372 ;; Preserve eol-type from existing default-process-coding-systems.
371 ;; On non-unix-like systems in particular, these may have been set 373 ;; On non-unix-like systems in particular, these may have been set
372 ;; carefully by the user, or by the startup code, to deal with the 374 ;; carefully by the user, or by the startup code, to deal with the
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 7fe5383d865..9a892f493d7 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -503,7 +503,7 @@ FIELD is the plain text name of a field in the message, such as
503\"subject\" or \"from\". A FIELD of \"to\" will automatically include 503\"subject\" or \"from\". A FIELD of \"to\" will automatically include
504all text from the \"cc\" field as well. 504all text from the \"cc\" field as well.
505 505
506REGEXP is an expression to match in the preceeding specified FIELD. 506REGEXP is an expression to match in the preceding specified FIELD.
507FIELD/REGEXP pairs continue in the list. 507FIELD/REGEXP pairs continue in the list.
508 508
509examples: 509examples:
@@ -4316,7 +4316,7 @@ With prefix argument N moves forward N messages with these labels.
4316 4316
4317;;;*** 4317;;;***
4318 4318
4319;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "04902da045706fb7f2b0915529ed161b") 4319;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "c530622b53038152ca84f2ec9313bd7a")
4320;;; Generated autoloads from rmailmm.el 4320;;; Generated autoloads from rmailmm.el
4321 4321
4322(autoload 'rmail-mime "rmailmm" "\ 4322(autoload 'rmail-mime "rmailmm" "\
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index 7d266ad17d7..58f1e2c6a9e 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -281,6 +281,12 @@ buffer in your bug report.
281 (insert ")\n")) 281 (insert ")\n"))
282 (insert-buffer-substring elbuf))) 282 (insert-buffer-substring elbuf)))
283 283
284 ;; Dump load-path shadows.
285 (insert "\nload-path shadows:\n==================\n")
286 (ignore-errors
287 (mapc (lambda (x) (when (string-match "tramp" x) (insert x "\n")))
288 (split-string (list-load-path-shadows t) "\n")))
289
284 ;; Append buffers only when we are in message mode. 290 ;; Append buffers only when we are in message mode.
285 (when (and 291 (when (and
286 (eq major-mode 'message-mode) 292 (eq major-mode 'message-mode)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 57cc54935dc..b3278dc312d 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -142,7 +142,7 @@
142 (add-to-list 'tramp-methods (cons elt nil))))) 142 (add-to-list 'tramp-methods (cons elt nil)))))
143 143
144(defconst tramp-gvfs-path-tramp (concat dbus-path-emacs "/Tramp") 144(defconst tramp-gvfs-path-tramp (concat dbus-path-emacs "/Tramp")
145 "The preceeding object path for own objects.") 145 "The preceding object path for own objects.")
146 146
147(defconst tramp-gvfs-service-daemon "org.gtk.vfs.Daemon" 147(defconst tramp-gvfs-service-daemon "org.gtk.vfs.Daemon"
148 "The well known name of the GVFS daemon.") 148 "The well known name of the GVFS daemon.")
diff --git a/lisp/obsolete/sym-comp.el b/lisp/obsolete/sym-comp.el
index 6365a1075e0..7e9a460ea14 100644
--- a/lisp/obsolete/sym-comp.el
+++ b/lisp/obsolete/sym-comp.el
@@ -51,7 +51,7 @@ Uses `current-word' with the buffer narrowed to the part before
51point." 51point."
52 (save-restriction 52 (save-restriction
53 ;; Narrow in case point is in the middle of a symbol -- we want 53 ;; Narrow in case point is in the middle of a symbol -- we want
54 ;; just the preceeding part. 54 ;; just the preceding part.
55 (narrow-to-region (point-min) (point)) 55 (narrow-to-region (point-min) (point))
56 (current-word))) 56 (current-word)))
57 57
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 5f0908e11c6..68d957584c6 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,14 @@
12011-02-28 Juanma Barranquero <lekktu@gmail.com>
2
3 * org.el (org-maybe-keyword-time-regexp):
4 * org-icalendar.el (org-icalendar-store-UID):
5 * org-agenda.el (org-agenda-scheduled-leaders)
6 (org-agenda-deadline-leaders, org-agenda-filter-preset):
7 * org-table.el (org-table-current-line-types)
8 (org-table-current-begin-line, org-table-current-begin-pos):
9 (org-table-current-field-formula):
10 Fix typos in docstrings.
11
12011-02-10 Stefan Monnier <monnier@iro.umontreal.ca> 122011-02-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 13
3 * org-remember.el (org-remember-mode-map): 14 * org-remember.el (org-remember-mode-map):
diff --git a/lisp/password-cache.el b/lisp/password-cache.el
index 8738aa65a9f..a7f75a03add 100644
--- a/lisp/password-cache.el
+++ b/lisp/password-cache.el
@@ -76,6 +76,12 @@ regulate cache behavior."
76 key 76 key
77 (symbol-value (intern-soft key password-data)))) 77 (symbol-value (intern-soft key password-data))))
78 78
79(defun password-in-cache-p (key)
80 "Check if KEY is in the cache."
81 (and password-cache
82 key
83 (intern-soft key password-data)))
84
79(defun password-read (prompt &optional key) 85(defun password-read (prompt &optional key)
80 "Read password, for use with KEY, from user, or from cache if wanted. 86 "Read password, for use with KEY, from user, or from cache if wanted.
81KEY indicate the purpose of the password, so the cache can 87KEY indicate the purpose of the password, so the cache can
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 7c634d14e6a..f6d497569ba 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -2769,7 +2769,7 @@ Will not look before LIM."
2769 (goto-char (cperl-beginning-of-property p look-prop)) 2769 (goto-char (cperl-beginning-of-property p look-prop))
2770 (beginning-of-line) 2770 (beginning-of-line)
2771 (setq pre-indent-point (point))))) 2771 (setq pre-indent-point (point)))))
2772 (goto-char pre-indent-point) ; Orig line skipping preceeding pod/etc 2772 (goto-char pre-indent-point) ; Orig line skipping preceding pod/etc
2773 (let* ((case-fold-search nil) 2773 (let* ((case-fold-search nil)
2774 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data))) 2774 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data)))
2775 (start (or (nth 2 parse-data) ; last complete sexp terminated 2775 (start (or (nth 2 parse-data) ; last complete sexp terminated
@@ -2796,8 +2796,8 @@ Will not look before LIM."
2796 (cperl-1+ char-after-pos) 'indentable) 2796 (cperl-1+ char-after-pos) 'indentable)
2797 p (1+ (cperl-beginning-of-property 2797 p (1+ (cperl-beginning-of-property
2798 (point) 'indentable)) 2798 (point) 'indentable))
2799 is-block ; misused for: preceeding line in REx 2799 is-block ; misused for: preceding line in REx
2800 (save-excursion ; Find preceeding line 2800 (save-excursion ; Find preceding line
2801 (cperl-backward-to-noncomment p) 2801 (cperl-backward-to-noncomment p)
2802 (beginning-of-line) 2802 (beginning-of-line)
2803 (if (<= (point) p) 2803 (if (<= (point) p)
@@ -2813,10 +2813,10 @@ Will not look before LIM."
2813 prop (parse-partial-sexp p char-after-pos)) 2813 prop (parse-partial-sexp p char-after-pos))
2814 (cond ((not delim) ; End the REx, ignore is-block 2814 (cond ((not delim) ; End the REx, ignore is-block
2815 (vector 'indentable 'terminator p is-block)) 2815 (vector 'indentable 'terminator p is-block))
2816 (is-block ; Indent w.r.t. preceeding line 2816 (is-block ; Indent w.r.t. preceding line
2817 (vector 'indentable 'cont-line char-after-pos 2817 (vector 'indentable 'cont-line char-after-pos
2818 is-block char-after p)) 2818 is-block char-after p))
2819 (t ; No preceeding line... 2819 (t ; No preceding line...
2820 (vector 'indentable 'first-line p)))) 2820 (vector 'indentable 'first-line p))))
2821 ((get-text-property char-after-pos 'REx-part2) 2821 ((get-text-property char-after-pos 'REx-part2)
2822 (vector 'REx-part2 (point))) 2822 (vector 'REx-part2 (point)))
@@ -2897,7 +2897,7 @@ Will not look before LIM."
2897 (cperl-backward-to-start-of-continued-exp containing-sexp)) 2897 (cperl-backward-to-start-of-continued-exp containing-sexp))
2898 (beginning-of-line) 2898 (beginning-of-line)
2899 (cperl-backward-to-noncomment containing-sexp)) 2899 (cperl-backward-to-noncomment containing-sexp))
2900 ;; Now we get non-label preceeding the indent point 2900 ;; Now we get non-label preceding the indent point
2901 (if (not (or (eq (1- (point)) containing-sexp) 2901 (if (not (or (eq (1- (point)) containing-sexp)
2902 (memq (preceding-char) 2902 (memq (preceding-char)
2903 (append (if is-block " ;{" " ,;{") '(nil))) 2903 (append (if is-block " ;{" " ,;{") '(nil)))
@@ -4835,7 +4835,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
4835;;; Moreover, one takes positive approach (looks for else,grep etc) 4835;;; Moreover, one takes positive approach (looks for else,grep etc)
4836;;; another negative (looks for bless,tr etc) 4836;;; another negative (looks for bless,tr etc)
4837(defun cperl-after-block-p (lim &optional pre-block) 4837(defun cperl-after-block-p (lim &optional pre-block)
4838 "Return true if the preceeding } (if PRE-BLOCK, following {) delimits a block. 4838 "Return true if the preceding } (if PRE-BLOCK, following {) delimits a block.
4839Would not look before LIM. Assumes that LIM is a good place to begin a 4839Would not look before LIM. Assumes that LIM is a good place to begin a
4840statement. The kind of block we treat here is one after which a new 4840statement. The kind of block we treat here is one after which a new
4841statement would start; thus the block in ${func()} does not count." 4841statement would start; thus the block in ${func()} does not count."
@@ -4864,7 +4864,7 @@ statement would start; thus the block in ${func()} does not count."
4864 (progn 4864 (progn
4865 (forward-sexp -1) 4865 (forward-sexp -1)
4866 (looking-at "sub[ \t\n\f#]")))))) 4866 (looking-at "sub[ \t\n\f#]"))))))
4867 ;; What preceeds is not word... XXXX Last statement in sub??? 4867 ;; What precedes is not word... XXXX Last statement in sub???
4868 (cperl-after-expr-p lim)))) 4868 (cperl-after-expr-p lim))))
4869 (error nil)))) 4869 (error nil))))
4870 4870
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 30d9fc21867..5b7e07a5aad 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -428,7 +428,7 @@ path \(the value of !PATH). However, under Windows and MacOS
428variable can be set to specify the paths where IDLWAVE can find PRO 428variable can be set to specify the paths where IDLWAVE can find PRO
429files. The shell will only be asked for a list of paths when this 429files. The shell will only be asked for a list of paths when this
430variable is nil. The value is a list of directories. A directory 430variable is nil. The value is a list of directories. A directory
431preceeded by a `+' will be searched recursively. If you set this 431preceded by a `+' will be searched recursively. If you set this
432variable on a UNIX system, the shell will not be queried. See also 432variable on a UNIX system, the shell will not be queried. See also
433`idlwave-system-directory'." 433`idlwave-system-directory'."
434 :group 'idlwave-routine-info 434 :group 'idlwave-routine-info
@@ -1197,7 +1197,7 @@ As a user, you should not set this to t.")
1197 (2 font-lock-function-name-face))) 1197 (2 font-lock-function-name-face)))
1198 1198
1199 ;; Keyword parameters, like /xlog or ,xrange=[] 1199 ;; Keyword parameters, like /xlog or ,xrange=[]
1200 ;; This is anchored to the comma preceeding the keyword. 1200 ;; This is anchored to the comma preceding the keyword.
1201 ;; Treats continuation lines, works only during whole buffer 1201 ;; Treats continuation lines, works only during whole buffer
1202 ;; fontification. Slow, use it only in fancy fontification. 1202 ;; fontification. Slow, use it only in fancy fontification.
1203 (keyword-parameters 1203 (keyword-parameters
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index cb1d3c24a94..75b706b74ec 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -1775,7 +1775,7 @@ NOTE: Activate the new setting by restarting Emacs.
1775 1775
1776(defcustom vhdl-intelligent-tab t 1776(defcustom vhdl-intelligent-tab t
1777 "*Non-nil means `TAB' does indentation, word completion and tab insertion. 1777 "*Non-nil means `TAB' does indentation, word completion and tab insertion.
1778That is, if preceeding character is part of a word then complete word, 1778That is, if preceding character is part of a word then complete word,
1779else if not at beginning of line then insert tab, 1779else if not at beginning of line then insert tab,
1780else if last command was a `TAB' or `RET' then dedent one step, 1780else if last command was a `TAB' or `RET' then dedent one step,
1781else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab'). 1781else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab').
@@ -6946,7 +6946,7 @@ only-lines."
6946;; Indentation commands 6946;; Indentation commands
6947 6947
6948(defun vhdl-electric-tab (&optional prefix-arg) 6948(defun vhdl-electric-tab (&optional prefix-arg)
6949 "If preceeding character is part of a word or a paren then hippie-expand, 6949 "If preceding character is part of a word or a paren then hippie-expand,
6950else if right of non whitespace on line then insert tab, 6950else if right of non whitespace on line then insert tab,
6951else if last command was a tab or return then dedent one step or if a comment 6951else if last command was a tab or return then dedent one step or if a comment
6952toggle between normal indent and inline comment indent, 6952toggle between normal indent and inline comment indent,
@@ -10396,7 +10396,7 @@ with double-quotes is to be inserted. DEFAULT specifies a default string."
10396 (if vhdl-upper-case-keywords (upcase-word num) (downcase-word num))) 10396 (if vhdl-upper-case-keywords (upcase-word num) (downcase-word num)))
10397 10397
10398(defun vhdl-minibuffer-tab (&optional prefix-arg) 10398(defun vhdl-minibuffer-tab (&optional prefix-arg)
10399 "If preceeding character is part of a word or a paren then hippie-expand, 10399 "If preceding character is part of a word or a paren then hippie-expand,
10400else insert tab (used for word completion in VHDL minibuffer)." 10400else insert tab (used for word completion in VHDL minibuffer)."
10401 (interactive "P") 10401 (interactive "P")
10402 (cond 10402 (cond
@@ -13056,7 +13056,7 @@ hierarchy otherwise.")
13056;; Scan functions 13056;; Scan functions
13057 13057
13058(defun vhdl-scan-context-clause () 13058(defun vhdl-scan-context-clause ()
13059 "Scan the context clause that preceeds a design unit." 13059 "Scan the context clause that precedes a design unit."
13060 (let (lib-alist) 13060 (let (lib-alist)
13061 (save-excursion 13061 (save-excursion
13062 (when (re-search-backward "^[ \t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t) 13062 (when (re-search-backward "^[ \t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t)
diff --git a/lisp/replace.el b/lisp/replace.el
index 0f8adea2aca..928c3170c65 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1531,7 +1531,7 @@ N (match-string N) (where N is a string of digits)
1531#& (string-to-number (match-string 0)) 1531#& (string-to-number (match-string 0))
1532# replace-count 1532# replace-count
1533 1533
1534Note that these symbols must be preceeded by a backslash in order to 1534Note that these symbols must be preceded by a backslash in order to
1535type them using Lisp syntax." 1535type them using Lisp syntax."
1536 (while (consp n) 1536 (while (consp n)
1537 (cond 1537 (cond
diff --git a/lisp/term/screen.el b/lisp/term/screen.el
new file mode 100644
index 00000000000..4931a422e09
--- /dev/null
+++ b/lisp/term/screen.el
@@ -0,0 +1,11 @@
1;; -*- no-byte-compile: t -*-
2;; Treat a screen terminal similar to an xterm.
3(load "term/xterm")
4
5(defun terminal-init-screen ()
6 "Terminal initialization function for screen."
7 ;; Use the xterm color initialization code.
8 (xterm-register-default-colors)
9 (tty-set-up-initial-frame-faces))
10
11;; screen.el ends here
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 70f11cf66dc..a0892b5ebba 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -43,7 +43,7 @@ only considered as a candidate to match `paragraph-start' or
43 43
44Prefix argument says to turn mode on if positive, off if negative. 44Prefix argument says to turn mode on if positive, off if negative.
45When the mode is turned on, if there are newlines in the buffer but no hard 45When the mode is turned on, if there are newlines in the buffer but no hard
46newlines, ask the user whether to mark as hard any newlines preceeding a 46newlines, ask the user whether to mark as hard any newlines preceding a
47`paragraph-start' line. From a program, second arg INSERT specifies whether 47`paragraph-start' line. From a program, second arg INSERT specifies whether
48to do this; it can be `never' to change nothing, t or `always' to force 48to do this; it can be `never' to change nothing, t or `always' to force
49marking, `guess' to try to do the right thing with no questions, nil 49marking, `guess' to try to do the right thing with no questions, nil