diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/km-denote.el | 17 |
1 files changed, 17 insertions, 0 deletions
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 |