* lisp/org-footnote.el: (org-footnote-auto-label): New random option * lisp/org-footnote.el: (org-footnote-new): Create random footnote labels with unique ids --- lisp/org-footnote.el | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el index 2ce6668..9dbd6be 100644 --- a/lisp/org-footnote.el +++ b/lisp/org-footnote.el @@ -113,12 +113,14 @@ t create unique labels of the form [fn:1], [fn:2], ... confirm like t, but let the user edit the created value. In particular, the label can be removed from the minibuffer, to create an anonymous footnote. +random Automatically generate a unique, random label. plain Automatically create plain number labels like [1]" :group 'org-footnote :type '(choice (const :tag "Prompt for label" nil) (const :tag "Create automatic [fn:N]" t) (const :tag "Offer automatic [fn:N] for editing" confirm) + (const :tag "Create a random label" random) (const :tag "Create automatic [N]" plain))) (defcustom org-footnote-auto-adjust nil @@ -253,16 +255,22 @@ This command prompts for a label. If this is a label referencing an existing label, only insert the label. If the footnote label is empty or new, let the user edit the definition of the footnote." (interactive) - (let* ((labels (org-footnote-all-labels)) + (let* ((labels (and (not (equal org-footnote-auto-label 'random)) + (org-footnote-all-labels))) (propose (org-footnote-unique-label labels)) (label - (if (member org-footnote-auto-label '(t plain)) - propose + (cond + ((member org-footnote-auto-label '(t plain)) + propose) + ((equal org-footnote-auto-label 'random) + (require 'org-id) + (substring (org-id-uuid) 0 8)) + (t (completing-read "Label (leave empty for anonymous): " (mapcar 'list labels) nil nil (if (eq org-footnote-auto-label 'confirm) propose nil) - 'org-footnote-label-history)))) + 'org-footnote-label-history))))) (setq label (org-footnote-normalize-label label)) (cond ((equal label "") -- 1.7.4.1
Patch 680 (http://patchwork.newartisans.com/patch/680/) is now "Accepted". Maintainer comment: none This relates to the following submission: http://mid.gmane.org/%3C87y64ji2hj.fsf%40fastmail.fm%3E Here is the original message containing the patch: > Content-Type: text/plain; charset="utf-8" > MIME-Version: 1.0 > Content-Transfer-Encoding: 7bit > Subject: [O] New option to create unique, random labels for footnotes. > Date: Fri, 11 Mar 2011 18:50:59 -0000 > From: Matt Lundin <mdl@imapmail.org> > X-Patchwork-Id: 680 > Message-Id: <87y64ji2hj.fsf@fastmail.fm> > To: Org Mode <emacs-orgmode@gnu.org> > > * lisp/org-footnote.el: (org-footnote-auto-label): New random option > * lisp/org-footnote.el: (org-footnote-new): Create random footnote > labels with unique ids > > --- > lisp/org-footnote.el | 16 ++++++++++++---- > 1 files changed, 12 insertions(+), 4 deletions(-) > > diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el > index 2ce6668..9dbd6be 100644 > --- a/lisp/org-footnote.el > +++ b/lisp/org-footnote.el > @@ -113,12 +113,14 @@ t create unique labels of the form [fn:1], [fn:2], ... > confirm like t, but let the user edit the created value. In particular, > the label can be removed from the minibuffer, to create > an anonymous footnote. > +random Automatically generate a unique, random label. > plain Automatically create plain number labels like [1]" > :group 'org-footnote > :type '(choice > (const :tag "Prompt for label" nil) > (const :tag "Create automatic [fn:N]" t) > (const :tag "Offer automatic [fn:N] for editing" confirm) > + (const :tag "Create a random label" random) > (const :tag "Create automatic [N]" plain))) > > (defcustom org-footnote-auto-adjust nil > @@ -253,16 +255,22 @@ This command prompts for a label. If this is a label referencing an > existing label, only insert the label. If the footnote label is empty > or new, let the user edit the definition of the footnote." > (interactive) > - (let* ((labels (org-footnote-all-labels)) > + (let* ((labels (and (not (equal org-footnote-auto-label 'random)) > + (org-footnote-all-labels))) > (propose (org-footnote-unique-label labels)) > (label > - (if (member org-footnote-auto-label '(t plain)) > - propose > + (cond > + ((member org-footnote-auto-label '(t plain)) > + propose) > + ((equal org-footnote-auto-label 'random) > + (require 'org-id) > + (substring (org-id-uuid) 0 8)) > + (t > (completing-read > "Label (leave empty for anonymous): " > (mapcar 'list labels) nil nil > (if (eq org-footnote-auto-label 'confirm) propose nil) > - 'org-footnote-label-history)))) > + 'org-footnote-label-history))))) > (setq label (org-footnote-normalize-label label)) > (cond > ((equal label "") >
Hi Matt, thanks for this set of patch -- I applied them. -- Bastien
[-- Attachment #1: Type: text/plain, Size: 3231 bytes --] I like this, Matt! On Thu, Mar 17, 2011 at 8:25 AM, Bastien Guerry <bzg@altern.org> wrote: > Patch 680 (http://patchwork.newartisans.com/patch/680/) is now "Accepted". > > Maintainer comment: none > > This relates to the following submission: > > http://mid.gmane.org/%3C87y64ji2hj.fsf%40fastmail.fm%3E > > Here is the original message containing the patch: > > > Content-Type: text/plain; charset="utf-8" > > MIME-Version: 1.0 > > Content-Transfer-Encoding: 7bit > > Subject: [O] New option to create unique, random labels for footnotes. > > Date: Fri, 11 Mar 2011 18:50:59 -0000 > > From: Matt Lundin <mdl@imapmail.org> > > X-Patchwork-Id: 680 > > Message-Id: <87y64ji2hj.fsf@fastmail.fm> > > To: Org Mode <emacs-orgmode@gnu.org> > > > > * lisp/org-footnote.el: (org-footnote-auto-label): New random option > > * lisp/org-footnote.el: (org-footnote-new): Create random footnote > > labels with unique ids > > > > --- > > lisp/org-footnote.el | 16 ++++++++++++---- > > 1 files changed, 12 insertions(+), 4 deletions(-) > > > > diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el > > index 2ce6668..9dbd6be 100644 > > --- a/lisp/org-footnote.el > > +++ b/lisp/org-footnote.el > > @@ -113,12 +113,14 @@ t create unique labels of the form [fn:1], > [fn:2], ... > > confirm like t, but let the user edit the created value. In > particular, > > the label can be removed from the minibuffer, to create > > an anonymous footnote. > > +random Automatically generate a unique, random label. > > plain Automatically create plain number labels like [1]" > > :group 'org-footnote > > :type '(choice > > (const :tag "Prompt for label" nil) > > (const :tag "Create automatic [fn:N]" t) > > (const :tag "Offer automatic [fn:N] for editing" confirm) > > + (const :tag "Create a random label" random) > > (const :tag "Create automatic [N]" plain))) > > > > (defcustom org-footnote-auto-adjust nil > > @@ -253,16 +255,22 @@ This command prompts for a label. If this is a > label referencing an > > existing label, only insert the label. If the footnote label is empty > > or new, let the user edit the definition of the footnote." > > (interactive) > > - (let* ((labels (org-footnote-all-labels)) > > + (let* ((labels (and (not (equal org-footnote-auto-label 'random)) > > + (org-footnote-all-labels))) > > (propose (org-footnote-unique-label labels)) > > (label > > - (if (member org-footnote-auto-label '(t plain)) > > - propose > > + (cond > > + ((member org-footnote-auto-label '(t plain)) > > + propose) > > + ((equal org-footnote-auto-label 'random) > > + (require 'org-id) > > + (substring (org-id-uuid) 0 8)) > > + (t > > (completing-read > > "Label (leave empty for anonymous): " > > (mapcar 'list labels) nil nil > > (if (eq org-footnote-auto-label 'confirm) propose nil) > > - 'org-footnote-label-history)))) > > + 'org-footnote-label-history))))) > > (setq label (org-footnote-normalize-label label)) > > (cond > > ((equal label "") > > > > [-- Attachment #2: Type: text/html, Size: 4377 bytes --]