X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=1433b2f207a865df045e133fdba8ead9339959e0;hp=273e5e4ebbce5f8b4e0444a012c102c246556029;hb=3dbd943d56cfc3358551d731dc8ad31b9495a601;hpb=97b25e74fd9a14e2797319fd4cc6a7f68e9c2b11 diff --git a/org-ref.el b/org-ref.el index 273e5e4..1433b2f 100644 --- a/org-ref.el +++ b/org-ref.el @@ -334,7 +334,7 @@ You will see a message in the minibuffer when on a cite, ref or label link." (setq org-ref-ref-re - "ref:\\([a-zA-Z0-9-_:]*,?\\)*") + "\\(eq\\)?ref:\\([a-zA-Z0-9-_:]*,?\\)*") (defface org-ref-cite-face @@ -748,11 +748,26 @@ Format according to the type in `org-ref-bibliography-entry-format'." ;; write out the latex bibliography command (format "\\bibliographystyle{%s}" keyword))))) + +(defun org-bibliographystyle-complete-link (&optional arg) + "Completion function for bibliographystyle link. +ARG does nothing." + (format "bibliographystyle:%s" (ido-completing-read + "style: " + '("unsrt" "plain" "alpha" + ;; natbib + ;; https://www.sharelatex.com/learn/Natbib_bibliography_styles + "dinat" "humannat" "plainnat" + "abbrnat" "unsrtnat" "rusnat" + "ksfhnat")))) + + (defun org-bibliography-complete-link (&optional arg) "Completion function for bibliography link. ARG does nothing." (format "bibliography:%s" (read-file-name "enter file: " nil nil t))) + (defun org-ref-insert-bibliography-link () "Insert a bibliography with completion." (interactive) @@ -900,6 +915,8 @@ ARG does nothing." ((eq format 'latex) (format "\\listoftables"))))) + +;; ** label link (defun org-ref-count-labels (label) "Counts number of matches for LABEL in the document." (+ (count-matches (format "label:%s\\b[^-:]" label) (point-min) (point-max)) @@ -916,7 +933,6 @@ ARG does nothing." (setq custom-id-count (+ 1 custom-id-count))))) custom-id-count))) -;; ** label link (org-add-link-type "label" (lambda (label) @@ -951,21 +967,20 @@ ARG does nothing." :type "ref" :link (concat "ref:" (org-element-property :name object)))) -;; it turns out this does not work. you can already store a link to a heading with a CUSTOM_ID ;; store link on heading with custom_id -; (when (and (equal (org-element-type object) 'headline) -; (org-entry-get (point) "CUSTOM_ID")) -; (org-store-link-props -; :type "ref" -; :link (concat "ref:" (org-entry-get (point) "CUSTOM_ID")))) + ;; this is not a ref link, but it is still what you want + (when (and (equal (org-element-type object) 'headline) + (org-entry-get (point) "CUSTOM_ID")) + (org-store-link-props + :type "custom_id" + :link (format "[[#%s]]" (org-entry-get (point) "CUSTOM_ID")))) ;; and to #+label: lines (when (and (equal (org-element-type object) 'paragraph) (org-element-property :name object)) (org-store-link-props :type "ref" - :link (concat "ref:" (org-element-property :name object)))) -)) + :link (concat "ref:" (org-element-property :name object)))))) (add-hook 'org-store-link-functions 'org-label-store-link) @@ -1753,7 +1768,7 @@ get a lot of options. LINK-STRING is used by the link function." choice 2)))))) -;; ** Generation of the cite links +;; *** Generation of the cite links (defmacro org-ref-make-completion-function (type) "Macro to make a link completion function for a link of TYPE." `(defun ,(intern (format "org-%s-complete-link" type)) (&optional arg) @@ -3318,11 +3333,35 @@ _o_: Open entry _e_: Email entry and pdf ;; * org-ref-help (defun org-ref-help () "Open the org-ref manual." + (interactive) (find-file (expand-file-name "org-ref.org" (file-name-directory (find-library-name "org-ref"))))) +;; * org-ref menu +(defun org-ref-org-menu () + "Add org-ref menu to the Org menu." + + (easy-menu-change + '("Org") "org-ref" + '( ["Insert citation" org-ref-helm-insert-cite-link] + ["Insert ref" org-ref-helm-insert-ref-link] + ["Insert label" org-ref-helm-insert-label-link] + "--" + ["List of figures" org-ref-list-of-figures] + ["List of tables" org-ref-list-of-tables] + ["Extract bibtex entries" org-ref-extract-bibtex-entries] + ["Check org-file" org-ref] + "--" + ["Help" org-ref-help] + ["Customize org-ref" (customize-group 'org-ref)]) + "Show/Hide") + + (easy-menu-change '("Org") "--" nil "Show/Hide")) + +(add-hook 'org-mode-hook 'org-ref-org-menu) + ;; * The end (provide 'org-ref)