浏览代码

Allow customised ID format for `ts' `org-id-method'

* lisp/org-id.el (org-id-new): Use `org-id-ts-format' as ID format for
`ts' ID generation method.
(org-id-ts-format): New custom variable for `ts' ID format.  The
default value is the same as old hard-coded ID format string.
* etc/ORG-NEWS (New option ~org-id-ts-format~): Announce the new
custom variable.
Ihor Radchenko 4 年之前
父节点
当前提交
6c75b00217
共有 2 个文件被更改,包括 11 次插入1 次删除
  1. 6 0
      etc/ORG-NEWS
  2. 5 1
      lisp/org-id.el

+ 6 - 0
etc/ORG-NEWS

@@ -404,6 +404,12 @@ The new value uses Emacs as the application for opening directory.
 
 Functions in this hook are run after ~org-agenda-filter~ is called.
 
+*** New option ~org-id-ts-format~
+
+Earlier, IDs generated using =ts= method had a hard-coded format (i.e. =20200923T160237.891616=).
+The new option allows user to customise the format.
+Defaults are unchanged.
+
 ** Removed or renamed functions and variables
 *** Deprecated ~org-flag-drawer~ function
 

+ 5 - 1
lisp/org-id.el

@@ -128,6 +128,10 @@ nil   Never use an ID to make a link, instead link using a text search for
   :group 'org-id
   :type 'string)
 
+(defcustom org-id-ts-format "%Y%m%dT%H%M%S.%6N"
+  "Default format for IDs generated using `ts' `org-id-method'.
+The format should be suitable to pass as an argument to `format-time-string'.")
+
 (defcustom org-id-method 'uuid
   "The method that should be used to create new IDs.
 
@@ -380,7 +384,7 @@ So a typical ID could look like \"Org:4nd91V40HI\"."
 			    (concat "@" (message-make-fqdn))))))
 	(setq unique (concat etime postfix))))
      ((eq org-id-method 'ts)
-      (let ((ts (format-time-string "%Y%m%dT%H%M%S.%6N"))
+      (let ((ts (format-time-string org-id-ts-format))
 	    (postfix (if org-id-include-domain
 			 (progn
 			   (require 'message)