summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2011-07-01 12:09:34 -0700
committerEric Schulte <schulte.eric@gmail.com>2011-07-01 12:09:34 -0700
commit0b6eb6de3caba434cd37566b0a6bdc91fc1c15bc (patch)
treee74f54e8d5fa2478e984d6c83a297bab77c1b4e1
parent549a5212566e300023e038ec945cb9e8efe37e19 (diff)
downloadorg-mode-0b6eb6de3caba434cd37566b0a6bdc91fc1c15bc.tar.gz
ob-ref: don't let org-id rescan all IDs when trying to resolve a reference
* lisp/ob-ref.el (org-babel-ref-goto-headline-id): Don't let org-id rescan all IDs when trying to resolve a reference.
-rw-r--r--lisp/ob-ref.el10
1 files changed, 9 insertions, 1 deletions
diff --git a/lisp/ob-ref.el b/lisp/ob-ref.el
index 4c4a8f8..1ff5ee0 100644
--- a/lisp/ob-ref.el
+++ b/lisp/ob-ref.el
@@ -87,7 +87,15 @@ the variable."
(let ((rx (regexp-quote id)))
(or (re-search-forward
(concat "^[ \t]*:CUSTOM_ID:[ \t]+" rx "[ \t]*$") nil t)
- (condition-case nil (progn (org-id-goto id) t) (error nil)))))
+ (let* ((file (org-id-find-id-file id))
+ (m (when file (org-id-find-id-in-file id file 'marker))))
+ (when (and file m)
+ (message "file:%S" file)
+ (switch-to-buffer (marker-buffer m))
+ (goto-char m)
+ (move-marker m nil)
+ (org-show-context)
+ t)))))
(defun org-babel-ref-headline-body ()
(save-restriction