From a10e67dbfff0df878fc4b3b0f0b690afc1fbfc8d Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Wed, 30 Dec 2015 18:06:05 -0500 Subject: Add command to find files with no heading citekey --- NEWS | 3 +++ bog.el | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/NEWS b/NEWS index 3cc18af..cff6477 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,9 @@ ** New features +- New command ~bog-list-orphan-files~ finds citekey files that don't + have a corresponding citekey heading in the notes. + - New command ~bog-rename-citekey-file~ updates the name of an existing citekey file. diff --git a/bog.el b/bog.el index 64b5ab9..05b78bb 100644 --- a/bog.el +++ b/bog.el @@ -730,6 +730,30 @@ Generate a file name with the form (directory-files bog-stage-directory t directory-files-no-dot-files-regexp))) +;;;###autoload +(defun bog-list-orphan-files () + "Find files in `bog-file-directory' without a citekey heading." + (interactive) + (let ((head-cks (bog-all-heading-citekeys))) + (with-current-buffer (get-buffer-create "*Bog orphan files*") + (erase-buffer) + (setq default-directory bog-root-directory) + (insert ?\n) + (dolist (ck-file (bog-all-citekey-files)) + (let ((base-name (file-name-nondirectory ck-file)) + (case-fold-search nil)) + (unless (and (string-match (concat "\\`" bog-citekey-format) + base-name) + (member (match-string-no-properties 0 base-name) + head-cks)) + (insert (format "- [[file:%s]]\n" (file-relative-name ck-file)))))) + (goto-char (point-min)) + (org-mode) + (if (/= (buffer-size) 1) + (pop-to-buffer (current-buffer)) + (message "No orphans found") + (kill-buffer))))) + ;;; BibTeX-related -- cgit v1.2.3