emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <n.goaziou@gmail.com>
To: Org Mode List <emacs-orgmode@gnu.org>
Subject: [RFC] Small syntax change for footnote definitions
Date: Thu, 21 Feb 2013 15:45:28 +0100	[thread overview]
Message-ID: <8738wp3euv.fsf@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 822 bytes --]

Hello,

Following a thread started by Samuel Wales (see
http://permalink.gmane.org/gmane.emacs.orgmode/66558), it appears that
the standard way to include multiple paragraphs in a footnote definition
is to rely on "\par" LaTeXism.

There are two problems here. Firstly, the parser would have to go out of
its way to support this trick. Secondly, it isn't very regular wrt Org
syntax.

I suggest to end a footnote definition at a headline, another footnote
definition or *two* blank lines.

Pros:

  - Small modification to code base.
  - More regular syntax (lists use the same)

Cons:

  - Still impossible to have two consecutive lists (because they need
    to be separated by 2 blank lines).
  - Small incompatibility with previous syntax.


Is there any objection to apply this patch?


Regards,

-- 
Nicolas Goaziou

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: change syntax for footnote definitions --]
[-- Type: text/x-patch, Size: 2508 bytes --]

From 18a95bdc2667ea01a75a7b9ddaff55cd4ea5c329 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <n.goaziou@gmail.com>
Date: Thu, 21 Feb 2013 15:30:16 +0100
Subject: [PATCH] Require 2 blank lines to separate footnote definition

* lisp/org-element.el (org-element-footnote-definition-parser):
  Require 2 blank lines to separate footnote definition.
* lisp/org-footnote.el (org-footnote-at-definition-p): Require 2 blank
  lines to separate footnote definition.

Footnote definitions can still be separated with other footnote
definitions and headlines. This change allows to have multiple
paragraphs in a footnote definition.
---
 lisp/org-element.el  |  2 +-
 lisp/org-footnote.el | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 3dc1e72..012aea7 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -693,7 +693,7 @@ Assume point is at the beginning of the footnote definition."
 			   (re-search-forward
 			    (concat org-outline-regexp-bol "\\|"
 				    org-footnote-definition-re "\\|"
-				    "^[ \t]*$") limit 'move))
+				    "\n\\([ \t]*\n\\)\\{2,\\}") limit 'move))
 			 (match-beginning 0)
 		       (point))))
 	   (contents-begin (progn (search-forward "]")
diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el
index 9aa388b..d99bdec 100644
--- a/lisp/org-footnote.el
+++ b/lisp/org-footnote.el
@@ -251,11 +251,12 @@ otherwise."
   (when (save-excursion (beginning-of-line) (org-footnote-in-valid-context-p))
     (save-excursion
       (end-of-line)
-      ;; Footnotes definitions are separated by new headlines or blank
-      ;; lines.
-      (let ((lim (save-excursion (re-search-backward
-				  (concat org-outline-regexp-bol
-					  "\\|^[ \t]*$") nil t))))
+      ;; Footnotes definitions are separated by new headlines, another
+      ;; footnote definition or 2 blank lines.
+      (let ((lim (save-excursion
+		   (re-search-backward
+		    (concat org-outline-regexp-bol
+			    "\\|\n\\([ \t]*\n\\)\\{2,\\}") nil t))))
 	(when (re-search-backward org-footnote-definition-re lim t)
 	  (let ((label (org-match-string-no-properties 1))
 		(beg (match-beginning 0))
@@ -271,7 +272,7 @@ otherwise."
 			     (re-search-forward
 			      (concat org-outline-regexp-bol "\\|"
 				      org-footnote-definition-re "\\|"
-				      "^[ \t]*$") bound 'move))
+				      "\n\\([ \t]*\n\\)\\{2,\\}") bound 'move))
 			   (match-beginning 0)
 			 (point)))))
 	    (list label beg end
-- 
1.8.1.4


             reply	other threads:[~2013-02-21 14:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-21 14:45 Nicolas Goaziou [this message]
2013-02-21 17:44 ` [RFC] Small syntax change for footnote definitions Aaron Ecay
2013-02-21 17:51   ` Nicolas Goaziou
2013-02-21 18:07 ` Samuel Wales
2013-02-21 18:43   ` Nicolas Goaziou
2013-02-24 13:48 ` Nicolas Goaziou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8738wp3euv.fsf@gmail.com \
    --to=n.goaziou@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).