X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=jmax-bibtex.el;h=67cd11e764f686514281efad36514d152903748d;hp=60022757f07ec497ffb40404966450b8d1251b59;hb=b364e49eb183d660d9adb4267bc962b9e98183ae;hpb=04a914fc1dbbfb9758db6eaff10348dfb3a3e64c diff --git a/jmax-bibtex.el b/jmax-bibtex.el index 6002275..67cd11e 100644 --- a/jmax-bibtex.el +++ b/jmax-bibtex.el @@ -1,7 +1,7 @@ ;;; jmax-bibtex.el --- jmax-bibtex utilities ;;; Commentary: -;; Requires: s.el, dash.el, org-ref.el, doi-utils.el +;; Requires: s.el, dash.el, org-ref.el, doi-utils.el, key-chord.el ;;; Code: @@ -177,12 +177,15 @@ This is defined in `jmax-bibtex-journal-abbreviations'." ("ņ" . "{\\\\c{n}}") ("å" . "{\\\\aa}") ("ö" . "{\\\\\"o}") + ("Á" . "{\\\\'A}") + ("á" . "{\\\\'a}") ("í" . "{\\\\'i}") ("ó" . "{\\\\'o}") ("ó" . "{\\\\'o}") ("ú" . "{\\\\'u}") ("ú" . "{\\\\'u}") ("š" . "{\\\\v{s}}") + ("ř" . "{\\\\v{r}}") ("İ" . "{\\\\.I}") ("ğ" . "{\\\\u{g}}") ("δ" . "$\\\\delta$") @@ -202,9 +205,11 @@ This is defined in `jmax-bibtex-journal-abbreviations'." ("–" . "-") ("−" . "-") ("–" . "-") + ("—" . "-") ("‘" . "'") ("’" . "'") ("“" . "\"") + ("’" . "'") ("”" . "\""))) (defun jmax-replace-nonascii () @@ -259,7 +264,7 @@ all the title entries in articles." (setf (car words) (s-capitalize (car words)))) (setq title (mapconcat 'identity words " ")) - + ;; Capitalize letters after a dash (while (string-match "[a-zA-Z]-\\([a-z]\\)" title start) @@ -267,7 +272,7 @@ all the title entries in articles." (setf (substring title (match-beginning 1) (match-end 1)) (format "%s" (upcase char))) (setq start (match-end 1)))) - + ;; this is defined in doi-utils (bibtex-set-field "title" @@ -299,7 +304,7 @@ all the title entries in articles." word (s-downcase word))) words)) - + ;; capitalize first word (setf (car words) (s-capitalize (car words))) @@ -314,7 +319,7 @@ all the title entries in articles." ;; (format "{%s}" (upcase char))) (format "%s" (upcase char))) (setq start (match-end 1)))) - + ;; this is defined in doi-utils (bibtex-set-field "title" title) @@ -415,15 +420,83 @@ N is a prefix argument. If it is numeric, jump that many entries back." "thin wrapper to get `jmax-bibtex' to open pdf" (interactive) (org-ref-open-bibtex-pdf)) - + + +;; hydra menu for actions on bibtex entries +(require 'key-chord) +(key-chord-define-global + "jj" + (defhydra jmax-bibtex-hydra (:color blue) + " +_p_: Open pdf _y_: Copy key _n_: New entry _w_: WOS +_u_: Open url _f_: Copy formatted entry _o_: Copy entry _c_: WOS citing +_r_: Refile entry _k_: Add keywords _d_: delete entry _r_: WOS related +_e_: Email entry _K_: Edit keywords _L_: clean entry _P_: Pubmed +_U_: Update entry _N_: Open notes _R_: Crossref _g_: Google Scholar +" + ("p" org-ref-open-bibtex-pdf) + ("P" jmax-bibtex-pubmed) + ("w" jmax-bibtex-wos) + ("c" jmax-bibtex-wos-citing) + ("r" jmax-bibtex-wos-related) + ("R" jmax-bibtex-crossref) + ("g" jmax-bibtex-google-scholar) + ("n" jmax-bibtex-new-entry/body) + ("N" org-ref-open-bibtex-notes) + ("o" bibtex-copy-entry-as-kill) + ("d" bibtex-kill-entry) + ("L" org-ref-clean-bibtex-entry) + ("y" (kill-new (bibtex-autokey-get-field "=key="))) + ("f" bibtex-copy-summary-as-kill) + ("k" helm-tag-bibtex-entry) + ("K" (lambda () + (interactive) + (org-ref-set-bibtex-keywords + (read-input "Keywords: " + (bibtex-autokey-get-field "keywords")) + t))) + ("u" org-ref-open-in-browser) + ("r" (lambda () (interactive) + (bibtex-beginning-of-entry) + (bibtex-kill-entry) + (find-file (ido-completing-read + "Bibtex file: " + (f-entries "." (lambda (f) (f-ext? f "bib"))))) + (goto-char (point-max)) + (bibtex-yank) + (save-buffer) + (kill-buffer))) + ("e" email-bibtex-entry) + ("U" (doi-utils-update-bibtex-entry-from-doi (jmax-bibtex-entry-doi))))) + + +;; A hydra for adding new bibtex entries. +(defhydra jmax-bibtex-new-entry (:color blue) + "New Bibtex entry:" + ("a" bibtex-Article "Article") + ("b" bibtex-Book "Book") + ("i" bibtex-InBook "In book") + ("l" bibtex-Booklet "Booklet") + ("P" bibtex-Proceedings "Proceedings") + ("p" bibtex-InProceedings "In proceedings") + ("m" bibtex-Misc "Misc.") + ("M" bibtex-Manual "Manual") + ("T" bibtex-PhdThesis "PhD Thesis") + ("t" bibtex-MastersThesis "MS Thesis") + ("R" bibtex-TechReport "Report") + ("u" bibtex-Unpublished "unpublished") + ("c" bibtex-InCollection "Article in collection")) (defvar jmax-bibtex-menu-funcs '() - "Functions to run in doi menu. Each entry is a list of (key menu-name function). + "Functions to run in doi menu. Each entry is a list of (key menu-name function). The function must take one argument, the doi.") (setq jmax-bibtex-menu-funcs '(("p" "df" jmax-bibtex-pdf) + ("C" "opy" (lambda (doi) + (kill-new (org-ref-bib-citation)) + (bury-buffer))) ("w" "os" doi-utils-wos) ("c" "iting articles" doi-utils-wos-citing) ("r" "elated articles" doi-utils-wos-related) @@ -435,7 +508,7 @@ The function must take one argument, the doi.") "Menu command to run in a bibtex entry. Functions from `jmax-bibtex-menu-funcs'. They all rely on the entry having a doi." - + (interactive) ;; construct menu string as a message (message @@ -450,7 +523,7 @@ entry having a doi." (char-to-string input) jmax-bibtex-menu-funcs))) (when choice (funcall - (elt + (elt choice 2) (jmax-bibtex-entry-doi)