From mboxrd@z Thu Jan 1 00:00:00 1970 From: Aankhen Subject: Re: [BUG] Unmatched #+end-src Date: Sun, 13 Mar 2011 00:59:07 +0530 Message-ID: References: <87ei6cffbw.fsf@btinternet.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from [140.186.70.92] (port=60007 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PyUVF-0002Bl-QV for emacs-orgmode@gnu.org; Sat, 12 Mar 2011 14:29:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PyUVE-00056q-G2 for emacs-orgmode@gnu.org; Sat, 12 Mar 2011 14:29:29 -0500 Received: from mail-vx0-f169.google.com ([209.85.220.169]:33055) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PyUVE-00056k-Dr for emacs-orgmode@gnu.org; Sat, 12 Mar 2011 14:29:28 -0500 Received: by vxk12 with SMTP id 12so461049vxk.0 for ; Sat, 12 Mar 2011 11:29:27 -0800 (PST) In-Reply-To: <87ei6cffbw.fsf@btinternet.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Martyn Jago , Org-mode ml Hi, On Sat, Mar 12, 2011 at 22:26, Martyn Jago wro= te: > --8<---------------cut here---------------start------------->8--- > * Unmatched #+end-src bug > > #+end_src > --8<---------------cut here---------------end--------------->8--- > > With the above simple org file, placing the cursor at the end of > #+end_src and hitting return causes emacs to hang. > > The bug can be replicated with the following simple test which also > causes emacs to hang... > > [snip] > > It appears to be related to the following in 'org-in-item-p > (org-list.el)... > > --8<---------------cut here---------------start------------->8--- > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((looking-at "^[ \t]*#\\= +end_") > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(re-search-backwar= d "^[ \t]*#\\+begin_" nil t)) > --8<---------------cut here---------------end--------------->8--- > > I've tried to pin down the bug but its left me perplexed, so I'm going > to defer to more experienced org lispers! The =3Dcond=3D is part of a =3Dwhile=3D loop; it just keeps looping, enteri= ng that branch and doing nothing (rather than moving point and picking up again from there). Going by the other branches, I think the correct thing to do is just exit the loop: --8<---------------cut here---------------start------------->8--- diff --git a/lisp/org-list.el b/lisp/org-list.el --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -450,17 +450,19 @@ This checks `org-list-ending-method'." ;; At upper bound of search or looking at the end of a ;; previous list: search is over. ((<=3D (point) lim-up) (throw 'exit nil)) ((and (not (eq org-list-ending-method 'indent)) (looking-at org-list-end-re)) (throw 'exit nil)) ;; Skip blocks, drawers, inline-tasks, blank lines ((looking-at "^[ \t]*#\\+end_") - (re-search-backward "^[ \t]*#\\+begin_" nil t)) + (condition-case nil + (re-search-backward "^[ \t]*#\\+begin_" nil) + (search-failed (throw 'exit nil)))) ((looking-at "^[ \t]*:END:") (re-search-backward org-drawer-regexp nil t) (beginning-of-line)) ((and inlinetask-re (looking-at inlinetask-re)) (org-inlinetask-goto-beginning) (forward-line -1)) ((looking-at "^[ \t]*$") (forward-line -1)) ;; Text at column 0 cannot belong to a list: stop. --8<---------------cut here---------------end--------------->8--- Hope this helps, Aankhen