branch: externals/denote commit 303f39e15052f0755953b4bd50b5648dd2e06889 Merge: 53e6ca2299 66e455ef84 Author: Protesilaos Stavrou <i...@protesilaos.com> Commit: GitHub <nore...@github.com>
Merge pull request #26 from ggjp/subdir-support Fix links in non org notes --- denote-link.el | 14 +++++++------- denote.el | 8 +++++++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/denote-link.el b/denote-link.el index 3305bddfe1..d75823b15b 100644 --- a/denote-link.el +++ b/denote-link.el @@ -386,11 +386,12 @@ format is always [[denote:IDENTIFIER]]." (defun denote-link--find-file-at-button (button) "Visit file referenced by BUTTON." - (let ((id (denote-link--id-from-string - (buffer-substring-no-properties - (button-start button) - (button-end button))))) - (funcall denote-link-buton-action (file-name-completion id (denote-directory))))) + (let* ((id (denote-link--id-from-string + (buffer-substring-no-properties + (button-start button) + (button-end button)))) + (file (denote--get-note-path-by-id id))) + (funcall denote-link-buton-action file))) ;;;###autoload (defun denote-link-buttonize-buffer (&optional beg end) @@ -557,8 +558,7 @@ and the identifier." (id (if (and (stringp search) (not (string-empty-p search))) (substring link 0 (match-beginning 0)) link)) - (path (cl-find-if (lambda (f) (string-prefix-p id (file-name-nondirectory f))) - (denote--directory-files :absolute)))) + (path (denote--get-note-path-by-id id))) (cond (path-id (cons (format "%s" path) (format "%s" id))) diff --git a/denote.el b/denote.el index f57ce463e0..26f0168c34 100644 --- a/denote.el +++ b/denote.el @@ -327,7 +327,7 @@ FILE must be an absolute path." "Return non-nil if current file likely is a Denote note." (and (or (string-match-p denote--id-regexp (buffer-file-name)) (string-match-p denote--id-regexp (buffer-name))) - (string= (expand-file-name default-directory) (denote-directory)))) + (string-prefix-p (denote-directory) (expand-file-name default-directory)))) ;;;; Keywords @@ -352,6 +352,12 @@ names that are relative to the variable `denote-directory'." (lambda (s) (denote--file-name-relative-to-denote-directory s)) files)))) +(defun denote--get-note-path-by-id(id) + "Given an ID, return the absolute path of the corresponding note +in `denote-directory'." + (cl-find-if (lambda (f) (string-prefix-p id (file-name-nondirectory f))) + (denote--directory-files :absolute))) + (defun denote--directory-files-matching-regexp (regexp &optional no-check-current) "Return list of files matching REGEXP. With optional NO-CHECK-CURRENT do not test if the current file is