Skip to content

Instantly share code, notes, and snippets.

@quaat
Last active October 29, 2020 12:42
Show Gist options
  • Save quaat/1a118eda1d8dfe19d42746ba2f325129 to your computer and use it in GitHub Desktop.
Save quaat/1a118eda1d8dfe19d42746ba2f325129 to your computer and use it in GitHub Desktop.
My basic emacs config
;;; Code:
(add-to-list 'load-path "~/.emacs.d/lisp/")
(add-to-list 'load-path ".")
(setq c-basic-indent 2)
(setq tab-width 4)
(setq indent-tabs-mode nil)
(require 'org)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "https://marmalade-repo.org/packages/")
("melpa" . "http://melpa.org/packages/")))
(setq my-packages
'(test
async
auctex
company
company-tern
dash
emmet-mode
evil
evil
flycheck
git-commit
js2-mode
js-comint
json-mode
json-snatcher
magit
markdown-mode
php-mode
smartparens
tern
undo-tree
web-beautify
web-mode
zenburn-theme))
(package-initialize)
;; install any packages in my-packages, if they are not installed already
(let ((refreshed nil))
(when (not package-archive-contents)
(package-refresh-contents)
(setq refreshed t))
(dolist (pkg my-packages)
(when (and (not (package-installed-p pkg))
(assoc pkg package-archive-contents))
(unless refreshed
(package-refresh-contents)
(setq refreshed t))
(package-install pkg))))
(defun package-list-unaccounted-packages ()
"Like `package-list-packages', but shows only the packages that
are installed and are not in `my-packages'. Useful for
cleaning out unwanted packages."
(interactive)
(package-show-package-list
(remove-if-not (lambda (x) (and (not (memq x my-packages))
(not (package-built-in-p x))
(package-installed-p x)))
(mapcar 'car package-archive-contents))))
(require 'js-comint)
;; Color Theme
(add-to-list 'custom-theme-load-path "~/.emacs.d/lisp")
(load-theme 'zenburn t)
(global-auto-revert-mode t)
;; Haskell-mode
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
;; Keymap settings
(global-set-key [M-up] 'previous-multiframe-window)
(global-set-key [M-down] 'next-multiframe-window)
(global-set-key [S-f8] 'compile)
(global-set-key [f8] 'recompile)
(global-set-key "\M-g" 'goto-line)
(global-set-key [f11] 'start-kbd-macro)
(global-set-key [S-f11] 'end-kbd-macro)
(global-set-key [f12] 'call-last-kbd-macro)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-enabled-themes (quote (tango-dark)))
'(custom-safe-themes
(quote
("dc6c0b236bb09603babadd87329aa857e286ee36715811519d4bfe6278ee4367" default)))
'(fci-rule-color "#383838")
'(graphviz-dot-view-command "dotty %s")
'(haskell-program-name "ghci")
'(inhibit-startup-screen t)
'(markdown-coding-system (quote utf-8))
'(markdown-command
"markdown_py -x footnotes -x tables -x meta -x toc -x wikilinks -x codehilite -o html5 ")
'(markdown-css-path "./codehilite.css")
'(markdown-enable-math t)
'(markdown-footnote-location (quote immediately))
'(nrepl-message-colors
(quote
("#CC9393" "#DFAF8F" "#F0DFAF" "#7F9F7F" "#BFEBBF" "#93E0E3" "#94BFF3" "#DC8CC3")))
'(package-selected-packages
(quote
(maven-test-mode js-comint clang-format magit evil evil-matchit company-tern company emmet-mode flycheck js-doc smartparens tern web-beautify web-mode ## json-mode php-mode markdown-mode+ js2-mode auctex zenburn-theme zenburn)))
'(pdf-view-midnight-colors (quote ("#DCDCCC" . "#383838")))
'(vc-annotate-background "#2B2B2B")
'(vc-annotate-color-map
(quote
((20 . "#BC8383")
(40 . "#CC9393")
(60 . "#DFAF8F")
(80 . "#D0BF8F")
(100 . "#E0CF9F")
(120 . "#F0DFAF")
(140 . "#5F7F5F")
(160 . "#7F9F7F")
(180 . "#8FB28F")
(200 . "#9FC59F")
(220 . "#AFD8AF")
(240 . "#BFEBBF")
(260 . "#93E0E3")
(280 . "#6CA0A3")
(300 . "#7CB8BB")
(320 . "#8CD0D3")
(340 . "#94BFF3")
(360 . "#DC8CC3"))))
'(vc-annotate-very-old-color "#DC8CC3"))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(setq inferior-list-program "lein try tentacles")
(defun slime-common-lisp()
(interactive)
(setq auto-mode-alist (append '(("\\.cl$" . lisp-mode))
auto-mode-alist))
(setq inferior-lisp-program "/usr/bin/cmucl")
(require 'slime)
(slime-setup '(slime-repl))
(slime))
(setq inferior-js-program-command "softshell")
;;(setq org-reveal-root "~/Source/reveal.js")
;; Flycheck
(global-flycheck-mode)
;; Web mode
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(eval-after-load 'js2-mode
'(define-key js2-mode-map (kbd "C-c b") 'web-beautify-js))
;; Or if you're using 'js-mode' (a.k.a 'javascript-mode')
(eval-after-load 'js
'(define-key js-mode-map (kbd "C-c b") 'web-beautify-js))
(eval-after-load 'json-mode
'(define-key json-mode-map (kbd "C-c b") 'web-beautify-js))
(eval-after-load 'sgml-mode
'(define-key html-mode-map (kbd "C-c b") 'web-beautify-html))
(eval-after-load 'web-mode
'(define-key web-mode-map (kbd "C-c b") 'web-beautify-html))
(eval-after-load 'css-mode
'(define-key css-mode-map (kbd "C-c b") 'web-beautify-css))
;;(eval-after-load 'js2-mode
;; '(add-hook 'js2-mode-hook
;; (lambda ()
;; (add-hook 'before-save-hook 'web-beautify-js-buffer t t))))
;; Org-mode latex
(require 'ox-latex)
(unless (boundp 'org-latex-classes)
(setq org-latex-class nil))
(setq org-latex-with-hyperref nil)
(add-to-list 'org-latex-classes
'("svmult"
"\\documentclass[11pt]{svmult}
\\usepackage[utf8]{inputenc}
\\usepackage[T1]{fontenc}
\\usepackage{fixltx2e}
\\usepackage{longtable}
\\usepackage{float}
\\usepackage{wrapfig}
\\usepackage{rotating}
\\usepackage[normalem]{ulem}
\\usepackage{amsmath}
\\usepackage{textcomp}
\\usepackage{marvosym}
\\usepackage{wasysym}
\\usepackage{amssymb}
\\usepackage{hyperref}
\\usepackage{mathptmx}
\\usepackage{helvet}
\\usepackage{courier}
\\usepackage{type1cm}
\\usepackage{makeidx}
\\usepackage{graphicx}
\\usepackage{multicol}
\\usepackage[bottom]{footmisc}
\\providecommand{\\e}[1]{\\ensuremath{\\times 10^{#1}}}
[NO-DEFAULT-PACKAGES] [PACKAGES] [EXTRA]"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
;; Default packages included in every tex file, pdflatex or xelatex
(setq org-latex-packages-alist
'(("" "graphicx" t)
("" "longtable" nil)
("" "float" nil)))
;; source: https://lists.gnu.org/archive/html/emacs-orgmode/2013-06/msg00240.html
(defun my-auto-tex-cmd (backend)
"When exporting from .org with latex,
automatically run latex, pdflatex, or xelatex as appropriate,
using latexmk."
(let ((texcmd))
(setq texcmd "latexmk -pdf %f")
(if (string-match "LATEX_CMD: pdflatex" (buffer-string))
(progn
(setq texcmd "latexmk -pdf -pdflatex='pdflatex -file-line-error --shell-escape -synctex=1' %f")
(setq org-latex-default-packages-alist
'(("AUTO" "inputenc" t)
("T1" "fontenc" t)
("" "fixltx2e" nil)
("" "wrapfig" nil)
("" "soul" t)
("" "textcomp" t)
("" "marvosym" t)
("" "wasysym" t)
("" "latexsym" t)
("" "amssymb" t)
("" "hyperref" nil)))))
(if (string-match "LATEX_CMD: xelatex" (buffer-string))
(progn
(setq texcmd "latexmk -pdflatex='xelatex -file-line-error --shell-escape -synctex=1' -pdf %f")
(setq org-latex-default-packages-alist
'(("" "fontspec" t)
("" "xunicode" t)
("" "url" t)
;; ("" "rotating" t)
;; ("" "memoir-article-styles" t)
;; ("american" "babel" t)
;; ("babel" "csquotes" t)
;; ("" "listings" nil)
("svgnames" "xcolor" t)
("" "soul" t)
("xetex, colorlinks=true, urlcolor=FireBrick, plainpages=false, pdfpagelabels, bookmarksnumbered" "hyperref" nil)
))
))
(setq org-latex-pdf-process (list texcmd))))
(add-hook 'org-export-before-parsing-hook 'my-auto-tex-cmd)
(add-to-list 'org-latex-classes
'("simple"
"\\documentclass{article}
\\usepackage{amsmath}
\\usepackage[utf8]{inputenc}
\\usepackage[T1]{fontenc}
\\usepackage{fixltx2e}
\\usepackage{longtable}
\\usepackage{float}
\\usepackage{wrapfig}
\\usepackage{rotating}
\\usepackage[normalem]{ulem}
\\usepackage{textcomp}
\\usepackage{marvosym}
\\usepackage{wasysym}
\\usepackage{amssymb}
\\usepackage{hyperref}
\\usepackage{mathptmx}
\\usepackage{helvet}
\\usepackage{courier}
\\usepackage{type1cm}
\\usepackage{makeidx}
\\usepackage{graphicx}
\\marginparwidth 0.5in
\\oddsidemargin 0.25in
\\evensidemargin 0.25in
\\marginparsep 0.25in
\\topmargin 0.25in
\\textwidth 6in
\\textheight 8 in
[NO-DEFAULT-PACKAGES]
[EXTRA]"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")))
(defun org-export-latex-no-toc (depth)
(when depth
(format "%% Org-mode is exporting headings to %s levels.\n"
depth)))
(setq org-export-latex-format-toc-function 'org-export-latex-no-toc)
(setq reftex-default-bibliography
'("~/Academic/Bibliography/main.bib"))
(setq reftex-bibpath-environment-variables
'("~/Academic/Bibliography/"))
(setq reftex-bibliography-commands '("bibliography" "nobibliography" "addbibresource"))
(setq reftex-default-bibliography
(quote
("user.bib" "local.bib" "main.bib")))
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(autoload 'reftex-citation "reftex-cite" "Make citation" nil)
(autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
;; Make RefTeX faster
(setq reftex-enable-partial-scans t)
(setq reftex-save-parse-info t)
(setq reftex-use-multiple-selection-buffers t)
(setq reftex-plug-into-AUCTeX t)
;; Make RefTeX work with Org-Mode
;; use 'C-c (' instead of 'C-c [' because the latter is already
;; defined in orgmode to the add-to-agenda command.
(defun org-mode-reftex-setup ()
(load-library "reftex")
(and (buffer-file-name)
(file-exists-p (buffer-file-name))
(reftex-parse-all))
(define-key org-mode-map (kbd "C-c (") 'reftex-citation))
(add-hook 'org-mode-hook 'org-mode-reftex-setup)
;; RefTeX formats for biblatex (not natbib)
(setq reftex-cite-format
'(
(?\C-m . "\\cite[]{%l}")
(?t . "\\textcite{%l}")
(?a . "\\autocite[]{%l}")
(?p . "\\parencite{%l}")
(?f . "\\footcite[][]{%l}")
(?F . "\\fullcite[]{%l}")
(?x . "[]{%l}")
(?X . "{%l}")
))
(setq font-latex-match-reference-keywords
'(("cite" "[{")
("cites" "[{}]")
("autocite" "[{")
("footcite" "[{")
("footcites" "[{")
("parencite" "[{")
("textcite" "[{")
("fullcite" "[{")
("citetitle" "[{")
("citetitles" "[{")
("headlessfullcite" "[{")))
(setq reftex-cite-prompt-optional-args nil)
(setq reftex-cite-cleanup-optional-args t)
;;; .emacs ends here
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment