diff options
Diffstat (limited to 'dot_emacs')
-rw-r--r-- | dot_emacs | 999 |
1 files changed, 0 insertions, 999 deletions
diff --git a/dot_emacs b/dot_emacs deleted file mode 100644 index e6f222f..0000000 --- a/dot_emacs +++ /dev/null @@ -1,999 +0,0 @@ -;; (setq debug-on-error t) - -(require 'package) -(setq package-enable-at-startup nil) -(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) -(package-initialize) - -;; Bootstrap `use-package' -(unless (package-installed-p 'use-package) - (package-refresh-contents) - (package-install 'use-package)) - -(eval-when-compile - (require 'use-package)) - -;;; General emacs configuration -(use-package emacs - :init ; executed before package is loaded - (fset 'yes-or-no-p 'y-or-n-p) - (put 'narrow-to-region 'disabled nil) - :hook ; add functions onto hook; only basename needed - ((text-mode . turn-on-auto-fill) - (text-mode . flyspell-mode) - (before-save . whitespace-cleanup)) - :bind ; key bindings - (("C-x a r" . align-regexp)) - :config ; executed after package is loaded - (defadvice ; align-regexp should use spaces. - align-regexp - (around align-regexp-with-spaces activate) - (let ((indent-tabs-mode nil)) ad-do-it)) - :custom - (inhibit-startup-screen t) - (default-input-method "TeX") - (user-full-name "Ryan Kavanagh") - (user-mail-address "rak@rak.ac") - (face-font-family-alternatives - (append '(("Spleen 16x32" "Ubuntu Mono" "FreeMono" "Liberation Mono")) - face-font-family-alternatives)) - :custom-face - (default ((t (:family "Spleen 16x32" - :height 130 ; unit is 1/10 pt - ))))) - -(if (string= (system-name) "demeter.rak.ac") - (use-package leuven-theme ; nice theme for lecturing / projectors - :ensure t - :config - (load-theme 'leuven t)) - (use-package moe-theme - :ensure t - :after powerline ; must be loaded after for powerline-moe-theme to work - :config - (moe-dark) - (powerline-moe-theme))) - -(defun single-lines-only () - "Replace multiple blank lines with a single one" - (interactive) - (goto-char (point-min)) - (while (re-search-forward "\\(^\\s-*$\\)\n" nil t) - (replace-match "\n") - (forward-char 1))) - -(use-package ace-window - :ensure t - :custom - ;; home row keys - (aw-keys '(?h ?t ?n ?s ?a ?o ?e ?u ?i ?d)) - :bind (("M-o" . ace-window)) - :config - ;; need to redefine a few of these because the defaults - ;; overlap with customized aw-keys - (setq aw-dispatch-alist - '((?x aw-delete-window "Delete Window") - (?m aw-swap-window "Swap Windows") - (?M aw-move-window "Move Window") - (?c aw-copy-window "Copy Window") - (?j aw-switch-buffer-in-window "Select Buffer") - (?f aw-flip-window) - (?p aw-switch-buffer-other-window "Switch Buffer Other Window") - (?c aw-split-window-fair "Split Fair Window") - (?v aw-split-window-vert "Split Vert Window") - (?b aw-split-window-horz "Split Horz Window") - (?1 delete-other-windows "Delete Other Windows") - (?? aw-show-dispatch-help)))) - -(use-package auto-indent-mode - :ensure t - :config - (auto-indent-global-mode) - :custom - (auto-indent-next-pair-timer-interval - (quote ((css-mode 1.5) - (haskell-mode 1.5) - (python-mode 1.5) - (latex-mode 1.5) - (coq-mode 1.5) - (default 0.0005))))) - -(use-package bibtex - :mode ("\\.bib\'" . bibtex-mode) - :custom - (bibtex-dialect 'biblatex) - (bibtex-maintain-sorted-entries 'crossref) - ;; Use only the first author name if there are more than 2 authors - (bibtex-autokey-names 1) - ;; Otherwise use both names - (bibtex-autokey-names-stretch 1) - (bibtex-autokey-name-separator "_") - (bibtex-autokey-name-year-separator "_") - (bibtex-autokey-year-length 4) - (bibtex-autokey-year-title-separator ":_") - (bibtex-autokey-titleword-length 5) - (bibtex-autokey-titlewords 3) - ;; Make all title words lowercase - (bibtex-autokey-preserve-case 1) - :bind (:map bibtex-mode-map - ("C-c C-c" . org-ref-clean-bibtex-entry) - ("C-c s" . bibtex-sort-buffer)) - :config - (defun my/bibtex-generate-autokey (autogenerated) - (let ((key (bibtex-autokey-get-field "_key"))) - (if (string= "" key) autogenerated key))) - (advice-add 'bibtex-generate-autokey :filter-return #'my/bibtex-generate-autokey) - ;; stolen from bibtex.el and modified to handle "Mac Lane" - (defun my/bibtex-autokey-demangle-name (fullname) - "Get the last part from a well-formed FULLNAME and perform abbreviations." - (let* (case-fold-search - (name (cond ((string-match "\\(\\(Ma?c\\|De\\) +[[:upper:]][^, ]*\\)[^,]*," fullname) - ;; Name is of the form "Mac Last, First" or - ;; "Mac Last, Jr, First" or "Mc Last, First" or - ;; "Mc Last, Jr, First" - ;; --> Take Mac Last or Mc Last, as appropriate - ;; and replace spaces by concatenation - (let ((mclast (match-string 1 fullname))) - (when (string-match split-string-default-separators mclast) - (replace-match "" nil nil mclast)))) - ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname) - ;; Name is of the form "von Last, First" or - ;; "von Last, Jr, First" - ;; --> Take the first capital part before the comma - (match-string 1 fullname)) - ((string-match "\\([^, ]*\\)," fullname) - ;; Strange name: we have a comma, but nothing capital - ;; So we accept even lowercase names - (match-string 1 fullname)) - ((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)" - fullname) - ;; name is of the form "First von Last", "von Last", - ;; "First von von Last", or "d'Last" - ;; --> take the first capital part after the "von" parts - (match-string 2 fullname)) - ((string-match "\\([^ ]+\\) *\\'" fullname) - ;; name is of the form "First Middle Last" or "Last" - ;; --> take the last token - (match-string 1 fullname)) - (t (error "Name `%s' is incorrectly formed" fullname))))) - (funcall bibtex-autokey-name-case-convert-function - (bibtex-autokey-abbrev name bibtex-autokey-name-length)))) - (advice-add 'bibtex-autokey-demangle-name :override 'my/bibtex-autokey-demangle-name) - ;; Until https://debbugs.gnu.org/cgi/bugreport.cgi?bug=36252 gets fixed - (defun bibtex-autokey-get-year () - "Return year field contents as a string obeying `bibtex-autokey-year-length'. -If the year field is absent, extract the year from a valid ISO8601-2 -Extended Format date in the date field and return it as a string obeing -`bibtex-autokey-year-length'." - (let ((yearfield (bibtex-autokey-get-field "year")) - (datefield (bibtex-autokey-get-field "date")) - (shortener (lambda (year) - (substring year (max 0 (- (length year) - bibtex-autokey-year-length)))))) - (if (string= "" yearfield) - (cond ((string-match "[./]*\\(-?[[:digit:]]+X*\\)\\([-/.[:digit:]:T~?%X]*\\)" - datefield) - ;; Matches ISO8601-2 Extended Format specification level 1 - ;; examples listed in tables 3, 4, and 5 on pp. 38-40 of the - ;; biblatex package manual, version 3.12 - (funcall shortener (match-string 1 datefield))) - (t (error "Date field `%s' is incorrectly formed" datefield))) - (funcall shortener yearfield)))) - ;; Don't have accented characters in keys - (let ((charMap '(;; This list based on Xah Lee's http://ergoemacs.org/emacs/emacs_zap_gremlins.html - ;; Case-sensitivity (see bibtex-autokey-name-change-strings) requires us to - ;; duplicate everything - ("ß" . "ss") - ("á\\|à\\|â\\|ä\\|ā\\|ǎ\\|ã\\|å\\|ą\\|ă\\|ạ\\|ả\\|ả\\|ấ\\|ầ\\|ẩ\\|ẫ\\|ậ\\|ắ\\|ằ\\|ẳ\\|ặ" . "a") - ("æ" . "ae") - ("ç\\|č\\|ć" . "c") - ("é\\|è\\|ê\\|ë\\|ē\\|ě\\|ę\\|ẹ\\|ẻ\\|ẽ\\|ế\\|ề\\|ể\\|ễ\\|ệ" . "e") - ("í\\|ì\\|î\\|ï\\|ī\\|ǐ\\|ỉ\\|ị" . "i") - ("ñ\\|ň\\|ń" . "n") - ("ó\\|ò\\|ô\\|ö\\|õ\\|ǒ\\|ø\\|ō\\|ồ\\|ơ\\|ọ\\|ỏ\\|ố\\|ổ\\|ỗ\\|ộ\\|ớ\\|ờ\\|ở\\|ợ" . "o") - ("ú\\|ù\\|û\\|ü\\|ū\\|ũ\\|ư\\|ụ\\|ủ\\|ứ\\|ừ\\|ử\\|ữ\\|ự" . "u") - ("ý\\|ÿ\\|ỳ\\|ỷ\\|ỹ" . "y") - ("þ" . "th") - ("ď\\|ð\\|đ" . "d") - ("ĩ" . "i") - ("ľ\\|ĺ\\|ł" . "l") - ("ř\\|ŕ" . "r") - ("š\\|ś" . "s") - ("ť" . "t") - ("ž\\|ź\\|ż" . "z") - ("œ" . "oe") - (" " . " ") ; thin space etc - ("–" . "-") - ("—\\|一" . "--")))) - ;; For some reason, *-name-* and *-titleword-* get clobbered, even - ;; though the original value in decribe-variable clearly shows - ;; them having been based on the extended - ;; bibtex-autokey-transcriptions. Force them to be the right - ;; thing. - (progn (seq-do (lambda (pair) (add-to-list 'bibtex-autokey-transcriptions pair)) charMap) - (seq-do (lambda (pair) (add-to-list 'bibtex-autokey-name-change-strings pair)) charMap) - (seq-do (lambda (pair) (add-to-list 'bibtex-autokey-titleword-change-strings pair)) charMap)))) - -(use-package bibtex-completion - :ensure helm-bibtex - :custom - (bibtex-completion-bibliography "~/Documents/papers/library.bib") - (bibtex-completion-library-path '("~/Documents/papers/pdfs/")) - (bibtex-completion-notes-path "~/Documents/papers/notes/") - (bibtex-completion-notes-extension ".org") - (bibtex-completion-pdf-extension '(".pdf" ".djvu" ".txt")) - :bind (("C-c b" . helm-bibtex))) - -(use-package cc-mode - :custom - (c-default-style "bsd")) - -(use-package company - :ensure t - :bind - ("<tab>" . company-indent-or-complete-common) - :hook - (after-init . global-company-mode)) - -(use-package company-auctex - :ensure t - :after latex - :config - (company-auctex-init)) - -(use-package company-bibtex - :ensure t - :hook - (bibtex-mode . (lambda () (add-to-list 'company-backends 'company-bibtex)))) - -(use-package company-box - :ensure t - :hook (company-mode . company-box-mode)) - -(use-package company-coq - :ensure t - :hook (coq-mode . company-coq-mode)) - -(use-package company-math - :ensure t - :config - (add-to-list 'company-backends 'company-math-symbols-unicode) - (add-to-list 'company-backends 'company-latex-commands)) - -(use-package company-org-block - :ensure t - :hook ((org-mode . (lambda () - (setq-local company-backends '(company-org-block)) - (company-mode +1))))) - -(use-package cus-edit - :custom - (custom-file null-device "Don't store customizations")) - -(use-package diary - :ensure diary-lib - :custom - (diary-display-function 'diary-fancy-display) - :hook ((diary-list-entries . diary-include-other-diary-files) - (diary-list-entries . diary-sort-entries))) - -(use-package dictem - :load-path "~/.emacs.d/dictem/") - -(use-package doi-utils - ;; provided by org-ref - :ensure org-ref) - -(use-package dtrt-indent - :ensure t) - -(use-package dune - :ensure t) - -(use-package dune-format - :ensure t) - -(use-package elpher - :ensure t) - -(use-package elpy - :ensure t - :after python - :config (elpy-enable) - :custom - (elpy-rpc-python-command "python3")) - -(use-package ess - :ensure t) - -(use-package fill-column-indicator - :ensure t) - -(use-package gnus - :ensure t - :defer t - :bind - ;; (:map gnus-summary-buffer-map - ;; ("SPC" . (gnus-summary-goto-next-page) - :custom - (gnus-select-method - '(nntp "news.club.cc.cmu.edu" - (nntp-address "news.club.cc.cmu.edu") - (nntp-via-address "news-cclub") - (nntp-via-rlogin-command "ssh") - (nntp-open-connection-function nntp-open-via-rlogin-and-netcat))) - (gnus-home-score-file "gnus.SCORE") - (gnus-secondary-select-methods - '((nntp "news.gmane.io") - ; (nntp "news.eternal-september.org") - ; (nntp "nntp.olduse.net") - (nnimap "imap.rak.ac") - (nnimap "mail.cs.mcgill.ca") - (nntp "tilde.team" - (nntp-address "localhost") - (nntp-via-address "tilde.team") - (nntp-via-rlogin-command "ssh") - (nntp-via-rlogin-command-switches ("-C")) - (nntp-open-connection-function nntp-open-via-rlogin-and-netcat)))) - (gnus-parameters - '(("^nntp+.*" (address . "rak@rak.ac")) - ("^nnimap+imap\\.rak\\.ac:.*" - (posting-style - (address . "rak@rak.ac") - (gcc "nnimap+imap.rak.ac:Sent"))) - ("^nnimap+mail\\.cs\\.mcgill\\.ca:.*" - (posting-style - (address . "rkavanagh@cs.mcgill.ca") - (gcc "nnimap+mail.cs.mcgill.ca:INBOX.Sent"))))) - (gnus-cloud-method "imap.rak.ac") - (gnus-cloud-storage-method 'base64) - (gnus-update-message-archive-method t) - (gnus-message-archive-method - '(nnfolder "archive" ; this gets included in the server buffer - (nnfolder-inhibit-expiry t) - (nnfolder-get-new-mail nil) - (nnfolder-active-file "~/News/sent/active") - (nnfolder-directory "~/News/sent"))) - (gnus-check-new-newsgroups nil) - (gnus-group-line-format "%M%S%p%P%5y:%B%(%G%) %z\n") - (gnus-topic-display-empty-topics nil) - :hook - (message-send . gnus-score-followup-article) - (gnus-group-mode . gnus-topic-mode)) - -(use-package haskell-mode - :ensure t - :hook ((haskell-mode . turn-on-haskell-doc-mode) - (haskell-mode . turn-on-haskell-indentation))) - -(use-package helm - :ensure t - :bind (("M-x" . helm-M-x) - ("C-x C-f" . helm-find-files) - ("C-x C-b" . helm-mini) - :map helm-map - ("<tab>" . helm-select-action)) - :config - (helm-mode 1)) - -(use-package helm-org - :ensure t) - -(use-package info-look - :ensure t) - -(use-package ispell - :ensure t - :defer t - :custom - (ispell-dictionary "en_CA-w_accents")) - -(use-package latex - :ensure auctex - :after info-look - :mode ("\\.tex\\'" . TeX-latex-mode) - :init - ;; http://www.cs.au.dk/~abizjak/emacs/2016/03/06/latex-fill-paragraph.html - (defun ales/fill-paragraph (&optional P) - "When called with prefix argument call `fill-paragraph'. -Otherwise split the current paragraph into one sentence per line." - (interactive "P") - (if (not P) - (save-excursion - (let ((fill-column 12345678)) ;; relies on dynamic binding - (fill-paragraph) ;; this will not work correctly if the paragraph is - ;; longer than 12345678 characters (in which case the - ;; file must be at least 12MB long. This is unlikely.) - (let ((end (save-excursion - (forward-paragraph 1) - (backward-sentence) - (point-marker)))) ;; remember where to stop - (beginning-of-line) - (while (progn (forward-sentence) - (<= (point) (marker-position end))) - (just-one-space) ;; leaves only one space, point is after it - (delete-char -1) ;; delete the space - (newline) ;; and insert a newline - (LaTeX-indent-line) ;; I only use this in combination with late, so this makes sense - )))) - ;; otherwise do ordinary fill paragraph - (fill-paragraph P))) - :hook - ((LaTeX-mode . turn-on-reftex) - (LaTeX-mode . turn-off-auto-fill) - (LaTeX-mode . turn-on-flyspell) - (LaTeX-mode . LaTeX-math-mode) - (LaTeX-mode . (lambda () (set (make-local-variable 'TeX-electric-math) - (cons "\\(" "\\)")))) - (LaTeX-mode . (lambda () - (LaTeX-add-environments - '("axiom" LaTeX-env-label) - '("theorem" LaTeX-env-label) - '("proposition" LaTeX-env-label) - '("definition" LaTeX-env-label) - '("corollary" LaTeX-env-label) - '("lemma" LaTeX-env-label) - '("example" LaTeX-env-label) - '("conjecture" LaTeX-env-label) - '("figure" LaTeX-env-label)))) - (LaTeX-mode . (lambda () - ;; This must be a hook. Trying to set it in :config - ;; causes the variable to become buffer-local, so - ;; it never actually takes effect in all - ;; latex-moded buffers. So much time wasted debugging. - (add-to-list 'LaTeX-label-alist '("axiom" . "ax:")) - (add-to-list 'LaTeX-label-alist '("conjecture" . "conj:")) - (add-to-list 'LaTeX-label-alist '("corollary" . "cor:")) - (add-to-list 'LaTeX-label-alist '("definition" . "def:")) - (add-to-list 'LaTeX-label-alist '("proposition" . "prop:")) - (add-to-list 'LaTeX-label-alist '("theorem" . "theorem:")) - (add-to-list 'LaTeX-label-alist '("example" . "ex:")) - (add-to-list 'LaTeX-label-alist '("lemma" . "lemma:")) - (add-to-list 'LaTeX-label-alist '("figure" . "fig:"))))) - :config - (info-lookup-add-help :mode 'LaTeX-mode - :regexp ".*" - :parse-rule "\\\\?[a-zA-Z]+\\|\\\\[^a-zA-Z]" - :doc-spec '(("(latex2e)Concept Index") - ("(latex2e)Command Index"))) - :bind - (:map LaTeX-mode-map - ("M-q" . ales/fill-paragraph))) - -(use-package magit - :ensure t - :config - (put 'magit-clean 'disabled nil) - :custom - (magit-diff-refine-hunk 'all)) - -(use-package markdown-mode - :ensure t - :init - (autoload 'markdown-mode "markdown-mode" - "Major mode for editing Markdown files" t) - :mode (("\\.markdown\\'" . markdown-mode) - ("\\.mdown\'" . markdown-mode))) - -(use-package menu-bar - :config - (menu-bar-mode -1) - :bind - ([S-f10] . menu-bar-mode)) - -(use-package merlin - ;; ocaml assistant - :ensure t) - -(use-package message - :config - (defun whitespace-cleanup-mail () - "Kill the whitespace in a buffer while preserving the last instance of '-- '." - (interactive) - (save-excursion - (save-restriction - (widen) - (let ((signature-delimiter - (progn - ;; Find the last occurence of "-- " in the buffer - ;; and set signature-delimiter to the position of the first - - ;; This means we must subtract 2, because re-search-backward - ;; returns the end of the occurence found - (goto-char (point-max)) - (- (re-search-backward "^-- $" nil t) 2)))) - (when signature-delimiter - (progn - ;; Run whitespace-cleanup on the region - ;; [start, signature-delimiter]. Include the first dash - ;; to avoid deleting any empty lines leading up to the - ;; delimiter. - (narrow-to-region (point-min) signature-delimiter) - (whitespace-cleanup) - (widen) - ;; Run it on the region [signature-delimiter, end). - ;; We include the signature delimiter so that we do not - ;; delete any empty lines immediately following it. - ;; A side-effect is that the first line might become "^--$". - ;; This means that we must re-add the space at the end of - ;; the first line. Easiest just replace the first line of the - ;; buffer by "^-- $". - (narrow-to-region signature-delimiter (point-max)) - (whitespace-cleanup) - (goto-char (point-min)) - (kill-whole-line 0) - (insert "-- "))))))) - :hook - ((message-mode . (lambda () (remove-hook 'before-save-hook 'whitespace-cleanup t))) - (message-mode . (lambda () (add-hook 'before-save-hook 'whitespace-cleanup-mail nil t)))) - :custom - (message-citation-line-function 'message-insert-formatted-citation-line) - (message-send-mail-function 'message-send-mail-with-sendmail)) - -(use-package mingus - ;; mpd client - :ensure t) - -(use-package minibuffer - :config - (add-to-list 'completion-styles 'substring) - :custom - ;; Cycle through tab-completions with tab if there are less than 5 - (setq completion-cycle-threshold 5)) - -(use-package ocp-indent - :ensure t) - -(use-package octave - :mode ("\\.m\'" . octave-mode)) - -(use-package org - :bind (:map org-mode-map - ("<tab>" . org-cycle)) - :hook - (org-mode . visual-line-mode) - :custom - (org-link-file-path-type 'relative)) - -(use-package org-chef - :ensure t) - -(use-package org-noter - :ensure t - :custom - ;; Surely there's an easier way of setting this? - (org-noter-notes-search-path '("~/Documents/papers/notes/"))) - -(use-package org-ref - :ensure t - :after helm-bibtex) - -(use-package org-ref-arxiv - :ensure org-ref - :custom - (arxiv-entry-format-string "@Misc{%s, -title = {%s}, -author = {%s}, -eprinttype = {arxiv}, -date = {%s}, -eprint = {%s}, -eprintclass = {%s}, -abstract = {%s}, -pagetotal = {MISSING}, -_checked = {NOT CHECKED}, -_source = {ev}, -}") - ;; redefine it to use a sensible date and stuff. - ;; my version of arxiv-get-bibtex-entry-via-arxiv-api - :config - (defun my/arxiv-get-bibtex-entry-via-arxiv-api (arxiv-number) - "Retrieve meta data for ARXIV-NUMBER. -Returns a formatted BibTeX entry." - (with-current-buffer - (url-retrieve-synchronously (format "http://export.arxiv.org/api/query?id_list=%s" arxiv-number) t) - (let* ((parse-tree (libxml-parse-xml-region - (progn (goto-char 0) - (search-forward "<?xml ") - (match-beginning 0)) - (point-max))) - (entry (assq 'entry parse-tree)) - (authors (--map (nth 2 (nth 2 it)) - (--filter (and (listp it) (eq (car it) 'author)) entry))) - (date (nth 2 (assq 'published entry))) - (title (nth 2 (assq 'title entry))) - (names (arxiv-bibtexify-authors authors)) - (category (cdar (nth 1 (assq 'primary_category entry)))) - (abstract (s-trim (nth 2 (assq 'summary entry)))) - (url (nth 2 (assq 'id entry))) - (temp-bibtex (format arxiv-entry-format-string "" title names date arxiv-number category abstract url)) - (key (with-temp-buffer - (insert temp-bibtex) - (bibtex-mode) - (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) - (org-ref-replace-nonascii) - (bibtex-generate-autokey)))) - (format arxiv-entry-format-string key title names date arxiv-number category abstract url)))) - (advice-add 'arxiv-get-bibtex-entry-via-arxiv-api :override 'my/arxiv-get-bibtex-entry-via-arxiv-api)) - -(use-package org-ref-bibtex - :ensure org-ref - :custom - (org-ref-title-case-types '(("article" "title") - ("book" "booktitle" "title") - ("collection" "booktitle" "title") - ("incollection" "booktitle" "title") - ("inproceedings" "booktitle" "title") - ("misc" "title") - ("proceedings" "title") - ("report" "title") - ("thesis" "title"))) - (org-ref-bibtex-journal-abbreviations - '(("CACM" "Communications of the ACM" "Comm. ACM") - ("Discourse \\& Society") - ("ENTCS" "Electronic Notes in Theoretical Computer Science") - ("Information and Computation") - ("International Journal of Foundations of Computer Science" "Int. J. Found. Comput. Sci.") - ("JSL" "The Journal of Symbolic Logic") - ("Journal of Computer Security") - ("Journal of Logic and Computation" "J. Logic Computat.") - ("LCNS" "Lecture Notes in Computer Science" "Lect. Notes Comput. Sc.") - ("LMCS" "Logical Methods in Computer Science") - ("Le Devoir") - ("MSCS" "Mathematical Structures in Computer Science" "Math. Struct. Comp. Sci.") - ("Nordic Journal of Philosophical Logic") - ("PACMPL" "Proceedings of the ACM on Programming Languages" "Proc. ACM Program. Lang.") - ("Philosophy Compass") - ("Piping Today") - ("Proceedings of the Aristotelian Society") - ("Publications of the Research Institute for Mathematical Sciences" "Publ. RIMS") - ("Reason Papers") - ("Reprints in Theory and Applications of Categories") - ("Rice University Studies") - ("Rice University Studies") - ("SICOMP" "SIAM Journal on Computing") - ("Science") - ("TAC" "Theory and Applications of Categories") - ("TCS" "Theoretical Computer Science") - ("TUGboat") - ("The American Mathematical Monthly") - ("The Review of Symbolic Logic") - ("The Voice") - ("Topoi") - ("Transactions of the American Mathematical Society") - ("{ACM} {SIGACT} News" "ACM SIGACT News")))) - -(use-package reftex-cite - :ensure t) - -(use-package org-ref-core - :ensure org-ref - :after org-ref-bibtex - :after reftex-cite - :after helm-bibtex - :bind (:map bibtex-mode-map - ("C-c C-c" . org-ref-clean-bibtex-entry) - ("C-c e" . my/set-source-ev) - ("C-c d" . my/set-checked-date)) - :config - (defun my/org-ref-title-case-english () - "Call org-ref-title-case only if the language field is set - to `english' or is missing. This will avoid having foreign- - language titles re-cased." - (interactive) - (let ((langfield (bibtex-autokey-get-field "language"))) - (if (= (length langfield) 0) - (org-ref-title-case)))) - (defun my/set-checked-date () - "Set the _checked field of a bibtex entry to the current date." - (interactive) - (save-excursion - (bibtex-beginning-of-entry) - (bibtex-set-field "_checked" (format-time-string "%Y-%m-%d")))) - (defun my/set-source-ev () - "Set the _source field of a bibtex entry to ev." - (interactive) - (save-excursion - (bibtex-beginning-of-entry) - (bibtex-set-field "_source" "ev"))) - ;; taken from org-ref-bibtex.el and extended - (setq org-ref-nonascii-latex-replacements - (append '(("fi" . "fi") - ("ı́" . "{\\\\'i}") - ("ω" . "$\\\\omega$") - ("‘" . "`") ; LEFT SINGLE QUOTATION MARK - ("’" . "'") ; RIGHT SINGLE QUOTATION MARK - ("“" . "``") - ("′" . "'") ; PRIME - ("∇" . "$\\\\nabla$") - ("ι" . "$\\\\iota$") - ("”" . "''")) - org-ref-nonascii-latex-replacements)) - (defun my/org-ref-format-url-if-doi () - "Override built-in function. Originally, this reformatted -the url to point to DOI. I would rather kill the URL field -entirely if it contains the DOI. bibtex-clean-entry will then -delete the field." - (interactive) - (save-excursion - (bibtex-beginning-of-entry) - (let ((doi (bibtex-autokey-get-field "doi"))) - (unless (string-empty-p doi) - (when (string-match-p (regexp-quote (org-ref-bibtex-entry-doi)) - (bibtex-autokey-get-field "url")) - (bibtex-set-field "url" "")))))) - (defun my/org-ref-biblatex-journaltitle () - "Rename journal to journaltitle" - (interactive) - (save-excursion - (bibtex-beginning-of-entry) - (let ((journal (bibtex-autokey-get-field "journal")) - (journaltitle (bibtex-autokey-get-field "journaltitle"))) - (when (and (string-empty-p journaltitle) - (not (string-empty-p journal))) - (bibtex-beginning-of-entry) - (bibtex-set-field "journal" "") - (bibtex-set-field "journaltitle" journal))))) - (defun my/biblatex-date () - "Convert 'year' + 'month' fields to 'date' field" - (interactive) - (save-excursion - (bibtex-beginning-of-entry) - (let* ((year (bibtex-autokey-get-field "year")) - (month (downcase (bibtex-autokey-get-field "month"))) - (nummonth (cond ((string= month "jan") "01") - ((string= month "feb") "02") - ((string= month "mar") "03") - ((string= month "apr") "04") - ((string= month "may") "05") - ((string= month "jun") "06") - ((string= month "jul") "07") - ((string= month "aug") "08") - ((string= month "sep") "09") - ((string= month "oct") "10") - ((string= month "nov") "11") - ((string= month "dec") "12") - (t ""))) - (olddate (bibtex-autokey-get-field "date")) - (newdate (cond ((string-empty-p year) nil) - ((string-empty-p nummonth) year) - (t (concat year "-" nummonth))))) - (when (and (string-empty-p olddate) - (not (string-empty-p newdate))) - (bibtex-beginning-of-entry) - (bibtex-set-field "date" newdate) - (bibtex-set-field "year" "") - (bibtex-set-field "month" ""))))) - (defun my/orcb-check-journal () - "Check entry at point to see if journal exists in `org-ref-bibtex-journal-abbreviations'. -If not, issue a warning." - (interactive) - (when - (string= "article" - (downcase - (cdr (assoc "=type=" (bibtex-parse-entry))))) - (save-excursion - (bibtex-beginning-of-entry) - (let* ((entry (bibtex-parse-entry t)) - (journal (replace-regexp-in-string "[[:space:]\n]+" " " (reftex-get-bib-field "journaltitle" entry)))) - (when (null journal) - (error "Unable to get journal for this entry.")) - (unless (member journal (-flatten org-ref-bibtex-journal-abbreviations)) - (message "Journal \"%s\" not found in org-ref-bibtex-journal-abbreviations." journal)))))) - :custom - (org-ref-default-bibliography '("~/Documents/papers/library.bib")) - (org-ref-bibliography-notes "~/Documents/papers/notes.org") - (org-ref-pdf-directory "~/Documents/papers/pdfs/") - ;; don't fudge with the output of bibtex-generate-autokey - (org-ref-clean-bibtex-key-function 'identity) - ;; let helm-bibtex find the notes file for an entry - (org-ref-notes-function - (lambda (thekey) - (let ((bibtex-completion-bibliography (org-ref-find-bibliography))) - (bibtex-completion-edit-notes - (list (car (org-ref-get-bibtex-key-and-file thekey))))))) - (org-ref-clean-bibtex-entry-hook - '(my/org-ref-biblatex-journaltitle - bibtex-clean-entry - my/org-ref-format-url-if-doi - orcb-key-comma - org-ref-replace-nonascii - orcb-& - orcb-% - my/org-ref-title-case-english ;; all entries, -article does only articles - my/org-ref-biblatex-journaltitle - my/biblatex-date - orcb-key - orcb-clean-doi - my/orcb-check-journal - org-ref-sort-bibtex-entry - orcb-fix-spacing - orcb-clean-nil-opinionated))) - -(use-package org-ref-isbn - :ensure org-ref) - -(use-package org-ref-pdf - :ensure org-ref) - -(use-package ox-md - ;; org-mode to markdown exporter - :ensure org - :after (org)) - -(use-package outline - :ensure t - :hook (LaTeX-mode . outline-minor-mode)) - -(use-package outline-magic - :ensure t - :after outline - :bind (:map outline-minor-mode-map ([f10] . outline-cycle))) - -(use-package paren - :ensure t - :config - (show-paren-mode t) - :custom - ;; highlight entire expression when on delimiters - (show-paren-style 'expression)) - -(use-package pdf-tools - :ensure t - :config - (pdf-tools-install)) - -(use-package powerline - :ensure t) - -(use-package proof-general - :ensure t - :custom - (proof-disappearing-proofs t) - (proof-electric-terminator-enable t) - (proof-three-window-enable t) - (proof-three-window-mode-policy 'hybrid) - :custom-face - (proof-locked-face ((t (:weight bold))))) - -(use-package py-autopep8 - :ensure t - :hook (python-mode . py-autopep8-enable-on-save) - :custom - (py-autopep8-options '("--max-line-length=80"))) - -(use-package python - :ensure t - :mode ("\\.py\\'" . python-mode) - :custom (python-python-command "/usr/bin/python3") - :interpreter ("python3" . python-mode) - :custom - (python-indent-guess-indent-offset nil) - (python-indent-offset 4) - (python-shell-interpreter "python3")) - -(use-package rainbow-delimiters - :ensure t - :hook ((LaTeX-mode prog-mode) . rainbow-delimiters-mode)) - -(use-package rainbow-mode - :ensure t) - -(use-package reftex - :ensure t - :after latex - :hook (LaTeX-mode . reftex-mode) - :custom - (reftex-default-bibliography '("~/Documents/papers/library.bib")) - (reftex-label-alist '(("axiom" ?a "ax:%f:" "~\\ref{%s}" t ("axiom" "ax.") -3) - ("theorem" ?h "theorem:%F:" "~\\ref{%s}" t ("theorem" "th.") -3) - ("proposition" ?p "prop:%F:" "~\\ref{%s}" t ("proposition" "prop.") -3) - ("definition" ?d "def:%F:" "~\\ref{%s}" t ("definition" "def.") -3) - ("corollary" ?c "cor:%F:" "~\\ref{%s}" t ("corollary" "cor.") -3) - ("lemma" ?l "lemma:%F:" "~\\ref{%s}" t ("lemma" "lem.") -3) - ("conjecture" ?j "conj:%F:" "~\\ref{%s}" t ("conjecture" "conj.") -3) - ("example" ?X "ex:%F:" "~\\ref{%s}" t ("example" "ex.") -3) - ("figure" ?F "fig:%F:" "~\\ref{%s}" t ("figure" "fig.") -3) - ("ax" ?a "ax:%F:" "~\\ref{%s}" t ("axiom" "ax.") -3) - ("thm" ?h "theorem:%F:" "~\\ref{%s}" t ("theorem" "th.") -3) - ("prop" ?p "prop:%F:" "~\\ref{%s}" t ("proposition" "prop.") -3) - ("defi" ?d "def:%F:" "~\\ref{%s}" t ("definition" "def.") -3) - ("cor" ?c "cor:%F:" "~\\ref{%s}" t ("corollary" "cor.") -3) - ("lem" ?l "lemma:%F:" "~\\ref{%s}" t ("lemma" "lem.") -3) - ("conj" ?j "conj:%F:" "~\\ref{%s}" t ("conjecture" "conj.") -3) - ("enumerate" 105 "item:%F:" "~\\ref{%s}" item (regexp "items?" "Punkte?")) - ("equation" 101 "eq:%F:" "~\\eqref{%s}" t - (regexp "equations?" "eqs?\\." "eqn\\." "Gleichung\\(en\\)?" "Gl\\.")) - ("eqnarray" 101 "eq:%F:" nil eqnarray-like)))) - -(use-package sass-mode - :ensure t) - -(use-package scroll-bar - :custom - (scroll-bar-mode nil)) - -(use-package sendmail - :custom - (mail-specify-envelope-from t) - (mail-envelope-from 'header)) - -(use-package simple - :custom - (column-mode-number t)) - -(use-package smerge-mode - :commands smerge-mode - :init ;; weirdly won't work if under custom - (setq smerge-command-prefix (kbd "C-c v"))) - -(use-package sml-mode - :ensure t - :mode ("\\.sml\\'" . sml-mode)) - -(use-package solar - :custom - ;; Use 24 hour time in diary, calendar, etc. - (calendar-time-display-form - '(24-hours ":" minutes (if time-zone " (") time-zone (if time-zone ")"))) - (calendar-latitude 40.4) - (calendar-longitude -79.9) - (calendar-location-name "Pittsburgh, PA")) - -(use-package spaceline - :ensure t - :requires spaceline-config) - -(use-package tex - :ensure auctex - :custom - (reftex-plug-into-AUCTeX t) - (TeX-parse-self t) ; Parse documents to provide completion for packages, etc. - (TeX-auto-save t) ; Automatically save style information - (TeX-clean-confirm nil) ; Don't ask for confirmation when cleaning - (TeX-source-correlate-mode t) ; Provide forward and inverse search with SyncTeX - (TeX-source-correlate-method 'synctex) - (TeX-PDF-mode t) ; use pdftex by default - :config - (cond - ((eq system-type 'darwin) - (add-to-list 'TeX-view-program-list - '("Zathura" - ("zathura " - (mode-io-correlate " --synctex-forward %n:0:%b -x \"emacsclient +%{line} %{input}\" ") - " %o") - "zathura")))) - (add-to-list 'TeX-view-program-selection '(output-pdf "Zathura"))) - -(use-package tool-bar - :config - (tool-bar-mode -1)) - -(use-package tramp - :defer t - :custom - (tramp-default-method "ssh")) - -(use-package tuareg - :ensure t - :config - (add-hook 'tuareg-mode-hook 'merlin-mode t)) - -(use-package twittering-mode - :ensure t - :custom - (twittering-icon-mode t) - (twittering-icon-storage-file "~/.emacs.d/storage/twittering-mode-icons.gz") - (twittering-use-icon-storage t)) - -(use-package vc-git - :requires vc - :config - (add-to-list 'vc-handled-backends 'git)) - -(use-package windmove - :config - (windmove-default-keybindings) - :custom - (windmove-wrap-around t)) - -(use-package yaml-mode - :ensure t) |