diff options
| author | Paul Eggert | 2011-03-01 17:52:03 -0800 |
|---|---|---|
| committer | Paul Eggert | 2011-03-01 17:52:03 -0800 |
| commit | ba46f4d85a6938273f52a8cdf7e09d9afee61d7f (patch) | |
| tree | 606ec46b703532d463ccddf287f0053430eb1f4a /lisp | |
| parent | d9d0d182da35312ed0d7a9859b9c6a03994d86d8 (diff) | |
| parent | 0dc3e4109e0c41bbf5fdcae0ff1156162719693e (diff) | |
| download | emacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.tar.gz emacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.zip | |
Merge from mainline.
Diffstat (limited to 'lisp')
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 @@ | |||
| 1 | 2011-03-01 Juanma Barranquero <lekktu@gmail.com> | ||
| 2 | |||
| 3 | * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring. | ||
| 4 | |||
| 5 | 2011-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 | |||
| 10 | 2011-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 | |||
| 15 | 2011-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 | |||
| 20 | 2011-03-01 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 21 | |||
| 22 | * dired.el (dired-safe-switches-p): New function. | ||
| 23 | |||
| 24 | 2011-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 | |||
| 31 | 2011-02-28 Christoph Scholtes <cschol2112@googlemail.com> | ||
| 32 | |||
| 33 | * ido.el (ido-everywhere): Doc fix. | ||
| 34 | (ido-mode): Doc fix. | ||
| 35 | |||
| 36 | 2011-02-28 Glenn Morris <rgm@gnu.org> | ||
| 37 | |||
| 38 | * dired-x.el (dired-guess-shell-alist-default): Use \\', not $. | ||
| 39 | |||
| 40 | 2011-02-28 Michael Albinus <michael.albinus@gmx.de> | ||
| 41 | |||
| 42 | * net/tramp-cmds.el (tramp-append-tramp-buffers): Dump load-path | ||
| 43 | shadows. | ||
| 44 | |||
| 45 | 2011-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 | |||
| 49 | 2011-02-28 Juanma Barranquero <lekktu@gmail.com> | ||
| 50 | |||
| 51 | * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1): | ||
| 52 | Fix typos in docstrings. | ||
| 53 | |||
| 54 | 2011-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 | |||
| 59 | 2011-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 | |||
| 65 | 2011-02-27 Chong Yidong <cyd@stupidchicken.com> | ||
| 66 | |||
| 67 | * facemenu.el (list-colors-display): Use with-help-window (Bug#8048). | ||
| 68 | |||
| 69 | 2011-02-27 Prestoo Ten <prestooten@gmail.com> (tiny change) | ||
| 70 | |||
| 71 | * term/screen.el: New file (Bug#2650). | ||
| 72 | |||
| 73 | 2011-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 | |||
| 83 | 2011-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 | |||
| 94 | 2011-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 | |||
| 100 | 2011-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 | |||
| 105 | 2011-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 | |||
| 1 | 2011-02-24 Glenn Morris <rgm@gnu.org> | 115 | 2011-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 | ||
| 2665 | 2010-12-12 Alan Mackenzie <acm@muc.de> | 2776 | 2010-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 | ||
| 4621 | 2010-10-24 Michael McNamara <mac@mail.brushroad.com> | 4731 | 2010-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 | ||
| 4655 | 2010-10-24 Wilson Snyder <wsnyder@wsnyder.org> | 4765 | 2010-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 | ||
| 7302 | 2010-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 | |||
| 7307 | 2010-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 | |||
| 7312 | 2010-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 | |||
| 7317 | 2010-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 | |||
| 7332 | 2010-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 | |||
| 7339 | 2010-08-26 Karel Klíč <kklic@redhat.com> | ||
| 7340 | |||
| 7341 | * net/tramp.el (tramp-file-name-for-operation): | ||
| 7342 | Add file-selinux-context. | ||
| 7343 | |||
| 7344 | 2010-08-26 Łukasz Stelmach <lukasz.stelmach@iem.pw.edu.pl> (tiny change) | 7412 | 2010-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 | |||
| 10705 | 2006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de> | 10702 | 2006-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 | ||
| 11683 | 2006-03-14 Ken Manheimer <ken.manheimer@gmail.com> | 11680 | 2006-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 | ||
| 6061 | 1992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) | 6061 | 1992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) |
| 6062 | 6062 | ||
| @@ -6070,7 +6070,7 @@ | |||
| 6070 | 6070 | ||
| 6071 | 1992-06-12 Jim Blandy (jimb@pogo.cs.oberlin.edu) | 6071 | 1992-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 | ||
| 4247 | With an argument greater than one, shift-in the item but not its | 4247 | With an argument greater than one, shift-in the item but not its |
| 4248 | offspring, making the item into a sibling of its former children, | 4248 | offspring, making the item into a sibling of its former children, |
| 4249 | and a child of sibling that formerly preceeded it. | 4249 | and a child of sibling that formerly preceded it. |
| 4250 | 4250 | ||
| 4251 | You are not allowed to shift the first offspring of a topic | 4251 | You are not allowed to shift the first offspring of a topic |
| 4252 | inwards, because that would yield a \"containment | 4252 | inwards, 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 | |||
| 1061 | calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help | 1061 | calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help |
| 1062 | calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help | 1062 | calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help |
| 1063 | calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help | 1063 | calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help |
| 1064 | calc-t-prefix-help calc-u-prefix-help calc-ul-prefix-help | 1064 | calc-t-prefix-help calc-u-prefix-help calc-l-prefix-help |
| 1065 | calc-v-prefix-help) | 1065 | calc-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. | ||
| 823 | Entry applies if date is birthdate (MONTH DAY YEAR), or the day before. | ||
| 824 | The order of the input parameters changes according to | ||
| 825 | `calendar-date-style' (e.g. to DAY MONTH YEAR in the European style). | ||
| 826 | |||
| 827 | Assumes the associated diary entry is the name of the person. | ||
| 828 | |||
| 829 | Although the date of birth is specified by the *civil* calendar, | ||
| 830 | this function determines the proper Hebrew calendar birthday. | ||
| 831 | If the optional argument AFTER-SUNSET is non-nil, this means the | ||
| 832 | birth occurred after local sunset on the given civil date. | ||
| 833 | In 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. |
| 102 | This can be nil, or a list where the last element can be a string | 102 | This can be nil, or a list where the last element can be a string |
| 103 | representing text that may be incomplete. Preceeding elements | 103 | representing text that may be incomplete. Preceding elements |
| 104 | must be semantic tags representing variables or functions | 104 | must be semantic tags representing variables or functions |
| 105 | called in a dereference sequence.") | 105 | called 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. |
| 299 | A canonical name includes the names of any parents or namespaces preceeding | 299 | A canonical name includes the names of any parents or namespaces preceding |
| 300 | the tag. | 300 | the tag. |
| 301 | Optional argument PARENT is the parent type if TAG is a detail. | 301 | Optional argument PARENT is the parent type if TAG is a detail. |
| 302 | Optional argument COLOR means highlight the prototype with font-lock colors.") | 302 | Optional 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. |
| 259 | Java have documentation set in a comment preceeding TAG's definition. | 259 | Java has documentation set in a comment preceding TAG's definition. |
| 260 | Attempt to strip out comment syntactic sugar, unless optional argument | 260 | Attempt to strip out comment syntactic sugar, unless optional argument |
| 261 | NOSNARF is non-nil. | 261 | NOSNARF is non-nil. |
| 262 | If NOSNARF is 'lex, then return the semantic lex token." | 262 | If 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'. |
| 791 | If in a Dired buffer, reverts it." | 792 | If 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. |
| 1005 | See `dired-guess-shell-alist-user'.") | 1010 | See `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 | |||
| 249 | directory name and the cdr is the list of files to mention. | 249 | directory name and the cdr is the list of files to mention. |
| 250 | The directory name must be absolute, but need not be fully expanded.") | 250 | The 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 | |||
| 35 | the order of any other key-value pair. Side effect sets alist to new | 35 | the order of any other key-value pair. Side effect sets alist to new |
| 36 | sorted list." | 36 | sorted 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)." | |||
| 87 | Alist is referenced by ALIST-SYMBOL and the key-value pair to remove | 87 | Alist is referenced by ALIST-SYMBOL and the key-value pair to remove |
| 88 | is pair matching KEY. Returns the altered alist." | 88 | is 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" "\ |
| 506 | Like `let*', but lexically scoped. | 506 | Like `let*', but lexically scoped. |
| 507 | The main visible difference is that lambdas inside BODY, and in | 507 | The main visible difference is that lambdas inside BODY, and in |
| 508 | successive bindings within BINDINGS, will create lexical closures | 508 | successive bindings within VARLIST, will create lexical closures |
| 509 | as in Common Lisp. This is similar to the behavior of `let*' in | 509 | as in Common Lisp. This is similar to the behavior of `let*' in |
| 510 | Common Lisp. | 510 | Common 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. |
| 1472 | The main visible difference is that lambdas inside BODY, and in | 1472 | The main visible difference is that lambdas inside BODY, and in |
| 1473 | successive bindings within BINDINGS, will create lexical closures | 1473 | successive bindings within VARLIST, will create lexical closures |
| 1474 | as in Common Lisp. This is similar to the behavior of `let*' in | 1474 | as in Common Lisp. This is similar to the behavior of `let*' in |
| 1475 | Common Lisp. | 1475 | Common 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 "&". | 48 | ;; We need a special case for translating "&" to "&". |
| @@ -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. | ||
| 94 | Return 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. |
| 91 | TITLE is the title of the news item. | 124 | TITLE is the title of the news item. |
| @@ -111,11 +144,20 @@ PKG-INFO is the package info, see `package-buffer-info'. | |||
| 111 | EXTENSION is the file extension, a string. It can be either | 144 | EXTENSION is the file extension, a string. It can be either |
| 112 | \"el\" or \"tar\". | 145 | \"el\" or \"tar\". |
| 113 | 146 | ||
| 147 | The variable `package-archive-upload-base' specifies the upload | ||
| 148 | destination. If this is nil, signal an error. | ||
| 149 | |||
| 114 | Optional arg ARCHIVE-URL is the URL of the destination archive. | 150 | Optional arg ARCHIVE-URL is the URL of the destination archive. |
| 115 | If nil, the \"gnu\" archive is used." | 151 | If it is non-nil, compute the new \"archive-contents\" file |
| 116 | (unless archive-url | 152 | starting from the existing \"archive-contents\" at that URL. In |
| 117 | (or (setq archive-url (cdr (assoc "gnu" package-archives))) | 153 | addition, 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 | |||
| 156 | If ARCHIVE-URL is nil, compute the new \"archive-contents\" file | ||
| 157 | from the \"archive-contents\" at `package-archive-upload-base', | ||
| 158 | if 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. |
| 236 | The variable `package-archive-upload-base' specifies the upload | ||
| 237 | destination." | ||
| 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. | ||
| 247 | Interactively, prompt for FILE. The package is considered a | ||
| 248 | single-file package if FILE ends in \".el\", and a multi-file | ||
| 249 | package if FILE ends in \".tar\". | ||
| 250 | |||
| 251 | The variable `package-archive-upload-base' specifies the upload | ||
| 252 | destination." | ||
| 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 | |||
| 67 | QPatterns can take the following forms: | 75 | QPatterns 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. |
| 72 | QPatterns for vectors are not implemented yet. | 80 | QPatterns for vectors are not implemented yet. |
| 73 | 81 | ||
| 74 | PRED can take the form | 82 | PRED 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. |
| 77 | A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION). | 85 | A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION). |
| 78 | PRED patterns can refer to variables bound earlier in the pattern. | 86 | PRED 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. |
| 378 | and otherwise defers to REST which is a list of branches of the form | 442 | Otherwise, 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. |
| 527 | and if not, defers to REST which is a list of branches of the form | 594 | Otherwise, 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 | ||
| 591 | 2001-10-25 Mario Lang <mlang@delysid.org> | 591 | 2001-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 | ||
| 614 | 2001-10-25 Mario Lang <mlang@delysid.org> | 614 | 2001-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 @@ | |||
| 1 | 2011-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 | |||
| 7 | 2011-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 | |||
| 23 | 2011-02-27 Lars Magne Ingebrigtsen <larsi@gnus.org> | ||
| 24 | |||
| 25 | * gnus-group.el (gnus-import-other-newsrc-file): New function. | ||
| 26 | |||
| 27 | 2011-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 | |||
| 36 | 2011-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 | |||
| 48 | 2011-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 | |||
| 55 | 2011-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 | |||
| 1 | 2011-02-24 Katsumi Yamaoka <yamaoka@jpl.org> | 69 | 2011-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 | |||
| 435 | token. The value for that parameter will be obtained from the | 448 | token. The value for that parameter will be obtained from the |
| 436 | search parameters or from user input. If any queries are needed, | 449 | search parameters or from user input. If any queries are needed, |
| 437 | the alist `auth-source-creation-defaults' will be checked for the | 450 | the alist `auth-source-creation-defaults' will be checked for the |
| 438 | default prompt. | 451 | default value. If the user, host, or port are missing, the alist |
| 452 | `auth-source-creation-prompts' will be used to look up the | ||
| 453 | prompts IN THAT ORDER (so the 'user prompt will be queried first, | ||
| 454 | then 'host, then 'port, and finally 'secret). Each prompt string | ||
| 455 | can use %u, %h, and %p to show the user, host, and port. | ||
| 439 | 456 | ||
| 440 | Here's an example: | 457 | Here'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 | ||
| 462 | When multiple values are specified in the search parameter, the | 480 | When multiple values are specified in the search parameter, the |
| 463 | user is prompted for which one. So :host (X Y Z) would ask the | 481 | user 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 | |||
| 1270 | Any symbol is used to look up a regular expression to match the | ||
| 1271 | banner in `gnus-list-identifiers'. A string is used as a regular | ||
| 1272 | expression 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 | |||
| 3055 | The `gnus-list-identifiers' variable specifies what to do." | 3074 | The `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. |
| 81 | Set image category to CATEGORY." | 81 | Set 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. |
| 65 | Values are `ssl', `network', `starttls' or `shell'. | 65 | Values are `ssl', `network', `network-only, `starttls' or |
| 66 | The 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. |
| 1476 | With ARG, turn ido speed-up on if arg is positive, off otherwise." | 1476 | With 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. |
| 1498 | With ARG, turn ido speed-up on if arg is positive, off otherwise. | 1498 | With ARG, turn ido-mode on if arg is positive, off otherwise. |
| 1499 | Turning on ido-mode will remap (via a minor-mode keymap) the default | 1499 | Turning on ido-mode will remap (via a minor-mode keymap) the default |
| 1500 | keybindings for the `find-file' and `switch-to-buffer' families of | 1500 | keybindings for the `find-file' and `switch-to-buffer' families of |
| 1501 | commands to the ido versions of these functions. | 1501 | commands 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 |
| 504 | all text from the \"cc\" field as well. | 504 | all text from the \"cc\" field as well. |
| 505 | 505 | ||
| 506 | REGEXP is an expression to match in the preceeding specified FIELD. | 506 | REGEXP is an expression to match in the preceding specified FIELD. |
| 507 | FIELD/REGEXP pairs continue in the list. | 507 | FIELD/REGEXP pairs continue in the list. |
| 508 | 508 | ||
| 509 | examples: | 509 | examples: |
| @@ -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 | |||
| 51 | point." | 51 | point." |
| 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 @@ | |||
| 1 | 2011-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 | |||
| 1 | 2011-02-10 Stefan Monnier <monnier@iro.umontreal.ca> | 12 | 2011-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. |
| 81 | KEY indicate the purpose of the password, so the cache can | 87 | KEY 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. |
| 4839 | Would not look before LIM. Assumes that LIM is a good place to begin a | 4839 | Would not look before LIM. Assumes that LIM is a good place to begin a |
| 4840 | statement. The kind of block we treat here is one after which a new | 4840 | statement. The kind of block we treat here is one after which a new |
| 4841 | statement would start; thus the block in ${func()} does not count." | 4841 | statement 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 | |||
| 428 | variable can be set to specify the paths where IDLWAVE can find PRO | 428 | variable can be set to specify the paths where IDLWAVE can find PRO |
| 429 | files. The shell will only be asked for a list of paths when this | 429 | files. The shell will only be asked for a list of paths when this |
| 430 | variable is nil. The value is a list of directories. A directory | 430 | variable is nil. The value is a list of directories. A directory |
| 431 | preceeded by a `+' will be searched recursively. If you set this | 431 | preceded by a `+' will be searched recursively. If you set this |
| 432 | variable on a UNIX system, the shell will not be queried. See also | 432 | variable 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. |
| 1778 | That is, if preceeding character is part of a word then complete word, | 1778 | That is, if preceding character is part of a word then complete word, |
| 1779 | else if not at beginning of line then insert tab, | 1779 | else if not at beginning of line then insert tab, |
| 1780 | else if last command was a `TAB' or `RET' then dedent one step, | 1780 | else if last command was a `TAB' or `RET' then dedent one step, |
| 1781 | else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab'). | 1781 | else 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, |
| 6950 | else if right of non whitespace on line then insert tab, | 6950 | else if right of non whitespace on line then insert tab, |
| 6951 | else if last command was a tab or return then dedent one step or if a comment | 6951 | else if last command was a tab or return then dedent one step or if a comment |
| 6952 | toggle between normal indent and inline comment indent, | 6952 | toggle 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, |
| 10400 | else insert tab (used for word completion in VHDL minibuffer)." | 10400 | else 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 | ||
| 1534 | Note that these symbols must be preceeded by a backslash in order to | 1534 | Note that these symbols must be preceded by a backslash in order to |
| 1535 | type them using Lisp syntax." | 1535 | type 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 | ||
| 44 | Prefix argument says to turn mode on if positive, off if negative. | 44 | Prefix argument says to turn mode on if positive, off if negative. |
| 45 | When the mode is turned on, if there are newlines in the buffer but no hard | 45 | When the mode is turned on, if there are newlines in the buffer but no hard |
| 46 | newlines, ask the user whether to mark as hard any newlines preceeding a | 46 | newlines, 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 |
| 48 | to do this; it can be `never' to change nothing, t or `always' to force | 48 | to do this; it can be `never' to change nothing, t or `always' to force |
| 49 | marking, `guess' to try to do the right thing with no questions, nil | 49 | marking, `guess' to try to do the right thing with no questions, nil |