X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=86a3e5aa93654c19f0a5911c2d3e26025ee593f4;hp=248a417f1b7defa3dac79f16480a358210956365;hb=669d2f3e9a8a033213dfefe40b380ab268962504;hpb=48088ad943d71bf13541140b628b2a8aed1d31db diff --git a/org-ref.el b/org-ref.el index 248a417..86a3e5a 100644 --- a/org-ref.el +++ b/org-ref.el @@ -612,45 +612,53 @@ Format according to the type in `org-ref-bibliography-entry-format'." ;; 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)) @@ -658,10 +666,14 @@ Format according to the type in `org-ref-bibliography-entry-format'." ((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 @@ -715,20 +727,11 @@ Format according to the type in `org-ref-bibliography-entry-format'." ((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.")) @@ -738,8 +741,7 @@ Format according to the type in `org-ref-bibliography-entry-format'." ((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.")) @@ -3061,7 +3063,7 @@ first key that partially matches. This version avoids that." User is prompted for tags. This function is called from `helm-bibtex'. Argument CANDIDATES helm candidates." (message "") - (let ((keywords (read-input "Keywords (comma separated): "))) + (let ((keywords (read-string "Keywords (comma separated): "))) (loop for key in (helm-marked-candidates) do (save-window-excursion @@ -3099,11 +3101,13 @@ In the helm-bibtex buffer, C-u will give you a helm menu to select a new link ty 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) @@ -3137,7 +3141,7 @@ C-u C-u will change the key at point to the selected keys." ;; 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