]> git.donarmstrong.com Git - org-ref.git/blobdiff - jmax-bibtex.el
change a key in hydra, add update field from doi.
[org-ref.git] / jmax-bibtex.el
index 38fff892d43a25d863116c8df39af9eeb7cb81d5..13f6553449ec53cd0a287aef91bfda5a5498ee94 100644 (file)
@@ -2,6 +2,23 @@
 
 ;;; Commentary:
 ;; Requires: s.el, dash.el, org-ref.el, doi-utils.el, key-chord.el
+;;
+;; jmax-bibtex-generate-longtitles
+;; jmax-bibtex-generate-shorttitles
+;; jmax-stringify-journal-name :: replace a journal name with a string in `jmax-bibtex-journal-abbreviations'
+;; jmax-set-journal-string :: in a bibtex entry run this to replace the journal with a string
+;;
+;; jmax-replace-nonascii :: replace nonascii characters in a bibtex entry
+;;
+;; jmax-title-case-article
+;; jmax-sentence-case-article
+;;
+;; jmax-bibtex-next-entry :: bound to M-n
+;; jmax-bibtex-previous-entry :: bound to M-p
+;;
+;; Functions to act on an entry
+;; jmax-bibtex-hydra/body gives a hydra menu to a lot of useful functions.
+;; jmax-bibtex-new-entry/body gives a hydra menu to add new bibtex entries.
 
 (require 'hydra)
 (require 'key-chord)
 
 (defcustom jmax-bibtex-hydra-key-chord
   nil
-  "key-chord to run `jmax-bibtex-hydra'."
+  "key-chord to run `jmax-bibtex-hydra'.
+I like \"jj\""
   :type 'string
   :group 'jmax-bibtex)
 
 
 (defcustom jmax-bibtex-hydra-key-binding
   nil
-  "key-binding to run `jmax-bibtex-hydra'."
+  "key-binding to run `jmax-bibtex-hydra'.
+I like \C-cj."
   :type 'string
   :group 'jmax-bibtex)
 
@@ -219,6 +238,8 @@ This is defined in `jmax-bibtex-journal-abbreviations'."
        ("⇌" . "$\\\\leftrightharpoons$")
        ("×" . "$\\\\times$")
        ("°" . "$\\\\deg$")
+       ("ş" . "{\\\\c{s}}")
+       ("ı" . "i")                    ; I think this is a turkish i
        ;; I think these are non-ascii spaces. there seems to be more than one.
        (" " . " ")
        (" " . " ")
@@ -242,7 +263,8 @@ This is defined in `jmax-bibtex-journal-abbreviations'."
     (dolist (char (mapcar (lambda (x) (car x)) jmax-nonascii-latex-replacements))
       (while (re-search-forward char nil t)
        (replace-match (cdr (assoc char jmax-nonascii-latex-replacements))))
-      (goto-char (point-min)))))
+      (goto-char (point-min))))
+  (save-buffer))
 
 (add-hook 'org-ref-clean-bibtex-entry-hook 'jmax-replace-nonascii)
 
@@ -451,11 +473,12 @@ functions with a DOI argument."
 (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
+_b_: 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
+_s_: Sort entry   _a_: Remove nonascii        _h_: helm-bibtex   _q_: quit
+_u_: Update field _f_: file funcs
 "
    ("p" org-ref-open-bibtex-pdf)
    ("P" jmax-bibtex-pubmed)
@@ -478,7 +501,7 @@ _q_: quit
           (read-input "Keywords: "
                       (bibtex-autokey-get-field "keywords"))
           t)))
-   ("u" org-ref-open-in-browser)
+   ("b" org-ref-open-in-browser)
    ("r" (lambda () (interactive)
          (bibtex-beginning-of-entry)
          (bibtex-kill-entry)
@@ -491,7 +514,12 @@ _q_: quit
          (kill-buffer)))
    ("e" email-bibtex-entry)
    ("U" (doi-utils-update-bibtex-entry-from-doi (jmax-bibtex-entry-doi)))
-   ("q" nil "quit"))
+   ("u" doi-utils-update-field)
+   ("f" jmax-bibtex-file/body)
+   ("h" helm-bibtex)
+   ("a" jmax-replace-nonascii)
+   ("s" org-ref-sort-bibtex-entry)
+   ("q" nil))
 
 ;; create key-chord and key binding for hydra
 (when jmax-bibtex-hydra-key-chord
@@ -522,11 +550,21 @@ _q_: quit
   ("c" bibtex-InCollection "Article in collection")
   ("q" nil "quit"))
 
+;; a hydra menu of functions to act on a bibtex file.
+(defhydra jmax-bibtex-file (:color blue)
+  "Bibtex file functions: "
+  ("v" bibtex-validate "Validate entries")
+  ("s" bibtex-sort-buffer "Sort entries")
+  ("r" bibtex-reformat "Reformat entries")
+  ("c" bibtex-count-entries "Count entries")
+  ("p" org-ref-build-full-bibliography "PDF bibliography"))
+
 
 (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.")
+must take one argument, the doi.  This is somewhat deprecated, as
+I prefer the hydra interfaces above.")
 
 (setq jmax-bibtex-menu-funcs
       '(("p" "df" jmax-bibtex-pdf)