Redefine `delete-directory' on Emacs 22 and XEmacs
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 1 Feb 2012 19:35:34 +0000 (20:35 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 1 Feb 2012 19:35:34 +0000 (20:35 +0100)
* gnus-compat.el: Redefine `delete-directory' to provide recursive
deletion unless already defined.

lisp/ChangeLog
lisp/gnus-compat.el

index f005cc3..fbb9f7d 100644 (file)
@@ -1,5 +1,8 @@
 2012-02-01  Lars Ingebrigtsen  <larsi@gnus.org>
 
+       * gnus-compat.el: Redefine `delete-directory' to provide recursive
+       deletion unless already defined.
+
        * gnus.el (gnus-compat): Require it.
 
        * gnus-compat.el: New file.
index db2c452..523fc2f 100644 (file)
 ;; functions "missing" in other Emacs instances, and redefine other
 ;; functions to work like the Emacs trunk versions.
 
-(provide 'gnus-compat)
+(eval-when-compile (require 'cl))
 
 (when (and (not (fboundp 'help-function-arglist))
           (fboundp 'function-arglist))
   (defun help-function-arglist (def &optional preserve-names)
     (cdr (car (read-from-string (downcase (function-arglist def)))))))
 
+(when (= (length (help-function-arglist 'delete-directory)) 1)
+  (defvar gnus-compat-original-delete-directory 
+    (symbol-function 'delete-directory))
+  (defun delete-directory (directory &optional recursive)
+    (if (not recursive)
+       (funcall gnus-compat-original-delete-directory directory)
+      (dolist (file (directory-files directory t))
+       (unless (member (file-name-nondirectory file) '("." ".."))
+         (if (file-directory-p file)
+             (delete-directory file t)
+           (delete-file file))))
+      (delete-directory directory))))
+
+(provide 'gnus-compat)
+
 ;; gnus-compat.el ends here