# HG changeset patch # User Michael Albinus # Date 1181247285 0 # Node ID 0cc9b64806d23e58acb7b935b13e50505f5c00bb # Parent de58bd16e0af6dbbb9167f06bc9a535819102b7a Sync with Tramp 2.0.56. diff -r de58bd16e0af -r 0cc9b64806d2 lisp/ChangeLog --- a/lisp/ChangeLog Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/ChangeLog Thu Jun 07 20:14:45 2007 +0000 @@ -1,3 +1,34 @@ +2007-06-07 Michael Albinus + + Sync with Tramp 2.0.56. + + * net/tramp.el: + * net/tramp-ftp.el: + * net/tramp-smb.el: + * net/tramp-util.el: + * net/tramp-vc.el: + Don't load cl.el, because that pollutes the namespace. Replace cl + macros by their implementations where necessary. Requested by + Richard Stallman . + + * net/tramp.el (top): Make `set-buffer-multibyte' an alias if it + doesn't exist. + (with-parsed-tramp-file-name): Protect debug spec during compilation. + (tramp-handle-insert-directory): Check (featurep 'ls-lisp). + (tramp-file-name-p, tramp-file-name-multi-method) + (tramp-file-name-method, tramp-file-name-user) + (tramp-file-name-host, tramp-file-name-localname): New defuns, + replacing defstruct `tramp-file-name'. + (tramp-handle-file-remote-p, tramp-completion-dissect-file-name1) + (tramp-dissect-file-name, tramp-dissect-multi-file-name): + Apply `vector' instead of `make-tramp-file-name'. + (tramp-handle-make-auto-save-file-name): + Apply `tramp-temporary-file-directory' for compatibility reasons. + (tramp-completion-mode): Use `natnump' instead of `wholenump' + because of XEmacs. + (tramp-completion-mode): `last-input-event' is nil when XEmacs is + started. + 2007-06-07 David Kastrup * dired.el (dired-recursive-deletes, dired-recursive-copies): diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp-ftp.el --- a/lisp/net/tramp-ftp.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp-ftp.el Thu Jun 07 20:14:45 2007 +0000 @@ -1,6 +1,7 @@ ;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*- -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, +;; 2007 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -31,12 +32,7 @@ (require 'tramp) -(eval-when-compile - (require 'cl) - (require 'custom) - ;; Emacs 19.34 compatibility hack -- is this needed? - (or (>= emacs-major-version 20) - (load "cl-seq"))) +(eval-when-compile (require 'custom)) ;; Disable Ange-FTP from file-name-handler-alist. ;; To handle EFS, the following functions need to be dealt with: diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp-smb.el --- a/lisp/net/tramp-smb.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp-smb.el Thu Jun 07 20:14:45 2007 +0000 @@ -31,12 +31,7 @@ (require 'tramp) ;; Pacify byte-compiler -(eval-when-compile - (require 'cl) - (require 'custom) - ;; Emacs 19.34 compatibility hack -- is this needed? - (or (>= emacs-major-version 20) - (load "cl-seq"))) +(eval-when-compile (require 'custom)) ;; Avoid byte-compiler warnings if the byte-compiler supports this. ;; Currently, XEmacs supports this. diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp-util.el --- a/lisp/net/tramp-util.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp-util.el Thu Jun 07 20:14:45 2007 +0000 @@ -29,7 +29,6 @@ ;;; Code: -(eval-when-compile (require 'cl)) (require 'compile) (require 'tramp) (add-hook 'tramp-util-unload-hook diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp-uu.el --- a/lisp/net/tramp-uu.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp-uu.el Thu Jun 07 20:14:45 2007 +0000 @@ -1,7 +1,8 @@ ;;; -*- coding: iso-2022-7bit; -*- ;;; tramp-uu.el --- uuencode in Lisp -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, +;; 2007 Free Software Foundation, Inc. ;; Author: Kai Gro,A_(Bjohann ;; Keywords: comm, terminals diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp-vc.el --- a/lisp/net/tramp-vc.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp-vc.el Thu Jun 07 20:14:45 2007 +0000 @@ -31,8 +31,6 @@ ;;; Code: -(eval-when-compile - (require 'cl)) (require 'vc) ;; Old VC defines vc-rcs-release in vc.el, new VC requires extra module. (unless (boundp 'vc-rcs-release) diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/tramp.el --- a/lisp/net/tramp.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/tramp.el Thu Jun 07 20:14:45 2007 +0000 @@ -151,11 +151,7 @@ (when (featurep 'tramp-smb) (unload-feature 'tramp-smb 'force))))))) -(require 'cl) (require 'custom) -;; Emacs 19.34 compatibility hack -- is this needed? -(or (>= emacs-major-version 20) - (load "cl-seq")) (unless (boundp 'custom-print-functions) (defvar custom-print-functions nil)) ; not autoloaded before Emacs 20.4 @@ -175,6 +171,11 @@ (when (boundp 'byte-compile-not-obsolete-var) (setq byte-compile-not-obsolete-var 'directory-sep-char))) +;; `set-buffer-multibyte' comes from Emacs Leim. +(eval-and-compile + (unless (fboundp 'set-buffer-multibyte) + (defalias 'set-buffer-multibyte 'ignore))) + ;;; User Customizable Internal Variables: (defgroup tramp nil @@ -2077,7 +2078,9 @@ (put 'with-parsed-tramp-file-name 'lisp-indent-function 2) ;; Enable debugging. -(def-edebug-spec with-parsed-tramp-file-name (form symbolp body)) +(eval-and-compile + (when (featurep 'edebug) + (def-edebug-spec with-parsed-tramp-file-name (form symbolp body)))) ;; Highlight as keyword. (when (functionp 'font-lock-add-keywords) (funcall 'font-lock-add-keywords @@ -2384,10 +2387,10 @@ "Integer constant overflow in reader") (string-match "^[0-9]+\\([0-9][0-9][0-9][0-9][0-9]\\)\\'" - (caddr err))) - (let* ((big (read (substring (caddr err) 0 + (car (cddr err)))) + (let* ((big (read (substring (car (cddr err)) 0 (match-beginning 1)))) - (small (read (match-string 1 (caddr err)))) + (small (read (match-string 1 (car (cddr err))))) (twiddle (/ small 65536))) (cons (+ big twiddle) (- small (* twiddle 65536)))))))) @@ -2807,7 +2810,7 @@ object))) (cell root)) (while (cdr cell) - (if (and match (not (string-match match (caadr cell)))) + (if (and match (not (string-match match (car (cadr cell))))) ;; Remove from list (setcdr cell (cddr cell)) ;; Include in list @@ -3426,10 +3429,10 @@ (defun tramp-handle-insert-directory (filename switches &optional wildcard full-directory-p) "Like `insert-directory' for tramp files." - (if (and (boundp 'ls-lisp-use-insert-directory-program) + (if (and (featurep 'ls-lisp) (not (symbol-value 'ls-lisp-use-insert-directory-program))) - (tramp-run-real-handler 'insert-directory - (list filename switches wildcard full-directory-p)) + (tramp-run-real-handler + 'insert-directory (list filename switches wildcard full-directory-p)) ;; For the moment, we assume that the remote "ls" program does not ;; grok "--dired". In the future, we should detect this on ;; connection setup. @@ -3869,12 +3872,7 @@ "Like `file-remote-p' for tramp files." (when (tramp-tramp-file-p filename) (with-parsed-tramp-file-name filename nil - (make-tramp-file-name - :multi-method multi-method - :method method - :user user - :host host - :localname "")))) + (vector multi-method method user host "")))) (defun tramp-handle-insert-file-contents (filename &optional visit beg end replace) @@ -3919,7 +3917,7 @@ (when (boundp 'last-coding-system-used) (set 'last-coding-system-used coding-system-used)) (list (expand-file-name filename) - (second result)))))) + (cadr result)))))) (defun tramp-handle-find-backup-file-name (filename) @@ -3978,7 +3976,8 @@ (when (and (string-match (car x) buffer-file-name) (not (car (cddr x)))) (setq tramp-auto-save-directory - (or tramp-auto-save-directory temporary-file-directory)))) + (or tramp-auto-save-directory + (tramp-temporary-file-directory))))) (symbol-value 'auto-save-file-name-transforms))) ;; Create directory. (when tramp-auto-save-directory @@ -4566,7 +4565,7 @@ (member (match-string 1 file) (mapcar 'car tramp-methods))) ((or (equal last-input-event 'tab) ;; Emacs - (and (wholenump last-input-event) + (and (natnump last-input-event) (or ;; ?\t has event-modifier 'control (char-equal last-input-event ?\t) @@ -4575,6 +4574,10 @@ (char-equal last-input-event ?\ ))))) ;; XEmacs (and (featurep 'xemacs) + ;; `last-input-event' might be nil. + (not (null last-input-event)) + ;; `last-input-event' may have no character approximation. + (funcall (symbol-function 'event-to-character) last-input-event) (or ;; ?\t has event-modifier 'control (char-equal @@ -4771,24 +4774,14 @@ (match-string (nth 1 structure) name))) (if (and method (member method tramp-multi-methods)) ;; Not handled (yet). - (make-tramp-file-name - :multi-method method - :method nil - :user nil - :host nil - :localname nil) + (vector method nil nil nil nil) (let ((user (and (nth 2 structure) (match-string (nth 2 structure) name))) (host (and (nth 3 structure) (match-string (nth 3 structure) name))) (localname (and (nth 4 structure) (match-string (nth 4 structure) name)))) - (make-tramp-file-name - :multi-method nil - :method method - :user user - :host host - :localname localname))))))) + (vector nil method user host localname))))))) ;; This function returns all possible method completions, adding the ;; trailing method delimeter. @@ -5191,7 +5184,7 @@ (aref user i) (aref host i)) (format "%s@%s:" (aref method i) (aref host i))) string-list)) - (incf i)) + (setq i (1+ i))) (format "*%s/%s %s*" prefix multi-method (apply 'concat (reverse string-list))))) @@ -5928,7 +5921,7 @@ ;; is done here. (funcall multi-func p m u h command) (erase-buffer) - (incf i))) + (setq i (1+ i)))) (tramp-open-connection-setup-interactive-shell p multi-method method user host) (tramp-post-connection multi-method method user host))))) @@ -6824,7 +6817,8 @@ (defun tramp-mode-string-to-int (mode-string) "Converts a ten-letter `drwxrwxrwx'-style mode string into mode bits." - (let* ((mode-chars (string-to-vector mode-string)) + (let* (case-fold-search + (mode-chars (string-to-vector mode-string)) (owner-read (aref mode-chars 1)) (owner-write (aref mode-chars 2)) (owner-execute-or-setid (aref mode-chars 3)) @@ -6836,45 +6830,61 @@ (other-execute-or-sticky (aref mode-chars 9))) (save-match-data (logior - (case owner-read - (?r (tramp-octal-to-decimal "00400")) (?- 0) - (t (error "Second char `%c' must be one of `r-'" owner-read))) - (case owner-write - (?w (tramp-octal-to-decimal "00200")) (?- 0) - (t (error "Third char `%c' must be one of `w-'" owner-write))) - (case owner-execute-or-setid - (?x (tramp-octal-to-decimal "00100")) - (?S (tramp-octal-to-decimal "04000")) - (?s (tramp-octal-to-decimal "04100")) - (?- 0) - (t (error "Fourth char `%c' must be one of `xsS-'" - owner-execute-or-setid))) - (case group-read - (?r (tramp-octal-to-decimal "00040")) (?- 0) - (t (error "Fifth char `%c' must be one of `r-'" group-read))) - (case group-write - (?w (tramp-octal-to-decimal "00020")) (?- 0) - (t (error "Sixth char `%c' must be one of `w-'" group-write))) - (case group-execute-or-setid - (?x (tramp-octal-to-decimal "00010")) - (?S (tramp-octal-to-decimal "02000")) - (?s (tramp-octal-to-decimal "02010")) - (?- 0) - (t (error "Seventh char `%c' must be one of `xsS-'" - group-execute-or-setid))) - (case other-read - (?r (tramp-octal-to-decimal "00004")) (?- 0) - (t (error "Eighth char `%c' must be one of `r-'" other-read))) - (case other-write - (?w (tramp-octal-to-decimal "00002")) (?- 0) + (cond + ((char-equal owner-read ?r) (tramp-octal-to-decimal "00400")) + ((char-equal owner-read ?-) 0) + (t (error "Second char `%c' must be one of `r-'" owner-read))) + (cond + ((char-equal owner-write ?w) (tramp-octal-to-decimal "00200")) + ((char-equal owner-write ?-) 0) + (t (error "Third char `%c' must be one of `w-'" owner-write))) + (cond + ((char-equal owner-execute-or-setid ?x) + (tramp-octal-to-decimal "00100")) + ((char-equal owner-execute-or-setid ?S) + (tramp-octal-to-decimal "04000")) + ((char-equal owner-execute-or-setid ?s) + (tramp-octal-to-decimal "04100")) + ((char-equal owner-execute-or-setid ?-) 0) + (t (error "Fourth char `%c' must be one of `xsS-'" + owner-execute-or-setid))) + (cond + ((char-equal group-read ?r) (tramp-octal-to-decimal "00040")) + ((char-equal group-read ?-) 0) + (t (error "Fifth char `%c' must be one of `r-'" group-read))) + (cond + ((char-equal group-write ?w) (tramp-octal-to-decimal "00020")) + ((char-equal group-write ?-) 0) + (t (error "Sixth char `%c' must be one of `w-'" group-write))) + (cond + ((char-equal group-execute-or-setid ?x) + (tramp-octal-to-decimal "00010")) + ((char-equal group-execute-or-setid ?S) + (tramp-octal-to-decimal "02000")) + ((char-equal group-execute-or-setid ?s) + (tramp-octal-to-decimal "02010")) + ((char-equal group-execute-or-setid ?-) 0) + (t (error "Seventh char `%c' must be one of `xsS-'" + group-execute-or-setid))) + (cond + ((char-equal other-read ?r) + (tramp-octal-to-decimal "00004")) + ((char-equal other-read ?-) 0) + (t (error "Eighth char `%c' must be one of `r-'" other-read))) + (cond + ((char-equal other-write ?w) (tramp-octal-to-decimal "00002")) + ((char-equal other-write ?-) 0) (t (error "Nineth char `%c' must be one of `w-'" other-write))) - (case other-execute-or-sticky - (?x (tramp-octal-to-decimal "00001")) - (?T (tramp-octal-to-decimal "01000")) - (?t (tramp-octal-to-decimal "01001")) - (?- 0) - (t (error "Tenth char `%c' must be one of `xtT-'" - other-execute-or-sticky))))))) + (cond + ((char-equal other-execute-or-sticky ?x) + (tramp-octal-to-decimal "00001")) + ((char-equal other-execute-or-sticky ?T) + (tramp-octal-to-decimal "01000")) + ((char-equal other-execute-or-sticky ?t) + (tramp-octal-to-decimal "01001")) + ((char-equal other-execute-or-sticky ?-) 0) + (t (error "Tenth char `%c' must be one of `xtT-'" + other-execute-or-sticky))))))) (defun tramp-convert-file-attributes (multi-method method user host attr) "Convert file-attributes ATTR generated by perl script or ls. @@ -6977,7 +6987,29 @@ ;; internal data structure. Convenience functions for internal ;; data structure. -(defstruct tramp-file-name multi-method method user host localname) +(defun tramp-file-name-p (obj) + "Check whether TRAMP-FILE-NAME is a Tramp object." + (and (vectorp obj) (= 5 (length obj)))) + +(defun tramp-file-name-multi-method (obj) + "Return MULTI-METHOD component of TRAMP-FILE-NAME." + (and (tramp-file-name-p obj) (aref obj 0))) + +(defun tramp-file-name-method (obj) + "Return METHOD component of TRAMP-FILE-NAME." + (and (tramp-file-name-p obj) (aref obj 1))) + +(defun tramp-file-name-user (obj) + "Return USER component of TRAMP-FILE-NAME." + (and (tramp-file-name-p obj) (aref obj 2))) + +(defun tramp-file-name-host (obj) + "Return HOST component of TRAMP-FILE-NAME." + (and (tramp-file-name-p obj) (aref obj 3))) + +(defun tramp-file-name-localname (obj) + "Return LOCALNAME component of TRAMP-FILE-NAME." + (and (tramp-file-name-p obj) (aref obj 4))) (defun tramp-tramp-file-p (name) "Return t iff NAME is a tramp file." @@ -7010,12 +7042,7 @@ (let ((user (match-string (nth 2 tramp-file-name-structure) name)) (host (match-string (nth 3 tramp-file-name-structure) name)) (localname (match-string (nth 4 tramp-file-name-structure) name))) - (make-tramp-file-name - :multi-method nil - :method method - :user (or user nil) - :host host - :localname localname)))))) + (vector nil method (or user nil) host localname)))))) (defun tramp-find-default-method (user host) "Look up the right method to use in `tramp-default-method-alist'." @@ -7055,7 +7082,7 @@ (setq method (match-string method-index name)) (setq hops (match-string hops-index name)) (setq len (/ (length (match-data t)) 2)) - (when (< localname-index 0) (incf localname-index len)) + (when (< localname-index 0) (setq localname-index (+ localname-index len))) (setq localname (match-string localname-index name)) (let ((index 0)) (while (string-match hop-regexp hops index) @@ -7066,12 +7093,12 @@ (cons (match-string hop-user-index hops) hop-users)) (setq hop-hosts (cons (match-string hop-host-index hops) hop-hosts)))) - (make-tramp-file-name - :multi-method method - :method (apply 'vector (reverse hop-methods)) - :user (apply 'vector (reverse hop-users)) - :host (apply 'vector (reverse hop-hosts)) - :localname localname))) + (vector + method + (apply 'vector (reverse hop-methods)) + (apply 'vector (reverse hop-users)) + (apply 'vector (reverse hop-hosts)) + localname))) (defun tramp-make-tramp-file-name (multi-method method user host localname) "Constructs a tramp file name from METHOD, USER, HOST and LOCALNAME." @@ -7103,7 +7130,7 @@ (let ((m (aref method i)) (u (aref user i)) (h (aref host i))) (setq hops (concat hops (format-spec hop-format `((?m . ,m) (?u . ,u) (?h . ,h))))) - (incf i))) + (setq i (1+ i)))) (concat prefix hops localname))) (defun tramp-make-copy-program-file-name (user host localname) @@ -7218,7 +7245,7 @@ (assoc (tramp-find-method multi-method method user host) tramp-methods)))) (if entry - (second entry) + (cadr entry) (symbol-value param)))) diff -r de58bd16e0af -r 0cc9b64806d2 lisp/net/trampver.el --- a/lisp/net/trampver.el Thu Jun 07 16:57:32 2007 +0000 +++ b/lisp/net/trampver.el Thu Jun 07 20:14:45 2007 +0000 @@ -30,7 +30,7 @@ ;; are auto-frobbed from configure.ac, so you should edit that file and run ;; "autoconf && ./configure" to change them. -(defconst tramp-version "2.0.55" +(defconst tramp-version "2.0.56" "This version of Tramp.") (defconst tramp-bug-report-address "tramp-devel@gnu.org" diff -r de58bd16e0af -r 0cc9b64806d2 man/ChangeLog --- a/man/ChangeLog Thu Jun 07 16:57:32 2007 +0000 +++ b/man/ChangeLog Thu Jun 07 20:14:45 2007 +0000 @@ -1,3 +1,10 @@ +2007-06-07 Michael Albinus + + Sync with Tramp 2.0.56. + + * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc + settings. Reported by Ted Zlatanov . + 2007-06-07 Alan Mackenzie * display.texi (Optional Mode Line): Document the new form of diff -r de58bd16e0af -r 0cc9b64806d2 man/tramp.texi --- a/man/tramp.texi Thu Jun 07 16:57:32 2007 +0000 +++ b/man/tramp.texi Thu Jun 07 20:14:45 2007 +0000 @@ -2051,7 +2051,11 @@ A special problem is the zsh, which uses left-hand side and right-hand side prompts in parallel. Therefore, it is necessary to disable the zsh line editor on the remote host. You shall add to @file{~/.zshrc} -the following command: @command{[ $TERM = "dumb" ] && unsetopt zle}. +the following command: + +@example +[ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' +@end example @item @value{tramp} doesn't transfer strings with more than 500 characters diff -r de58bd16e0af -r 0cc9b64806d2 man/trampver.texi --- a/man/trampver.texi Thu Jun 07 16:57:32 2007 +0000 +++ b/man/trampver.texi Thu Jun 07 20:14:45 2007 +0000 @@ -9,7 +9,7 @@ @c In the Tramp CVS, the version number is auto-frobbed from @c configure.ac, so you should edit that file and run @c "autoconf && ./configure" to change the version number. -@set trampver 2.0.55 +@set trampver 2.0.56 @c Other flags from configuration @set prefix /usr/local