emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp files.el


From: Michael Albinus
Subject: [Emacs-diffs] emacs/lisp files.el
Date: Thu, 01 Oct 2009 15:04:22 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Michael Albinus <albinus>       09/10/01 15:04:22

Modified files:
        lisp           : files.el 

Log message:
        * files.el (delete-directory): New defun.  The original function
        in fileio.c has been renamed to `delete-directory-internal'.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/files.el?cvsroot=emacs&r1=1.1088&r2=1.1089

Patches:
Index: files.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/files.el,v
retrieving revision 1.1088
retrieving revision 1.1089
diff -u -b -r1.1088 -r1.1089
--- files.el    1 Oct 2009 03:34:07 -0000       1.1088
+++ files.el    1 Oct 2009 15:04:22 -0000       1.1089
@@ -4632,6 +4632,38 @@
            (make-directory-internal (car create-list))
            (setq create-list (cdr create-list))))))))
 
+(defun delete-directory (directory &optional recursive)
+  "Delete the directory named DIRECTORY.  Does not follow symlinks.
+If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
+  (interactive
+   (let ((dir (expand-file-name
+              (read-file-name
+               "Delete directory: "
+               default-directory default-directory nil nil))))
+     (list dir
+          (if (directory-files
+               dir nil "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")
+              (y-or-n-p
+               (format "Directory `%s' is not empty, really delete? " dir))
+            nil))))
+  ;; If default-directory is a remote directory,
+  ;; make sure we find its delete-directory handler.
+  (setq directory (directory-file-name (expand-file-name directory)))
+  (let ((handler (find-file-name-handler directory 'delete-directory)))
+    (if handler
+       (funcall handler 'delete-directory directory recursive)
+      (if (and recursive (not (file-symlink-p directory)))
+         (mapc
+          (lambda (file)
+            (if (file-directory-p file)
+                (delete-directory file recursive)
+              (delete-file file)))
+          ;; We do not want to delete "." and "..".
+          (directory-files
+           directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+      (delete-directory-internal directory))))
+
+
 (put 'revert-buffer-function 'permanent-local t)
 (defvar revert-buffer-function nil
   "Function to use to revert this buffer, or nil to do the default.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]