summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Maus <dmaus@ictsoc.de>2010-05-16 16:48:51 +0200
committerDavid Maus <dmaus@ictsoc.de>2010-05-16 16:48:51 +0200
commitd6064d2cdf5d8ed0a6568fe31d48d7cef258e214 (patch)
tree259a0a092281ed90054b5fc4866b8ccdff603fb6
parentaa0004004b7f7e38e9169b24bcd32dd17f3c2a22 (diff)
downloadorg-mode-d6064d2cdf5d8ed0a6568fe31d48d7cef258e214.tar.gz
Use new customization value for `org-id-method'.
Silently accept the old value for backward compatibility.
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/org-id.el28
2 files changed, 15 insertions, 16 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fafe7db..b143fbf 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -2,6 +2,9 @@
* org-id.el (org-id-uuid): New function. Return string with
random (version 4) UUID.
+ (org-id-method): Make 'uuid the new default value.
+ (org-id-new): Use `org-id-uuid' if call to uuidgen program
+ does not return a UUID.
2010-05-15 Carsten Dominik <carsten.dominik@gmail.com>
diff --git a/lisp/org-id.el b/lisp/org-id.el
index 6175eee..66b1790 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -37,8 +37,9 @@
;; time of the ID, with microsecond accuracy. This virtually
;; guarantees globally unique identifiers, even if several people are
;; creating IDs at the same time in files that will eventually be used
-;; together. As an external method `uuidgen' is supported, if installed
-;; on the system.
+;; together.
+;;
+;; By default Org uses UUIDs as global unique identifiers.
;;
;; This file defines the following API:
;;
@@ -84,18 +85,9 @@
:group 'org-id
:type 'string)
-(defcustom org-id-method
- (condition-case nil
- (if (string-match "\\`[-0-9a-fA-F]\\{36\\}\\'"
- (org-trim (shell-command-to-string
- org-id-uuid-program)))
- 'uuidgen
- 'org)
- (error 'org))
+(defcustom org-id-method 'uuid
"The method that should be used to create new IDs.
-If `uuidgen' is available on the system, it will be used as the default method.
-if not, the method `org' is used.
An ID will consist of the optional prefix specified in `org-id-prefix',
and a unique part created by the method this variable specifies.
@@ -105,11 +97,13 @@ org Org's own internal method, using an encoding of the current time to
microsecond accuracy, and optionally the current domain of the
computer. See the variable `org-id-include-domain'.
-uuidgen Call the external command uuidgen."
+uuid Create random (version 4) UUIDs. If the program defined in
+ `org-id-uuid-program' is available it is used to create the ID.
+ Otherwise an internal functions is used."
:group 'org-id
:type '(choice
(const :tag "Org's internal method" org)
- (const :tag "external: uuidgen" uuidgen)))
+ (const :tag "external: uuidgen" uuid)))
(defcustom org-id-prefix nil
"The prefix for IDs.
@@ -306,8 +300,10 @@ So a typical ID could look like \"Org:4nd91V40HI\"."
unique)
(if (equal prefix ":") (setq prefix ""))
(cond
- ((eq org-id-method 'uuidgen)
- (setq unique (org-trim (shell-command-to-string org-id-uuid-program))))
+ ((memq org-id-method '(uuidgen uuid))
+ (setq unique (org-trim (shell-command-to-string org-id-uuid-program)))
+ (unless (org-uuidgen-p unique)
+ (setq unique (org-id-uuid))))
((eq org-id-method 'org)
(let* ((etime (org-id-reverse-string (org-id-time-to-b36)))
(postfix (if org-id-include-domain