diff options
| author | Kenichi Handa | 2010-05-25 09:35:50 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2010-05-25 09:35:50 +0900 |
| commit | 8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4 (patch) | |
| tree | 48e379874bd0bf796a12a5f43b369e0d6691a125 /lisp | |
| parent | 10f72a3793087770f131a0dc729f29ff50f08ad9 (diff) | |
| parent | 7eca871a82d582b986c638343f74d16b819a0f14 (diff) | |
| download | emacs-8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4.tar.gz emacs-8a2b8c4f7c2a18254fc0b34f236d7487fc7917d4.zip | |
merge trunk
Diffstat (limited to 'lisp')
37 files changed, 803 insertions, 549 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 545311d6530..72f00e60edf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,8 +1,159 @@ | |||
| 1 | 2010-05-22 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * image.el (image-refresh): Define as an alias for image-flush. | ||
| 4 | |||
| 5 | * image-mode.el (image-toggle-display-image): Caller changed. | ||
| 6 | |||
| 7 | 2010-05-21 Juri Linkov <juri@jurta.org> | ||
| 8 | |||
| 9 | * progmodes/grep.el (grep-read-files): Fix multi-pattern aliases. | ||
| 10 | Remove "all" from grep-files-aliases. Split grep-files-aliases by | ||
| 11 | whitespace, call wildcard-to-regexp on substrings and concat them | ||
| 12 | with "\\|". (Bug#6114) | ||
| 13 | |||
| 14 | 2010-05-21 Alan Mackenzie <acm@muc.de> | ||
| 15 | |||
| 16 | * progmodes/cc-engine.el (c-parse-state-get-strategy): Replace | ||
| 17 | parameter `here' with `here-' and `here-plus', which sandwich any | ||
| 18 | pertinent CPP construct. | ||
| 19 | (c-remove-stale-state-cache-backwards): Fix a bug which happens | ||
| 20 | when doing (c-parse-state) in a CPP construct: Exclude any "new" | ||
| 21 | CPP construct from taking part in the scanning. | ||
| 22 | |||
| 23 | 2010-05-21 Michael Albinus <michael.albinus@gmx.de> | ||
| 24 | |||
| 25 | * net/tramp.el (tramp-do-copy-or-rename-file) | ||
| 26 | (tramp-handle-file-local-copy, tramp-maybe-open-connection): Tune | ||
| 27 | `with-progress-reporter' messages. | ||
| 28 | (tramp-handle-vc-registered): | ||
| 29 | * net/tramp-fish.el (tramp-fish-handle-file-local-copy) | ||
| 30 | (tramp-fish-handle-insert-file-contents) | ||
| 31 | (tramp-fish-maybe-open-connection): | ||
| 32 | * net/tramp-gvfs.el (tramp-gvfs-maybe-open-connection): | ||
| 33 | * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file) | ||
| 34 | (tramp-imap-handle-insert-file-contents) | ||
| 35 | (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'. | ||
| 36 | |||
| 37 | 2010-05-21 Juanma Barranquero <lekktu@gmail.com> | ||
| 38 | |||
| 39 | * add-log.el (change-log-font-lock-keywords): | ||
| 40 | Highlight all authors in multi-author entries. | ||
| 41 | |||
| 42 | * smerge-mode.el (smerge-refine-ignore-whitespace) | ||
| 43 | (smerge-refine-weight-hack, smerge-refine, smerge-makeup-conflict): | ||
| 44 | Fix typos in docstrings. | ||
| 45 | (smerge-resolve, smerge-refine-subst): Reflow docstrings. | ||
| 46 | |||
| 47 | 2010-05-21 Glenn Morris <rgm@gnu.org> | ||
| 48 | |||
| 49 | * progmodes/fortran.el (fortran-mode): | ||
| 50 | * progmodes/f90.el (f90-mode): Derive from prog-mode. | ||
| 51 | |||
| 52 | * loadup.el [CANNOT_DUMP]: Update for bootstrap-emacs no longer | ||
| 53 | having a relative path in src/Makefile.in. | ||
| 54 | |||
| 55 | 2010-05-20 Kevin Ryde <user42@zip.com.au> | ||
| 56 | |||
| 57 | * help-mode.el (help-make-xrefs): For Info node links turn | ||
| 58 | newlines into spaces. Link node names with newlines are matched | ||
| 59 | by help-xref-info-regexp and buttonized, this change ensures they | ||
| 60 | can be followed successfully with RET. (Bug#6206) | ||
| 61 | |||
| 62 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 63 | |||
| 64 | * locate.el (locate): Use pop-to-buffer instead of | ||
| 65 | switch-to-buffer-other-window. (Bug#6204) | ||
| 66 | |||
| 67 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 68 | |||
| 69 | * replace.el (replace-highlight): Fix lazy-highlighting | ||
| 70 | for `M-s w str M-% str RET'. | ||
| 71 | |||
| 72 | 2009-12-15 Masatake YAMATO <yamato@redhat.com> | ||
| 73 | |||
| 74 | * isearch.el (isearch-yank-word-or-char): Pull next subword | ||
| 75 | when `subword-mode' is activated. (Bug#6220) | ||
| 76 | |||
| 77 | 2010-05-20 Mark A. Hershberger <mah@everybody.org> | ||
| 78 | |||
| 79 | * isearch.el (isearch-update-post-hook): New hook. | ||
| 80 | (isearch-update): Use the new hook. (Bug#6225) | ||
| 81 | |||
| 82 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 83 | |||
| 84 | * isearch.el (isearch-mode-map): Bind more keys to isearch-help-map: | ||
| 85 | [f1], [help], and (char-to-string help-char) instead of "\C-h". | ||
| 86 | (Bug#6222) | ||
| 87 | |||
| 88 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 89 | |||
| 90 | * isearch.el (isearch-yank-string): Use isearch-process-search-string. | ||
| 91 | (Bug#6223) | ||
| 92 | |||
| 93 | 2010-05-20 Juri Linkov <juri@jurta.org> | ||
| 94 | |||
| 95 | * dired-x.el (dired-jump, dired-jump-other-window): Add arg | ||
| 96 | FILE-NAME to read from the minibuffer when called interactively | ||
| 97 | with prefix argument instead of using buffer-file-name. | ||
| 98 | http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00534.html | ||
| 99 | |||
| 100 | * dired.el: Update autoloads. | ||
| 101 | |||
| 102 | 2010-05-20 Chong Yidong <cyd@stupidchicken.com> | ||
| 103 | |||
| 104 | * nxml/nxml-mode.el (nxml-mode-map): Bind C-c / to | ||
| 105 | nxml-finish-element, for consistency with SGML mode. | ||
| 106 | |||
| 107 | * progmodes/octave-mod.el (octave-mode-map): Bind C-c / to | ||
| 108 | octave-close-block. | ||
| 109 | |||
| 110 | 2010-05-20 Juanma Barranquero <lekktu@gmail.com> | ||
| 111 | |||
| 112 | * composite.el: Require cl when compiling. | ||
| 113 | (reference-point-alist, compose-gstring-for-graphic) | ||
| 114 | (compose-gstring-for-terminal): Fix typos in docstrings. | ||
| 115 | |||
| 116 | 2010-05-19 Juri Linkov <juri@jurta.org> | ||
| 117 | |||
| 118 | * emacs-lisp/cl-macs.el (window-parameter): Add defsetf with | ||
| 119 | set-window-parameter. | ||
| 120 | |||
| 121 | 2010-05-19 Michael Albinus <michael.albinus@gmx.de> | ||
| 122 | |||
| 123 | * net/tramp.el (tramp-methods): Add `tramp-async-args' attribute | ||
| 124 | where appropriate. | ||
| 125 | (tramp-maybe-open-connection): Use it. | ||
| 126 | |||
| 127 | 2010-05-19 Eli Zaretskii <eliz@gnu.org> | ||
| 128 | |||
| 129 | * simple.el (move-end-of-line): Make sure we are at line beginning | ||
| 130 | before backing up to end of previous line. | ||
| 131 | |||
| 132 | 2010-05-19 Michael Albinus <michael.albinus@gmx.de> | ||
| 133 | |||
| 134 | * password-cache.el (password-cache-remove): Fix docstring. | ||
| 135 | |||
| 136 | * net/secrets.el: Autoload the widget functions. | ||
| 137 | (secrets-search-items, secrets-create-item) | ||
| 138 | (secrets-get-attributes, secrets-expand-item): Attributes will be | ||
| 139 | stored on the password database without leading ":", as all other | ||
| 140 | clients do as well. | ||
| 141 | (secrets-mode): Fix docstring. | ||
| 142 | (secrets-show-secrets): Provide it as autoloaded command only when | ||
| 143 | D-Bus support is available. Check existence of Secret Service API. | ||
| 144 | |||
| 145 | 2010-05-19 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 146 | |||
| 147 | * indent.el (indent-region): Deactivate region (bug#6200). | ||
| 148 | |||
| 149 | 2010-05-19 Glenn Morris <rgm@gnu.org> | ||
| 150 | |||
| 151 | * vc-dir.el (vc-dir): Don't pop-up-windows. (Bug#6204) | ||
| 152 | |||
| 1 | 2010-05-19 Kenichi Handa <handa@m17n.org> | 153 | 2010-05-19 Kenichi Handa <handa@m17n.org> |
| 2 | 154 | ||
| 3 | * composite.el: Register compose-gstring-for-graphic in | 155 | * composite.el: Register compose-gstring-for-graphic in |
| 4 | composition-function-table only for combining characters (Mn, Mc, | 156 | composition-function-table only for combining characters (Mn, Mc, Me). |
| 5 | Me). | ||
| 6 | 157 | ||
| 7 | 2010-05-18 Jay Belanger <jay.p.belanger@gmail.com> | 158 | 2010-05-18 Jay Belanger <jay.p.belanger@gmail.com> |
| 8 | 159 | ||
diff --git a/lisp/add-log.el b/lisp/add-log.el index ab99f6787c8..88277e66640 100644 --- a/lisp/add-log.el +++ b/lisp/add-log.el | |||
| @@ -245,7 +245,7 @@ Note: The search is conducted only within 10%, at the beginning of the file." | |||
| 245 | ;; wrongly with a non-date line existing as a random note. In | 245 | ;; wrongly with a non-date line existing as a random note. In |
| 246 | ;; addition, using any kind of fixed setting like this doesn't | 246 | ;; addition, using any kind of fixed setting like this doesn't |
| 247 | ;; work if a user customizes add-log-time-format. | 247 | ;; work if a user customizes add-log-time-format. |
| 248 | ("^[0-9-]+ +\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+" | 248 | ("^[0-9-]+ +\\|^ \\{11,\\}\\|^\\(Sun\\|Mon\\|Tue\\|Wed\\|Thu\\|Fri\\|Sat\\) [A-z][a-z][a-z] [0-9:+ ]+" |
| 249 | (0 'change-log-date-face) | 249 | (0 'change-log-date-face) |
| 250 | ;; Name and e-mail; some people put e-mail in parens, not angles. | 250 | ;; Name and e-mail; some people put e-mail in parens, not angles. |
| 251 | ("\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil | 251 | ("\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" nil nil |
diff --git a/lisp/comint.el b/lisp/comint.el index 8defc3c7800..fd3cff3b5f9 100644 --- a/lisp/comint.el +++ b/lisp/comint.el | |||
| @@ -309,7 +309,6 @@ the function `comint-truncate-buffer' is on `comint-output-filter-functions'." | |||
| 309 | :type 'integer | 309 | :type 'integer |
| 310 | :group 'comint) | 310 | :group 'comint) |
| 311 | 311 | ||
| 312 | ;; FIXME: this should be defcustom | ||
| 313 | (defcustom comint-input-ring-size 500 | 312 | (defcustom comint-input-ring-size 500 |
| 314 | "Size of the input history ring in `comint-mode'." | 313 | "Size of the input history ring in `comint-mode'." |
| 315 | :type 'integer | 314 | :type 'integer |
diff --git a/lisp/composite.el b/lisp/composite.el index 0afb2864879..d886be5a463 100644 --- a/lisp/composite.el +++ b/lisp/composite.el | |||
| @@ -28,6 +28,8 @@ | |||
| 28 | 28 | ||
| 29 | ;;; Code: | 29 | ;;; Code: |
| 30 | 30 | ||
| 31 | (eval-when-compile (require 'cl)) | ||
| 32 | |||
| 31 | (defconst reference-point-alist | 33 | (defconst reference-point-alist |
| 32 | '((tl . 0) (tc . 1) (tr . 2) | 34 | '((tl . 0) (tc . 1) (tr . 2) |
| 33 | (Bl . 3) (Bc . 4) (Br . 5) | 35 | (Bl . 3) (Bc . 4) (Br . 5) |
| @@ -77,7 +79,7 @@ follows (the point `*' corresponds to both reference points): | |||
| 77 | +----+-----+ <--- new descent | 79 | +----+-----+ <--- new descent |
| 78 | 80 | ||
| 79 | A composition rule may have the form \(GLOBAL-REF-POINT | 81 | A composition rule may have the form \(GLOBAL-REF-POINT |
| 80 | NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specifies how much | 82 | NEW-REF-POINT XOFF YOFF), where XOFF and YOFF specify how much |
| 81 | to shift NEW-REF-POINT from GLOBAL-REF-POINT. In this case, XOFF | 83 | to shift NEW-REF-POINT from GLOBAL-REF-POINT. In this case, XOFF |
| 82 | and YOFF are integers in the range -100..100 representing the | 84 | and YOFF are integers in the range -100..100 representing the |
| 83 | shifting percentage against the font size.") | 85 | shifting percentage against the font size.") |
| @@ -537,7 +539,7 @@ character. If the preceding character is not a base character, | |||
| 537 | each combining character is composed as a spacing character by | 539 | each combining character is composed as a spacing character by |
| 538 | a padding space before and/or after the character. | 540 | a padding space before and/or after the character. |
| 539 | 541 | ||
| 540 | All non-spacing characters has this function in | 542 | All non-spacing characters have this function in |
| 541 | `composition-function-table' unless overwritten." | 543 | `composition-function-table' unless overwritten." |
| 542 | (let* ((header (lgstring-header gstring)) | 544 | (let* ((header (lgstring-header gstring)) |
| 543 | (nchars (lgstring-char-len gstring)) | 545 | (nchars (lgstring-char-len gstring)) |
| @@ -669,7 +671,7 @@ All non-spacing characters has this function in | |||
| 669 | Non-spacing characters are composed with the preceding base | 671 | Non-spacing characters are composed with the preceding base |
| 670 | character. If the preceding character is not a base character, | 672 | character. If the preceding character is not a base character, |
| 671 | each non-spacing character is composed as a spacing character by | 673 | each non-spacing character is composed as a spacing character by |
| 672 | a prepending a space before it." | 674 | prepending a space before it." |
| 673 | (let* ((header (lgstring-header gstring)) | 675 | (let* ((header (lgstring-header gstring)) |
| 674 | (nchars (lgstring-char-len gstring)) | 676 | (nchars (lgstring-char-len gstring)) |
| 675 | (nglyphs (lgstring-glyph-len gstring)) | 677 | (nglyphs (lgstring-glyph-len gstring)) |
diff --git a/lisp/dired-x.el b/lisp/dired-x.el index aba4b7a7a9d..2dc7475e9e3 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el | |||
| @@ -506,16 +506,21 @@ See variables `dired-texinfo-unclean-extensions', | |||
| 506 | ;;; JUMP. | 506 | ;;; JUMP. |
| 507 | 507 | ||
| 508 | ;;;###autoload | 508 | ;;;###autoload |
| 509 | (defun dired-jump (&optional other-window) | 509 | (defun dired-jump (&optional other-window file-name) |
| 510 | "Jump to dired buffer corresponding to current buffer. | 510 | "Jump to dired buffer corresponding to current buffer. |
| 511 | If in a file, dired the current directory and move to file's line. | 511 | If in a file, dired the current directory and move to file's line. |
| 512 | If in Dired already, pop up a level and goto old directory's line. | 512 | If in Dired already, pop up a level and goto old directory's line. |
| 513 | In case the proper dired file line cannot be found, refresh the dired | 513 | In case the proper dired file line cannot be found, refresh the dired |
| 514 | buffer and try again." | 514 | buffer and try again. |
| 515 | (interactive "P") | 515 | When OTHER-WINDOW is non-nil, jump to dired buffer in other window. |
| 516 | (let* ((file buffer-file-name) | 516 | Interactively with prefix argument, read FILE-NAME and |
| 517 | move to its line in dired." | ||
| 518 | (interactive | ||
| 519 | (list nil (and current-prefix-arg | ||
| 520 | (read-file-name "Jump to dired file: ")))) | ||
| 521 | (let* ((file (or file-name buffer-file-name)) | ||
| 517 | (dir (if file (file-name-directory file) default-directory))) | 522 | (dir (if file (file-name-directory file) default-directory))) |
| 518 | (if (eq major-mode 'dired-mode) | 523 | (if (and (eq major-mode 'dired-mode) (null file-name)) |
| 519 | (progn | 524 | (progn |
| 520 | (setq dir (dired-current-directory)) | 525 | (setq dir (dired-current-directory)) |
| 521 | (dired-up-directory other-window) | 526 | (dired-up-directory other-window) |
| @@ -539,10 +544,12 @@ buffer and try again." | |||
| 539 | (dired-omit-mode) | 544 | (dired-omit-mode) |
| 540 | (dired-goto-file file)))))))) | 545 | (dired-goto-file file)))))))) |
| 541 | 546 | ||
| 542 | (defun dired-jump-other-window () | 547 | (defun dired-jump-other-window (&optional file-name) |
| 543 | "Like \\[dired-jump] (`dired-jump') but in other window." | 548 | "Like \\[dired-jump] (`dired-jump') but in other window." |
| 544 | (interactive) | 549 | (interactive |
| 545 | (dired-jump t)) | 550 | (list (and current-prefix-arg |
| 551 | (read-file-name "Jump to dired file: ")))) | ||
| 552 | (dired-jump t file-name)) | ||
| 546 | 553 | ||
| 547 | ;;; OMITTING. | 554 | ;;; OMITTING. |
| 548 | 555 | ||
diff --git a/lisp/dired.el b/lisp/dired.el index 0dc53bf32c4..ae9915698de 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -3974,7 +3974,7 @@ true then the type of the file linked to by FILE is printed instead. | |||
| 3974 | ;;;*** | 3974 | ;;;*** |
| 3975 | 3975 | ||
| 3976 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" | 3976 | ;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" |
| 3977 | ;;;;;; "2f8d3d5a31b969b181e23c40d6bb16a0") | 3977 | ;;;;;; "6c492aba3ca0d36a4cd7b02fb9c1cc10") |
| 3978 | ;;; Generated autoloads from dired-x.el | 3978 | ;;; Generated autoloads from dired-x.el |
| 3979 | 3979 | ||
| 3980 | (autoload 'dired-jump "dired-x" "\ | 3980 | (autoload 'dired-jump "dired-x" "\ |
| @@ -3983,8 +3983,11 @@ If in a file, dired the current directory and move to file's line. | |||
| 3983 | If in Dired already, pop up a level and goto old directory's line. | 3983 | If in Dired already, pop up a level and goto old directory's line. |
| 3984 | In case the proper dired file line cannot be found, refresh the dired | 3984 | In case the proper dired file line cannot be found, refresh the dired |
| 3985 | buffer and try again. | 3985 | buffer and try again. |
| 3986 | When OTHER-WINDOW is non-nil, jump to dired buffer in other window. | ||
| 3987 | Interactively with prefix argument, read FILE-NAME and | ||
| 3988 | move to its line in dired. | ||
| 3986 | 3989 | ||
| 3987 | \(fn &optional OTHER-WINDOW)" t nil) | 3990 | \(fn &optional OTHER-WINDOW FILE-NAME)" t nil) |
| 3988 | 3991 | ||
| 3989 | (autoload 'dired-do-relsymlink "dired-x" "\ | 3992 | (autoload 'dired-do-relsymlink "dired-x" "\ |
| 3990 | Relative symlink all marked (or next ARG) files into a directory. | 3993 | Relative symlink all marked (or next ARG) files into a directory. |
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index e828325bd0e..1bffcde03d2 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el | |||
| @@ -282,7 +282,7 @@ Not documented | |||
| 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist | 282 | ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist |
| 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase | 283 | ;;;;;; do* do loop return-from return block etypecase typecase ecase |
| 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* | 284 | ;;;;;; case load-time-value eval-when destructuring-bind function* |
| 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "0faa39d8f21ae59f2cc1baa835e28a5f") | 285 | ;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "fbeedbf769c72fee9b4e0671957c1077") |
| 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" "\ |
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 57870b19066..444178edb0c 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el | |||
| @@ -1813,6 +1813,7 @@ Example: | |||
| 1813 | (defsetf window-height () (store) | 1813 | (defsetf window-height () (store) |
| 1814 | (list 'progn (list 'enlarge-window (list '- store '(window-height))) store)) | 1814 | (list 'progn (list 'enlarge-window (list '- store '(window-height))) store)) |
| 1815 | (defsetf window-hscroll set-window-hscroll) | 1815 | (defsetf window-hscroll set-window-hscroll) |
| 1816 | (defsetf window-parameter set-window-parameter) | ||
| 1816 | (defsetf window-point set-window-point) | 1817 | (defsetf window-point set-window-point) |
| 1817 | (defsetf window-start set-window-start) | 1818 | (defsetf window-start set-window-start) |
| 1818 | (defsetf window-width () (store) | 1819 | (defsetf window-width () (store) |
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 395cca72a93..26543c4048a 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2010-05-20 Kevin Ryde <user42@zip.com.au> | ||
| 2 | |||
| 3 | * gnus-start.el (gnus-level-unsubscribed): Doc fix. (Bug#6206) | ||
| 4 | |||
| 1 | 2010-05-14 Katsumi Yamaoka <yamaoka@jpl.org> | 5 | 2010-05-14 Katsumi Yamaoka <yamaoka@jpl.org> |
| 2 | 6 | ||
| 3 | * gnus-sum.el (gnus-summary-save-article): Don't bother to re-fetch | 7 | * gnus-sum.el (gnus-summary-save-article): Don't bother to re-fetch |
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index ff51530457f..9ef251f2147 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el | |||
| @@ -181,7 +181,7 @@ Groups with levels less than `gnus-level-subscribed', which | |||
| 181 | should be less than this variable, are subscribed. Groups with | 181 | should be less than this variable, are subscribed. Groups with |
| 182 | levels from `gnus-level-subscribed' (exclusive) upto this | 182 | levels from `gnus-level-subscribed' (exclusive) upto this |
| 183 | variable (inclusive) are unsubscribed. See also | 183 | variable (inclusive) are unsubscribed. See also |
| 184 | `gnus-level-zombie', `gnus-level-killed' and the Info node `Group | 184 | `gnus-level-zombie', `gnus-level-killed' and the Info node `(gnus)Group |
| 185 | Levels' for details.") | 185 | Levels' for details.") |
| 186 | 186 | ||
| 187 | (defconst gnus-level-zombie 8 | 187 | (defconst gnus-level-zombie 8 |
diff --git a/lisp/help-mode.el b/lisp/help-mode.el index bad4ae94e2a..f115e425325 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el | |||
| @@ -433,7 +433,9 @@ that." | |||
| 433 | (let ((data (match-string 2))) | 433 | (let ((data (match-string 2))) |
| 434 | (save-match-data | 434 | (save-match-data |
| 435 | (unless (string-match "^([^)]+)" data) | 435 | (unless (string-match "^([^)]+)" data) |
| 436 | (setq data (concat "(emacs)" data)))) | 436 | (setq data (concat "(emacs)" data))) |
| 437 | (setq data ;; possible newlines if para filled | ||
| 438 | (replace-regexp-in-string "[ \t\n]+" " " data t t))) | ||
| 437 | (help-xref-button 2 'help-info data)))) | 439 | (help-xref-button 2 'help-info data)))) |
| 438 | ;; URLs | 440 | ;; URLs |
| 439 | (save-excursion | 441 | (save-excursion |
diff --git a/lisp/image-mode.el b/lisp/image-mode.el index dfc96bb4a16..f1323563d5d 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el | |||
| @@ -448,7 +448,7 @@ Remove text properties that display the image." | |||
| 448 | 448 | ||
| 449 | (defvar archive-superior-buffer) | 449 | (defvar archive-superior-buffer) |
| 450 | (defvar tar-superior-buffer) | 450 | (defvar tar-superior-buffer) |
| 451 | (declare-function image-refresh "image.c" (spec &optional frame)) | 451 | (declare-function image-flush "image.c" (spec &optional frame)) |
| 452 | 452 | ||
| 453 | (defun image-toggle-display-image () | 453 | (defun image-toggle-display-image () |
| 454 | "Show the image of the image file. | 454 | "Show the image of the image file. |
| @@ -477,7 +477,7 @@ was inserted." | |||
| 477 | (inhibit-read-only t) | 477 | (inhibit-read-only t) |
| 478 | (buffer-undo-list t) | 478 | (buffer-undo-list t) |
| 479 | (modified (buffer-modified-p))) | 479 | (modified (buffer-modified-p))) |
| 480 | (image-refresh image) | 480 | (image-flush image) |
| 481 | (let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file | 481 | (let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file |
| 482 | (add-text-properties (point-min) (point-max) props) | 482 | (add-text-properties (point-min) (point-max) props) |
| 483 | (restore-buffer-modified-p modified)) | 483 | (restore-buffer-modified-p modified)) |
diff --git a/lisp/image.el b/lisp/image.el index 67c1ad946b1..b3a0f1a8a7d 100644 --- a/lisp/image.el +++ b/lisp/image.el | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | "Image support." | 30 | "Image support." |
| 31 | :group 'multimedia) | 31 | :group 'multimedia) |
| 32 | 32 | ||
| 33 | (defalias 'image-refresh 'image-flush) | ||
| 33 | 34 | ||
| 34 | (defconst image-type-header-regexps | 35 | (defconst image-type-header-regexps |
| 35 | `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) | 36 | `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) |
diff --git a/lisp/indent.el b/lisp/indent.el index adecbfaeb12..c1da4a46b9c 100644 --- a/lisp/indent.el +++ b/lisp/indent.el | |||
| @@ -431,7 +431,11 @@ column to indent to; if it is nil, use one of the three methods above." | |||
| 431 | (or (eolp) | 431 | (or (eolp) |
| 432 | (indent-to column 0)) | 432 | (indent-to column 0)) |
| 433 | (forward-line 1)) | 433 | (forward-line 1)) |
| 434 | (move-marker end nil)))) | 434 | (move-marker end nil))) |
| 435 | ;; In most cases, reindenting modifies the buffer, but it may also | ||
| 436 | ;; leave it unmodified, in which case we have to deactivate the mark | ||
| 437 | ;; by hand. | ||
| 438 | (deactivate-mark)) | ||
| 435 | 439 | ||
| 436 | (defun indent-relative-maybe () | 440 | (defun indent-relative-maybe () |
| 437 | "Indent a new line like previous nonblank line. | 441 | "Indent a new line like previous nonblank line. |
diff --git a/lisp/isearch.el b/lisp/isearch.el index 64cb66bdab5..ea5836edc4d 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -156,6 +156,9 @@ command history." | |||
| 156 | (defvar isearch-mode-hook nil | 156 | (defvar isearch-mode-hook nil |
| 157 | "Function(s) to call after starting up an incremental search.") | 157 | "Function(s) to call after starting up an incremental search.") |
| 158 | 158 | ||
| 159 | (defvar isearch-update-post-hook nil | ||
| 160 | "Function(s) to call after isearch has found matches in the buffer.") | ||
| 161 | |||
| 159 | (defvar isearch-mode-end-hook nil | 162 | (defvar isearch-mode-end-hook nil |
| 160 | "Function(s) to call after terminating an incremental search. | 163 | "Function(s) to call after terminating an incremental search. |
| 161 | When these functions are called, `isearch-mode-end-hook-quit' | 164 | When these functions are called, `isearch-mode-end-hook-quit' |
| @@ -460,7 +463,9 @@ This is like `describe-bindings', but displays only Isearch keys." | |||
| 460 | (define-key map "\M-\C-y" 'isearch-yank-char) | 463 | (define-key map "\M-\C-y" 'isearch-yank-char) |
| 461 | (define-key map "\C-y" 'isearch-yank-line) | 464 | (define-key map "\C-y" 'isearch-yank-line) |
| 462 | 465 | ||
| 463 | (define-key map "\C-h" isearch-help-map) | 466 | (define-key map (char-to-string help-char) isearch-help-map) |
| 467 | (define-key map [help] isearch-help-map) | ||
| 468 | (define-key map [f1] isearch-help-map) | ||
| 464 | 469 | ||
| 465 | (define-key map "\M-n" 'isearch-ring-advance) | 470 | (define-key map "\M-n" 'isearch-ring-advance) |
| 466 | (define-key map "\M-p" 'isearch-ring-retreat) | 471 | (define-key map "\M-p" 'isearch-ring-retreat) |
| @@ -868,7 +873,8 @@ It is called by the function `isearch-forward' and other related functions." | |||
| 868 | (isearch-lazy-highlight-new-loop)) | 873 | (isearch-lazy-highlight-new-loop)) |
| 869 | ;; We must prevent the point moving to the end of composition when a | 874 | ;; We must prevent the point moving to the end of composition when a |
| 870 | ;; part of the composition has just been searched. | 875 | ;; part of the composition has just been searched. |
| 871 | (setq disable-point-adjustment t)) | 876 | (setq disable-point-adjustment t) |
| 877 | (run-hooks 'isearch-update-post-hook)) | ||
| 872 | 878 | ||
| 873 | (defun isearch-done (&optional nopush edit) | 879 | (defun isearch-done (&optional nopush edit) |
| 874 | "Exit Isearch mode. | 880 | "Exit Isearch mode. |
| @@ -1476,14 +1482,10 @@ If search string is empty, just beep." | |||
| 1476 | (eq 'not-yanks search-upper-case)) | 1482 | (eq 'not-yanks search-upper-case)) |
| 1477 | (setq string (downcase string))) | 1483 | (setq string (downcase string))) |
| 1478 | (if isearch-regexp (setq string (regexp-quote string))) | 1484 | (if isearch-regexp (setq string (regexp-quote string))) |
| 1479 | (setq isearch-string (concat isearch-string string) | 1485 | ;; Don't move cursor in reverse search. |
| 1480 | isearch-message | 1486 | (setq isearch-yank-flag t) |
| 1481 | (concat isearch-message | 1487 | (isearch-process-search-string |
| 1482 | (mapconcat 'isearch-text-char-description | 1488 | string (mapconcat 'isearch-text-char-description string ""))) |
| 1483 | string "")) | ||
| 1484 | ;; Don't move cursor in reverse search. | ||
| 1485 | isearch-yank-flag t) | ||
| 1486 | (isearch-search-and-update)) | ||
| 1487 | 1489 | ||
| 1488 | (defun isearch-yank-kill () | 1490 | (defun isearch-yank-kill () |
| 1489 | "Pull string from kill ring into search string." | 1491 | "Pull string from kill ring into search string." |
| @@ -1538,14 +1540,18 @@ or it might return the position of the end of the line." | |||
| 1538 | (interactive "p") | 1540 | (interactive "p") |
| 1539 | (isearch-yank-internal (lambda () (forward-char arg) (point)))) | 1541 | (isearch-yank-internal (lambda () (forward-char arg) (point)))) |
| 1540 | 1542 | ||
| 1543 | (declare-function subword-forward "subword" (&optional arg)) | ||
| 1541 | (defun isearch-yank-word-or-char () | 1544 | (defun isearch-yank-word-or-char () |
| 1542 | "Pull next character or word from buffer into search string." | 1545 | "Pull next character, subword or word from buffer into search string. |
| 1546 | Subword is used when `subword-mode' is activated. " | ||
| 1543 | (interactive) | 1547 | (interactive) |
| 1544 | (isearch-yank-internal | 1548 | (isearch-yank-internal |
| 1545 | (lambda () | 1549 | (lambda () |
| 1546 | (if (or (= (char-syntax (or (char-after) 0)) ?w) | 1550 | (if (or (= (char-syntax (or (char-after) 0)) ?w) |
| 1547 | (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) | 1551 | (= (char-syntax (or (char-after (1+ (point))) 0)) ?w)) |
| 1548 | (forward-word 1) | 1552 | (if (and (boundp 'subword-mode) subword-mode) |
| 1553 | (subword-forward 1) | ||
| 1554 | (forward-word 1)) | ||
| 1549 | (forward-char 1)) (point)))) | 1555 | (forward-char 1)) (point)))) |
| 1550 | 1556 | ||
| 1551 | (defun isearch-yank-word () | 1557 | (defun isearch-yank-word () |
diff --git a/lisp/loadup.el b/lisp/loadup.el index 36bf8dea082..b087aa79040 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el | |||
| @@ -54,7 +54,7 @@ | |||
| 54 | (equal (nth 3 command-line-args) "unidata-gen.el") | 54 | (equal (nth 3 command-line-args) "unidata-gen.el") |
| 55 | (equal (nth 4 command-line-args) "unidata-gen-files") | 55 | (equal (nth 4 command-line-args) "unidata-gen-files") |
| 56 | ;; In case CANNOT_DUMP. | 56 | ;; In case CANNOT_DUMP. |
| 57 | (equal (nth 0 command-line-args) "../src/bootstrap-emacs")) | 57 | (string-match "src/bootstrap-emacs" (nth 0 command-line-args))) |
| 58 | (let ((dir (car load-path))) | 58 | (let ((dir (car load-path))) |
| 59 | ;; We'll probably overflow the pure space. | 59 | ;; We'll probably overflow the pure space. |
| 60 | (setq purify-flag nil) | 60 | (setq purify-flag nil) |
diff --git a/lisp/locate.el b/lisp/locate.el index d0021dfed22..f1983a3e18a 100644 --- a/lisp/locate.el +++ b/lisp/locate.el | |||
| @@ -326,7 +326,7 @@ ARG is the interactive prefix arg." | |||
| 326 | (locate-do-setup search-string) | 326 | (locate-do-setup search-string) |
| 327 | )) | 327 | )) |
| 328 | (and (not (string-equal (buffer-name) locate-buffer-name)) | 328 | (and (not (string-equal (buffer-name) locate-buffer-name)) |
| 329 | (switch-to-buffer-other-window locate-buffer-name)) | 329 | (pop-to-buffer locate-buffer-name)) |
| 330 | 330 | ||
| 331 | (run-hooks 'dired-mode-hook) | 331 | (run-hooks 'dired-mode-hook) |
| 332 | (dired-next-line 3) ;move to first matching file. | 332 | (dired-next-line 3) ;move to first matching file. |
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index e3c9599b873..29a49c45a38 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2010-05-14 Peter S Galbraith <psg@debian.org> | ||
| 2 | |||
| 3 | * mh-mime.el (mh-decode-message-subject): New function to decode | ||
| 4 | RFC2047 encoded Subject lines. Used for reply drafts. | ||
| 5 | * mh-comp.el (mh-compose-and-send-mail): Call | ||
| 6 | `mh-decode-message-subject' on (reply or forward) message drafts. | ||
| 7 | |||
| 1 | 2010-05-07 Chong Yidong <cyd@stupidchicken.com> | 8 | 2010-05-07 Chong Yidong <cyd@stupidchicken.com> |
| 2 | 9 | ||
| 3 | * Version 23.2 released. | 10 | * Version 23.2 released. |
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index 3bb1e343253..762aad86080 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el | |||
| @@ -905,6 +905,9 @@ letter." | |||
| 905 | (mh-identity-make-menu) | 905 | (mh-identity-make-menu) |
| 906 | (mh-identity-add-menu) | 906 | (mh-identity-add-menu) |
| 907 | 907 | ||
| 908 | ;; Cleanup possibly RFC2047 encoded subject header | ||
| 909 | (mh-decode-message-subject) | ||
| 910 | |||
| 908 | ;; Insert extra fields. | 911 | ;; Insert extra fields. |
| 909 | (mh-insert-x-mailer) | 912 | (mh-insert-x-mailer) |
| 910 | (mh-insert-x-face) | 913 | (mh-insert-x-face) |
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index a60f31e3ac2..8d47af40ebd 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el | |||
| @@ -508,6 +508,15 @@ decoding the same message multiple times." | |||
| 508 | (rfc2047-decode-region (point-min) (mh-mail-header-end))))) | 508 | (rfc2047-decode-region (point-min) (mh-mail-header-end))))) |
| 509 | 509 | ||
| 510 | ;;;###mh-autoload | 510 | ;;;###mh-autoload |
| 511 | (defun mh-decode-message-subject () | ||
| 512 | "Decode RFC2047 encoded message header fields." | ||
| 513 | (when mh-decode-mime-flag | ||
| 514 | (save-excursion | ||
| 515 | (let ((buffer-read-only nil)) | ||
| 516 | (rfc2047-decode-region (progn (mh-goto-header-field "subject:") (point)) | ||
| 517 | (progn (mh-header-field-end) (point))))))) | ||
| 518 | |||
| 519 | ;;;###mh-autoload | ||
| 511 | (defun mh-mime-display (&optional pre-dissected-handles) | 520 | (defun mh-mime-display (&optional pre-dissected-handles) |
| 512 | "Display (and possibly decode) MIME handles. | 521 | "Display (and possibly decode) MIME handles. |
| 513 | Optional argument, PRE-DISSECTED-HANDLES is a list of MIME | 522 | Optional argument, PRE-DISSECTED-HANDLES is a list of MIME |
diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index a7225d663e3..4487407971f 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el | |||
| @@ -151,11 +151,11 @@ | |||
| 151 | 151 | ||
| 152 | (require 'dbus) | 152 | (require 'dbus) |
| 153 | 153 | ||
| 154 | (declare-function tree-widget-set-theme "tree-widget") | 154 | (autoload 'tree-widget-set-theme "tree-widget") |
| 155 | (declare-function widget-create-child-and-convert "wid-edit") | 155 | (autoload 'widget-create-child-and-convert "wid-edit") |
| 156 | (declare-function widget-default-value-set "wid-edit") | 156 | (autoload 'widget-default-value-set "wid-edit") |
| 157 | (declare-function widget-field-end "wid-edit") | 157 | (autoload 'widget-field-end "wid-edit") |
| 158 | (declare-function widget-member "wid-edit") | 158 | (autoload 'widget-member "wid-edit") |
| 159 | (defvar tree-widget-after-toggle-functions) | 159 | (defvar tree-widget-after-toggle-functions) |
| 160 | 160 | ||
| 161 | (defvar secrets-enabled nil | 161 | (defvar secrets-enabled nil |
| @@ -563,7 +563,7 @@ The object paths of the found items are returned as list." | |||
| 563 | (setq props (add-to-list | 563 | (setq props (add-to-list |
| 564 | 'props | 564 | 'props |
| 565 | (list :dict-entry | 565 | (list :dict-entry |
| 566 | (symbol-name (car attributes)) | 566 | (substring (symbol-name (car attributes)) 1) |
| 567 | (cadr attributes)) | 567 | (cadr attributes)) |
| 568 | 'append) | 568 | 'append) |
| 569 | attributes (cddr attributes))) | 569 | attributes (cddr attributes))) |
| @@ -601,7 +601,7 @@ The object path of the created item is returned." | |||
| 601 | (setq props (add-to-list | 601 | (setq props (add-to-list |
| 602 | 'props | 602 | 'props |
| 603 | (list :dict-entry | 603 | (list :dict-entry |
| 604 | (symbol-name (car attributes)) | 604 | (substring (symbol-name (car attributes)) 1) |
| 605 | (cadr attributes)) | 605 | (cadr attributes)) |
| 606 | 'append) | 606 | 'append) |
| 607 | attributes (cddr attributes))) | 607 | attributes (cddr attributes))) |
| @@ -656,7 +656,8 @@ If there is no such item, or the item has no attributes, return nil." | |||
| 656 | (let ((item-path (secrets-item-path collection item))) | 656 | (let ((item-path (secrets-item-path collection item))) |
| 657 | (unless (secrets-empty-path item-path) | 657 | (unless (secrets-empty-path item-path) |
| 658 | (mapcar | 658 | (mapcar |
| 659 | (lambda (attribute) (cons (intern (car attribute)) (cadr attribute))) | 659 | (lambda (attribute) |
| 660 | (cons (intern (concat ":" (car attribute))) (cadr attribute))) | ||
| 660 | (dbus-get-property | 661 | (dbus-get-property |
| 661 | :session secrets-service item-path | 662 | :session secrets-service item-path |
| 662 | secrets-interface-item "Attributes"))))) | 663 | secrets-interface-item "Attributes"))))) |
| @@ -678,13 +679,10 @@ If there is no such item, or the item doesn't own this attribute, return nil." | |||
| 678 | ;;; Visualization. | 679 | ;;; Visualization. |
| 679 | 680 | ||
| 680 | (define-derived-mode secrets-mode nil "Secrets" | 681 | (define-derived-mode secrets-mode nil "Secrets" |
| 681 | "Major mode for presenting search results of a Xesam search. | 682 | "Major mode for presenting password entries retrieved by Security Service. |
| 682 | In this mode, widgets represent the search results. | 683 | In this mode, widgets represent the search results. |
| 683 | 684 | ||
| 684 | \\{secrets-mode-map} | 685 | \\{secrets-mode-map}" |
| 685 | Turning on Xesam mode runs the normal hook `xesam-mode-hook'. It | ||
| 686 | can be used to set `xesam-notify-function', which must a search | ||
| 687 | engine specific, widget :notify function to visualize xesam:url." | ||
| 688 | ;; Keymap. | 686 | ;; Keymap. |
| 689 | (setq secrets-mode-map (copy-keymap special-mode-map)) | 687 | (setq secrets-mode-map (copy-keymap special-mode-map)) |
| 690 | (set-keymap-parent secrets-mode-map widget-keymap) | 688 | (set-keymap-parent secrets-mode-map widget-keymap) |
| @@ -707,19 +705,27 @@ engine specific, widget :notify function to visualize xesam:url." | |||
| 707 | ;; keymap etc. So we create a dummy buffer. Stupid. | 705 | ;; keymap etc. So we create a dummy buffer. Stupid. |
| 708 | (with-temp-buffer (secrets-mode)) | 706 | (with-temp-buffer (secrets-mode)) |
| 709 | 707 | ||
| 710 | ;;;###autoload | 708 | ;; We autoload `secrets-show-secrets' only on systems with D-Bus support. |
| 709 | ;;;###autoload(when (featurep 'dbusbind) | ||
| 710 | ;;;###autoload (autoload 'secrets-show-secrets "secrets" nil t)) | ||
| 711 | |||
| 711 | (defun secrets-show-secrets () | 712 | (defun secrets-show-secrets () |
| 712 | "Display a list of collections from the Secret Service API. | 713 | "Display a list of collections from the Secret Service API. |
| 713 | The collections are in tree view, that means they can be expanded | 714 | The collections are in tree view, that means they can be expanded |
| 714 | to the corresponding secret items, which could also be expanded | 715 | to the corresponding secret items, which could also be expanded |
| 715 | to their attributes." | 716 | to their attributes." |
| 716 | (interactive) | 717 | (interactive) |
| 717 | ;; Create the search buffer. | 718 | |
| 718 | (with-current-buffer (get-buffer-create "*Secrets*") | 719 | ;; Check, whether the Secret Service API is enabled. |
| 719 | (switch-to-buffer-other-window (current-buffer)) | 720 | (if (null secrets-enabled) |
| 720 | ;; Inialize buffer with `secrets-mode'. | 721 | (message "Secret Service not available") |
| 721 | (secrets-mode) | 722 | |
| 722 | (secrets-show-collections))) | 723 | ;; Create the search buffer. |
| 724 | (with-current-buffer (get-buffer-create "*Secrets*") | ||
| 725 | (switch-to-buffer-other-window (current-buffer)) | ||
| 726 | ;; Inialize buffer with `secrets-mode'. | ||
| 727 | (secrets-mode) | ||
| 728 | (secrets-show-collections)))) | ||
| 723 | 729 | ||
| 724 | (defun secrets-show-collections () | 730 | (defun secrets-show-collections () |
| 725 | "Show all available collections." | 731 | "Show all available collections." |
| @@ -757,14 +763,14 @@ to their attributes." | |||
| 757 | (attributes (secrets-get-attributes coll item)) | 763 | (attributes (secrets-get-attributes coll item)) |
| 758 | ;; padding is needed to format attribute names. | 764 | ;; padding is needed to format attribute names. |
| 759 | (padding | 765 | (padding |
| 760 | (1+ | 766 | (apply |
| 761 | (apply | 767 | 'max |
| 762 | 'max | 768 | (cons |
| 763 | (cons | 769 | (1+ (length "password")) |
| 764 | (length "password") | 770 | (mapcar |
| 765 | (mapcar | 771 | ;; Atribute names have a leading ":", which will be suppressed. |
| 766 | (lambda (attribute) (length (symbol-name (car attribute)))) | 772 | (lambda (attribute) (length (symbol-name (car attribute)))) |
| 767 | attributes)))))) | 773 | attributes))))) |
| 768 | (cons | 774 | (cons |
| 769 | ;; The password widget. | 775 | ;; The password widget. |
| 770 | `(editable-field :tag "password" | 776 | `(editable-field :tag "password" |
| @@ -779,7 +785,7 @@ to their attributes." | |||
| 779 | "%v\n")) | 785 | "%v\n")) |
| 780 | (mapcar | 786 | (mapcar |
| 781 | (lambda (attribute) | 787 | (lambda (attribute) |
| 782 | (let ((name (symbol-name (car attribute))) | 788 | (let ((name (substring (symbol-name (car attribute)) 1)) |
| 783 | (value (cdr attribute))) | 789 | (value (cdr attribute))) |
| 784 | ;; The attribute widget. | 790 | ;; The attribute widget. |
| 785 | `(editable-field :tag ,name | 791 | `(editable-field :tag ,name |
diff --git a/lisp/net/tramp-fish.el b/lisp/net/tramp-fish.el index dd1947d5f1e..c7617252288 100644 --- a/lisp/net/tramp-fish.el +++ b/lisp/net/tramp-fish.el | |||
| @@ -149,9 +149,12 @@ | |||
| 149 | ;; parameter of `write-region'. Transfer of binary data fails due to | 149 | ;; parameter of `write-region'. Transfer of binary data fails due to |
| 150 | ;; Emacs' process input/output handling. | 150 | ;; Emacs' process input/output handling. |
| 151 | 151 | ||
| 152 | |||
| 153 | ;;; Code: | 152 | ;;; Code: |
| 154 | 153 | ||
| 154 | (eval-when-compile | ||
| 155 | ;; Pacify byte-compiler. | ||
| 156 | (require 'cl)) | ||
| 157 | |||
| 155 | (require 'tramp) | 158 | (require 'tramp) |
| 156 | (require 'tramp-cache) | 159 | (require 'tramp-cache) |
| 157 | (require 'tramp-compat) | 160 | (require 'tramp-compat) |
| @@ -487,13 +490,13 @@ pass to the OPERATION." | |||
| 487 | v 'file-error | 490 | v 'file-error |
| 488 | "Cannot make local copy of non-existing file `%s'" filename)) | 491 | "Cannot make local copy of non-existing file `%s'" filename)) |
| 489 | (let ((tmpfile (tramp-compat-make-temp-file filename))) | 492 | (let ((tmpfile (tramp-compat-make-temp-file filename))) |
| 490 | (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile) | 493 | (with-progress-reporter |
| 491 | (when (tramp-fish-retrieve-data v) | 494 | v 3 (format "Fetching %s to tmp file %s" filename tmpfile) |
| 492 | ;; Save file | 495 | (when (tramp-fish-retrieve-data v) |
| 493 | (with-current-buffer (tramp-get-buffer v) | 496 | ;; Save file |
| 494 | (write-region (point-min) (point-max) tmpfile)) | 497 | (with-current-buffer (tramp-get-buffer v) |
| 495 | (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile) | 498 | (write-region (point-min) (point-max) tmpfile)) |
| 496 | tmpfile)))) | 499 | tmpfile))))) |
| 497 | 500 | ||
| 498 | ;; This function should return "foo/" for directories and "bar" for | 501 | ;; This function should return "foo/" for directories and "bar" for |
| 499 | ;; files. | 502 | ;; files. |
| @@ -591,17 +594,16 @@ WILDCARD and FULL-DIRECTORY-P are not handled." | |||
| 591 | 594 | ||
| 592 | (let ((point (point)) | 595 | (let ((point (point)) |
| 593 | size) | 596 | size) |
| 594 | (tramp-message v 4 "Fetching file %s..." filename) | 597 | (with-progress-reporter v 3 (format "Fetching file %s" filename) |
| 595 | (when (tramp-fish-retrieve-data v) | 598 | (when (tramp-fish-retrieve-data v) |
| 596 | ;; Insert file | 599 | ;; Insert file |
| 597 | (insert | 600 | (insert |
| 598 | (with-current-buffer (tramp-get-buffer v) | 601 | (with-current-buffer (tramp-get-buffer v) |
| 599 | (let ((beg (or beg (point-min))) | 602 | (let ((beg (or beg (point-min))) |
| 600 | (end (min (or end (point-max)) (point-max)))) | 603 | (end (min (or end (point-max)) (point-max)))) |
| 601 | (setq size (- end beg)) | 604 | (setq size (- end beg)) |
| 602 | (buffer-substring beg end)))) | 605 | (buffer-substring beg end)))) |
| 603 | (goto-char point)) | 606 | (goto-char point))) |
| 604 | (tramp-message v 4 "Fetching file %s...done" filename) | ||
| 605 | 607 | ||
| 606 | (list (expand-file-name filename) size))))) | 608 | (list (expand-file-name filename) size))))) |
| 607 | 609 | ||
| @@ -1115,34 +1117,36 @@ connection if a previous connection has died for some reason." | |||
| 1115 | (delete-process p)) | 1117 | (delete-process p)) |
| 1116 | (setenv "TERM" tramp-terminal-type) | 1118 | (setenv "TERM" tramp-terminal-type) |
| 1117 | (setenv "PS1" tramp-initial-end-of-output) | 1119 | (setenv "PS1" tramp-initial-end-of-output) |
| 1118 | (tramp-message | 1120 | (with-progress-reporter |
| 1119 | vec 3 "Opening connection for %s@%s using %s..." | 1121 | vec 3 |
| 1120 | tramp-current-user tramp-current-host tramp-current-method) | 1122 | (format "Opening connection for %s@%s using %s" |
| 1121 | 1123 | tramp-current-user tramp-current-host tramp-current-method) | |
| 1122 | (let* ((process-connection-type tramp-process-connection-type) | 1124 | |
| 1123 | (inhibit-eol-conversion nil) | 1125 | (let* ((process-connection-type tramp-process-connection-type) |
| 1124 | (coding-system-for-read 'binary) | 1126 | (inhibit-eol-conversion nil) |
| 1125 | (coding-system-for-write 'binary) | 1127 | (coding-system-for-read 'binary) |
| 1126 | ;; This must be done in order to avoid our file name handler. | 1128 | (coding-system-for-write 'binary) |
| 1127 | (p (let ((default-directory | 1129 | ;; This must be done in order to avoid our file name handler. |
| 1128 | (tramp-compat-temporary-file-directory))) | 1130 | (p (let ((default-directory |
| 1129 | (start-process | 1131 | (tramp-compat-temporary-file-directory))) |
| 1130 | (or (tramp-get-connection-property vec "process-name" nil) | 1132 | (start-process |
| 1131 | (tramp-buffer-name vec)) | 1133 | (or (tramp-get-connection-property vec "process-name" nil) |
| 1132 | (tramp-get-connection-buffer vec) | 1134 | (tramp-buffer-name vec)) |
| 1133 | "ssh" "-l" | 1135 | (tramp-get-connection-buffer vec) |
| 1134 | (tramp-file-name-user vec) | 1136 | "ssh" "-l" |
| 1135 | (tramp-file-name-host vec))))) | 1137 | (tramp-file-name-user vec) |
| 1136 | (tramp-message vec 6 "%s" (mapconcat 'identity (process-command p) " ")) | 1138 | (tramp-file-name-host vec))))) |
| 1137 | 1139 | (tramp-message | |
| 1138 | ;; Check whether process is alive. | 1140 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) |
| 1139 | (tramp-set-process-query-on-exit-flag p nil) | 1141 | |
| 1140 | 1142 | ;; Check whether process is alive. | |
| 1141 | (tramp-process-actions p vec tramp-actions-before-shell 60) | 1143 | (tramp-set-process-query-on-exit-flag p nil) |
| 1142 | (tramp-fish-send-command vec tramp-fish-start-fish-server-command) | 1144 | |
| 1143 | (tramp-message | 1145 | (tramp-process-actions p vec tramp-actions-before-shell 60) |
| 1144 | vec 3 | 1146 | (tramp-fish-send-command vec tramp-fish-start-fish-server-command) |
| 1145 | "Found remote shell prompt on `%s'" (tramp-file-name-host vec)))))) | 1147 | (tramp-message |
| 1148 | vec 3 | ||
| 1149 | "Found remote shell prompt on `%s'" (tramp-file-name-host vec))))))) | ||
| 1146 | 1150 | ||
| 1147 | (defun tramp-fish-send-command (vec command) | 1151 | (defun tramp-fish-send-command (vec command) |
| 1148 | "Send the COMMAND to connection VEC." | 1152 | "Send the COMMAND to connection VEC." |
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 0851f3fe86c..6607dae32f5 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el | |||
| @@ -1067,65 +1067,58 @@ connection if a previous connection has died for some reason." | |||
| 1067 | (tramp-gvfs-object-path | 1067 | (tramp-gvfs-object-path |
| 1068 | (tramp-make-tramp-file-name method user host "")))) | 1068 | (tramp-make-tramp-file-name method user host "")))) |
| 1069 | 1069 | ||
| 1070 | (if (zerop (length (tramp-file-name-user vec))) | 1070 | (with-progress-reporter |
| 1071 | (tramp-message | 1071 | vec 3 |
| 1072 | vec 3 "Opening connection for %s using %s..." host method) | 1072 | (if (zerop (length user)) |
| 1073 | (tramp-message | 1073 | (format "Opening connection for %s using %s" host method) |
| 1074 | vec 3 "Opening connection for %s@%s using %s..." user host method)) | 1074 | (format "Opening connection for %s@%s using %s" user host method)) |
| 1075 | 1075 | ||
| 1076 | ;; Enable auth-sorce and password-cache. | 1076 | ;; Enable auth-sorce and password-cache. |
| 1077 | (tramp-set-connection-property vec "first-password-request" t) | 1077 | (tramp-set-connection-property vec "first-password-request" t) |
| 1078 | 1078 | ||
| 1079 | ;; There will be a callback of "askPassword", when a password is | 1079 | ;; There will be a callback of "askPassword", when a password is |
| 1080 | ;; needed. | 1080 | ;; needed. |
| 1081 | (dbus-register-method | 1081 | (dbus-register-method |
| 1082 | :session dbus-service-emacs object-path | 1082 | :session dbus-service-emacs object-path |
| 1083 | tramp-gvfs-interface-mountoperation "askPassword" | 1083 | tramp-gvfs-interface-mountoperation "askPassword" |
| 1084 | 'tramp-gvfs-handler-askpassword) | 1084 | 'tramp-gvfs-handler-askpassword) |
| 1085 | 1085 | ||
| 1086 | ;; There could be a callback of "askQuestion", when adding fingerprint. | 1086 | ;; There could be a callback of "askQuestion", when adding fingerprint. |
| 1087 | (dbus-register-method | 1087 | (dbus-register-method |
| 1088 | :session dbus-service-emacs object-path | 1088 | :session dbus-service-emacs object-path |
| 1089 | tramp-gvfs-interface-mountoperation "askQuestion" | 1089 | tramp-gvfs-interface-mountoperation "askQuestion" |
| 1090 | 'tramp-gvfs-handler-askquestion) | 1090 | 'tramp-gvfs-handler-askquestion) |
| 1091 | 1091 | ||
| 1092 | ;; The call must be asynchronously, because of the "askPassword" | 1092 | ;; The call must be asynchronously, because of the "askPassword" |
| 1093 | ;; or "askQuestion"callbacks. | 1093 | ;; or "askQuestion"callbacks. |
| 1094 | (with-tramp-dbus-call-method vec nil | 1094 | (with-tramp-dbus-call-method vec nil |
| 1095 | :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker | 1095 | :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker |
| 1096 | tramp-gvfs-interface-mounttracker "mountLocation" | 1096 | tramp-gvfs-interface-mounttracker "mountLocation" |
| 1097 | `(:struct | 1097 | `(:struct |
| 1098 | ,(dbus-string-to-byte-array "/") | 1098 | ,(dbus-string-to-byte-array "/") |
| 1099 | ,(tramp-gvfs-mount-spec vec)) | 1099 | ,(tramp-gvfs-mount-spec vec)) |
| 1100 | (dbus-get-unique-name :session) | 1100 | (dbus-get-unique-name :session) |
| 1101 | :object-path object-path) | 1101 | :object-path object-path) |
| 1102 | 1102 | ||
| 1103 | ;; We must wait, until the mount is applied. This will be | 1103 | ;; We must wait, until the mount is applied. This will be |
| 1104 | ;; indicated by the "mounted" signal, i.e. the "fuse-mountpoint" | 1104 | ;; indicated by the "mounted" signal, i.e. the "fuse-mountpoint" |
| 1105 | ;; file property. | 1105 | ;; file property. |
| 1106 | (with-timeout | 1106 | (with-timeout |
| 1107 | (60 | 1107 | (60 |
| 1108 | (if (zerop (length (tramp-file-name-user vec))) | 1108 | (if (zerop (length (tramp-file-name-user vec))) |
| 1109 | (tramp-error | ||
| 1110 | vec 'file-error | ||
| 1111 | "Timeout reached mounting %s using %s" host method) | ||
| 1109 | (tramp-error | 1112 | (tramp-error |
| 1110 | vec 'file-error | 1113 | vec 'file-error |
| 1111 | "Timeout reached mounting %s using %s" host method) | 1114 | "Timeout reached mounting %s@%s using %s" user host method))) |
| 1112 | (tramp-error | 1115 | (while (not (tramp-get-file-property vec "/" "fuse-mountpoint" nil)) |
| 1113 | vec 'file-error | 1116 | (read-event nil nil 0.1))) |
| 1114 | "Timeout reached mounting %s@%s using %s" user host method))) | 1117 | |
| 1115 | (while (not (tramp-get-file-property vec "/" "fuse-mountpoint" nil)) | 1118 | ;; We set the connection property "started" in order to put the |
| 1116 | (read-event nil nil 0.1))) | 1119 | ;; remote location into the cache, which is helpful for further |
| 1117 | 1120 | ;; completion. | |
| 1118 | ;; We set the connection property "started" in order to put the | 1121 | (tramp-set-connection-property vec "started" t))))) |
| 1119 | ;; remote location into the cache, which is helpful for further | ||
| 1120 | ;; completion. | ||
| 1121 | (tramp-set-connection-property vec "started" t) | ||
| 1122 | |||
| 1123 | (if (zerop (length (tramp-file-name-user vec))) | ||
| 1124 | (tramp-message | ||
| 1125 | vec 3 "Opening connection for %s using %s...done" host method) | ||
| 1126 | (tramp-message | ||
| 1127 | vec 3 | ||
| 1128 | "Opening connection for %s@%s using %s...done" user host method))))) | ||
| 1129 | 1122 | ||
| 1130 | 1123 | ||
| 1131 | ;; D-Bus BLUEZ functions. | 1124 | ;; D-Bus BLUEZ functions. |
diff --git a/lisp/net/tramp-imap.el b/lisp/net/tramp-imap.el index 68e181ae7d5..e1e91365792 100644 --- a/lisp/net/tramp-imap.el +++ b/lisp/net/tramp-imap.el | |||
| @@ -241,32 +241,31 @@ of `copy' and `rename'." | |||
| 241 | (t2 (and (tramp-tramp-file-p newname) | 241 | (t2 (and (tramp-tramp-file-p newname) |
| 242 | (tramp-imap-file-name-p newname)))) | 242 | (tramp-imap-file-name-p newname)))) |
| 243 | 243 | ||
| 244 | (when (and (not ok-if-already-exists) (file-exists-p newname)) | ||
| 245 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 246 | (tramp-error | ||
| 247 | v 'file-already-exists "File %s already exists" newname))) | ||
| 248 | |||
| 249 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 250 | (tramp-message v 0 "Transferring %s to %s..." filename newname)) | ||
| 251 | |||
| 252 | ;; We just make a local copy of FILENAME, and write it then to | ||
| 253 | ;; NEWNAME. This must be optimized, when both files are located | ||
| 254 | ;; on the same IMAP server. | ||
| 255 | (with-temp-buffer | ||
| 256 | (if (and t1 t2) | ||
| 257 | ;; We don't encrypt. | ||
| 258 | (with-parsed-tramp-file-name newname nil | ||
| 259 | (insert (tramp-imap-get-file filename nil)) | ||
| 260 | (tramp-imap-put-file | ||
| 261 | v (current-buffer) | ||
| 262 | (tramp-imap-file-name-name v) | ||
| 263 | nil nil (nth 7 (file-attributes filename)))) | ||
| 264 | ;; One of them is not located on a IMAP mailbox. | ||
| 265 | (insert-file-contents filename) | ||
| 266 | (write-region (point-min) (point-max) newname))) | ||
| 267 | |||
| 268 | (with-parsed-tramp-file-name (if t1 filename newname) nil | 244 | (with-parsed-tramp-file-name (if t1 filename newname) nil |
| 269 | (tramp-message v 0 "Transferring %s to %s...done" filename newname)) | 245 | (when (and (not ok-if-already-exists) (file-exists-p newname)) |
| 246 | (tramp-error | ||
| 247 | v 'file-already-exists "File %s already exists" newname)) | ||
| 248 | |||
| 249 | (with-progress-reporter | ||
| 250 | v 0 (format "%s %s to %s" | ||
| 251 | (if (eq op 'copy) "Copying" "Renaming") | ||
| 252 | filename newname) | ||
| 253 | |||
| 254 | ;; We just make a local copy of FILENAME, and write it then to | ||
| 255 | ;; NEWNAME. This must be optimized, when both files are | ||
| 256 | ;; located on the same IMAP server. | ||
| 257 | (with-temp-buffer | ||
| 258 | (if (and t1 t2) | ||
| 259 | ;; We don't encrypt. | ||
| 260 | (with-parsed-tramp-file-name newname v1 | ||
| 261 | (insert (tramp-imap-get-file filename nil)) | ||
| 262 | (tramp-imap-put-file | ||
| 263 | v1 (current-buffer) | ||
| 264 | (tramp-imap-file-name-name v1) | ||
| 265 | nil nil (nth 7 (file-attributes filename)))) | ||
| 266 | ;; One of them is not located on a IMAP mailbox. | ||
| 267 | (insert-file-contents filename) | ||
| 268 | (write-region (point-min) (point-max) newname))))) | ||
| 270 | 269 | ||
| 271 | (when (eq op 'rename) | 270 | (when (eq op 'rename) |
| 272 | (tramp-compat-delete-file filename 'force)))) | 271 | (tramp-compat-delete-file filename 'force)))) |
| @@ -505,17 +504,16 @@ SIZE MODE WEIRD INODE DEVICE)." | |||
| 505 | v 'file-error "File `%s' not found on remote host" filename) | 504 | v 'file-error "File `%s' not found on remote host" filename) |
| 506 | (let ((point (point)) | 505 | (let ((point (point)) |
| 507 | size data) | 506 | size data) |
| 508 | (tramp-message v 4 "Fetching file %s..." filename) | 507 | (with-progress-reporter v 3 (format "Fetching file %s" filename) |
| 509 | (insert (tramp-imap-get-file filename t)) | 508 | (insert (tramp-imap-get-file filename t)) |
| 510 | (setq size (- (point) point)) | 509 | (setq size (- (point) point)) |
| 511 | ;;; TODO: handle ranges. | 510 | ;;; TODO: handle ranges. |
| 512 | ;;; (let ((beg (or beg (point-min))) | 511 | ;;; (let ((beg (or beg (point-min))) |
| 513 | ;;; (end (min (or end (point-max)) (point-max)))) | 512 | ;;; (end (min (or end (point-max)) (point-max)))) |
| 514 | ;;; (setq size (- end beg)) | 513 | ;;; (setq size (- end beg)) |
| 515 | ;;; (buffer-substring beg end)) | 514 | ;;; (buffer-substring beg end)) |
| 516 | (goto-char point) | 515 | (goto-char point) |
| 517 | (tramp-message v 4 "Fetching file %s...done" filename) | 516 | (list (expand-file-name filename) size)))))) |
| 518 | (list (expand-file-name filename) size))))) | ||
| 519 | 517 | ||
| 520 | (defun tramp-imap-handle-file-exists-p (filename) | 518 | (defun tramp-imap-handle-file-exists-p (filename) |
| 521 | "Like `file-exists-p' for Tramp files." | 519 | "Like `file-exists-p' for Tramp files." |
| @@ -588,12 +586,12 @@ SIZE MODE WEIRD INODE DEVICE)." | |||
| 588 | v 'file-error | 586 | v 'file-error |
| 589 | "Cannot make local copy of non-existing file `%s'" filename)) | 587 | "Cannot make local copy of non-existing file `%s'" filename)) |
| 590 | (let ((tmpfile (tramp-compat-make-temp-file filename))) | 588 | (let ((tmpfile (tramp-compat-make-temp-file filename))) |
| 591 | (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile) | 589 | (with-progress-reporter |
| 592 | (with-temp-buffer | 590 | v 3 (format "Fetching %s to tmp file %s" filename tmpfile) |
| 593 | (insert-file-contents filename) | 591 | (with-temp-buffer |
| 594 | (write-region (point-min) (point-max) tmpfile) | 592 | (insert-file-contents filename) |
| 595 | (tramp-message v 4 "Fetching %s to tmp file %s...done" filename tmpfile) | 593 | (write-region (point-min) (point-max) tmpfile) |
| 596 | tmpfile)))) | 594 | tmpfile))))) |
| 597 | 595 | ||
| 598 | (defun tramp-imap-put-file | 596 | (defun tramp-imap-put-file |
| 599 | (vec filename-or-buffer &optional subject inode encode size) | 597 | (vec filename-or-buffer &optional subject inode encode size) |
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index c5addae8e5d..d643e85ec24 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el | |||
| @@ -334,6 +334,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 334 | ("scp" (tramp-login-program "ssh") | 334 | ("scp" (tramp-login-program "ssh") |
| 335 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 335 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 336 | ("-e" "none"))) | 336 | ("-e" "none"))) |
| 337 | (tramp-async-args (("-q"))) | ||
| 337 | (tramp-remote-sh "/bin/sh") | 338 | (tramp-remote-sh "/bin/sh") |
| 338 | (tramp-copy-program "scp") | 339 | (tramp-copy-program "scp") |
| 339 | (tramp-copy-args (("-P" "%p") ("-p" "%k") | 340 | (tramp-copy-args (("-P" "%p") ("-p" "%k") |
| @@ -349,6 +350,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 349 | ("scp1" (tramp-login-program "ssh") | 350 | ("scp1" (tramp-login-program "ssh") |
| 350 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 351 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 351 | ("-1" "-e" "none"))) | 352 | ("-1" "-e" "none"))) |
| 353 | (tramp-async-args (("-q"))) | ||
| 352 | (tramp-remote-sh "/bin/sh") | 354 | (tramp-remote-sh "/bin/sh") |
| 353 | (tramp-copy-program "scp") | 355 | (tramp-copy-program "scp") |
| 354 | (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") | 356 | (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") |
| @@ -364,6 +366,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 364 | ("scp2" (tramp-login-program "ssh") | 366 | ("scp2" (tramp-login-program "ssh") |
| 365 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 367 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 366 | ("-2" "-e" "none"))) | 368 | ("-2" "-e" "none"))) |
| 369 | (tramp-async-args (("-q"))) | ||
| 367 | (tramp-remote-sh "/bin/sh") | 370 | (tramp-remote-sh "/bin/sh") |
| 368 | (tramp-copy-program "scp") | 371 | (tramp-copy-program "scp") |
| 369 | (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") | 372 | (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") |
| @@ -399,6 +402,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 399 | ("sftp" (tramp-login-program "ssh") | 402 | ("sftp" (tramp-login-program "ssh") |
| 400 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 403 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 401 | ("-e" "none"))) | 404 | ("-e" "none"))) |
| 405 | (tramp-async-args (("-q"))) | ||
| 402 | (tramp-remote-sh "/bin/sh") | 406 | (tramp-remote-sh "/bin/sh") |
| 403 | (tramp-copy-program "sftp") | 407 | (tramp-copy-program "sftp") |
| 404 | (tramp-copy-args nil) | 408 | (tramp-copy-args nil) |
| @@ -407,6 +411,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 407 | ("rsync" (tramp-login-program "ssh") | 411 | ("rsync" (tramp-login-program "ssh") |
| 408 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 412 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 409 | ("-e" "none"))) | 413 | ("-e" "none"))) |
| 414 | (tramp-async-args (("-q"))) | ||
| 410 | (tramp-remote-sh "/bin/sh") | 415 | (tramp-remote-sh "/bin/sh") |
| 411 | (tramp-copy-program "rsync") | 416 | (tramp-copy-program "rsync") |
| 412 | (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) | 417 | (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) |
| @@ -420,6 +425,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 420 | ("-o" "ControlPath=%t.%%r@%%h:%%p") | 425 | ("-o" "ControlPath=%t.%%r@%%h:%%p") |
| 421 | ("-o" "ControlMaster=yes") | 426 | ("-o" "ControlMaster=yes") |
| 422 | ("-e" "none"))) | 427 | ("-e" "none"))) |
| 428 | (tramp-async-args (("-q"))) | ||
| 423 | (tramp-remote-sh "/bin/sh") | 429 | (tramp-remote-sh "/bin/sh") |
| 424 | (tramp-copy-program "rsync") | 430 | (tramp-copy-program "rsync") |
| 425 | (tramp-copy-args (("-t" "%k") ("-r"))) | 431 | (tramp-copy-args (("-t" "%k") ("-r"))) |
| @@ -449,6 +455,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 449 | ("ssh" (tramp-login-program "ssh") | 455 | ("ssh" (tramp-login-program "ssh") |
| 450 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 456 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 451 | ("-e" "none"))) | 457 | ("-e" "none"))) |
| 458 | (tramp-async-args (("-q"))) | ||
| 452 | (tramp-remote-sh "/bin/sh") | 459 | (tramp-remote-sh "/bin/sh") |
| 453 | (tramp-copy-program nil) | 460 | (tramp-copy-program nil) |
| 454 | (tramp-copy-args nil) | 461 | (tramp-copy-args nil) |
| @@ -462,6 +469,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 462 | ("ssh1" (tramp-login-program "ssh") | 469 | ("ssh1" (tramp-login-program "ssh") |
| 463 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 470 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 464 | ("-1" "-e" "none"))) | 471 | ("-1" "-e" "none"))) |
| 472 | (tramp-async-args (("-q"))) | ||
| 465 | (tramp-remote-sh "/bin/sh") | 473 | (tramp-remote-sh "/bin/sh") |
| 466 | (tramp-copy-program nil) | 474 | (tramp-copy-program nil) |
| 467 | (tramp-copy-args nil) | 475 | (tramp-copy-args nil) |
| @@ -475,6 +483,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 475 | ("ssh2" (tramp-login-program "ssh") | 483 | ("ssh2" (tramp-login-program "ssh") |
| 476 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 484 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 477 | ("-2" "-e" "none"))) | 485 | ("-2" "-e" "none"))) |
| 486 | (tramp-async-args (("-q"))) | ||
| 478 | (tramp-remote-sh "/bin/sh") | 487 | (tramp-remote-sh "/bin/sh") |
| 479 | (tramp-copy-program nil) | 488 | (tramp-copy-program nil) |
| 480 | (tramp-copy-args nil) | 489 | (tramp-copy-args nil) |
| @@ -489,6 +498,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 489 | (tramp-login-program "ssh1") | 498 | (tramp-login-program "ssh1") |
| 490 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 499 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 491 | ("-e" "none"))) | 500 | ("-e" "none"))) |
| 501 | (tramp-async-args (("-q"))) | ||
| 492 | (tramp-remote-sh "/bin/sh") | 502 | (tramp-remote-sh "/bin/sh") |
| 493 | (tramp-copy-program nil) | 503 | (tramp-copy-program nil) |
| 494 | (tramp-copy-args nil) | 504 | (tramp-copy-args nil) |
| @@ -539,6 +549,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 539 | ("-o" "ControlPath=%t.%%r@%%h:%%p") | 549 | ("-o" "ControlPath=%t.%%r@%%h:%%p") |
| 540 | ("-o" "ControlMaster=yes") | 550 | ("-o" "ControlMaster=yes") |
| 541 | ("-e" "none"))) | 551 | ("-e" "none"))) |
| 552 | (tramp-async-args (("-q"))) | ||
| 542 | (tramp-remote-sh "/bin/sh") | 553 | (tramp-remote-sh "/bin/sh") |
| 543 | (tramp-copy-program "scp") | 554 | (tramp-copy-program "scp") |
| 544 | (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") | 555 | (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") |
| @@ -554,6 +565,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 554 | ("scpx" (tramp-login-program "ssh") | 565 | ("scpx" (tramp-login-program "ssh") |
| 555 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 566 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 556 | ("-e" "none" "-t" "-t" "/bin/sh"))) | 567 | ("-e" "none" "-t" "-t" "/bin/sh"))) |
| 568 | (tramp-async-args (("-q"))) | ||
| 557 | (tramp-remote-sh "/bin/sh") | 569 | (tramp-remote-sh "/bin/sh") |
| 558 | (tramp-copy-program "scp") | 570 | (tramp-copy-program "scp") |
| 559 | (tramp-copy-args (("-p" "%k"))) | 571 | (tramp-copy-args (("-p" "%k"))) |
| @@ -567,6 +579,7 @@ detected as prompt when being sent on echoing hosts, therefore.") | |||
| 567 | ("sshx" (tramp-login-program "ssh") | 579 | ("sshx" (tramp-login-program "ssh") |
| 568 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") | 580 | (tramp-login-args (("%h") ("-l" "%u") ("-p" "%p") |
| 569 | ("-e" "none" "-t" "-t" "/bin/sh"))) | 581 | ("-e" "none" "-t" "-t" "/bin/sh"))) |
| 582 | (tramp-async-args (("-q"))) | ||
| 570 | (tramp-remote-sh "/bin/sh") | 583 | (tramp-remote-sh "/bin/sh") |
| 571 | (tramp-copy-program nil) | 584 | (tramp-copy-program nil) |
| 572 | (tramp-copy-args nil) | 585 | (tramp-copy-args nil) |
| @@ -672,6 +685,11 @@ pair of the form (KEY VALUE). The following KEYs are defined: | |||
| 672 | \"%t\" is replaced by the temporary file name produced with | 685 | \"%t\" is replaced by the temporary file name produced with |
| 673 | `tramp-make-tramp-temp-file'. \"%k\" indicates the keep-date | 686 | `tramp-make-tramp-temp-file'. \"%k\" indicates the keep-date |
| 674 | parameter of a program, if exists. | 687 | parameter of a program, if exists. |
| 688 | * `tramp-async-args' | ||
| 689 | When an asynchronous process is started, we know already that | ||
| 690 | the connection works. Therefore, we can pass additional | ||
| 691 | parameters to suppress diagnostic messages, in order not to | ||
| 692 | tamper the process output. | ||
| 675 | * `tramp-copy-program' | 693 | * `tramp-copy-program' |
| 676 | This specifies the name of the program to use for remotely copying | 694 | This specifies the name of the program to use for remotely copying |
| 677 | the file; this might be the absolute filename of rcp or the name of | 695 | the file; this might be the absolute filename of rcp or the name of |
| @@ -3641,85 +3659,86 @@ and `rename'. FILENAME and NEWNAME must be absolute file names." | |||
| 3641 | (apply 'file-selinux-context (list filename)))) | 3659 | (apply 'file-selinux-context (list filename)))) |
| 3642 | pr tm) | 3660 | pr tm) |
| 3643 | 3661 | ||
| 3644 | (when (and (not ok-if-already-exists) (file-exists-p newname)) | 3662 | (with-parsed-tramp-file-name (if t1 filename newname) nil |
| 3645 | (with-parsed-tramp-file-name (if t1 filename newname) nil | 3663 | (when (and (not ok-if-already-exists) (file-exists-p newname)) |
| 3646 | (tramp-error | 3664 | (tramp-error |
| 3647 | v 'file-already-exists "File %s already exists" newname))) | 3665 | v 'file-already-exists "File %s already exists" newname)) |
| 3648 | 3666 | ||
| 3649 | (with-parsed-tramp-file-name (if t1 filename newname) nil | ||
| 3650 | (with-progress-reporter | 3667 | (with-progress-reporter |
| 3651 | v 0 (format "Transferring %s to %s" filename newname) | 3668 | v 0 (format "%s %s to %s" |
| 3669 | (if (eq op 'copy) "Copying" "Renaming") | ||
| 3670 | filename newname) | ||
| 3652 | 3671 | ||
| 3653 | (cond | 3672 | (cond |
| 3654 | ;; Both are Tramp files. | 3673 | ;; Both are Tramp files. |
| 3655 | ((and t1 t2) | 3674 | ((and t1 t2) |
| 3656 | (with-parsed-tramp-file-name filename v1 | 3675 | (with-parsed-tramp-file-name filename v1 |
| 3657 | (with-parsed-tramp-file-name newname v2 | 3676 | (with-parsed-tramp-file-name newname v2 |
| 3658 | (cond | 3677 | (cond |
| 3659 | ;; Shortcut: if method, host, user are the same for both | 3678 | ;; Shortcut: if method, host, user are the same for |
| 3660 | ;; files, we invoke `cp' or `mv' on the remote host | 3679 | ;; both files, we invoke `cp' or `mv' on the remote |
| 3661 | ;; directly. | 3680 | ;; host directly. |
| 3662 | ((tramp-equal-remote filename newname) | 3681 | ((tramp-equal-remote filename newname) |
| 3663 | (tramp-do-copy-or-rename-file-directly | 3682 | (tramp-do-copy-or-rename-file-directly |
| 3664 | op filename newname | 3683 | op filename newname |
| 3665 | ok-if-already-exists keep-date preserve-uid-gid)) | 3684 | ok-if-already-exists keep-date preserve-uid-gid)) |
| 3666 | 3685 | ||
| 3667 | ;; Try out-of-band operation. | 3686 | ;; Try out-of-band operation. |
| 3668 | ((tramp-method-out-of-band-p | 3687 | ((tramp-method-out-of-band-p |
| 3669 | v1 (nth 7 (file-attributes filename))) | 3688 | v1 (nth 7 (file-attributes filename))) |
| 3670 | (tramp-do-copy-or-rename-file-out-of-band | 3689 | (tramp-do-copy-or-rename-file-out-of-band |
| 3671 | op filename newname keep-date)) | 3690 | op filename newname keep-date)) |
| 3672 | 3691 | ||
| 3673 | ;; No shortcut was possible. So we copy the | 3692 | ;; No shortcut was possible. So we copy the file |
| 3674 | ;; file first. If the operation was `rename', we go | 3693 | ;; first. If the operation was `rename', we go back |
| 3675 | ;; back and delete the original file (if the copy was | 3694 | ;; and delete the original file (if the copy was |
| 3676 | ;; successful). The approach is simple-minded: we | 3695 | ;; successful). The approach is simple-minded: we |
| 3677 | ;; create a new buffer, insert the contents of the | 3696 | ;; create a new buffer, insert the contents of the |
| 3678 | ;; source file into it, then write out the buffer to | 3697 | ;; source file into it, then write out the buffer to |
| 3679 | ;; the target file. The advantage is that it doesn't | 3698 | ;; the target file. The advantage is that it doesn't |
| 3680 | ;; matter which filename handlers are used for the | 3699 | ;; matter which filename handlers are used for the |
| 3681 | ;; source and target file. | 3700 | ;; source and target file. |
| 3682 | (t | 3701 | (t |
| 3683 | (tramp-do-copy-or-rename-file-via-buffer | 3702 | (tramp-do-copy-or-rename-file-via-buffer |
| 3684 | op filename newname keep-date)))))) | 3703 | op filename newname keep-date)))))) |
| 3685 | 3704 | ||
| 3686 | ;; One file is a Tramp file, the other one is local. | 3705 | ;; One file is a Tramp file, the other one is local. |
| 3687 | ((or t1 t2) | 3706 | ((or t1 t2) |
| 3688 | (cond | 3707 | (cond |
| 3689 | ;; Fast track on local machine. | 3708 | ;; Fast track on local machine. |
| 3690 | ((tramp-local-host-p v) | 3709 | ((tramp-local-host-p v) |
| 3691 | (tramp-do-copy-or-rename-file-directly | 3710 | (tramp-do-copy-or-rename-file-directly |
| 3692 | op filename newname | 3711 | op filename newname |
| 3693 | ok-if-already-exists keep-date preserve-uid-gid)) | 3712 | ok-if-already-exists keep-date preserve-uid-gid)) |
| 3694 | 3713 | ||
| 3695 | ;; If the Tramp file has an out-of-band method, the corresponding | 3714 | ;; If the Tramp file has an out-of-band method, the |
| 3696 | ;; copy-program can be invoked. | 3715 | ;; corresponding copy-program can be invoked. |
| 3697 | ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename))) | 3716 | ((tramp-method-out-of-band-p v (nth 7 (file-attributes filename))) |
| 3698 | (tramp-do-copy-or-rename-file-out-of-band | 3717 | (tramp-do-copy-or-rename-file-out-of-band |
| 3699 | op filename newname keep-date)) | 3718 | op filename newname keep-date)) |
| 3700 | 3719 | ||
| 3701 | ;; Use the inline method via a Tramp buffer. | 3720 | ;; Use the inline method via a Tramp buffer. |
| 3702 | (t (tramp-do-copy-or-rename-file-via-buffer | 3721 | (t (tramp-do-copy-or-rename-file-via-buffer |
| 3703 | op filename newname keep-date)))) | 3722 | op filename newname keep-date)))) |
| 3704 | 3723 | ||
| 3705 | (t | 3724 | (t |
| 3706 | ;; One of them must be a Tramp file. | 3725 | ;; One of them must be a Tramp file. |
| 3707 | (error "Tramp implementation says this cannot happen"))) | 3726 | (error "Tramp implementation says this cannot happen"))) |
| 3708 | 3727 | ||
| 3709 | ;; Handle `preserve-selinux-context'. | 3728 | ;; Handle `preserve-selinux-context'. |
| 3710 | (when context (apply 'set-file-selinux-context (list newname context))) | 3729 | (when context (apply 'set-file-selinux-context (list newname context))) |
| 3711 | 3730 | ||
| 3712 | ;; In case of `rename', we must flush the cache of the source file. | 3731 | ;; In case of `rename', we must flush the cache of the source file. |
| 3713 | (when (and t1 (eq op 'rename)) | 3732 | (when (and t1 (eq op 'rename)) |
| 3714 | (with-parsed-tramp-file-name filename v1 | 3733 | (with-parsed-tramp-file-name filename v1 |
| 3715 | (tramp-flush-file-property v1 (file-name-directory localname)) | 3734 | (tramp-flush-file-property v1 (file-name-directory localname)) |
| 3716 | (tramp-flush-file-property v1 localname))) | 3735 | (tramp-flush-file-property v1 localname))) |
| 3717 | 3736 | ||
| 3718 | ;; When newname did exist, we have wrong cached values. | 3737 | ;; When newname did exist, we have wrong cached values. |
| 3719 | (when t2 | 3738 | (when t2 |
| 3720 | (with-parsed-tramp-file-name newname v2 | 3739 | (with-parsed-tramp-file-name newname v2 |
| 3721 | (tramp-flush-file-property v2 (file-name-directory localname)) | 3740 | (tramp-flush-file-property v2 (file-name-directory localname)) |
| 3722 | (tramp-flush-file-property v2 localname))))))) | 3741 | (tramp-flush-file-property v2 localname))))))) |
| 3723 | 3742 | ||
| 3724 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) | 3743 | (defun tramp-do-copy-or-rename-file-via-buffer (op filename newname keep-date) |
| 3725 | "Use an Emacs buffer to copy or rename a file. | 3744 | "Use an Emacs buffer to copy or rename a file. |
| @@ -4752,7 +4771,7 @@ Lisp error raised when PROGRAM is nil is trapped also, returning 1." | |||
| 4752 | (rem-enc | 4771 | (rem-enc |
| 4753 | (save-excursion | 4772 | (save-excursion |
| 4754 | (with-progress-reporter | 4773 | (with-progress-reporter |
| 4755 | v 5 (format "Encoding remote file %s" filename) | 4774 | v 3 (format "Encoding remote file %s" filename) |
| 4756 | (tramp-barf-unless-okay | 4775 | (tramp-barf-unless-okay |
| 4757 | v (format rem-enc (tramp-shell-quote-argument localname)) | 4776 | v (format rem-enc (tramp-shell-quote-argument localname)) |
| 4758 | "Encoding remote file failed")) | 4777 | "Encoding remote file failed")) |
| @@ -5323,46 +5342,50 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." | |||
| 5323 | ;; any other remote command. | 5342 | ;; any other remote command. |
| 5324 | (defun tramp-handle-vc-registered (file) | 5343 | (defun tramp-handle-vc-registered (file) |
| 5325 | "Like `vc-registered' for Tramp files." | 5344 | "Like `vc-registered' for Tramp files." |
| 5326 | (with-parsed-tramp-file-name file nil | 5345 | (with-temp-message "" |
| 5327 | 5346 | (with-parsed-tramp-file-name file nil | |
| 5328 | ;; There could be new files, created by the vc backend. We cannot | 5347 | (with-progress-reporter |
| 5329 | ;; reuse the old cache entries, therefore. | 5348 | v 3 (format "Checking `vc-registered' for %s" file) |
| 5330 | (let (tramp-vc-registered-file-names | 5349 | |
| 5331 | (tramp-cache-inhibit-cache (current-time)) | 5350 | ;; There could be new files, created by the vc backend. We |
| 5332 | (file-name-handler-alist | 5351 | ;; cannot reuse the old cache entries, therefore. |
| 5333 | `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) | 5352 | (let (tramp-vc-registered-file-names |
| 5334 | 5353 | (tramp-cache-inhibit-cache (current-time)) | |
| 5335 | ;; Here we collect only file names, which need an operation. | 5354 | (file-name-handler-alist |
| 5336 | (tramp-run-real-handler 'vc-registered (list file)) | 5355 | `((,tramp-file-name-regexp . tramp-vc-file-name-handler)))) |
| 5337 | (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) | 5356 | |
| 5338 | 5357 | ;; Here we collect only file names, which need an operation. | |
| 5339 | ;; Send just one command, in order to fill the cache. | 5358 | (tramp-run-real-handler 'vc-registered (list file)) |
| 5340 | (when tramp-vc-registered-file-names | 5359 | (tramp-message v 10 "\n%s" tramp-vc-registered-file-names) |
| 5341 | (tramp-maybe-send-script | 5360 | |
| 5342 | v | 5361 | ;; Send just one command, in order to fill the cache. |
| 5343 | (format tramp-vc-registered-read-file-names | 5362 | (when tramp-vc-registered-file-names |
| 5344 | (tramp-get-file-exists-command v) | 5363 | (tramp-maybe-send-script |
| 5345 | (format "%s -r" (tramp-get-test-command v))) | 5364 | v |
| 5346 | "tramp_vc_registered_read_file_names") | 5365 | (format tramp-vc-registered-read-file-names |
| 5347 | 5366 | (tramp-get-file-exists-command v) | |
| 5348 | (dolist | 5367 | (format "%s -r" (tramp-get-test-command v))) |
| 5349 | (elt | 5368 | "tramp_vc_registered_read_file_names") |
| 5350 | (tramp-send-command-and-read | 5369 | |
| 5351 | v | 5370 | (dolist |
| 5352 | (format | 5371 | (elt |
| 5353 | "tramp_vc_registered_read_file_names %s" | 5372 | (tramp-send-command-and-read |
| 5354 | (mapconcat 'tramp-shell-quote-argument | 5373 | v |
| 5355 | tramp-vc-registered-file-names | 5374 | (format |
| 5356 | " ")))) | 5375 | "tramp_vc_registered_read_file_names %s" |
| 5357 | 5376 | (mapconcat 'tramp-shell-quote-argument | |
| 5358 | (tramp-set-file-property v (car elt) (cadr elt) (cadr (cdr elt)))))) | 5377 | tramp-vc-registered-file-names |
| 5359 | 5378 | " ")))) | |
| 5360 | ;; Second run. Now all `file-exists-p' or `file-readable-p' calls | 5379 | |
| 5361 | ;; shall be answered from the file cache. | 5380 | (tramp-set-file-property |
| 5362 | ;; We unset `process-file-side-effects' in order to keep the cache | 5381 | v (car elt) (cadr elt) (cadr (cdr elt)))))) |
| 5363 | ;; when `process-file' calls appear. | 5382 | |
| 5364 | (let (process-file-side-effects) | 5383 | ;; Second run. Now all `file-exists-p' or `file-readable-p' |
| 5365 | (tramp-run-real-handler 'vc-registered (list file))))) | 5384 | ;; calls shall be answered from the file cache. We unset |
| 5385 | ;; `process-file-side-effects' in order to keep the cache when | ||
| 5386 | ;; `process-file' calls appear. | ||
| 5387 | (let (process-file-side-effects) | ||
| 5388 | (tramp-run-real-handler 'vc-registered (list file))))))) | ||
| 5366 | 5389 | ||
| 5367 | ;;;###autoload | 5390 | ;;;###autoload |
| 5368 | (progn (defun tramp-run-real-handler (operation args) | 5391 | (progn (defun tramp-run-real-handler (operation args) |
| @@ -7380,6 +7403,7 @@ Does not do anything if a connection is already open, but re-opens the | |||
| 7380 | connection if a previous connection has died for some reason." | 7403 | connection if a previous connection has died for some reason." |
| 7381 | (catch 'uname-changed | 7404 | (catch 'uname-changed |
| 7382 | (let ((p (tramp-get-connection-process vec)) | 7405 | (let ((p (tramp-get-connection-process vec)) |
| 7406 | (process-name (tramp-get-connection-property vec "process-name" nil)) | ||
| 7383 | (process-environment (copy-sequence process-environment))) | 7407 | (process-environment (copy-sequence process-environment))) |
| 7384 | 7408 | ||
| 7385 | ;; If too much time has passed since last command was sent, look | 7409 | ;; If too much time has passed since last command was sent, look |
| @@ -7413,126 +7437,135 @@ connection if a previous connection has died for some reason." | |||
| 7413 | ;; We call `tramp-get-buffer' in order to get a debug buffer for | 7437 | ;; We call `tramp-get-buffer' in order to get a debug buffer for |
| 7414 | ;; messages from the beginning. | 7438 | ;; messages from the beginning. |
| 7415 | (tramp-get-buffer vec) | 7439 | (tramp-get-buffer vec) |
| 7416 | (if (zerop (length (tramp-file-name-user vec))) | 7440 | (with-progress-reporter |
| 7417 | (tramp-message | 7441 | vec 3 |
| 7418 | vec 3 "Opening connection for %s using %s" | 7442 | (if (zerop (length (tramp-file-name-user vec))) |
| 7419 | (tramp-file-name-host vec) | 7443 | (format "Opening connection for %s using %s" |
| 7420 | (tramp-file-name-method vec)) | 7444 | (tramp-file-name-host vec) |
| 7421 | (tramp-message | 7445 | (tramp-file-name-method vec)) |
| 7422 | vec 3 "Opening connection for %s@%s using %s" | 7446 | (format "Opening connection for %s@%s using %s" |
| 7423 | (tramp-file-name-user vec) | 7447 | (tramp-file-name-user vec) |
| 7424 | (tramp-file-name-host vec) | 7448 | (tramp-file-name-host vec) |
| 7425 | (tramp-file-name-method vec))) | 7449 | (tramp-file-name-method vec))) |
| 7426 | 7450 | ||
| 7427 | ;; Start new process. | 7451 | ;; Start new process. |
| 7428 | (when (and p (processp p)) | 7452 | (when (and p (processp p)) |
| 7429 | (delete-process p)) | 7453 | (delete-process p)) |
| 7430 | (setenv "TERM" tramp-terminal-type) | 7454 | (setenv "TERM" tramp-terminal-type) |
| 7431 | (setenv "LC_ALL" "C") | 7455 | (setenv "LC_ALL" "C") |
| 7432 | (setenv "PROMPT_COMMAND") | 7456 | (setenv "PROMPT_COMMAND") |
| 7433 | (setenv "PS1" tramp-initial-end-of-output) | 7457 | (setenv "PS1" tramp-initial-end-of-output) |
| 7434 | (let* ((target-alist (tramp-compute-multi-hops vec)) | 7458 | (let* ((target-alist (tramp-compute-multi-hops vec)) |
| 7435 | (process-connection-type tramp-process-connection-type) | 7459 | (process-connection-type tramp-process-connection-type) |
| 7436 | (process-adaptive-read-buffering nil) | 7460 | (process-adaptive-read-buffering nil) |
| 7437 | (coding-system-for-read nil) | 7461 | (coding-system-for-read nil) |
| 7438 | ;; This must be done in order to avoid our file name handler. | 7462 | ;; This must be done in order to avoid our file name handler. |
| 7439 | (p (let ((default-directory | 7463 | (p (let ((default-directory |
| 7440 | (tramp-compat-temporary-file-directory))) | 7464 | (tramp-compat-temporary-file-directory))) |
| 7441 | (start-process | 7465 | (start-process |
| 7442 | (or (tramp-get-connection-property vec "process-name" nil) | 7466 | (or process-name (tramp-buffer-name vec)) |
| 7443 | (tramp-buffer-name vec)) | 7467 | (tramp-get-connection-buffer vec) |
| 7444 | (tramp-get-connection-buffer vec) | 7468 | tramp-encoding-shell)))) |
| 7445 | tramp-encoding-shell)))) | ||
| 7446 | 7469 | ||
| 7447 | (tramp-message | 7470 | (tramp-message |
| 7448 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) | 7471 | vec 6 "%s" (mapconcat 'identity (process-command p) " ")) |
| 7449 | 7472 | ||
| 7450 | ;; Check whether process is alive. | 7473 | ;; Check whether process is alive. |
| 7451 | (tramp-set-process-query-on-exit-flag p nil) | 7474 | (tramp-set-process-query-on-exit-flag p nil) |
| 7452 | (with-progress-reporter vec 3 "Waiting 60s for local shell to come up" | ||
| 7453 | (tramp-barf-if-no-shell-prompt | 7475 | (tramp-barf-if-no-shell-prompt |
| 7454 | p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell)) | 7476 | p 60 "Couldn't find local shell prompt %s" tramp-encoding-shell) |
| 7455 | 7477 | ||
| 7456 | ;; Now do all the connections as specified. | 7478 | ;; Now do all the connections as specified. |
| 7457 | (while target-alist | 7479 | (while target-alist |
| 7458 | (let* ((hop (car target-alist)) | 7480 | (let* ((hop (car target-alist)) |
| 7459 | (l-method (tramp-file-name-method hop)) | 7481 | (l-method (tramp-file-name-method hop)) |
| 7460 | (l-user (tramp-file-name-user hop)) | 7482 | (l-user (tramp-file-name-user hop)) |
| 7461 | (l-host (tramp-file-name-host hop)) | 7483 | (l-host (tramp-file-name-host hop)) |
| 7462 | (l-port nil) | 7484 | (l-port nil) |
| 7463 | (login-program | 7485 | (login-program |
| 7464 | (tramp-get-method-parameter l-method 'tramp-login-program)) | 7486 | (tramp-get-method-parameter |
| 7465 | (login-args | 7487 | l-method 'tramp-login-program)) |
| 7466 | (tramp-get-method-parameter l-method 'tramp-login-args)) | 7488 | (login-args |
| 7467 | (gw-args | 7489 | (tramp-get-method-parameter l-method 'tramp-login-args)) |
| 7468 | (tramp-get-method-parameter l-method 'tramp-gw-args)) | 7490 | (async-args |
| 7469 | (gw (tramp-get-file-property hop "" "gateway" nil)) | 7491 | (tramp-get-method-parameter l-method 'tramp-async-args)) |
| 7470 | (g-method (and gw (tramp-file-name-method gw))) | 7492 | (gw-args |
| 7471 | (g-user (and gw (tramp-file-name-user gw))) | 7493 | (tramp-get-method-parameter l-method 'tramp-gw-args)) |
| 7472 | (g-host (and gw (tramp-file-name-host gw))) | 7494 | (gw (tramp-get-file-property hop "" "gateway" nil)) |
| 7473 | (command login-program) | 7495 | (g-method (and gw (tramp-file-name-method gw))) |
| 7474 | ;; We don't create the temporary file. In fact, it | 7496 | (g-user (and gw (tramp-file-name-user gw))) |
| 7475 | ;; is just a prefix for the ControlPath option of | 7497 | (g-host (and gw (tramp-file-name-host gw))) |
| 7476 | ;; ssh; the real temporary file has another name, and | 7498 | (command login-program) |
| 7477 | ;; it is created and protected by ssh. It is also | 7499 | ;; We don't create the temporary file. In fact, |
| 7478 | ;; removed by ssh, when the connection is closed. | 7500 | ;; it is just a prefix for the ControlPath option |
| 7479 | (tmpfile | 7501 | ;; of ssh; the real temporary file has another |
| 7480 | (tramp-set-connection-property | 7502 | ;; name, and it is created and protected by ssh. |
| 7481 | p "temp-file" | 7503 | ;; It is also removed by ssh, when the connection |
| 7482 | (make-temp-name | 7504 | ;; is closed. |
| 7483 | (expand-file-name | 7505 | (tmpfile |
| 7484 | tramp-temp-name-prefix | 7506 | (tramp-set-connection-property |
| 7485 | (tramp-compat-temporary-file-directory))))) | 7507 | p "temp-file" |
| 7486 | spec) | 7508 | (make-temp-name |
| 7487 | 7509 | (expand-file-name | |
| 7488 | ;; Add gateway arguments if necessary. | 7510 | tramp-temp-name-prefix |
| 7489 | (when (and gw gw-args) | 7511 | (tramp-compat-temporary-file-directory))))) |
| 7490 | (setq login-args (append login-args gw-args))) | 7512 | spec) |
| 7491 | 7513 | ||
| 7492 | ;; Check for port number. Until now, there's no need | 7514 | ;; Add arguments for asynchrononous processes. |
| 7493 | ;; for handling like method, user, host. | 7515 | (when (and process-name async-args) |
| 7494 | (when (string-match tramp-host-with-port-regexp l-host) | 7516 | (setq login-args (append login-args async-args))) |
| 7517 | |||
| 7518 | ;; Add gateway arguments if necessary. | ||
| 7519 | (when (and gw gw-args) | ||
| 7520 | (setq login-args (append login-args gw-args))) | ||
| 7521 | |||
| 7522 | ;; Check for port number. Until now, there's no need | ||
| 7523 | ;; for handling like method, user, host. | ||
| 7524 | (when (string-match tramp-host-with-port-regexp l-host) | ||
| 7495 | (setq l-port (match-string 2 l-host) | 7525 | (setq l-port (match-string 2 l-host) |
| 7496 | l-host (match-string 1 l-host))) | 7526 | l-host (match-string 1 l-host))) |
| 7497 | 7527 | ||
| 7498 | ;; Set variables for computing the prompt for reading | 7528 | ;; Set variables for computing the prompt for reading |
| 7499 | ;; password. They can also be derived from a gateway. | 7529 | ;; password. They can also be derived from a gateway. |
| 7500 | (setq tramp-current-method (or g-method l-method) | 7530 | (setq tramp-current-method (or g-method l-method) |
| 7501 | tramp-current-user (or g-user l-user) | 7531 | tramp-current-user (or g-user l-user) |
| 7502 | tramp-current-host (or g-host l-host)) | 7532 | tramp-current-host (or g-host l-host)) |
| 7503 | 7533 | ||
| 7504 | ;; Replace login-args place holders. | 7534 | ;; Replace login-args place holders. |
| 7505 | (setq | 7535 | (setq |
| 7506 | l-host (or l-host "") | 7536 | l-host (or l-host "") |
| 7507 | l-user (or l-user "") | 7537 | l-user (or l-user "") |
| 7508 | l-port (or l-port "") | 7538 | l-port (or l-port "") |
| 7509 | spec (format-spec-make ?h l-host ?u l-user ?p l-port ?t tmpfile) | 7539 | spec (format-spec-make |
| 7510 | command | 7540 | ?h l-host ?u l-user ?p l-port ?t tmpfile) |
| 7511 | (concat | 7541 | command |
| 7512 | ;; We do not want to see the trailing local prompt in | 7542 | (concat |
| 7513 | ;; `start-file-process'. | 7543 | ;; We do not want to see the trailing local prompt in |
| 7514 | (unless (memq system-type '(windows-nt)) "exec ") | 7544 | ;; `start-file-process'. |
| 7515 | command " " | 7545 | (unless (memq system-type '(windows-nt)) "exec ") |
| 7516 | (mapconcat | 7546 | command " " |
| 7517 | (lambda (x) | 7547 | (mapconcat |
| 7518 | (setq x (mapcar (lambda (y) (format-spec y spec)) x)) | 7548 | (lambda (x) |
| 7519 | (unless (member "" x) (mapconcat 'identity x " "))) | 7549 | (setq x (mapcar (lambda (y) (format-spec y spec)) x)) |
| 7520 | login-args " ") | 7550 | (unless (member "" x) (mapconcat 'identity x " "))) |
| 7521 | ;; Local shell could be a Windows COMSPEC. It doesn't | 7551 | login-args " ") |
| 7522 | ;; know the ";" syntax, but we must exit always for | 7552 | ;; Local shell could be a Windows COMSPEC. It |
| 7523 | ;; `start-file-process'. "exec" does not work either. | 7553 | ;; doesn't know the ";" syntax, but we must exit |
| 7524 | (if (memq system-type '(windows-nt)) " && exit || exit"))) | 7554 | ;; always for `start-file-process'. "exec" does not |
| 7525 | 7555 | ;; work either. | |
| 7526 | ;; Send the command. | 7556 | (if (memq system-type '(windows-nt)) " && exit || exit"))) |
| 7527 | (tramp-message vec 3 "Sending command `%s'" command) | 7557 | |
| 7528 | (tramp-send-command vec command t t) | 7558 | ;; Send the command. |
| 7529 | (tramp-process-actions p vec tramp-actions-before-shell 60) | 7559 | (tramp-message vec 3 "Sending command `%s'" command) |
| 7530 | (tramp-message vec 3 "Found remote shell prompt on `%s'" l-host)) | 7560 | (tramp-send-command vec command t t) |
| 7531 | ;; Next hop. | 7561 | (tramp-process-actions p vec tramp-actions-before-shell 60) |
| 7532 | (setq target-alist (cdr target-alist))) | 7562 | (tramp-message |
| 7533 | 7563 | vec 3 "Found remote shell prompt on `%s'" l-host)) | |
| 7534 | ;; Make initial shell settings. | 7564 | ;; Next hop. |
| 7535 | (tramp-open-connection-setup-interactive-shell p vec)))))) | 7565 | (setq target-alist (cdr target-alist))) |
| 7566 | |||
| 7567 | ;; Make initial shell settings. | ||
| 7568 | (tramp-open-connection-setup-interactive-shell p vec))))))) | ||
| 7536 | 7569 | ||
| 7537 | (defun tramp-send-command (vec command &optional neveropen nooutput) | 7570 | (defun tramp-send-command (vec command &optional neveropen nooutput) |
| 7538 | "Send the COMMAND to connection VEC. | 7571 | "Send the COMMAND to connection VEC. |
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 5eb9840a4ca..101b2585186 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el | |||
| @@ -404,6 +404,7 @@ reference.") | |||
| 404 | (define-key map "\M-}" 'nxml-forward-paragraph) | 404 | (define-key map "\M-}" 'nxml-forward-paragraph) |
| 405 | (define-key map "\M-h" 'nxml-mark-paragraph) | 405 | (define-key map "\M-h" 'nxml-mark-paragraph) |
| 406 | (define-key map "\C-c\C-f" 'nxml-finish-element) | 406 | (define-key map "\C-c\C-f" 'nxml-finish-element) |
| 407 | (define-key map "\C-c/" 'nxml-finish-element) | ||
| 407 | (define-key map "\C-c\C-m" 'nxml-split-element) | 408 | (define-key map "\C-c\C-m" 'nxml-split-element) |
| 408 | (define-key map "\C-c\C-b" 'nxml-balanced-close-start-tag-block) | 409 | (define-key map "\C-c\C-b" 'nxml-balanced-close-start-tag-block) |
| 409 | (define-key map "\C-c\C-i" 'nxml-balanced-close-start-tag-inline) | 410 | (define-key map "\C-c\C-i" 'nxml-balanced-close-start-tag-inline) |
diff --git a/lisp/password-cache.el b/lisp/password-cache.el index 126205a532f..7c07642a1f3 100644 --- a/lisp/password-cache.el +++ b/lisp/password-cache.el | |||
| @@ -105,7 +105,7 @@ remove incorrect ones from the cache." | |||
| 105 | 105 | ||
| 106 | (defun password-cache-remove (key) | 106 | (defun password-cache-remove (key) |
| 107 | "Remove password indexed by KEY from password cache. | 107 | "Remove password indexed by KEY from password cache. |
| 108 | This is typically run be a timer setup from `password-cache-add', | 108 | This is typically run by a timer setup from `password-cache-add', |
| 109 | but can be invoked at any time to forcefully remove passwords | 109 | but can be invoked at any time to forcefully remove passwords |
| 110 | from the cache. This may be useful when it has been detected | 110 | from the cache. This may be useful when it has been detected |
| 111 | that a password is invalid, so that `password-read' query the | 111 | that a password is invalid, so that `password-read' query the |
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 2d28d003fd5..1ee3c295fe1 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el | |||
| @@ -2245,50 +2245,50 @@ comment at the start of cc-engine.el for more info." | |||
| 2245 | (setq cnt (1- cnt))))) | 2245 | (setq cnt (1- cnt))))) |
| 2246 | (point))) | 2246 | (point))) |
| 2247 | 2247 | ||
| 2248 | (defun c-state-balance-parens-backwards (here top) | 2248 | (defun c-state-balance-parens-backwards (here- here+ top) |
| 2249 | ;; Return the position of the opening paren/brace/bracket before HERE which | 2249 | ;; Return the position of the opening paren/brace/bracket before HERE- which |
| 2250 | ;; matches the outermost close p/b/b between HERE and TOP, like this: | 2250 | ;; matches the outermost close p/b/b between HERE+ and TOP. Except when |
| 2251 | ;; | 2251 | ;; there's a macro, HERE- and HERE+ are the same. Like this: |
| 2252 | ;; ...................................... | 2252 | ;; |
| 2253 | ;; | | | 2253 | ;; ............................................ |
| 2254 | ;; ( [ ( ........... ) ( ) ] ) | 2254 | ;; | | |
| 2255 | ;; ^ ^ ^ | 2255 | ;; ( [ ( .........#macro.. ) ( ) ] ) |
| 2256 | ;; | | | | 2256 | ;; ^ ^ ^ ^ |
| 2257 | ;; return HERE TOP | 2257 | ;; | | | | |
| 2258 | ;; return HERE- HERE+ TOP | ||
| 2258 | ;; | 2259 | ;; |
| 2259 | ;; If there aren't enough opening paren/brace/brackets, return the position | 2260 | ;; If there aren't enough opening paren/brace/brackets, return the position |
| 2260 | ;; of the outermost one found, or HERE it there are none. If there are no | 2261 | ;; of the outermost one found, or HERE- if there are none. If there are no |
| 2261 | ;; closeing p/b/bs between HERE and TOP, return HERE. HERE and TOP must not | 2262 | ;; closeing p/b/bs between HERE+ and TOP, return HERE-. HERE-/+ and TOP |
| 2262 | ;; be inside literals. Only the accessible portion of the buffer will be | 2263 | ;; must not be inside literals. Only the accessible portion of the buffer |
| 2263 | ;; scanned. | 2264 | ;; will be scanned. |
| 2264 | 2265 | ||
| 2265 | ;; PART 1: scan from `here' up to `top', accumulating ")"s which enclose | 2266 | ;; PART 1: scan from `here+' up to `top', accumulating ")"s which enclose |
| 2266 | ;; `here'. Go round the next loop each time we pass over such a ")". These | 2267 | ;; `here'. Go round the next loop each time we pass over such a ")". These |
| 2267 | ;; probably match "("s before `here'. | 2268 | ;; probably match "("s before `here-'. |
| 2268 | (let (pos pa ren+1 lonely-rens) | 2269 | (let (pos pa ren+1 lonely-rens) |
| 2269 | (save-excursion | 2270 | (save-excursion |
| 2270 | (save-restriction | 2271 | (save-restriction |
| 2271 | (narrow-to-region (point-min) top) ; This can move point, sometimes. | 2272 | (narrow-to-region (point-min) top) ; This can move point, sometimes. |
| 2272 | (setq pos here) | 2273 | (setq pos here+) |
| 2273 | (c-safe | 2274 | (c-safe |
| 2274 | (while | 2275 | (while |
| 2275 | (setq ren+1 (scan-lists pos 1 1)) ; might signal | 2276 | (setq ren+1 (scan-lists pos 1 1)) ; might signal |
| 2276 | (setq lonely-rens (cons ren+1 lonely-rens) | 2277 | (setq lonely-rens (cons ren+1 lonely-rens) |
| 2277 | pos ren+1))))) | 2278 | pos ren+1))))) |
| 2278 | 2279 | ||
| 2279 | ;; PART 2: Scan back before `here' searching for the "("s | 2280 | ;; PART 2: Scan back before `here-' searching for the "("s |
| 2280 | ;; matching/mismatching the ")"s found above. We only need to direct the | 2281 | ;; matching/mismatching the ")"s found above. We only need to direct the |
| 2281 | ;; caller to scan when we've encountered unmatched right parens. | 2282 | ;; caller to scan when we've encountered unmatched right parens. |
| 2282 | (when lonely-rens | 2283 | (setq pos here-) |
| 2283 | (setq pos here) | 2284 | (when lonely-rens |
| 2284 | (c-safe | 2285 | (c-safe |
| 2285 | (while | 2286 | (while |
| 2286 | (and lonely-rens ; actual values aren't used. | 2287 | (and lonely-rens ; actual values aren't used. |
| 2287 | (setq pa (scan-lists pos -1 1))) | 2288 | (setq pa (scan-lists pos -1 1))) |
| 2288 | (setq pos pa) | 2289 | (setq pos pa) |
| 2289 | (setq lonely-rens (cdr lonely-rens)))) ;) | 2290 | (setq lonely-rens (cdr lonely-rens))))) |
| 2290 | ) | 2291 | pos)) |
| 2291 | pos)) | ||
| 2292 | 2292 | ||
| 2293 | (defun c-parse-state-get-strategy (here good-pos) | 2293 | (defun c-parse-state-get-strategy (here good-pos) |
| 2294 | ;; Determine the scanning strategy for adjusting `c-parse-state', attempting | 2294 | ;; Determine the scanning strategy for adjusting `c-parse-state', attempting |
| @@ -2746,6 +2746,7 @@ comment at the start of cc-engine.el for more info." | |||
| 2746 | lit ; (START . END) of a literal containing some point. | 2746 | lit ; (START . END) of a literal containing some point. |
| 2747 | here-lit-start here-lit-end ; bounds of literal containing `here' | 2747 | here-lit-start here-lit-end ; bounds of literal containing `here' |
| 2748 | ; or `here' itself. | 2748 | ; or `here' itself. |
| 2749 | here- here+ ; start/end of macro around HERE, or HERE | ||
| 2749 | (here-bol (c-point 'bol here)) | 2750 | (here-bol (c-point 'bol here)) |
| 2750 | (too-far-back (max (- here c-state-cache-too-far) 1))) | 2751 | (too-far-back (max (- here c-state-cache-too-far) 1))) |
| 2751 | 2752 | ||
| @@ -2758,57 +2759,73 @@ comment at the start of cc-engine.el for more info." | |||
| 2758 | ;; At this stage, (> pos here); | 2759 | ;; At this stage, (> pos here); |
| 2759 | ;; (< (c-state-cache-top-lparen) here) (or is nil). | 2760 | ;; (< (c-state-cache-top-lparen) here) (or is nil). |
| 2760 | 2761 | ||
| 2761 | ;; CASE 1: The top of the cache is a brace pair which now encloses `here'. | 2762 | (cond |
| 2762 | ;; As good-pos, return the address. of the "{". | 2763 | ((and (consp (car c-state-cache)) |
| 2763 | (if (and (consp (car c-state-cache)) | 2764 | (> (cdar c-state-cache) here)) |
| 2764 | (> (cdar c-state-cache) here)) | 2765 | ;; CASE 1: The top of the cache is a brace pair which now encloses |
| 2765 | ;; Since we've no knowledge of what's inside these braces, we have no | 2766 | ;; `here'. As good-pos, return the address. of the "{". Since we've no |
| 2766 | ;; alternative but to direct the caller to scan the buffer from the | 2767 | ;; knowledge of what's inside these braces, we have no alternative but |
| 2767 | ;; opening brace. | 2768 | ;; to direct the caller to scan the buffer from the opening brace. |
| 2768 | (progn | 2769 | (setq pos (caar c-state-cache)) |
| 2769 | (setq pos (caar c-state-cache)) | 2770 | (setcar c-state-cache pos) |
| 2770 | (setcar c-state-cache pos) | 2771 | (list (1+ pos) pos t)) ; return value. We've just converted a brace pair |
| 2771 | (list (1+ pos) pos t)) ; return value. We've just converted a brace | 2772 | ; entry into a { entry, so the caller needs to |
| 2772 | ; pair entry into a { entry, so the caller | 2773 | ; search for a brace pair before the {. |
| 2773 | ; needs to search for a brace pair before the | 2774 | |
| 2774 | ; {. | 2775 | ;; `here' might be inside a literal. Check for this. |
| 2775 | 2776 | ((progn | |
| 2776 | ;; ;; `here' might be inside a literal. Check for this. | 2777 | (setq lit (c-state-literal-at here) |
| 2777 | (setq lit (c-state-literal-at here) | 2778 | here-lit-start (or (car lit) here) |
| 2778 | here-lit-start (or (car lit) here) | 2779 | here-lit-end (or (cdr lit) here)) |
| 2779 | here-lit-end (or (cdr lit) here)) | 2780 | ;; Has `here' just "newly entered" a macro? |
| 2780 | 2781 | (save-excursion | |
| 2781 | ;; `here' might be nested inside any depth of parens (or brackets but | 2782 | (goto-char here-lit-start) |
| 2782 | ;; not braces). Scan backwards to find the outermost such opening | 2783 | (if (and (c-beginning-of-macro) |
| 2783 | ;; paren, if there is one. This will be the scan position to return. | 2784 | (or (null c-state-old-cpp-beg) |
| 2784 | (save-restriction | 2785 | (not (= (point) c-state-old-cpp-beg)))) |
| 2785 | (narrow-to-region cache-pos (point-max)) | 2786 | (progn |
| 2786 | (setq pos (c-state-balance-parens-backwards here-lit-end pos))) | 2787 | (setq here- (point)) |
| 2787 | 2788 | (c-end-of-macro) | |
| 2788 | (if (< pos here-lit-start) | 2789 | (setq here+ (point))) |
| 2789 | ;; CASE 2: Address of outermost ( or [ which now encloses `here', | 2790 | (setq here- here-lit-start |
| 2790 | ;; but didn't enclose the (previous) `c-state-cache-good-pos'. If | 2791 | here+ here-lit-end))) |
| 2791 | ;; there is a brace pair preceding this, it will already be in | 2792 | |
| 2792 | ;; `c-state-cache', unless there was a brace pair after it, | 2793 | ;; `here' might be nested inside any depth of parens (or brackets but |
| 2793 | ;; i.e. there'll only be one to scan for if we've just deleted one. | 2794 | ;; not braces). Scan backwards to find the outermost such opening |
| 2794 | (list pos (and dropped-cons pos) t) ; Return value. | 2795 | ;; paren, if there is one. This will be the scan position to return. |
| 2795 | 2796 | (save-restriction | |
| 2796 | ;; `here' isn't enclosed in a (previously unrecorded) bracket/paren. | 2797 | (narrow-to-region cache-pos (point-max)) |
| 2797 | ;; Further forward scanning isn't needed, but we still need to find a | 2798 | (setq pos (c-state-balance-parens-backwards here- here+ pos))) |
| 2798 | ;; GOOD-POS. Step out of all enclosing "("s on HERE's line. | 2799 | nil)) ; for the cond |
| 2800 | |||
| 2801 | ((< pos here-lit-start) | ||
| 2802 | ;; CASE 2: Address of outermost ( or [ which now encloses `here', but | ||
| 2803 | ;; didn't enclose the (previous) `c-state-cache-good-pos'. If there is | ||
| 2804 | ;; a brace pair preceding this, it will already be in `c-state-cache', | ||
| 2805 | ;; unless there was a brace pair after it, i.e. there'll only be one to | ||
| 2806 | ;; scan for if we've just deleted one. | ||
| 2807 | (list pos (and dropped-cons pos) t)) ; Return value. | ||
| 2808 | |||
| 2809 | ;; `here' isn't enclosed in a (previously unrecorded) bracket/paren. | ||
| 2810 | ;; Further forward scanning isn't needed, but we still need to find a | ||
| 2811 | ;; GOOD-POS. Step out of all enclosing "("s on HERE's line. | ||
| 2812 | ((progn | ||
| 2799 | (save-restriction | 2813 | (save-restriction |
| 2800 | (narrow-to-region here-bol (point-max)) | 2814 | (narrow-to-region here-bol (point-max)) |
| 2801 | (setq pos here-lit-start) | 2815 | (setq pos here-lit-start) |
| 2802 | (c-safe (while (setq pa (scan-lists pos -1 1)) | 2816 | (c-safe (while (setq pa (scan-lists pos -1 1)) |
| 2803 | (setq pos pa)))) ; might signal | 2817 | (setq pos pa)))) ; might signal |
| 2804 | (if (setq ren (c-safe-scan-lists pos -1 -1 too-far-back)) | 2818 | nil)) ; for the cond |
| 2805 | ;; CASE 3: After a }/)/] before `here''s BOL. | 2819 | |
| 2806 | (list (1+ ren) (and dropped-cons pos) nil) ; Return value | 2820 | ((setq ren (c-safe-scan-lists pos -1 -1 too-far-back)) |
| 2807 | 2821 | ;; CASE 3: After a }/)/] before `here''s BOL. | |
| 2808 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of | 2822 | (list (1+ ren) (and dropped-cons pos) nil)) ; Return value |
| 2809 | ;; literal containing it. | 2823 | |
| 2810 | (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | 2824 | (t |
| 2811 | (list good-pos (and dropped-cons good-pos) nil)))))) | 2825 | ;; CASE 4; Best of a bad job: BOL before `here-bol', or beginning of |
| 2826 | ;; literal containing it. | ||
| 2827 | (setq good-pos (c-state-lit-beg (c-point 'bopl here-bol))) | ||
| 2828 | (list good-pos (and dropped-cons good-pos) nil))))) | ||
| 2812 | 2829 | ||
| 2813 | 2830 | ||
| 2814 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 2831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 0a3c96d7894..64c716208e9 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el | |||
| @@ -1008,7 +1008,7 @@ Set subexpression 1 in the match-data to the name of the type." | |||
| 1008 | :regexp "\\(?:[^[:word:]_`]\\|^\\)\\(`?[[:word:]_]+\\)[^[:word:]_]*") | 1008 | :regexp "\\(?:[^[:word:]_`]\\|^\\)\\(`?[[:word:]_]+\\)[^[:word:]_]*") |
| 1009 | 1009 | ||
| 1010 | ;;;###autoload | 1010 | ;;;###autoload |
| 1011 | (defun f90-mode () | 1011 | (define-derived-mode f90-mode prog-mode "F90" |
| 1012 | "Major mode for editing Fortran 90,95 code in free format. | 1012 | "Major mode for editing Fortran 90,95 code in free format. |
| 1013 | For fixed format code, use `fortran-mode'. | 1013 | For fixed format code, use `fortran-mode'. |
| 1014 | 1014 | ||
| @@ -1065,13 +1065,9 @@ Variables controlling indentation style and extra features: | |||
| 1065 | 1065 | ||
| 1066 | Turning on F90 mode calls the value of the variable `f90-mode-hook' | 1066 | Turning on F90 mode calls the value of the variable `f90-mode-hook' |
| 1067 | with no args, if that value is non-nil." | 1067 | with no args, if that value is non-nil." |
| 1068 | (interactive) | 1068 | :group 'f90 |
| 1069 | (kill-all-local-variables) | 1069 | :syntax-table f90-mode-syntax-table |
| 1070 | (setq major-mode 'f90-mode | 1070 | :abbrev-table f90-mode-abbrev-table |
| 1071 | mode-name "F90" | ||
| 1072 | local-abbrev-table f90-mode-abbrev-table) | ||
| 1073 | (set-syntax-table f90-mode-syntax-table) | ||
| 1074 | (use-local-map f90-mode-map) | ||
| 1075 | (set (make-local-variable 'indent-line-function) 'f90-indent-line) | 1071 | (set (make-local-variable 'indent-line-function) 'f90-indent-line) |
| 1076 | (set (make-local-variable 'indent-region-function) 'f90-indent-region) | 1072 | (set (make-local-variable 'indent-region-function) 'f90-indent-region) |
| 1077 | (set (make-local-variable 'require-final-newline) mode-require-final-newline) | 1073 | (set (make-local-variable 'require-final-newline) mode-require-final-newline) |
| @@ -1094,8 +1090,7 @@ with no args, if that value is non-nil." | |||
| 1094 | 'f90-beginning-of-subprogram) | 1090 | 'f90-beginning-of-subprogram) |
| 1095 | (set (make-local-variable 'end-of-defun-function) 'f90-end-of-subprogram) | 1091 | (set (make-local-variable 'end-of-defun-function) 'f90-end-of-subprogram) |
| 1096 | (set (make-local-variable 'add-log-current-defun-function) | 1092 | (set (make-local-variable 'add-log-current-defun-function) |
| 1097 | #'f90-current-defun) | 1093 | #'f90-current-defun)) |
| 1098 | (run-mode-hooks 'f90-mode-hook)) | ||
| 1099 | 1094 | ||
| 1100 | 1095 | ||
| 1101 | ;; Inline-functions. | 1096 | ;; Inline-functions. |
diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index 3784ba787c4..c37744bfe45 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el | |||
| @@ -778,7 +778,7 @@ Used in the Fortran entry in `hs-special-modes-alist'.") | |||
| 778 | 778 | ||
| 779 | 779 | ||
| 780 | ;;;###autoload | 780 | ;;;###autoload |
| 781 | (defun fortran-mode () | 781 | (define-derived-mode fortran-mode prog-mode "Fortran" |
| 782 | "Major mode for editing Fortran code in fixed format. | 782 | "Major mode for editing Fortran code in fixed format. |
| 783 | For free format code, use `f90-mode'. | 783 | For free format code, use `f90-mode'. |
| 784 | 784 | ||
| @@ -848,13 +848,9 @@ Variables controlling indentation style and extra features: | |||
| 848 | 848 | ||
| 849 | Turning on Fortran mode calls the value of the variable `fortran-mode-hook' | 849 | Turning on Fortran mode calls the value of the variable `fortran-mode-hook' |
| 850 | with no args, if that value is non-nil." | 850 | with no args, if that value is non-nil." |
| 851 | (interactive) | 851 | :group 'fortran |
| 852 | (kill-all-local-variables) | 852 | :syntax-table fortran-mode-syntax-table |
| 853 | (setq major-mode 'fortran-mode | 853 | :abbrev-table fortran-mode-abbrev-table |
| 854 | mode-name "Fortran" | ||
| 855 | local-abbrev-table fortran-mode-abbrev-table) | ||
| 856 | (set-syntax-table fortran-mode-syntax-table) | ||
| 857 | (use-local-map fortran-mode-map) | ||
| 858 | (set (make-local-variable 'indent-line-function) 'fortran-indent-line) | 854 | (set (make-local-variable 'indent-line-function) 'fortran-indent-line) |
| 859 | (set (make-local-variable 'indent-region-function) | 855 | (set (make-local-variable 'indent-region-function) |
| 860 | (lambda (start end) | 856 | (lambda (start end) |
| @@ -906,8 +902,7 @@ with no args, if that value is non-nil." | |||
| 906 | #'fortran-current-defun) | 902 | #'fortran-current-defun) |
| 907 | (set (make-local-variable 'dabbrev-case-fold-search) 'case-fold-search) | 903 | (set (make-local-variable 'dabbrev-case-fold-search) 'case-fold-search) |
| 908 | (set (make-local-variable 'gud-find-expr-function) 'fortran-gud-find-expr) | 904 | (set (make-local-variable 'gud-find-expr-function) 'fortran-gud-find-expr) |
| 909 | (add-hook 'hack-local-variables-hook 'fortran-hack-local-variables nil t) | 905 | (add-hook 'hack-local-variables-hook 'fortran-hack-local-variables nil t)) |
| 910 | (run-mode-hooks 'fortran-mode-hook)) | ||
| 911 | 906 | ||
| 912 | 907 | ||
| 913 | (defun fortran-line-length (nchars &optional global) | 908 | (defun fortran-line-length (nchars &optional global) |
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index de94620c737..3f5fa543813 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el | |||
| @@ -781,12 +781,17 @@ substitution string. Note dynamic scoping of variables.") | |||
| 781 | (file-name-nondirectory bn))) | 781 | (file-name-nondirectory bn))) |
| 782 | (default-alias | 782 | (default-alias |
| 783 | (and fn | 783 | (and fn |
| 784 | (let ((aliases grep-files-aliases) | 784 | (let ((aliases (remove (assoc "all" grep-files-aliases) |
| 785 | grep-files-aliases)) | ||
| 785 | alias) | 786 | alias) |
| 786 | (while aliases | 787 | (while aliases |
| 787 | (setq alias (car aliases) | 788 | (setq alias (car aliases) |
| 788 | aliases (cdr aliases)) | 789 | aliases (cdr aliases)) |
| 789 | (if (string-match (wildcard-to-regexp (cdr alias)) fn) | 790 | (if (string-match (mapconcat |
| 791 | 'wildcard-to-regexp | ||
| 792 | (split-string (cdr alias) nil t) | ||
| 793 | "\\|") | ||
| 794 | fn) | ||
| 790 | (setq aliases nil) | 795 | (setq aliases nil) |
| 791 | (setq alias nil))) | 796 | (setq alias nil))) |
| 792 | (cdr alias)))) | 797 | (cdr alias)))) |
diff --git a/lisp/progmodes/octave-mod.el b/lisp/progmodes/octave-mod.el index eb84be601de..12f561c6814 100644 --- a/lisp/progmodes/octave-mod.el +++ b/lisp/progmodes/octave-mod.el | |||
| @@ -214,6 +214,7 @@ parenthetical grouping.") | |||
| 214 | (define-key map "\C-c\M-\C-d" 'octave-down-block) | 214 | (define-key map "\C-c\M-\C-d" 'octave-down-block) |
| 215 | (define-key map "\C-c\M-\C-h" 'octave-mark-block) | 215 | (define-key map "\C-c\M-\C-h" 'octave-mark-block) |
| 216 | (define-key map "\C-c]" 'octave-close-block) | 216 | (define-key map "\C-c]" 'octave-close-block) |
| 217 | (define-key map "\C-c/" 'octave-close-block) | ||
| 217 | (define-key map "\C-c\C-f" 'octave-insert-defun) | 218 | (define-key map "\C-c\C-f" 'octave-insert-defun) |
| 218 | (define-key map "\C-c\C-h" 'octave-help) | 219 | (define-key map "\C-c\C-h" 'octave-help) |
| 219 | (define-key map "\C-c\C-il" 'octave-send-line) | 220 | (define-key map "\C-c\C-il" 'octave-send-line) |
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index 4081791ae2e..7df42c8b9a2 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el | |||
| @@ -76,7 +76,7 @@ | |||
| 76 | ;; the old `c-forward-into-nomenclature' originally contributed by | 76 | ;; the old `c-forward-into-nomenclature' originally contributed by |
| 77 | ;; Terry_Glanfield dot Southern at rxuk dot xerox dot com. | 77 | ;; Terry_Glanfield dot Southern at rxuk dot xerox dot com. |
| 78 | 78 | ||
| 79 | ;; TODO: ispell-word and subword oriented C-w in isearch. | 79 | ;; TODO: ispell-word. |
| 80 | 80 | ||
| 81 | ;;; Code: | 81 | ;;; Code: |
| 82 | 82 | ||
diff --git a/lisp/replace.el b/lisp/replace.el index 487974073aa..d73692ccc20 100644 --- a/lisp/replace.el +++ b/lisp/replace.el | |||
| @@ -1980,6 +1980,9 @@ make, or the user didn't cancel the call." | |||
| 1980 | (isearch-regexp regexp) | 1980 | (isearch-regexp regexp) |
| 1981 | (search-whitespace-regexp nil) | 1981 | (search-whitespace-regexp nil) |
| 1982 | (isearch-case-fold-search case-fold)) | 1982 | (isearch-case-fold-search case-fold)) |
| 1983 | ;; Set isearch-word to nil because word-replace is regexp-based, | ||
| 1984 | ;; so `isearch-search-fun' should not use `word-search-forward'. | ||
| 1985 | (if (and isearch-word isearch-regexp) (setq isearch-word nil)) | ||
| 1983 | (isearch-lazy-highlight-new-loop range-beg range-end)))) | 1986 | (isearch-lazy-highlight-new-loop range-beg range-end)))) |
| 1984 | 1987 | ||
| 1985 | (defun replace-dehighlight () | 1988 | (defun replace-dehighlight () |
diff --git a/lisp/simple.el b/lisp/simple.el index 48e1148ae6b..608151e5dd2 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -4539,6 +4539,9 @@ rests." | |||
| 4539 | (let ((goal-column 0) | 4539 | (let ((goal-column 0) |
| 4540 | (line-move-visual nil)) | 4540 | (line-move-visual nil)) |
| 4541 | (and (line-move arg t) | 4541 | (and (line-move arg t) |
| 4542 | ;; With bidi reordering, we may not be at bol, | ||
| 4543 | ;; so make sure we are. | ||
| 4544 | (skip-chars-backward "^\n") | ||
| 4542 | (not (bobp)) | 4545 | (not (bobp)) |
| 4543 | (progn | 4546 | (progn |
| 4544 | (while (and (not (bobp)) (invisible-p (1- (point)))) | 4547 | (while (and (not (bobp)) (invisible-p (1- (point)))) |
diff --git a/lisp/smerge-mode.el b/lisp/smerge-mode.el index 732f7d19cf9..e9cba88ea1a 100644 --- a/lisp/smerge-mode.el +++ b/lisp/smerge-mode.el | |||
| @@ -457,8 +457,8 @@ BUF contains a plain diff between match-1 and match-3." | |||
| 457 | 457 | ||
| 458 | (defun smerge-resolve (&optional safe) | 458 | (defun smerge-resolve (&optional safe) |
| 459 | "Resolve the conflict at point intelligently. | 459 | "Resolve the conflict at point intelligently. |
| 460 | This relies on mode-specific knowledge and thus only works in | 460 | This relies on mode-specific knowledge and thus only works in some |
| 461 | some major modes. Uses `smerge-resolve-function' to do the actual work." | 461 | major modes. Uses `smerge-resolve-function' to do the actual work." |
| 462 | (interactive) | 462 | (interactive) |
| 463 | (smerge-match-conflict) | 463 | (smerge-match-conflict) |
| 464 | (smerge-remove-props (match-beginning 0) (match-end 0)) | 464 | (smerge-remove-props (match-beginning 0) (match-end 0)) |
| @@ -815,12 +815,12 @@ Its behavior has mainly two restrictions: | |||
| 815 | This only matters if `smerge-refine-weight-hack' is nil.") | 815 | This only matters if `smerge-refine-weight-hack' is nil.") |
| 816 | 816 | ||
| 817 | (defvar smerge-refine-ignore-whitespace t | 817 | (defvar smerge-refine-ignore-whitespace t |
| 818 | "If non-nil,Indicate that smerge-refine should try to ignore change in whitespace.") | 818 | "If non-nil, indicate that `smerge-refine' should try to ignore change in whitespace.") |
| 819 | 819 | ||
| 820 | (defvar smerge-refine-weight-hack t | 820 | (defvar smerge-refine-weight-hack t |
| 821 | "If non-nil, pass to diff as many lines as there are chars in the region. | 821 | "If non-nil, pass to diff as many lines as there are chars in the region. |
| 822 | I.e. each atomic element (e.g. word) will be copied as many times (on different | 822 | I.e. each atomic element (e.g. word) will be copied as many times (on different |
| 823 | lines) as it has chars. This has 2 advantages: | 823 | lines) as it has chars. This has two advantages: |
| 824 | - if `diff' tries to minimize the number *lines* (rather than chars) | 824 | - if `diff' tries to minimize the number *lines* (rather than chars) |
| 825 | added/removed, this adjust the weights so that adding/removing long | 825 | added/removed, this adjust the weights so that adding/removing long |
| 826 | symbols is considered correspondingly more costly. | 826 | symbols is considered correspondingly more costly. |
| @@ -919,8 +919,8 @@ chars to try and eliminate some spurious differences." | |||
| 919 | "Show fine differences in the two regions BEG1..END1 and BEG2..END2. | 919 | "Show fine differences in the two regions BEG1..END1 and BEG2..END2. |
| 920 | PROPS is an alist of properties to put (via overlays) on the changes. | 920 | PROPS is an alist of properties to put (via overlays) on the changes. |
| 921 | If non-nil, PREPROC is called with no argument in a buffer that contains | 921 | If non-nil, PREPROC is called with no argument in a buffer that contains |
| 922 | a copy of a region, just before preparing it to for `diff'. It can be used to | 922 | a copy of a region, just before preparing it to for `diff'. It can be |
| 923 | replace chars to try and eliminate some spurious differences." | 923 | used to replace chars to try and eliminate some spurious differences." |
| 924 | (let* ((buf (current-buffer)) | 924 | (let* ((buf (current-buffer)) |
| 925 | (pos (point)) | 925 | (pos (point)) |
| 926 | (file1 (make-temp-file "diff1")) | 926 | (file1 (make-temp-file "diff1")) |
| @@ -988,9 +988,9 @@ replace chars to try and eliminate some spurious differences." | |||
| 988 | 988 | ||
| 989 | (defun smerge-refine (&optional part) | 989 | (defun smerge-refine (&optional part) |
| 990 | "Highlight the words of the conflict that are different. | 990 | "Highlight the words of the conflict that are different. |
| 991 | For 3-way conflicts, highlights only 2 of the 3 parts. | 991 | For 3-way conflicts, highlights only two of the three parts. |
| 992 | A numeric argument PART can be used to specify which 2 parts; | 992 | A numeric argument PART can be used to specify which two parts; |
| 993 | repeating the command will highlight other 2 parts." | 993 | repeating the command will highlight other two parts." |
| 994 | (interactive | 994 | (interactive |
| 995 | (if (integerp current-prefix-arg) (list current-prefix-arg) | 995 | (if (integerp current-prefix-arg) (list current-prefix-arg) |
| 996 | (smerge-match-conflict) | 996 | (smerge-match-conflict) |
| @@ -1161,7 +1161,7 @@ buffer names." | |||
| 1161 | 1161 | ||
| 1162 | (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) | 1162 | (defun smerge-makeup-conflict (pt1 pt2 pt3 &optional pt4) |
| 1163 | "Insert diff3 markers to make a new conflict. | 1163 | "Insert diff3 markers to make a new conflict. |
| 1164 | Uses point and mark for 2 of the relevant positions and previous marks | 1164 | Uses point and mark for two of the relevant positions and previous marks |
| 1165 | for the other ones. | 1165 | for the other ones. |
| 1166 | By default, makes up a 2-way conflict, | 1166 | By default, makes up a 2-way conflict, |
| 1167 | with a \\[universal-argument] prefix, makes up a 3-way conflict." | 1167 | with a \\[universal-argument] prefix, makes up a 3-way conflict." |
| @@ -1184,7 +1184,7 @@ with a \\[universal-argument] prefix, makes up a 3-way conflict." | |||
| 1184 | (insert "<<<<<<< MINE\n")) | 1184 | (insert "<<<<<<< MINE\n")) |
| 1185 | (if smerge-mode nil (smerge-mode 1)) | 1185 | (if smerge-mode nil (smerge-mode 1)) |
| 1186 | (smerge-refine)) | 1186 | (smerge-refine)) |
| 1187 | 1187 | ||
| 1188 | 1188 | ||
| 1189 | (defconst smerge-parsep-re | 1189 | (defconst smerge-parsep-re |
| 1190 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" | 1190 | (concat smerge-begin-re "\\|" smerge-end-re "\\|" |
diff --git a/lisp/vc-dir.el b/lisp/vc-dir.el index f24e627de64..5809110e5b5 100644 --- a/lisp/vc-dir.el +++ b/lisp/vc-dir.el | |||
| @@ -1169,7 +1169,8 @@ These are the commands available for use in the file status buffer: | |||
| 1169 | nil t nil nil))))) | 1169 | nil t nil nil))))) |
| 1170 | (unless backend | 1170 | (unless backend |
| 1171 | (setq backend (vc-responsible-backend dir))) | 1171 | (setq backend (vc-responsible-backend dir))) |
| 1172 | (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir backend)) | 1172 | (let (pop-up-windows) ; based on cvs-examine; bug#6204 |
| 1173 | (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir backend))) | ||
| 1173 | (if (derived-mode-p 'vc-dir-mode) | 1174 | (if (derived-mode-p 'vc-dir-mode) |
| 1174 | (vc-dir-refresh) | 1175 | (vc-dir-refresh) |
| 1175 | ;; FIXME: find a better way to pass the backend to `vc-dir-mode'. | 1176 | ;; FIXME: find a better way to pass the backend to `vc-dir-mode'. |