summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2012-12-24 14:01:51 +0100
committerBastien Guerry <bzg@altern.org>2012-12-24 14:01:51 +0100
commite6d8ed51b8434046d1e49d4c3f19994d69017780 (patch)
tree52badace846cc7d139c9f613be2ad51278e1d1b5
parent4549f0c99cef65c68879641d2a96ad486b64e6b1 (diff)
parent1b4e396b6b2b015b67784eca7f046e177208c4b3 (diff)
downloadorg-mode-e6d8ed51b8434046d1e49d4c3f19994d69017780.tar.gz
Merge branch 'maint'
-rw-r--r--lisp/org-compat.el31
-rw-r--r--lisp/org-odt.el2
2 files changed, 27 insertions, 6 deletions
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index 022f85e..1b52337 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -256,7 +256,6 @@ Works on both Emacs and XEmacs."
(when (boundp 'zmacs-regions)
(setq zmacs-regions t)))))
-
;; Invisibility compatibility
(defun org-remove-from-invisibility-spec (arg)
@@ -448,12 +447,34 @@ With two arguments, return floor and remainder of their quotient."
;; `condition-case-unless-debug' has been introduced in Emacs 24.1
;; `condition-case-no-debug' has been introduced in Emacs 23.1
-(defalias 'org-condition-case-unless-debug
+(defmacro org-condition-case-unless-debug (var bodyform &rest handlers)
+ (declare (debug condition-case) (indent 2))
(or (and (fboundp 'condition-case-unless-debug)
- 'condition-case-unless-debug)
+ `(condition-case-unless-debug ,var ,bodyform ,@handlers))
(and (fboundp 'condition-case-no-debug)
- 'condition-case-no-debug)
- 'condition-case))
+ `(condition-case-no-debug ,var ,bodyform ,@handlers))
+ `(condition-case ,var ,bodyform ,@handlers)))
+
+;; RECURSIVE has been introduced with Emacs 23.2.
+;; This is copying and adapted from `tramp-compat-delete-directory'
+(defun org-delete-directory (directory &optional recursive)
+ "Compatibility function for `delete-directory'."
+ (if (null recursive)
+ (delete-directory directory)
+ (condition-case nil
+ (funcall 'delete-directory directory recursive)
+ ;; This Emacs version does not support the RECURSIVE flag. We
+ ;; use the implementation from Emacs 23.2.
+ (wrong-number-of-arguments
+ (setq directory (directory-file-name (expand-file-name directory)))
+ (if (not (file-symlink-p directory))
+ (mapc (lambda (file)
+ (if (eq t (car (file-attributes file)))
+ (org-delete-directory file recursive)
+ (delete-file file)))
+ (directory-files
+ directory 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+ (delete-directory directory)))))
;;;###autoload
(defmacro org-check-version ()
diff --git a/lisp/org-odt.el b/lisp/org-odt.el
index d317d62..8895520 100644
--- a/lisp/org-odt.el
+++ b/lisp/org-odt.el
@@ -446,7 +446,7 @@ values. See Info node `(emacs) File Variables'."
(kill-buffer)))
xml-files))
;; delete temporary directory.
- (delete-directory org-odt-zip-dir t)))))
+ (org-delete-directory org-odt-zip-dir t)))))
(org-condition-case-unless-debug err
(prog1 (progn ,@body)
(funcall --cleanup-xml-buffers))