branch: externals/denote commit 9f192263dbfadea388dbde390042cbc28f49a338 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: Protesilaos Stavrou <i...@protesilaos.com>
Remove file path from front matter; improve links It is not necessary to pollute the front matter with such details. Files are always relative to the present directory. The linking facility is updated to work as intended (per commit 929157d). This is an update on commit cfe6e98, which was reverted earlier by 8167d0c. --- denote-link.el | 30 ++++++++++++------------------ denote.el | 8 +++----- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/denote-link.el b/denote-link.el index 24b2dff1a0..e07d31e968 100644 --- a/denote-link.el +++ b/denote-link.el @@ -56,9 +56,6 @@ Both are supplied by `denote-link'." (defconst denote-link--title-regexp "^\\(#\\+title:\\)[\s\t]+\\(.*\\)" "Regular expression for title key and value.") -(defconst denote-link--filename-regexp "^\\(#\\+filename:\\)[\s\t]+\\(.*\\)" - "Regular expression for filename key and value.") - (defconst denote-link--identifier-regexp "^\\(#\\+identifier:\\)[\s\t]+\\(.*\\)" "Regular expression for filename key and value.") @@ -83,26 +80,23 @@ Both are supplied by `denote-link'." (read-file-name "Select note: " (denote-directory) nil t nil #'file-regular-p)) ; Includes backup files. Maybe we can remove them? +(defun denote-link--format-link (file &optional backlink) + "Format link to FILE. +With optional BACKLINK, format it as a backlink." + (let* ((dir (denote-directory)) + (file-id (cdr (denote-link--retrieve-value file denote-link--identifier-regexp))) + (file-path (file-name-completion file-id dir)) + (file-title (cdr (denote-link--retrieve-value file denote-link--title-regexp))) + (pattern (if backlink denote-link--backlink-format denote-link--link-format))) + (format pattern file-path file-title file-id))) + ;;;###autoload (defun denote-link (target) "Create Org link to TARGET note in variable `denote-directory'. Run `denote-link-insert-functions' afterwards." (interactive (list (denote-link--read-file-prompt))) - (let* ((dir (denote-directory)) - ;; TODO 2022-06-09: This is probably the ugliest function in - ;; the whole project. We need to make it more readable by - ;; extracting the parts that should go in helper functions. - (target-id (cdr (denote-link--retrieve-value target denote-link--identifier-regexp))) - (target-name (string-remove-prefix - dir (cdr (denote-link--retrieve-value target denote-link--filename-regexp)))) - (target-title (cdr (denote-link--retrieve-value target denote-link--title-regexp))) - (target-link (format denote-link--link-format target-name target-title target-id)) - (origin-note (buffer-file-name)) - (origin-id (cdr (denote-link--retrieve-value origin-note denote-link--identifier-regexp))) - (origin-name (string-remove-prefix - dir (cdr (denote-link--retrieve-value origin-note denote-link--filename-regexp)))) - (origin-title (cdr (denote-link--retrieve-value origin-note denote-link--title-regexp))) - (origin-link (format denote-link--backlink-format origin-name origin-title origin-id))) + (let* ((target-link (denote-link--format-link target)) + (origin-link (denote-link--format-link (buffer-file-name) :backlink))) (insert target-link) (run-hook-with-args 'denote-link-insert-functions target origin-link))) diff --git a/denote.el b/denote.el index 639715639b..5dfa54d83d 100644 --- a/denote.el +++ b/denote.el @@ -288,7 +288,7 @@ is specified." (ext (or extension ".org"))) (format "%s%s--%s--%s%s" path id kws slug ext))) -(defun denote--file-meta-header (title date keywords filename id) +(defun denote--file-meta-header (title date keywords id) "Front matter for new notes. TITLE, DATE, KEYWORDS, FILENAME, ID are all strings which are @@ -298,9 +298,7 @@ TITLE, DATE, KEYWORDS, FILENAME, ID are all strings which are "#+date: " date "\n" "#+filetags: " kw "\n" "#+identifier: " id "\n" - "#+filename: " (string-remove-prefix denote-directory filename) "\n" - "#+path: " filename "\n" - "\n\n"))) + "\n"))) (defun denote--path (title keywords) "Return path to new file with TITLE and KEYWORDS. @@ -329,7 +327,7 @@ Use optional PATH, else create it with `denote--path'." (default-directory denote-directory) (buffer (unless path (find-file p))) (header (denote--file-meta-header - title (denote--date) keywords p + title (denote--date) keywords (format-time-string denote--id)))) (unless path (with-current-buffer buffer (insert header))