From 11b66c57ff48fbfd7ab1df3423b2289a7673347d Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Mon, 7 Aug 2023 00:13:43 -0400 Subject: denote: Add custom command to find file at point --- lisp/km-denote.el | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lisp') diff --git a/lisp/km-denote.el b/lisp/km-denote.el index 1a9e622..eade820 100644 --- a/lisp/km-denote.el +++ b/lisp/km-denote.el @@ -36,5 +36,22 @@ from the file name." (denote-retrieve-filename-title fname) (denote-extract-keywords-from-path fname)))) +;;;###autoload +(defun km/denote-find-file-at-point () + "Find the file in `denote-directory' for the denote ID at point. +The file must be tracked in Git." + (interactive) + (let ((id (save-excursion + (let ((case-fold-search nil)) + (skip-chars-backward "-a-z0-9_T")) + (if (looking-at denote-id-regexp) + (match-string-no-properties 0) + (user-error "No denote ID at point")))) + (default-directory denote-directory)) + (find-file + (car (or (process-lines "git" "ls-files" "--" (concat id "--*")) + (process-lines "git" "ls-files" "--" (concat "**/" id "--*")) + (user-error "No tracked file found for %s" id)))))) + (provide 'km-denote) ;;; km-denote.el ends here -- cgit v1.2.3