]> git.donarmstrong.com Git - org-ref.git/blobdiff - org-ref.el
Merge branch 'master' of github.com:jkitchin/org-ref
[org-ref.git] / org-ref.el
index 3fdecfb93874389c334334044cc93d37a8ca8175..86a3e5aa93654c19f0a5911c2d3e26025ee593f4 100644 (file)
@@ -326,7 +326,7 @@ You will see a message in the minibuffer when on a cite, ref or label link."
                       (replace-regexp-in-string "\*" "\\\\*" x)
                       )
                     org-ref-cite-types "\\|") "\\)"
-  ":\\([a-zA-Z0-9-_:\\.]*,?\\)*"))
+  ":\\([a-zA-Z0-9-_:\\./]*,?\\)*"))
 
 
 (setq org-ref-label-re
@@ -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