emacs-orgmode
[Top][All Lists]
Advanced

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

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


From: Carsten Dominik
Subject: Re: [Orgmode] Re: Crash of emacs when using SHIFT-TAB
Date: Tue, 6 Jul 2010 10:25:50 +0200

Hi Jason,

thanks for this, I have checked in a modified version of your proposed fix.

- Carsten

On Jul 5, 2010, at 7:40 PM, Jason Dunsmore wrote:

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

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten






reply via email to

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