aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Albinus2009-10-01 15:04:22 +0000
committerMichael Albinus2009-10-01 15:04:22 +0000
commit96ad4c3575868c703c9789a16126014f303e6c1f (patch)
tree6fb59564337966517e04b07e494c71965cf6e393
parent56808ea036393fbb57d9b07bb1f78bb61b2098ed (diff)
downloademacs-96ad4c3575868c703c9789a16126014f303e6c1f.tar.gz
emacs-96ad4c3575868c703c9789a16126014f303e6c1f.zip
* files.el (delete-directory): New defun. The original function
in fileio.c has been renamed to `delete-directory-internal'.
-rw-r--r--lisp/files.el32
1 files changed, 32 insertions, 0 deletions
diff --git a/lisp/files.el b/lisp/files.el
index a7eac5fb63e..61de4cb1704 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4631,6 +4631,38 @@ this happens by default."
4631 (while create-list 4631 (while create-list
4632 (make-directory-internal (car create-list)) 4632 (make-directory-internal (car create-list))
4633 (setq create-list (cdr create-list)))))))) 4633 (setq create-list (cdr create-list))))))))
4634
4635(defun delete-directory (directory &optional recursive)
4636 "Delete the directory named DIRECTORY. Does not follow symlinks.
4637If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
4638 (interactive
4639 (let ((dir (expand-file-name
4640 (read-file-name
4641 "Delete directory: "
4642 default-directory default-directory nil nil))))
4643 (list dir
4644 (if (directory-files
4645 dir nil "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")
4646 (y-or-n-p
4647 (format "Directory `%s' is not empty, really delete? " dir))
4648 nil))))
4649 ;; If default-directory is a remote directory,
4650 ;; make sure we find its delete-directory handler.
4651 (setq directory (directory-file-name (expand-file-name directory)))
4652 (let ((handler (find-file-name-handler directory 'delete-directory)))
4653 (if handler
4654 (funcall handler 'delete-directory directory recursive)
4655 (if (and recursive (not (file-symlink-p directory)))
4656 (mapc
4657 (lambda (file)
4658 (if (file-directory-p file)
4659 (delete-directory file recursive)
4660 (delete-file file)))
4661 ;; We do not want to delete "." and "..".
4662 (directory-files
4663 directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
4664 (delete-directory-internal directory))))
4665
4634 4666
4635(put 'revert-buffer-function 'permanent-local t) 4667(put 'revert-buffer-function 'permanent-local t)
4636(defvar revert-buffer-function nil 4668(defvar revert-buffer-function nil