]> git.eshelyaron.com Git - emacs.git/commitdiff
Assume make-directory handler follows new API
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 24 Dec 2022 09:08:21 +0000 (01:08 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 24 Dec 2022 09:09:46 +0000 (01:09 -0800)
Suggested by Michael Albinus (Bug#58919#56).
* lisp/files.el (files--ensure-directory): Omit recently-added arg
MKDIR, since it is now always make-directory again.  All uses
changed.
(make-directory): Assume the make-directory handler follows the
new API where it yields non-nil if DIR already exists.  This
reverts some of the recent changes in this area, and simplifies
this funciton.

lisp/files.el

index f352d3a9a7e2a8f99c1bc85bfd748c4f3ef1059c..0fb080b53c0c912fa5ffcc3d19b5e1fd448fe762 100644 (file)
@@ -6193,11 +6193,11 @@ instance of such commands."
       (rename-buffer (generate-new-buffer-name base-name))
       (force-mode-line-update))))
 
-(defun files--ensure-directory (mkdir dir)
-  "Use function MKDIR to make directory DIR if it is not already a directory.
+(defun files--ensure-directory (dir)
+  "Make directory DIR if it is not already a directory.
 Return non-nil if DIR is already a directory."
   (condition-case err
-      (funcall mkdir dir)
+      (make-directory-internal dir)
     (error
      (or (file-directory-p dir)
         (signal (car err) (cdr err))))))
@@ -6223,32 +6223,27 @@ Signal an error if unsuccessful."
   ;; If default-directory is a remote directory,
   ;; make sure we find its make-directory handler.
   (setq dir (expand-file-name dir))
-  (let ((mkdir (if-let ((handler (find-file-name-handler dir 'make-directory)))
-                  #'(lambda (dir)
-                      ;; Use 'ignore' since the handler might be designed for
-                      ;; Emacs 28-, so it might return an (undocumented)
-                      ;; non-nil value, whereas the Emacs 29+ convention is
-                      ;; to return nil here.
-                      (ignore (funcall handler 'make-directory dir)))
-                 #'make-directory-internal)))
-    (if (not parents)
-        (funcall mkdir dir)
-      (let ((dir (directory-file-name (expand-file-name dir)))
-            already-dir create-list parent)
-        (while (progn
-                 (setq parent (directory-file-name
-                               (file-name-directory dir)))
-                 (condition-case ()
-                     (ignore (setq already-dir
-                                   (files--ensure-directory mkdir dir)))
-                   (error
-                    ;; Do not loop if root does not exist (Bug#2309).
-                    (not (string= dir parent)))))
-          (setq create-list (cons dir create-list)
-                dir parent))
-        (dolist (dir create-list)
-          (setq already-dir (files--ensure-directory mkdir dir)))
-        already-dir))))
+  (let ((handler (find-file-name-handler dir 'make-directory)))
+    (if handler
+       (funcall handler 'make-directory dir parents)
+      (if (not parents)
+         (make-directory-internal dir)
+       (let ((dir (directory-file-name (expand-file-name dir)))
+             already-dir create-list parent)
+         (while (progn
+                  (setq parent (directory-file-name
+                                (file-name-directory dir)))
+                  (condition-case ()
+                      (ignore (setq already-dir
+                                    (files--ensure-directory dir)))
+                    (error
+                     ;; Do not loop if root does not exist (Bug#2309).
+                     (not (string= dir parent)))))
+           (setq create-list (cons dir create-list)
+                 dir parent))
+         (dolist (dir create-list)
+           (setq already-dir (files--ensure-directory dir)))
+         already-dir)))))
 
 (defun make-empty-file (filename &optional parents)
   "Create an empty file FILENAME.