summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--README1
-rw-r--r--README.md1
-rw-r--r--bog.el22
4 files changed, 26 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index dfe8d3b..ed2a278 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,8 @@
custom Bog commands for the Org agenda have been removed because this
functionality is now available through =bog-commander=.
+- Add command =bog-citekey-tree-to-indirect-buffer=.
+
** Other changes
- =bog-goto-citekey-heading-in-buffer= and
diff --git a/README b/README
index 85fcef6..a0e6eef 100644
--- a/README
+++ b/README
@@ -101,6 +101,7 @@ Other useful functions include
- =bog-goto-citekey-heading-in-buffer=
- =bog-goto-citekey-heading-in-notes=
+- =bog-citekey-tree-to-indirect-buffer=
- =bog-refile=
- =bog-search-notes=
- =bog-search-notes-for-citekey=
diff --git a/README.md b/README.md
index 2ded111..1e69072 100644
--- a/README.md
+++ b/README.md
@@ -89,6 +89,7 @@ Other useful functions include
- `bog-goto-citekey-heading-in-buffer`
- `bog-goto-citekey-heading-in-notes`
+- `bog-citekey-tree-to-indirect-buffer`
- `bog-refile`
- `bog-search-notes`
- `bog-search-notes-for-citekey`
diff --git a/bog.el b/bog.el
index c11053c..1364707 100644
--- a/bog.el
+++ b/bog.el
@@ -651,6 +651,27 @@ buffer, the narrowing is removed."
(org-show-context))
(message "Heading for %s not found in notes" citekey))))
+(defun bog-citekey-tree-to-indirect-buffer (&optional no-context)
+ "Open subtree for citekey in an indirect buffer.
+
+The citekey will be taken from the text under point if it matches
+`bog-citekey-format'.
+
+With prefix argument NO-CONTEXT, a prompt will open to select
+from all citekeys for headings in notes. This same prompt will be
+opened if locating a citekey from context fails."
+ (interactive "P")
+ (let* ((citekey (bog-citekey-from-point-or-all-headings no-context))
+ (marker
+ (org-find-exact-heading-in-directory citekey bog-notes-directory)))
+ (if marker
+ (with-current-buffer (marker-buffer marker)
+ (save-excursion
+ (save-restriction
+ (goto-char (marker-position marker))
+ (org-tree-to-indirect-buffer))))
+ (message "Heading for %s not found in notes" citekey))))
+
(defun bog-refile ()
"Refile heading within notes.
All headings from Org files in `bog-notes-directory' at or above
@@ -825,6 +846,7 @@ chosen."
(define-key prefix-map "g" 'bog-search-citekey-on-web)
(define-key prefix-map "h" 'bog-goto-citekey-heading-in-buffer)
(define-key prefix-map "H" 'bog-goto-citekey-heading-in-notes)
+ (define-key prefix-map "i" 'bog-citekey-tree-to-indirect-buffer)
(define-key prefix-map "r" 'bog-rename-staged-file-to-citekey)
(define-key prefix-map "s" 'bog-search-notes)
(define-key prefix-map "w" 'bog-refile)