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 "")
>