]> git.eshelyaron.com Git - emacs.git/commitdiff
Make Tramp backward compatible
authorMichael Albinus <michael.albinus@gmx.de>
Fri, 12 May 2017 16:36:41 +0000 (18:36 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 12 May 2017 16:36:41 +0000 (18:36 +0200)
* lisp/net/tramp-cmds.el (tramp-change-syntax):
Set tramp-autoload cookie.

* lisp/net/tramp-compat.el: Run `tramp-change-syntax' at
startup, if necessary.

* lisp/net/tramp.el (tramp-syntax): Use `tramp-compat-user-error'.
(tramp-register-autoload-file-name-handlers): Do not mark
`operations' for `tramp-file-name-handler'.
(tramp-register-file-name-handlers): Remove also
`tramp-autoload-file-name-handler' for backward compatibility.
(tramp-register-foreign-file-name-handler): Use `delete-dups'.

* test/lisp/net/tramp-tests.el (tramp-change-syntax): Declare.

lisp/net/tramp-cmds.el
lisp/net/tramp-compat.el
lisp/net/tramp.el
test/lisp/net/tramp-tests.el

index a11908af63e664991ab7bee5e7970ed08145490f..4007b65c3af4f39ec24f37b00011c51f63230ea8 100644 (file)
@@ -37,7 +37,7 @@
 (defvar reporter-eval-buffer)
 (defvar reporter-prompt-for-summary-p)
 
-;;;###autoload
+;;;###tramp-autoload
 (defun tramp-change-syntax (&optional syntax)
   "Change Tramp syntax.
 SYNTAX can be one of the symbols `default' (default),
index 322e9c36895b6511b8c09e1b8a492a7ba3e5a249..53266e806c01446ebf3a36e0c7cff790c6f988a0 100644 (file)
@@ -384,6 +384,12 @@ If NAME is a remote file name, the local part of NAME is unquoted."
        ((eq tramp-syntax 'sep) 'separate)
        (t tramp-syntax)))
 
+;; Older Emacsen keep incompatible autoloaded values of `tramp-syntax'.
+(eval-after-load 'tramp
+  '(unless
+       (memq tramp-syntax (tramp-compat-funcall (quote tramp-syntax-values)))
+     (tramp-change-syntax (tramp-compat-tramp-syntax))))
+
 (provide 'tramp-compat)
 
 ;;; TODO:
index 071114a0157385b7a98d6c9797f58c68bb9f6c68..8c317df97678b361e4ea5d3c5976e1c80a8080a3 100644 (file)
@@ -683,7 +683,7 @@ Do not change the value by `setq', it must be changed only by
   :set (lambda (symbol value)
         ;; Check allowed values.
         (unless (memq value (tramp-syntax-values))
-          (user-error "Wrong `tramp-syntax' %s" tramp-syntax))
+          (tramp-compat-user-error "Wrong `tramp-syntax' %s" tramp-syntax))
          ;; Cleanup existing buffers.
          (unless (eq (symbol-value symbol) value)
            (tramp-cleanup-all-buffers))
@@ -2196,9 +2196,6 @@ Falls back to normal file name handler if no Tramp file name handler exists."
   (add-to-list 'file-name-handler-alist
               (cons tramp-initial-file-name-regexp 'tramp-file-name-handler))
   (put 'tramp-file-name-handler 'safe-magic t)
-  ;; Mark `operations' the handler is responsible for.  It's a short list ...
-  (put 'tramp-file-name-handler 'operations
-       '(file-name-all-completions file-name-completion file-remote-p))
 
   (add-to-list 'file-name-handler-alist
               (cons tramp-initial-completion-file-name-regexp
@@ -2216,7 +2213,9 @@ Falls back to normal file name handler if no Tramp file name handler exists."
   ;; Remove autoloaded handlers from file name handler alist.  Useful,
   ;; if `tramp-syntax' has been changed.
   (dolist (fnh '(tramp-file-name-handler
-                tramp-completion-file-name-handler))
+                tramp-completion-file-name-handler
+                ;; This is autoloaded in Emacs 24 & 25.
+                tramp-autoload-file-name-handler))
     (let ((a1 (rassq fnh file-name-handler-alist)))
       (setq file-name-handler-alist (delq a1 file-name-handler-alist))))
 
@@ -2256,7 +2255,7 @@ Add operations defined in `HANDLER-alist' to `tramp-file-name-handler'."
   ;; Mark `operations' the handler is responsible for.
   (put 'tramp-file-name-handler
        'operations
-       (cl-delete-duplicates
+       (delete-dups
         (append
          (get 'tramp-file-name-handler 'operations)
          (mapcar
index a380e95c1a14a6e1035b0cd68f1ca6f2245ee98b..d3a93d27b29698a733fac59ba95f1e105192e99e 100644 (file)
@@ -45,6 +45,7 @@
 (require 'vc-git)
 (require 'vc-hg)
 
+(declare-function tramp-change-syntax "tramp-cmds")
 (declare-function tramp-find-executable "tramp-sh")
 (declare-function tramp-get-remote-path "tramp-sh")
 (declare-function tramp-get-remote-stat "tramp-sh")