branch: externals/compat
commit fe20be9ef269e81866c4e40a7d61cffe18080904
Author: Philip Kaludercic <[email protected]>
Commit: Philip Kaludercic <[email protected]>

    Add file-name-quoted-p
---
 MANUAL          |  1 +
 compat-26.el    |  8 ++++++++
 compat-tests.el | 10 ++++++++++
 3 files changed, 19 insertions(+)

diff --git a/MANUAL b/MANUAL
index 471e882181..307311ecd1 100644
--- a/MANUAL
+++ b/MANUAL
@@ -230,6 +230,7 @@ provided by Compat by default:
 - Function: temporary-file-directory :: See [[info:elisp#Unique File 
Names][(elisp) Unique File Names]].
 - Macro: and-let* :: Defined in ~subr-x.el~.
 - Function: file-local-name :: See [[info:elisp#Magic File Names][(elisp) 
Magic File Names]].
+- Function: file-name-quoted-p :: See [[info:elisp#File Name 
Expansion][(elisp) File Name Expansion]].
 
 These functions are prefixed with ~compat~ prefix, and are only loaded
 when ~compat-26~ is required:
diff --git a/compat-26.el b/compat-26.el
index bf8e1ceef6..e8c8ca8d7c 100644
--- a/compat-26.el
+++ b/compat-26.el
@@ -352,8 +352,16 @@ and the method of accessing the host, leaving only the 
part that
 identifies FILE locally on the remote system.
 The returned file name can be used directly as argument of
 `process-file', `start-file-process', or `shell-command'."
+  :realname compat--file-local-name
   (or (file-remote-p file 'localname) file))
 
+(compat-defun file-name-quoted-p (name &optional top)
+  "Whether NAME is quoted with prefix \"/:\".
+If NAME is a remote file name and TOP is nil, check the local part of NAME."
+  :realname compat--file-name-quoted-p
+  (let ((file-name-handler-alist (unless top file-name-handler-alist)))
+    (string-prefix-p "/:" (compat--file-local-name name))))
+
 ;;* UNTESTED
 (compat-defun temporary-file-directory ()
   "The directory for writing temporary files.
diff --git a/compat-tests.el b/compat-tests.el
index 5e0ece15bc..1ae907a644 100644
--- a/compat-tests.el
+++ b/compat-tests.el
@@ -1578,5 +1578,15 @@ being compared against."
   (ought ":foo" "/ssh:::foo")
   (ought ":/bar/foo" "/ssh:::/bar/foo"))
 
+(compat-deftest file-name-quoted-p
+  (ought nil "")
+  (ought t "/:")
+  (ought nil "//:")
+  (ought t "/::")
+  (ought nil "/ssh::")
+  (ought nil "/ssh::a")
+  (ought t "/ssh::/:a")
+  (ought nil "/ssh:/:a"))
+
 (provide 'compat-tests)
 ;;; compat-tests.el ends here

Reply via email to