emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: Crash of emacs when using SHIFT-TAB


From: Jason Dunsmore
Subject: [Orgmode] Re: Crash of emacs when using SHIFT-TAB
Date: Mon, 05 Jul 2010 12:40:18 -0500

Carsten Dominik <address@hidden> writes:

>> Hi
>>
>> my emacs is crashing quite regularly when I am using org-babel. Is
>> there a way to get a traceback or something similar which I could
>> submit to get an idea what is causing it?
>
> I think this has probably nothing to do with org-babel.  More likely,
> you are using org-indent-mode, on an Emacs version where it does not
> work.  Check the Org manual for the exact version of Emacs you need.

I was bitten by this same bug.  I narrowed it down to org-indent, but I
had no idea I should look in the manual to see which version of emacs
org-indent was compatible with.

Here's a patch that will make emacs display an error if org-indent is
loaded with an incompatible version of emacs:

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/org-indent.el b/lisp/org-indent.el
index 77411af..0ef8456 100644
--- a/lisp/org-indent.el
+++ b/lisp/org-indent.el
@@ -131,6 +131,18 @@ FIXME:  How to update when broken?"
       (setq org-indent-mode nil)
     (if org-indent-mode
        (progn
+          (destructuring-bind (maj min bld)
+              (mapcar 'string-to-number (split-string emacs-version "[.]"))
+            (let ((msg "Emacs 23.1.50.3 or greater is recommended for 
org-indent 
+              (when (< maj 23)
+                (display-warning 'org msg :warning))
+              (when (= maj 23)
+                (unless (>= bld 50)
+                  (display-warning 'org msg :warning)))
+              (when (and (= maj 23)
+                         (= bld 50))
+                (unless (>= min 1)
+                  (display-warning 'org msg :warning)))))
          (org-set-local 'indent-tabs-mode nil)
          (or org-indent-strings (org-indent-initialize))
          (when org-indent-mode-turns-off-org-adapt-indentation
--8<---------------cut here---------------end--------------->8---

Perhaps this would be better as a separate function:

--8<---------------cut here---------------start------------->8---
(defun org-version-check (version feature level)
  (destructuring-bind (rmaj rmin rbld)
      (mapcar 'string-to-number (split-string version "[.]"))
    (destructuring-bind (maj min bld)
        (mapcar 'string-to-number (split-string emacs-version "[.]"))
      (let ((msg (format "Emacs %s or greater is recommended for %s" version
                         feature)))
        (when (< maj rmaj)
          (display-warning 'org msg level))
        (when (= maj rmaj)
          (unless (>= min rmin)
            (display-warning 'org msg level)))
        (when (and (= maj rmaj)
                   (= min rmin))
          (unless (>= bld rbld)
            (display-warning 'org msg level)))))))
--8<---------------cut here---------------end--------------->8---

It could then be called with:

(org-version-check "23.1.50" "org-indent" :warning)

I made it display a warning because org-indent seems to work almost
perfectly with the version of emacs I'm running (23.1.1).

Regards,
Jason



reply via email to

[Prev in Thread] Current Thread [Next in Thread]