[Top][All Lists]
[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.
- [Emacs-diffs] emacs/lisp files.el,
Michael Albinus <=