emacs-orgmode
[Top][All Lists]
Advanced

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

[O] [PATCH] New option to create unique, random labels for footnotes.


From: Matt Lundin
Subject: [O] [PATCH] New option to create unique, random labels for footnotes.
Date: Fri, 11 Mar 2011 08:50:59 -0500

* 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




reply via email to

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