]> git.donarmstrong.com Git - org-ref.git/blobdiff - jmax-bibtex.el
checkdoc fixes.
[org-ref.git] / jmax-bibtex.el
index cf016cb0c747a7eca8cad49b1cc747f377533b67..e2176029d43674ddc433ad24a3bde0ed00f8252c 100644 (file)
@@ -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:
 
@@ -81,6 +81,7 @@
     ("JPCC" "The Journal of Physical Chemistry C" "J. Phys. Chem. C")
     ("JPCL" "The Journal of Physical Chemistry Letters" "J. Phys. Chem. Lett.")
     ("JCP" "The Journal of Chemical Physics" "J. Chem. Phys.")
+    ("MSMSE" "Modelling and Simulation in Materials Science and Engineering" "Modell. Simul. Mater. Sci. Eng.")
     ("TSF" "Thin Solid Films" "Thin Solid Films")
     ("TC" "Topics in Catalysis" "Top. Catal.")
     ("WR" "Water Research" "Water Res."))
@@ -173,14 +174,18 @@ This is defined in `jmax-bibtex-journal-abbreviations'."
        ("ë" . "{\\\\\"e}")
        ("ü" . "{\\\\\"u}")
        ("ñ" . "{\\\\~n}")
+       ("ņ" . "{\\\\c{n}}")
        ("å" . "{\\\\aa}")
        ("ö" . "{\\\\\"o}")
+       ("Á" . "{\\\\'A}")
+       ("á" . "{\\\\'a}")
        ("í" . "{\\\\'i}")
        ("ó" . "{\\\\'o}")
        ("ó" . "{\\\\'o}")
        ("ú" .  "{\\\\'u}")
        ("ú" . "{\\\\'u}")
        ("š" . "{\\\\v{s}}")
+       ("ř"  . "{\\\\v{r}}")
        ("İ" . "{\\\\.I}")
        ("ğ" . "{\\\\u{g}}")
        ("δ" . "$\\\\delta$")
@@ -200,9 +205,11 @@ This is defined in `jmax-bibtex-journal-abbreviations'."
        ("–" . "-")
        ("−" . "-")
        ("–" . "-")
+       ("—" . "-")
        ("‘" . "'")
        ("’" . "'")
        ("“" . "\"")
+       ("’" . "'")
        ("”" . "\"")))
 
 (defun jmax-replace-nonascii ()
@@ -257,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)
@@ -265,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"
@@ -297,7 +304,7 @@ all the title entries in articles."
                         word
                       (s-downcase word)))
                   words))
-      
+
       ;; capitalize first word
       (setf (car words) (s-capitalize (car words)))
 
@@ -312,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)
@@ -363,7 +370,7 @@ N is a prefix argument.  If it is numeric, jump that many entries back."
 
 
 (defun jmax-bibtex-entry-doi ()
-  "get doi from entry at point"
+  "Get doi from entry at point."
   (interactive)
   (save-excursion
     (bibtex-beginning-of-entry)
@@ -371,57 +378,132 @@ N is a prefix argument.  If it is numeric, jump that many entries back."
 
 
 (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
+(require 'hydra)
+(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). 
-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)
+       ("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)
@@ -431,9 +513,11 @@ The function must take one argument, the doi.")
 
 (defun jmax-bibtex ()
   "Menu command to run in a bibtex entry.
-Functions from `jmax-bibtex-menu-funcs'."
-  
+Functions from `jmax-bibtex-menu-funcs'.  They all rely on the
+entry having a doi."
+
   (interactive)
+  ;; construct menu string as a message
   (message
    (concat
     (mapconcat
@@ -446,7 +530,7 @@ Functions from `jmax-bibtex-menu-funcs'."
                  (char-to-string input) jmax-bibtex-menu-funcs)))
     (when choice
       (funcall
-       (elt 
+       (elt
        choice
        2)
        (jmax-bibtex-entry-doi)