summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <carsten.dominik@gmail.com>2010-07-06 10:23:41 +0200
committerCarsten Dominik <carsten.dominik@gmail.com>2010-07-06 10:23:41 +0200
commit85c90e96fd7e8164a263824046d975ede148217d (patch)
treefc88f1dbc60f9e64e0702c56bd2064a0b87f2993
parentc80d5b9c2763e368481fcedc3ab5cf7bcdbca405 (diff)
downloadorg-mode-85c90e96fd7e8164a263824046d975ede148217d.tar.gz
Allow org-indent-mode only on Emacsen that do support it
* lisp/org-compat.el (org-version-check): New function. * lisp/org-indent.el (org-indent-mode): Check for exact emacs version.
-rw-r--r--lisp/org-compat.el24
-rw-r--r--lisp/org-indent.el7
2 files changed, 28 insertions, 3 deletions
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index bfd4f8e..573b9ff 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -89,6 +89,30 @@ any other entries, and any resulting duplicates will be removed entirely."
(t specs)))
(put 'org-compatible-face 'lisp-indent-function 1)
+(defun org-version-check (version feature level)
+ (let* ((v1 (mapcar 'string-to-number (split-string version "[.]")))
+ (v2 (mapcar 'string-to-number (split-string emacs-version "[.]")))
+ (rmaj (or (nth 0 v1) 99))
+ (rmin (or (nth 1 v1) 99))
+ (rbld (or (nth 2 v1) 99))
+ (maj (or (nth 0 v2) 0))
+ (min (or (nth 1 v2) 0))
+ (bld (or (nth 2 v2) 0)))
+ (if (or (< maj rmaj)
+ (and (= maj rmaj)
+ (< min rmin))
+ (and (= maj rmaj)
+ (= min rmin)
+ (< bld rbld)))
+ (if (eq level :predicate)
+ ;; just return if we have the version
+ nil
+ (let ((msg (format "Emacs %s or greater is recommended for %s"
+ version feature)))
+ (display-warning 'org msg level)
+ t))
+ t)))
+
;;;; Emacs/XEmacs compatibility
;; Keys
diff --git a/lisp/org-indent.el b/lisp/org-indent.el
index 70618cb..48b10b7 100644
--- a/lisp/org-indent.el
+++ b/lisp/org-indent.el
@@ -130,10 +130,11 @@ FIXME: How to update when broken?"
(cond
((org-bound-and-true-p org-inhibit-startup)
(setq org-indent-mode nil))
+ ((and org-indent-mode (featurep 'xemacs))
+ (message "org-indent-mode does not work in XEmacs - refused to turn it on")
+ (setq org-indent-mode nil))
((and org-indent-mode
- (or (< emacs-major-version 23)
- (and (= emacs-major-version 23)
- (< emacs-minor-version 2))))
+ (not (org-version-check "23.1.50" "Org Indent mode" :predicate)))
(message "org-indent-mode is can crash Emacs 23.1 - refused to turn it on!")
(ding)
(sit-for 1)