;;; 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
+
+(require 'hydra)
+(require 'key-chord)
;;; Code:
+(defgroup jmax-bibtex nil
+ "Customization group for jmax-bibtex.")
+
+
+(defcustom jmax-bibtex-hydra-key-chord
+ nil
+ "key-chord to run `jmax-bibtex-hydra'."
+ :type 'string
+ :group 'jmax-bibtex)
+
+
+(defcustom jmax-bibtex-hydra-key-binding
+ nil
+ "key-binding to run `jmax-bibtex-hydra'."
+ :type 'string
+ :group 'jmax-bibtex)
+
(defvar jmax-bibtex-journal-abbreviations
'(("ACAT" "ACS Catalysis" "ACS Catal.")
(defun jmax-bibtex-entry-doi ()
- "get doi from entry at point"
+ "Get doi from entry at point."
(interactive)
(save-excursion
(bibtex-beginning-of-entry)
(defun jmax-bibtex-wos ()
- "Open bibtex entry in Web Of Science if there is a DOI"
+ "Open bibtex entry in Web Of Science if there is a DOI."
(interactive)
(doi-utils-wos (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-wos-citing ()
- "Open citing articles for bibtex entry in Web Of Science if there is a DOI"
+ "Open citing articles for bibtex entry in Web Of Science if there is a DOI."
(interactive)
(doi-utils-wos-citing (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-wos-related ()
- "Open related articles for bibtex entry in Web Of Science if there is a DOI"
+ "Open related articles for bibtex entry in Web Of Science if there is a DOI."
(interactive)
(doi-utils-wos-related (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-wos-citing ()
- "Open citing articles for bibtex entry in Web Of Science if there is a DOI"
+ "Open citing articles for bibtex entry in Web Of Science if there is a DOI."
(interactive)
(doi-utils-wos-citing (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-crossref ()
+ "Open the bibtex entry in Crossref by its doi."
(interactive)
(doi-utils-crossref (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-google-scholar ()
+ "Open the bibtex entry at point in google-scholar by its doi."
(interactive)
(doi-utils-google-scholar (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-pubmed ()
+ "Open the bibtex entry at point in Pubmed by its doi."
(interactive)
(doi-utils-pubmed (jmax-bibtex-entry-doi)))
(defun jmax-bibtex-pdf (doi)
- "thin wrapper to get `jmax-bibtex' to open pdf"
+ "Open the pdf for the bibtex entry at point.
+Thin wrapper to get `jmax-bibtex' to open pdf, because it calls
+functions with a DOI argument."
(interactive)
(org-ref-open-bibtex-pdf))
;; hydra menu for actions on bibtex entries
-(key-chord-define-global
- "jj"
- (defhydra jmax-bibtex-hydra (:color blue)
+(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
+_q_: quit
"
("p" org-ref-open-bibtex-pdf)
("P" jmax-bibtex-pubmed)
(save-buffer)
(kill-buffer)))
("e" email-bibtex-entry)
- ("U" (doi-utils-update-bibtex-entry-from-doi (jmax-bibtex-entry-doi)))))
+ ("U" (doi-utils-update-bibtex-entry-from-doi (jmax-bibtex-entry-doi)))
+ ("q" nil "quit"))
-;; A hydra for adding new bibtex entries.
+;; create key-chord and key binding for hydra
+(when jmax-bibtex-hydra-key-chord
+ (key-chord-define-global
+ jmax-bibtex-hydra-key-chord
+ 'jmax-bibtex-hydra/body))
+
+(when jmax-bibtex-hydra-key-binding
+ (global-set-key jmax-bibtex-hydra-key-binding 'jmax-bibtex-hydra/body))
+
+
+;; A hydra for adding new bibtex entries.
(defhydra jmax-bibtex-new-entry (:color blue)
"New Bibtex entry:"
("a" bibtex-Article "Article")
("t" bibtex-MastersThesis "MS Thesis")
("R" bibtex-TechReport "Report")
("u" bibtex-Unpublished "unpublished")
- ("c" bibtex-InCollection "Article in collection"))
-
-
-
+ ("c" bibtex-InCollection "Article in collection")
+ ("q" nil "quit"))
(defvar jmax-bibtex-menu-funcs '()
- "Functions to run in doi menu. Each entry is a list of (key menu-name function).
-The function must take one argument, the doi.")
+ "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)
(defun jmax-bibtex ()
"Menu command to run in a bibtex entry.
-Functions from `jmax-bibtex-menu-funcs'. They all rely on the
+Functions from `jmax-bibtex-menu-funcs'. They all rely on the
entry having a doi."
(interactive)