|
@@ -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
|