(replace-regexp-in-string "\*" "\\\\*" x)
)
org-ref-cite-types "\\|") "\\)"
- ":\\([a-zA-Z0-9-_:\\.]*,?\\)*"))
+ ":\\([a-zA-Z0-9-_:\\./]*,?\\)*"))
(setq org-ref-label-re
;; may contain multiple files. this code finds the
;; one you clicked on and opens it.
(lambda (link-string)
- ;; get link-string boundaries
- ;; we have to go to the beginning of the line, and then search forward
-
+ ;; get link-string boundaries we have to go to the
+ ;; beginning of the line, and then search forward
(let* ((bibfile)
;; object is the link you clicked on
(object (org-element-context))
(link-string-beginning)
- (link-string-end))
-
+ (link-string-end)
+ (cp (point)))
(save-excursion
(goto-char (org-element-property :begin object))
(search-forward link-string nil nil 1)
(setq link-string-beginning (match-beginning 0))
(setq link-string-end (match-end 0)))
- ;; We set the reftex-default-bibliography
- ;; here. it should be a local variable only in
- ;; the current buffer. We need this for using
- ;; reftex to do citations.
- (set (make-local-variable 'reftex-default-bibliography)
- (split-string (org-element-property :path object) ","))
-
- ;; now if we have comma separated bibliographies
- ;; we find the one clicked on. we want to
- ;; search forward to next comma from point
- (save-excursion
- (if (search-forward "," link-string-end 1 1)
- (setq key-end (- (match-end 0) 1)) ; we found a match
- (setq key-end (point)))) ; no comma found so take the point
- ;; and backward to previous comma from point
- (save-excursion
- (if (search-backward "," link-string-beginning 1 1)
- (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
- (setq key-beginning (point)))) ; no match found
+ ;; Make sure point is in the link-path.
+ (if (< cp link-string-beginning)
+ (goto-char link-string-beginning))
+ ;; We set the reftex-default-bibliography
+ ;; here. it should be a local variable only in
+ ;; the current buffer. We need this for using
+ ;; reftex to do citations.
+ (set (make-local-variable 'reftex-default-bibliography)
+ (split-string
+ (org-element-property :path object) ","))
+
+ ;; now if we have comma separated bibliographies
+ ;; we find the one clicked on. we want to
+ ;; search forward to next comma from point
+ (save-excursion
+ (if (search-forward "," link-string-end 1 1)
+ ;; we found a match
+ (setq key-end (- (match-end 0) 1))
+ ;; no comma found so take the point
+ (setq key-end (point))))
+ ;; and backward to previous comma from point
+ (save-excursion
+ (if (search-backward "," link-string-beginning 1 1)
+ ;; we found a match
+ (setq key-beginning (+ (match-beginning 0) 1))
+ (setq key-beginning (point)))) ; no match found
;; save the key we clicked on.
- (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
- (find-file bibfile))) ; open file on click
+ (setq bibfile (org-ref-strip-string
+ (buffer-substring key-beginning key-end)))
+ ;; open file on click
+ (find-file bibfile)))
- ;; formatting code
+ ;; formatting code
(lambda (keyword desc format)
(cond
((eq format 'org) (org-ref-get-org-bibliography))
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
;; write out the latex bibliography command
- (format "\\bibliography{%s}" (replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
- (mapcar 'expand-file-name
- (split-string keyword ","))
- ",")))))))
+ (format "\\bibliography{%s}"
+ (replace-regexp-in-string
+ "\\.bib" ""
+ (mapconcat
+ 'identity
+ (mapcar 'expand-file-name
+ (split-string keyword ","))
+ ",")))))))
(org-add-link-type "nobibliography"
;; this code is run on clicking. The bibliography
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
;; write out the latex bibliography command
-
-; (format "{\\setbox0\\vbox{\\bibliography{%s}}}"
-; (replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
-; (mapcar 'expand-file-name
-; (split-string keyword ","))
-; ",")))
-
(format "\\nobibliography{%s}"
(replace-regexp-in-string "\\.bib" "" (mapconcat 'identity
(mapcar 'expand-file-name
(split-string keyword ","))
- ",")))
-
- ))))
+ ",")))))))
(org-add-link-type "printbibliography"
(lambda (arg) (message "Nothing implemented for clicking here."))
((eq format 'html) (org-ref-get-html-bibliography))
((eq format 'latex)
;; write out the biblatex bibliography command
- "\\printbibliography"))
-))
+ "\\printbibliography"))))
(org-add-link-type "bibliographystyle"
(lambda (arg) (message "Nothing implemented for clicking here."))
(defun org-ref-link-message ()
"Print a minibuffer message about the link that point is on."
(interactive)
- (when (eq major-mode 'org-mode)
- (let* ((object (org-element-context))
- (type (org-element-property :type object)))
- (save-excursion
- (cond
- ;; cite links
- ((-contains? org-ref-cite-types type)
- (message (org-ref-get-citation-string-at-point)))
-
- ;; message some context about the label we are referring to
- ((string= type "ref")
- (message "%scount: %s"
- (org-ref-get-label-context
- (org-element-property :path object))
- (org-ref-count-labels
- (org-element-property :path object))))
-
- ((string= type "eqref")
- (message "%scount: %s"
- (org-ref-get-label-context
- (org-element-property :path object))
- (org-ref-count-labels
- (org-element-property :path object))))
-
- ;; message the count
- ((string= type "label")
- (let ((count (org-ref-count-labels
- (org-element-property :path object))))
- ;; get plurality on occurrence correct
- (message (concat
- (number-to-string count)
- " occurence"
- (when (or (= count 0)
- (> count 1))
- "s")))))
-
- ((string= type "custom-id")
- (save-excursion
- (org-open-link-from-string
- (format "[[#%s]]" (org-element-property :path object)))
- (message "%s" (org-get-heading))))
-
- ;; check if the bibliography files exist.
- ((string= type "bibliography")
- (let* ((bibfile)
- ;; object is the link you clicked on
- (object (org-element-context))
- (link-string (org-element-property :path object))
- (link-string-beginning)
- (link-string-end))
- (save-excursion
- (goto-char (org-element-property :begin object))
- (search-forward link-string nil nil 1)
- (setq link-string-beginning (match-beginning 0))
- (setq link-string-end (match-end 0)))
-
- ;; make sure we are in link and not before the :
- (when (> link-string-beginning (point))
- (goto-char link-string-beginning))
-
- ;; now if we have comma separated bibliographies
- ;; we find the one clicked on. we want to
- ;; search forward to next comma from point
+ (save-restriction
+ (widen)
+ (when (eq major-mode 'org-mode)
+ (let* ((object (org-element-context))
+ (type (org-element-property :type object)))
+ (save-excursion
+ (cond
+ ;; cite links
+ ((-contains? org-ref-cite-types type)
+ (message (org-ref-get-citation-string-at-point)))
+
+ ;; message some context about the label we are referring to
+ ((string= type "ref")
+ (message "%scount: %s"
+ (org-ref-get-label-context
+ (org-element-property :path object))
+ (org-ref-count-labels
+ (org-element-property :path object))))
+
+ ((string= type "eqref")
+ (message "%scount: %s"
+ (org-ref-get-label-context
+ (org-element-property :path object))
+ (org-ref-count-labels
+ (org-element-property :path object))))
+
+ ;; message the count
+ ((string= type "label")
+ (let ((count (org-ref-count-labels
+ (org-element-property :path object))))
+ ;; get plurality on occurrence correct
+ (message (concat
+ (number-to-string count)
+ " occurence"
+ (when (or (= count 0)
+ (> count 1))
+ "s")))))
+
+ ((string= type "custom-id")
(save-excursion
- (if (search-forward "," link-string-end 1 1)
- (setq key-end (- (match-end 0) 1)) ; we found a match
- (setq key-end (point)))) ; no comma found so take the point
+ (org-open-link-from-string
+ (format "[[#%s]]" (org-element-property :path object)))
+ (message "%s" (org-get-heading))))
+
+ ;; check if the bibliography files exist.
+ ((string= type "bibliography")
+ (let* ((bibfile)
+ ;; object is the link you clicked on
+ (object (org-element-context))
+ (link-string (org-element-property :path object))
+ (link-string-beginning)
+ (link-string-end))
+ (save-excursion
+ (goto-char (org-element-property :begin object))
+ (search-forward link-string nil nil 1)
+ (setq link-string-beginning (match-beginning 0))
+ (setq link-string-end (match-end 0)))
+
+ ;; make sure we are in link and not before the :
+ (when (> link-string-beginning (point))
+ (goto-char link-string-beginning))
+
+ ;; now if we have comma separated bibliographies
+ ;; we find the one clicked on. we want to
+ ;; search forward to next comma from point
+ (save-excursion
+ (if (search-forward "," link-string-end 1 1)
+ (setq key-end (- (match-end 0) 1)) ; we found a match
+ (setq key-end (point)))) ; no comma found so take the point
- ;; and backward to previous comma from point
- (save-excursion
- (if (search-backward "," link-string-beginning 1 1)
- (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
- (setq key-beginning (point)))) ; no match found
- ;; save the key we clicked on.
- (setq bibfile
- (org-ref-strip-string
- (buffer-substring key-beginning key-end)))
- (if (file-exists-p bibfile)
- (message "%s exists." bibfile)
- (message "!!! %s NOT FOUND !!!" bibfile))))
- )))))
+ ;; and backward to previous comma from point
+ (save-excursion
+ (if (search-backward "," link-string-beginning 1 1)
+ (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+ (setq key-beginning (point)))) ; no match found
+ ;; save the key we clicked on.
+ (setq bibfile
+ (org-ref-strip-string
+ (buffer-substring key-beginning key-end)))
+ (if (file-exists-p bibfile)
+ (message "%s exists." bibfile)
+ (message "!!! %s NOT FOUND !!!" bibfile))))))))))
;; ** aliases
(defalias 'oro 'org-ref-open-citation-at-point)
C-u C-u will change the key at point to the selected keys."
(let* ((object (org-element-context))
(last-char (save-excursion
- (goto-char (org-element-property :end object))
- (backward-char)
- (if (looking-at " ")
- " "
- ""))))
+ (when (org-element-property :end object)
+ (goto-char (org-element-property :end object))
+ (unless (bobp)
+ (backward-char))
+ (if (looking-at " ")
+ " "
+ "")))))
(cond
;; case where we are in a link
((and (equal (org-element-type object) 'link)
;; We are next to a link, and we want to append
;; next to a link means one character back is on a link.
((save-excursion
- (backward-char)
+ (unless (bobp) (backward-char))
(and (equal (org-element-type (org-element-context)) 'link)
(-contains?
org-ref-cite-types