]> git.donarmstrong.com Git - org-ref.git/blobdiff - jmax-bibtex.el
add key-chord dependency
[org-ref.git] / jmax-bibtex.el
index 60022757f07ec497ffb40404966450b8d1251b59..67cd11e764f686514281efad36514d152903748d 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:
 
@@ -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)