.emacs.d/init.el

354 lines
10 KiB
EmacsLisp

; __ __ __ __ ______ ______ __
; /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ ___\ /\ \
; \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \ __\ \ \ \____
; \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \ \_____\ \ \_____\
; \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ \/_____/
;;; Bad stuff
(setq package-check-signature nil)
;;; Making the interface not terrible ;;;
(menu-bar-mode -1)
;;; Sane defaults ;;;
(setq-default word-wrap t) ; wrap lines
(setq delete-old-versions -1) ; delete excess backup versions silently
(setq version-control t) ; use version control
(setq vc-make-backup-files t) ; make backups file even when in version controlled dir
(setq backup-directory-alist `(("." . "~/.emacs.d/backups")) ) ; which directory to put backups file
(setq vc-follow-symlinks t) ; don't ask for confirmation when opening symlinked file
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)) ) ;transform backups file name
(setq inhibit-startup-screen t) ; inhibit useless and old-school startup screen
(setq ring-bell-function 'ignore) ; silent bell when you make a mistake
(setq coding-system-for-read 'utf-8 ) ; use utf-8 by default
(setq coding-system-for-write 'utf-8 )
(set-language-environment "UTF-8")
(setq sentence-end-double-space nil) ; sentence SHOULD end with only a point.
(setq default-fill-column 80) ; toggle wrapping text at the 80th character
(setq-default indent-tabs-mode nil) ; tabs to spaces
(global-set-key "\C-m" 'newline-and-indent)
;; Scratch Buffer
;; (setq initial-scratch-message
;; (format
;; ";; %s\n\n"
;; (replace-regexp-in-string
;; "\n" "\n;; " ; comment each line
;; (replace-regexp-in-string
;; "\n$" "" ; remove trailing linebreak
;; (shell-command-to-string "toilet -d ~/labs/figlet-fonts -f Sub-Zero Im\ Gay")))))
;;; Setup Recent Files
(recentf-mode 1)
(setq recentf-max-menu-items 25)
(global-set-key "\C-x\ \C-r" 'recentf-open-files)
;;; Use package ;;;
(setq package-enable-at-startup nil) ; tells emacs not to load any packages before starting up
;; the following lines tell emacs where on the internet to look up
;; for new packages.
(setq package-archives '(("org" . "http://orgmode.org/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")))
(package-initialize) ; guess what this one does ?
; Bootstrap `use-package'
(unless (package-installed-p 'use-package) ; unless it is already installed
(package-refresh-contents) ; updage packages archive
(package-install 'use-package)) ; and install the most recent version of use-package
(require 'use-package) ; guess what this one does too ?
(setq use-package-always-ensure t) ; autodownload plugins
(use-package auto-package-update
:config
(setq auto-package-update-delete-old-versions t)
(setq auto-package-update-hide-results t)
(auto-package-update-maybe))
;;; Evil!!
; General
(use-package general
:config
(setq general-default-prefix "<SPC>")
(general-evil-setup))
; Undo-tree
(use-package undo-tree)
;goto-chg
(use-package goto-chg)
; evil-mode
(use-package evil
:init
(setq evil-want-C-i-jump nil)
:config
(evil-mode 1)
(setq evil-mode-line-format '(before . mode-line-front-space))
(setq-default display-line-numbers 'visual
display-line-numbers-widen t
;; this is the default
display-line-numbers-current-absolute t)
(defun noct:relative ()
(setq-local display-line-numbers 'visual))
(defun noct:absolute ()
(setq-local display-line-numbers t))
(add-hook 'evil-insert-state-entry-hook #'noct:absolute)
(add-hook 'evil-insert-state-exit-hook #'noct:relative)
(custom-set-faces '(line-number ((t :foreground "brightblack"))))
(custom-set-faces '(line-number-current-line ((t :weight bold
:foreground "white")))))
; evil-escape
(use-package evil-escape
:config
(setq-default evil-escape-key-sequence "jk")
(evil-escape-mode))
; evil- commentary
(use-package evil-commentary
:config
(evil-commentary-mode))
(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-safe-themes
(quote
("c74e83f8aa4c78a121b52146eadb792c9facc5b1f02c917e3dbb454fca931223" "a27c00821ccfd5a78b01e4f35dc056706dd9ede09a8b90c6955ae6a390eb1c1e" "e4c8810d9ab925567a69c11d5c95d198a4e7d05871453b2c92c020712559c4c1" default)))
'(package-selected-packages
(quote
(cider rainbow-delimiters scel sclang w3m auctex-latexmk company-auctex company-math magit telephone-line focus latex-preview-pane tex auctex org-bullets syndicate evil-org smartparens-config smartparens flx counsel swiper ivy xresources-theme evil-commentary evil-escape evil undo-tree general use-package))))
(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.
'(line-number ((t :foreground "brightblack")))
'(line-number-current-line ((t :weight bold :foreground "white"))))
;;; Editing Packages
; focus-mode
(use-package focus
:commands focus-mode)
(use-package writeroom-mode
:commands writeroom-mode)
; flyspell
(use-package flyspell
:after (:any tex org)
:config
(setq ispell-program-name "aspell")
;; Please note ispell-extra-args contains ACTUAL parameters passed to aspell
(setq ispell-extra-args '("--sug-mode=ultra" "--lang=en_US")))
; company-mode
(use-package company
:config
(add-hook 'after-init-hook 'global-company-mode))
(use-package pos-tip
:after compmay)
(use-package company-quickhelp
:after company
:config (company-quickhelp-mode))
;;; Evil!!
; General
(use-package general
:config
(setq general-default-prefix "<SPC>")
(general-evil-setup))
; Undo-tree
(use-package undo-tree)
;goto-chg
(use-package goto-chg)
; evil-mode
(use-package evil
:init
(setq evil-want-C-i-jump nil)
:config
(evil-mode 1)
(setq evil-mode-line-format '(before . mode-line-front-space))
(setq-default display-line-numbers 'visual
display-line-numbers-widen t
;; this is the default
display-line-numbers-current-absolute t)
(defun noct:relative ()
(setq-local display-line-numbers 'visual))
(defun noct:absolute ()
(setq-local display-line-numbers t))
(add-hook 'evil-insert-state-entry-hook #'noct:absolute)
(add-hook 'evil-insert-state-exit-hook #'noct:relative)
(custom-set-faces '(line-number ((t :foreground "brightblack"))))
(custom-set-faces '(line-number-current-line ((t :weight bold
:foreground "white")))))
; evil-escape
(use-package evil-escape
:config
(setq-default evil-escape-key-sequence "jk")
(evil-escape-mode))
; evil- commentary
(use-package evil-commentary
:config
(evil-commentary-mode))
;;; Interface
;theme
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(load-theme 'xresources)
(set-default-font "scientifica 12")
; fix those pesky highligts
(set-face-attribute 'region nil :background "brightblack")
; rich-minority
(use-package rich-minority
:config
(setq rm-whitelist "*")
(rich-minority-mode 1))
; smart-mode-line
(use-package smart-mode-line
:config
(setq sml/theme 'respectful)
(sml/setup))
;; ivy
;flx
(use-package flx)
;ivy
(use-package ivy
:config
(setq ivy-initial-inputs-alist nil)
(setq ivy-re-builders-alist
'((ivy-switch-buffer . ivy--regex-plus)
(t . ivy--regex-fuzzy)))
(ivy-mode 1))
;swiper
(use-package swiper
:after ivy)
;counsel
(use-package counsel
:after ivy
:general
(general-nmap
":" 'counsel-M-x))
; Parens
(show-paren-mode 1)
(set-face-background 'show-paren-match "brightblack")
(set-face-attribute 'show-paren-match nil :weight 'bold)
(use-package smartparens
:config
(require 'smartparens-config)
(smartparens-global-mode 1))
;;; Org Mode
; org
(use-package org
:mode ("\\.org\\'" . org-mode)
:interpreter ("org" . org-mode))
; evil-org
(use-package evil-org
:after org
:config
(add-hook 'org-mode-hook 'evil-org-mode)
(add-hook 'evil-org-mode-hook
(lambda ()
(evil-org-set-key-theme '(textobjects insert navigation additional shift todo heading))))
(require 'evil-org-agenda)
(evil-org-agenda-set-keys))
;;; LaTeX
(use-package tex
:ensure auctex
:mode ("\\.tex\\'" . LaTeX-mode)
:interpreter ("tex" . LaTeX-mode)
:config
(setq TeX-save-query nil)
(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
(setq TeX-source-correlate-mode t)
(setq LaTeX-item-indent 1)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(add-hook 'LaTeX-mode-hook
(lambda ()
(push
'("latexmk" "latexmk -pdf %s" TeX-run-TeX nil t
:help "Run latexmk on file")
TeX-command-list)))
(add-hook 'TeX-mode-hook '(lambda () (setq TeX-command-default "latexmk")))
(TeX-engine-set "luatex")
(setq-default TeX-master nil)
(add-hook 'LaTeX-mode-hook 'visual-line-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(add-hook 'LaTeX-mode-hook 'TeX-interactive-mode)
(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)
(add-to-list 'TeX-view-program-selection
'(output-pdf "xathura"))
(setq reftex-plug-into-AUCTeX t))
(use-package company-auctex
:after tex
:config
(company-auctex-init))
(use-package company-math
:after tex
:config
(defun my-latex-mode-setup ()
(setq-local company-backends
(append '((company-math-symbols-latex company-math-symbols-unicode company-latex-commands company-auctex))
company-backends)))
(add-hook 'TeX-mode-hook 'my-latex-mode-setup))
;;; git
; magit
(use-package magit)
;;; Misc
(use-package w3m)
(use-package rainbow-delimiters
:config
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
;(add-to-list 'load-path "~/.emacs.d/scel/el")
;(require 'sclang)
;;; Clojure
(use-package cider)