branch: externals/denote commit dd086b78fc6e2ae04aecec47cdb1199f25206a5e Author: Marc Fargas <m...@marcfargas.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Add support for `org-store-link`. Hi, Denote, uses the `denote:` link type internally. This patch adds support for `org-store-link` of denote files meaning that you can call `org-store-link` from a note and get a `denote:` link instead of the current `file:` link. The main benefit of a denote link is that it is resilient to renames, etc. A file link would brake if the note was ever to be renamed. As a side benefit, as `org-capture` uses `org-store-link` now you can capture tasks on notes with resilient links! This may seem related to `denote-link-use-org-id` though that one would only work with orgmode notes (and, I think, as long as those were withing `org-directory` when using `id:` links). This should work with notes in any format, now `org-capture` works and `org-store-link` too. Best, Marc PS: This closes #104 on Github[1]. PSS: Second attempt at submitting a patch via git-email ... [1]: https://github.com/protesilaos/denote/issues/104 Signed-off-by: Marc Fargas <m...@marcfargas.com> --- denote.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/denote.el b/denote.el index 2d5adfd642..8dccf117ce 100644 --- a/denote.el +++ b/denote.el @@ -2374,6 +2374,20 @@ interface by first selecting the `denote:' hyperlink type." "denote:" (denote--retrieve-filename-identifier (denote--retrieve-read-file-prompt)))) +(defun denote-link-ol-store() + "Handler for `org-store-link' adding support for denote: links." + (when (denote--current-file-is-note-p) + (let* ((file (buffer-file-name)) + (file-type (denote--filetype-heuristics file)) + (file-id (denote--retrieve-filename-identifier file)) + (file-title (denote--retrieve-title-or-filename file file-type))) + + (org-link-store-props + :type "denote" + :description file-title + :link (concat "denote:" file-id))) + org-store-link-plist)) + (defun denote-link-ol-export (link description format) "Export a `denote:' link from Org files. The LINK, DESCRIPTION, and FORMAT are handled by the export @@ -2407,6 +2421,7 @@ backend." :follow #'denote-link-ol-follow :face #'denote-link-ol-face :complete #'denote-link-ol-complete + :store #'denote-link-ol-store :export #'denote-link-ol-export))))) ;;;; Glue code for org-capture