diff options
| author | Max Nikulin <manikulin@gmail.com> | 2022-11-07 23:48:02 +0700 |
|---|---|---|
| committer | Ihor Radchenko <yantar92@posteo.net> | 2022-11-16 09:47:03 +0800 |
| commit | 08a8c9e67822fd6340e99fd7387c2f8098510594 (patch) | |
| tree | 94d72409752edf6f267b0ba45dcdc6d090527d0b /etc/ORG-NEWS | |
| parent | 21413d3589e2ad817c29add963ab0ebd8e3f1186 (diff) | |
| download | org-mode-08a8c9e67822fd6340e99fd7387c2f8098510594.tar.gz | |
org-attach.el: ID to path functions may return nil
* lisp/org-attach.el (org-attach-dir-from-id): Ignore nil values
returned by entries from `org-attach-id-to-path-function-list'.
(org-attach-dir-get-create): Signal an error suggesting customization
of `org-attach-id-to-path-function-list' if all ID-to-path functions
return nil.
(org-attach-id-to-path-function-list): Add to the docstring examples
how to handle unusual IDs.
(org-attach-id-uuid-folder-format, org-attach-id-ts-folder-format):
Return nil if ID is too short.
(org-attach-id-fallback-folder-format): New function that may be added
as the last element of `org-attach-id-path-function-list' to handle
unexpectedly short IDs.
* etc/ORG-NEWS: Advertise the change.
Earlier an obscure error like 'org-attach-id-ts-folder-format: Args out
of range: "ftt", 0, 6' was signalled in the case of unexpectedly short
ID.
Reported-by: Janek F <xerusx@pm.me>
Link: https://list.orgmode.org/KC8PcypJapBpJQtJxM0kX5N7Z0THL2Lq6EQjBMzpw1-vgQf72egZ2JOIlTbPYiqAVD4MdSBhrhBZr2Ykf5DN1mocm1ANvvuKKZShlkgzKYM=@pm.me
Diffstat (limited to 'etc/ORG-NEWS')
| -rw-r--r-- | etc/ORG-NEWS | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 04b5be6..78f7c5d 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -604,6 +604,45 @@ With the new customization option ~org-texinfo-with-latex~ set to (its default value) ~'detect~, if the system runs Texinfo 6.8 (3 July 2021) or newer, Org will export all LaTeX fragments and environments using Texinfo ~@math~ and ~@displaymath~ commands respectively. +*** More flexible ~org-attach-id-to-path-function-list~ + +List entries may return nil if they are unable to handle the passed +ID. So, responsibility is passed to the next item in the list. +Default entries ~org-attach-id-uuid-folder-format~ and +~org-attach-id-ts-folder-format~ now return nil for too short IDs. +Earlier an obscure error has been thrown. + +After the change, error text suggests adjusting +~org-attach-id-to-path-function-list~ value. The +~org-attach-dir-from-id~ function is adapted to ignore nil values and +to take first non-nil value instead of the value returned by first +~org-attach-id-to-path-function-list~ item. + +New policy allows mixing different ID styles while keeping subfolder +layout suited best for each one. For example, one can use the +following snippet to allow multiple different ID formats in Org files. + +#+begin_src emacs-lisp +(setq org-attach-id-to-path-function-list + '(;; When ID looks like an UUIDs or Org internal ID, use + ;; `org-attach-id-uuid-folder-format'. + (lambda (id) + (and (or (org-uuidgen-p id) + (string-match-p "[0-9a-z]\\{12\\}" id)) + (org-attach-id-uuid-folder-format id))) + ;; When ID looks like a timestap-based ID. Group by year-month + ;; folders. + (lambda (id) + (and (string-match-p "[0-9]\\{8\\}T[0-9]\\{6\\}\.[0-9]\\{6\\}" id) + (org-attach-id-ts-folder-format id))) + ;; Any other ID goes into "important" folder. + (lambda (id) (format "important/%s/%s" (substring id 0 1) id)) + ;; Fallback to detect existing attachments for old defaults. + ;; All the above functions, even when return non-nil, would + ;; point to non-existing folders. + org-attach-id-uuid-folder-format + org-attach-id-ts-folder-format)) +#+end_src * Version 9.5 |
