]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix file name completion with Tramp on MS Windoes
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 10 Jan 2024 11:49:08 +0000 (12:49 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 10 Jan 2024 11:49:08 +0000 (12:49 +0100)
* doc/misc/trampver.texi:
* lisp/net/trampver.el (tramp-version): Adapt Tramp versions.

* lisp/net/tramp.el (tramp-build-completion-file-name-regexp):
Do not use `tramp-volume-letter-regexp'.  (Bug#68320)
(tramp-completion-handle-expand-file-name): Simplify regexp.

* test/lisp/net/tramp-tests.el (tramp-test26-file-name-completion)
(tramp-test26-interactive-file-name-completion): Run also on MS Windows.

doc/misc/trampver.texi
lisp/net/tramp.el
lisp/net/trampver.el
test/lisp/net/tramp-tests.el

index 8cb0e3d574a125ab3b21d82de585d33a403decac..bf5c90ee8a92717a7db2216c57668c19554cdf50 100644 (file)
@@ -7,7 +7,7 @@
 
 @c In the  Tramp GIT, the version number and the bug report address
 @c are auto-frobbed from configure.ac.
-@set trampver 2.7.0
+@set trampver 2.7.1-pre
 @set trampurl https://www.gnu.org/software/tramp/
 @set tramp-bug-report-address tramp-devel@@gnu.org
 @set emacsver 27.1
index ad36dd53a327cf3eeb2caeeb044848d19fd014a0..f943bd81a519a057069aca6b457572328c2ea160 100644 (file)
@@ -1205,14 +1205,7 @@ The `ftp' syntax does not support methods.")
       ;; FIXME: This shouldn't be necessary.
       (rx bos "/" (? "[" (* (not "]"))) eos)
     (rx
-     bos
-     ;; `file-name-completion' uses absolute paths for matching.
-     ;; This means that on W32 systems, something like
-     ;; "/ssh:host:~/path" becomes "c:/ssh:host:~/path".  See also
-     ;; `tramp-drop-volume-letter'.
-     (? (regexp tramp-volume-letter-regexp))
-     ;; We cannot use `tramp-prefix-regexp', because it starts with `bol'.
-     (literal tramp-prefix-format)
+     (regexp tramp-prefix-regexp)
 
      ;; Optional multi-hops.
      (* (regexp tramp-remote-file-name-spec-regexp)
@@ -2666,7 +2659,7 @@ not in completion mode."
            (string-match-p (rx (regexp tramp-postfix-host-regexp) eos) dir))
       (concat dir filename))
      ((string-match-p
-       (rx bos (regexp tramp-prefix-regexp)
+       (rx (regexp tramp-prefix-regexp)
           (* (regexp tramp-remote-file-name-spec-regexp)
              (regexp tramp-postfix-hop-regexp))
           (? (regexp tramp-method-regexp) (regexp tramp-postfix-method-regexp)
index 4b8868561d45c0b5870843dff8bb7b1d70ad1b4e..c131d39c110cfbfdaddb47fbaa417202d3f0beeb 100644 (file)
@@ -7,7 +7,7 @@
 ;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
 ;; Package: tramp
-;; Version: 2.7.0
+;; Version: 2.7.1-pre
 ;; Package-Requires: ((emacs "27.1"))
 ;; Package-Type: multi
 ;; URL: https://www.gnu.org/software/tramp/
@@ -40,7 +40,7 @@
 ;; ./configure" to change them.
 
 ;;;###tramp-autoload
-(defconst tramp-version "2.7.0"
+(defconst tramp-version "2.7.1-pre"
   "This version of Tramp.")
 
 ;;;###tramp-autoload
@@ -78,7 +78,7 @@
 ;; Check for Emacs version.
 (let ((x   (if (not (string-version-lessp emacs-version "27.1"))
       "ok"
-    (format "Tramp 2.7.0 is not fit for %s"
+    (format "Tramp 2.7.1-pre is not fit for %s"
             (replace-regexp-in-string "\n" "" (emacs-version))))))
   (unless (string-equal "ok" x) (error "%s" x)))
 
index 91b0542c759a3613e7eac950516ab849a237a961..2a3b3e16891e73d8d386518b7aa22d5a4f43d21c 100644 (file)
@@ -4719,57 +4719,55 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
   "Check `file-name-completion' and `file-name-all-completions'."
   (skip-unless (tramp--test-enabled))
 
-  ;; Method and host name in completion mode.  This kind of completion
-  ;; does not work on MS Windows.
-  (unless (memq system-type '(cygwin windows-nt))
-    (let ((tramp-fuse-remove-hidden-files t)
-         (method (file-remote-p ert-remote-temporary-file-directory 'method))
-         (host (file-remote-p ert-remote-temporary-file-directory 'host))
-          (orig-syntax tramp-syntax)
-          (minibuffer-completing-file-name t))
-      (when (and (stringp host) (string-match tramp-host-with-port-regexp host))
-       (setq host (match-string 1 host)))
+  ;; Method and host name in completion mode.
+  (let ((tramp-fuse-remove-hidden-files t)
+       (method (file-remote-p ert-remote-temporary-file-directory 'method))
+       (host (file-remote-p ert-remote-temporary-file-directory 'host))
+        (orig-syntax tramp-syntax)
+        (minibuffer-completing-file-name t))
+    (when (and (stringp host) (string-match tramp-host-with-port-regexp host))
+      (setq host (match-string 1 host)))
 
-      (unwind-protect
-          (dolist (syntax (if (tramp--test-expensive-test-p)
-                             (tramp-syntax-values) `(,orig-syntax)))
-            (tramp-change-syntax syntax)
-           ;; This has cleaned up all connection data, which are used
-           ;; for completion.  We must refill the cache.
-           (tramp-set-connection-property tramp-test-vec "property" nil)
-
-            (let (;; This is needed for the `separate' syntax.
-                  (prefix-format (substring tramp-prefix-format 1))
-                 ;; This is needed for the IPv6 host name syntax.
-                 (ipv6-prefix
-                  (and (string-match-p tramp-ipv6-regexp host)
-                       tramp-prefix-ipv6-format))
-                 (ipv6-postfix
-                  (and (string-match-p tramp-ipv6-regexp host)
-                       tramp-postfix-ipv6-format)))
-              ;; Complete method name.
-             (unless (or (tramp-string-empty-or-nil-p method)
-                          (string-empty-p tramp-method-regexp))
-               (should
-                (member
-                 (concat prefix-format method tramp-postfix-method-format)
-                 (file-name-all-completions
-                   (concat prefix-format (substring method 0 1)) "/"))))
-              ;; Complete host name.
-             (unless (or (tramp-string-empty-or-nil-p method)
-                          (string-empty-p tramp-method-regexp)
-                          (tramp-string-empty-or-nil-p host))
-               (should
-                (member
-                 (concat
-                   prefix-format method tramp-postfix-method-format
-                  ipv6-prefix host ipv6-postfix tramp-postfix-host-format)
-                 (file-name-all-completions
-                  (concat prefix-format method tramp-postfix-method-format)
-                   "/"))))))
+    (unwind-protect
+        (dolist (syntax (if (tramp--test-expensive-test-p)
+                           (tramp-syntax-values) `(,orig-syntax)))
+          (tramp-change-syntax syntax)
+         ;; This has cleaned up all connection data, which are used
+         ;; for completion.  We must refill the cache.
+         (tramp-set-connection-property tramp-test-vec "property" nil)
 
-       ;; Cleanup.
-        (tramp-change-syntax orig-syntax))))
+          (let (;; This is needed for the `separate' syntax.
+                (prefix-format (substring tramp-prefix-format 1))
+               ;; This is needed for the IPv6 host name syntax.
+               (ipv6-prefix
+                (and (string-match-p tramp-ipv6-regexp host)
+                     tramp-prefix-ipv6-format))
+               (ipv6-postfix
+                (and (string-match-p tramp-ipv6-regexp host)
+                     tramp-postfix-ipv6-format)))
+            ;; Complete method name.
+           (unless (or (tramp-string-empty-or-nil-p method)
+                        (string-empty-p tramp-method-regexp))
+             (should
+              (member
+               (concat prefix-format method tramp-postfix-method-format)
+               (file-name-all-completions
+                 (concat prefix-format (substring method 0 1)) "/"))))
+            ;; Complete host name.
+           (unless (or (tramp-string-empty-or-nil-p method)
+                        (string-empty-p tramp-method-regexp)
+                        (tramp-string-empty-or-nil-p host))
+             (should
+              (member
+               (concat
+                 prefix-format method tramp-postfix-method-format
+                ipv6-prefix host ipv6-postfix tramp-postfix-host-format)
+               (file-name-all-completions
+                (concat prefix-format method tramp-postfix-method-format)
+                 "/"))))))
+
+      ;; Cleanup.
+      (tramp-change-syntax orig-syntax)))
 
   (dolist (non-essential '(nil t))
     (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
@@ -4851,9 +4849,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
 ;; and Bug#60505.
 (ert-deftest tramp-test26-interactive-file-name-completion ()
   "Check interactive completion with different `completion-styles'."
-  ;; Method, user and host name in completion mode.  This kind of
-  ;; completion does not work on MS Windows.
-  (skip-unless (not (memq system-type '(cygwin windows-nt))))
+  ;; Method, user and host name in completion mode.
   (tramp-cleanup-connection tramp-test-vec nil 'keep-password)
 
   (let ((method (file-remote-p ert-remote-temporary-file-directory 'method))