(loop for file in org-ref-bibliography-files do
(if (org-ref-key-in-file-p key (file-truename file))
(throw 'result file)
- (message "%s not found in %s" key (file-truename file))))))
+ (message "%s not found in %s"
+ key (file-truename file))))))
(with-temp-buffer
(insert-file-contents file)
"on clicking goto the label. Navigate back with C-c &"
(org-mark-ring-push)
;; next search from beginning of the buffer
-
;; it is possible you would not find the label if narrowing is in effect
(widen)
-
(unless
(or
;; our label links
;; #+label: name org-definition
(progn
(goto-char (point-min))
- (re-search-forward (format "^#\\+label:\\s-*\\(%s\\)\\b" label) nil t))
+ (re-search-forward
+ (format "^#\\+label:\\s-*\\(%s\\)\\b" label) nil t))
;; org tblname
(progn
(goto-char (point-min))
- (re-search-forward (format "^#\\+tblname:\\s-*\\(%s\\)\\b" label) nil t))
+ (re-search-forward
+ (format "^#\\+tblname:\\s-*\\(%s\\)\\b" label) nil t)))
;; we did not find anything, so go back to where we came
(org-mark-ring-goto)
(lambda (table)
(org-element-property :name table))))
+
(defun org-ref-get-labels ()
"Return a list of labels in the buffer that you can make a ref link to.
This is used to complete ref links and in helm menus."
;; CUSTOM_IDs
(org-ref-get-custom-ids))))))
+
(defun org-ref-helm-insert-label-link ()
"Insert a label link. helm just shows you what labels already exist.
If you are on a label link, replace it."
;; default action is to open to the label
(action . (lambda (label)
;; unfortunately I do not have markers here
- (org-open-link-from-string (format "ref:%s" label))))
+ (org-open-link-from-string
+ (format "ref:%s" label))))
;; if you select a label, replace current one
(action . (lambda (label)
(switch-to-buffer ,cb)
(or label
helm-pattern))))))))))))
+
(defun org-ref-complete-link (&optional arg)
"Completion function for ref links.
Optional argument ARG Does nothing."
(setq label (completing-read "label: " (org-ref-get-labels)))
(format "ref:%s" label)))
+
(defun org-ref-insert-ref-link ()
"Completion function for a ref link."
(interactive)
(insert (org-ref-complete-link)))
+
(defun org-ref-helm-insert-ref-link ()
"Helm menu to insert ref links to labels in the document.
If you are on link, replace with newly selected label.
;; #+label: name org-definition
(progn
(goto-char (point-min))
- (re-search-forward (format "^#\\+label:\\s-*\\(%s\\)\\b" label) nil t))
+ (re-search-forward
+ (format "^#\\+label:\\s-*\\(%s\\)\\b" label) nil t))
;; org tblname
(progn
(goto-char (point-min))
- (re-search-forward (format "^#\\+tblname:\\s-*\\(%s\\)\\b" label) nil t))
-
-;; Commented out because these ref links do not actually translate correctly in LaTeX.
-;; you need [[#label]] links.
- ;; CUSTOM_ID
-; (progn
-; (goto-char (point-min))
-; (re-search-forward (format ":CUSTOM_ID:\s-*\\(%s\\)" label) nil t))
- )
+ (re-search-forward
+ (format "^#\\+tblname:\\s-*\\(%s\\)\\b" label) nil t)))
;; we did not find anything, so go back to where we came
(org-mark-ring-goto)
(error "%s not found" label))
((eq format 'latex)
(format "\\pageref{%s}" keyword)))))
+
(defun org-pageref-complete-link (&optional arg)
"Completion function for ref links.
Optional argument ARG Does nothing."
(setq label (completing-read "label: " (org-ref-get-labels)))
(format "ref:%s" label)))
+
(defun org-pageref-insert-ref-link ()
"Insert a pageref link with completion."
(interactive)
(insert (org-pageref-complete-link)))
+
;; *** nameref link
(org-add-link-type
"nameref"
(setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
(setq key-beginning link-string-beginning))) ; no match found
;; save the key we clicked on.
- (setq bibtex-key (org-ref-strip-string (buffer-substring key-beginning key-end)))
+ (setq bibtex-key
+ (org-ref-strip-string
+ (buffer-substring key-beginning key-end)))
(set-text-properties 0 (length bibtex-key) nil bibtex-key)
bibtex-key)
;; link with description. assume only one key