diff lisp/files.el @ 43130:97ca502aebf5

(file-name-non-special): Add special handling for file-name-sans-versions, file-name-completion, and file-name-all-completions.
author Richard M. Stallman <rms@gnu.org>
date Wed, 06 Feb 2002 15:29:29 +0000
parents 193c9307d562
children 5f02f10efd8a ab5d1c9248c4
line wrap: on
line diff
--- a/lisp/files.el	Wed Feb 06 15:25:15 2002 +0000
+++ b/lisp/files.el	Wed Feb 06 15:29:29 2002 +0000
@@ -3822,17 +3822,18 @@
 	;; Get a list of the indices of the args which are file names.
 	(file-arg-indices
 	 (cdr (or (assq operation
-			;; The first four are special because they
+			;; The first five are special because they
 			;; return a file name.  We want to include the /:
 			;; in the return value.
 			;; So just avoid stripping it in the first place.
 			'((expand-file-name . nil)
+			  (file-name-directory . nil)
+			  (file-name-as-directory . nil)
+			  (directory-file-name . nil)
+			  (file-name-sans-versions . nil)
 			  ;; `identity' means just return the first arg
 			  ;; as stripped of its quoting.
 			  (substitute-in-file-name . identity)
-			  (file-name-directory . nil)
-			  (file-name-as-directory . nil)
-			  (directory-file-name . nil)
 			  (file-name-completion 0 1)
 			  (file-name-all-completions 0 1)
 			  (rename-file 0 1)
@@ -3857,7 +3858,12 @@
 	(setq file-arg-indices (cdr file-arg-indices))))
     (if (eq file-arg-indices 'identity)
 	(car arguments)
-      (apply operation arguments))))
+      (let ((value (apply operation arguments)))
+	(cond ((memq operation '(file-name-completion))
+	       (and value (concat "/:" value)))
+	      ((memq operation '(file-name-all-completions))
+	       (mapcar (lambda (name) (concat "/:" name)) value))
+	      (t value))))))
 
 (define-key ctl-x-map "\C-f" 'find-file)
 (define-key ctl-x-map "\C-r" 'find-file-read-only)