summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog31
-rw-r--r--lisp/net/tramp-ftp.el10
-rw-r--r--lisp/net/tramp-smb.el7
-rw-r--r--lisp/net/tramp-util.el1
-rw-r--r--lisp/net/tramp-uu.el3
-rw-r--r--lisp/net/tramp-vc.el2
-rw-r--r--lisp/net/tramp.el207
-rw-r--r--lisp/net/trampver.el2
-rw-r--r--man/ChangeLog7
-rw-r--r--man/tramp.texi6
-rw-r--r--man/trampver.texi2
11 files changed, 168 insertions, 110 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e298874025e..79fb349d949 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,34 @@
+2007-06-07 Michael Albinus <michael.albinus@gmx.de>
+
+ 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 <rms@gnu.org>.
+
+ * 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 <dak@gnu.org>
* dired.el (dired-recursive-deletes, dired-recursive-copies):
diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el
index 2749a6858c0..d33873d1689 100644
--- a/lisp/net/tramp-ftp.el
+++ b/lisp/net/tramp-ftp.el
@@ -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 <michael.albinus@gmx.de>
;; 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 --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 5d5d441193d..7382bdef63b 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -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 --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el
index 81857ae4225..4895edf019b 100644
--- a/lisp/net/tramp-util.el
+++ b/lisp/net/tramp-util.el
@@ -29,7 +29,6 @@
;;; Code:
-(eval-when-compile (require 'cl))
(require 'compile)
(require 'tramp)
(add-hook 'tramp-util-unload-hook
diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el
index ce047489260..32bb9857f7f 100644
--- a/lisp/net/tramp-uu.el
+++ b/lisp/net/tramp-uu.el
@@ -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 <kai.grossjohann@gmx.net>
;; Keywords: comm, terminals
diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el
index eda98364a98..cc5566d6354 100644
--- a/lisp/net/tramp-vc.el
+++ b/lisp/net/tramp-vc.el
@@ -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 --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 20ac73d0f75..f85620ee323 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -151,11 +151,7 @@ Otherwise, use a separate filename syntax for Tramp.")
(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 @@ Otherwise, use a separate filename syntax for Tramp.")
(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 @@ If VAR is nil, then we bind `v' to the structure and `multi-method',
(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 @@ target of the symlink differ."
"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 @@ of."
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 @@ This is like `dired-recursive-delete-directory' for tramp files."
(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 @@ This will break if COMMAND prints a newline, followed by the value of
"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 @@ This will break if COMMAND prints a newline, followed by the value of
(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 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
(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 @@ Falls back to normal file name handler if no tramp file name handler exists."
(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 @@ Falls back to normal file name handler if no tramp file name handler exists."
(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 @@ remote host and localname (filename on remote host)."
(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 @@ USER the array of user names, HOST the array of host names."
(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 @@ log in as u2 to h2."
;; 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 @@ If `tramp-discard-garbage' is nil, just erase buffer."
(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 @@ If `tramp-discard-garbage' is nil, just erase buffer."
(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 @@ Not actually used. Use `(format \"%o\" i)' instead?"
;; 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 @@ localname (file name on remote host)."
(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 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(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 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(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 @@ If both MULTI-METHOD and METHOD are nil, do a lookup in
(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 @@ as default."
(assoc (tramp-find-method multi-method method user host)
tramp-methods))))
(if entry
- (second entry)
+ (cadr entry)
(symbol-value param))))
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 04f7bc754f2..485c58afa65 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -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 --git a/man/ChangeLog b/man/ChangeLog
index f9459bfcc2d..98faf2482b1 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,10 @@
+2007-06-07 Michael Albinus <michael.albinus@gmx.de>
+
+ Sync with Tramp 2.0.56.
+
+ * tramp.texi (Frequently Asked Questions): Improve ~/.zshrc
+ settings. Reported by Ted Zlatanov <tzz@lifelogs.com>.
+
2007-06-07 Alan Mackenzie <acm@muc.de>
* display.texi (Optional Mode Line): Document the new form of
diff --git a/man/tramp.texi b/man/tramp.texi
index 7acef2663e4..67b0647787c 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -2051,7 +2051,11 @@ setting the regular expression detecting the prompt.
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 --git a/man/trampver.texi b/man/trampver.texi
index c512de4c74b..6c770dc8ad1 100644
--- a/man/trampver.texi
+++ b/man/trampver.texi
@@ -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