.emacs.d/init.el

586 lines
19 KiB
EmacsLisp
Raw Normal View History

2018-09-14 03:40:53 +00:00
; __ __ __ __ ______ ______ __
; /\ \ /\ "-.\ \ /\ \ /\__ _\ /\ ___\ /\ \
; \ \ \ \ \ \-. \ \ \ \ \/_/\ \/ \ \ __\ \ \ \____
; \ \_\ \ \_\\"\_\ \ \_\ \ \_\ \ \_____\ \ \_____\
; \/_/ \/_/ \/_/ \/_/ \/_/ \/_____/ \/_____/
2019-11-24 10:00:48 +00:00
2018-09-14 03:40:53 +00:00
;;; Bad stuff
(setq package-check-signature nil)
;;; Making the interface not terrible ;;;
(menu-bar-mode -1)
2019-11-26 23:48:10 +00:00
(tool-bar-mode -1)
(scroll-bar-mode -1)
(fringe-mode 0)
2019-02-19 23:23:30 +00:00
2018-09-14 03:40:53 +00:00
;;; Sane defaults ;;;
2019-11-24 10:00:48 +00:00
(when (version<= "26.0.50" emacs-version)
(setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode))
2019-11-22 08:01:12 +00:00
(setq server-use-tcp t)
2019-11-24 10:00:48 +00:00
(add-to-list 'exec-path "/home/gigavinyl/.nix-profile/bin/")
2019-11-22 08:01:12 +00:00
(global-set-key (kbd "<mouse-2>") 'clipboard-yank)
(setq x-select-enable-primary t)
(setq x-select-enable-clipboard t)
2018-09-14 03:40:53 +00:00
(setq-default word-wrap t) ; wrap lines
2019-11-24 10:00:48 +00:00
(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)
2018-09-14 03:40:53 +00:00
(set-language-environment "UTF-8")
2019-11-24 10:00:48 +00:00
(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
2018-09-14 03:40:53 +00:00
(setq-default indent-tabs-mode nil) ; tabs to spaces
2019-11-22 08:01:12 +00:00
(setq tab-width 2)
2019-02-19 23:23:30 +00:00
(global-set-key "\C-m" 'newline-and-indent)
2018-09-14 03:40:53 +00:00
;; Scratch Buffer
2019-02-19 23:23:30 +00:00
;; (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")))))
2018-09-14 03:40:53 +00:00
;;; Setup Recent Files
2019-02-19 23:23:30 +00:00
(recentf-mode 1)
(setq recentf-max-menu-items 25)
(global-set-key "\C-x\ \C-r" 'recentf-open-files)
2018-09-14 03:40:53 +00:00
;;; 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 ?
2019-11-24 10:00:48 +00:00
; Bootstrap `use-package'
2018-09-14 03:40:53 +00:00
(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
2019-02-19 23:23:30 +00:00
(use-package auto-package-update
:config
(setq auto-package-update-delete-old-versions t)
(setq auto-package-update-hide-results t)
2019-11-24 10:00:48 +00:00
(auto-package-update-maybe))
2018-09-14 03:40:53 +00:00
;;; Evil!!
2019-11-24 10:00:48 +00:00
; General
2018-09-14 03:40:53 +00:00
(use-package general
:config
(setq general-default-prefix "<SPC>")
(general-evil-setup))
2019-11-24 10:00:48 +00:00
; Undo-tree
2018-09-14 03:40:53 +00:00
(use-package undo-tree)
2019-11-24 10:00:48 +00:00
;goto-chg
2018-09-14 03:40:53 +00:00
(use-package goto-chg)
2019-11-24 10:00:48 +00:00
; evil-mode
2018-09-14 03:40:53 +00:00
(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
2019-11-24 10:00:48 +00:00
display-line-numbers-widen t
;; this is the default
display-line-numbers-current-absolute t)
2018-09-14 03:40:53 +00:00
(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")))))
2019-11-24 10:00:48 +00:00
; evil-escape
2018-09-14 03:40:53 +00:00
(use-package evil-escape
:config
(setq-default evil-escape-key-sequence "jk")
(evil-escape-mode))
2019-11-24 10:00:48 +00:00
; evil- commentary
2018-09-14 03:40:53 +00:00
(use-package evil-commentary
:config
(evil-commentary-mode))
2019-11-24 10:00:48 +00:00
2018-09-14 03:40:53 +00:00
(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
2019-11-24 10:00:48 +00:00
;parinfer
(use-package parinfer
:general
(general-nmap
"," 'parinfer-toggle-mode)
:config
(setq parinfer-extensions '(defaults pretty-parens smart-yank smart-tab paredit evil))
:init
(progn
(setq parinfer-extensions
'(defaults ; should be included.
pretty-parens ; different paren styles for different modes.
evil ; If you use Evil.
;; lispy ; If you use Lispy. With this extension, you should install Lispy and do not enable lispy-mode directly.
smart-tab ; C-b & C-f jump positions and smart shift with tab & S-tab.
smart-yank)) ; Yank behavior depend on mode.
(add-hook 'clojure-mode-hook #'parinfer-mode)
(add-hook 'emacs-lisp-mode-hook #'parinfer-mode)
(add-hook 'common-lisp-mode-hook #'parinfer-mode)
(add-hook 'scheme-mode-hook #'parinfer-mode)
(add-hook 'lisp-mode-hook #'parinfer-mode)))
;yasnippet
(use-package yasnippet
:config
(yas-global-mode 1))
; focus-mode
2018-09-14 03:40:53 +00:00
(use-package focus
:commands focus-mode)
(use-package writeroom-mode
:commands writeroom-mode)
2019-11-24 10:00:48 +00:00
; flyspell
2018-09-14 03:40:53 +00:00
(use-package flyspell
:after (:any tex org)
:config
(setq ispell-program-name "aspell")
;; Please note ispell-extra-args contains ACTUAL parameters passed to aspell
2019-11-24 10:00:48 +00:00
(setq ispell-extra-args '("--sug-mode=ultra" "--lang=en_US")))
2018-09-14 03:40:53 +00:00
2019-11-24 10:00:48 +00:00
; company-mode
2018-09-14 03:40:53 +00:00
(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))
2019-11-22 08:01:12 +00:00
;flycheck
(use-package flycheck
:config
(global-flycheck-mode))
(use-package flycheck-pos-tip
:after flycheck
:config
(with-eval-after-load 'flycheck
(flycheck-pos-tip-mode)))
; lsp
2019-05-25 20:44:44 +00:00
(use-package lsp-mode
:hook (XXX-mode . lsp)
:commands lsp)
;; optionally
(use-package lsp-ui
2019-11-24 10:00:48 +00:00
:commands lsp-ui-mode
:config
(add-hook 'lsp-mode-hook 'lsp-ui-mode))
2019-05-25 20:44:44 +00:00
(use-package company-lsp :commands company-lsp)
2019-11-24 10:00:48 +00:00
;(use-package helm-lsp :commands helm-lsp-workspace-symbol)
;(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
2018-09-14 03:40:53 +00:00
;;; Evil!!
2019-11-24 10:00:48 +00:00
; General
2018-09-14 03:40:53 +00:00
(use-package general
:config
(setq general-default-prefix "<SPC>")
(general-evil-setup))
2019-11-24 10:00:48 +00:00
; Undo-tree
2018-09-14 03:40:53 +00:00
(use-package undo-tree)
2019-11-24 10:00:48 +00:00
;goto-chg
2018-09-14 03:40:53 +00:00
(use-package goto-chg)
2019-11-24 10:00:48 +00:00
; evil-mode
2018-09-14 03:40:53 +00:00
(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
2019-11-24 10:00:48 +00:00
display-line-numbers-widen t
;; this is the default
display-line-numbers-current-absolute t)
2018-09-14 03:40:53 +00:00
(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")))))
2019-11-24 10:00:48 +00:00
; evil-escape
2018-09-14 03:40:53 +00:00
(use-package evil-escape
:config
(setq-default evil-escape-key-sequence "jk")
(evil-escape-mode))
2019-11-24 10:00:48 +00:00
; evil- commentary
2018-09-14 03:40:53 +00:00
(use-package evil-commentary
:config
(evil-commentary-mode))
;;; Interface
2019-11-24 10:00:48 +00:00
;theme
2018-09-14 03:40:53 +00:00
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
2019-11-24 10:00:48 +00:00
(load-theme 'xresources t)
2018-09-14 03:40:53 +00:00
(set-default-font "scientifica 12")
2019-11-24 10:00:48 +00:00
; fix those pesky highligts
2018-09-14 03:40:53 +00:00
(set-face-attribute 'region nil :background "brightblack")
2019-11-22 08:01:12 +00:00
;all-the-icons
(use-package all-the-icons)
;neo-tree
(use-package neotree
:config
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
(global-set-key [f8] 'neotree-toggle))
;which-key
(use-package which-key
:config
(which-key-mode)
(setq which-key-allow-evil-operators t))
2019-11-24 10:00:48 +00:00
;rainbow-delimiters
2019-11-22 08:01:12 +00:00
(use-package rainbow-delimiters
:config
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
2019-11-24 10:00:48 +00:00
; rich-minority
2018-09-14 03:40:53 +00:00
(use-package rich-minority
:config
(setq rm-whitelist "*")
(rich-minority-mode 1))
2019-11-26 23:48:10 +00:00
;; ; smart-mode-line
;; (use-package smart-mode-line
;; :config
;; (setq sml/theme 'respectful)
;; (setq sml/no-confirm-load-theme t)
;; (sml/setup))
;; doom-modeline
(use-package doom-modeline
:hook (after-init . doom-modeline-mode))
(set-face-attribute 'mode-line nil
:box '(:line-width 3))
2018-09-14 03:40:53 +00:00
;; ivy
2019-11-24 10:00:48 +00:00
;flx
2018-09-14 03:40:53 +00:00
(use-package flx)
2019-11-24 10:00:48 +00:00
;ivy
2018-09-14 03:40:53 +00:00
(use-package ivy
:config
(setq ivy-initial-inputs-alist nil)
2019-11-24 10:00:48 +00:00
;; (setq ivy-re-builders-alist
;; '((ivy-switch-buffer . ivy--regex-plus
;; (t . ivy--regex-fuzzy))))
2018-09-14 03:40:53 +00:00
(ivy-mode 1))
2019-11-24 10:00:48 +00:00
;swiper
2018-09-14 03:40:53 +00:00
(use-package swiper
:after ivy)
2019-11-24 10:00:48 +00:00
;counsel
2018-09-14 03:40:53 +00:00
(use-package counsel
:after ivy
:general
(general-nmap
":" 'counsel-M-x))
2019-11-24 10:00:48 +00:00
; Parens
2018-09-14 03:40:53 +00:00
(show-paren-mode 1)
2019-11-24 10:00:48 +00:00
(set-face-background 'show-paren-match "brightblack"
(set-face-attribute 'show-paren-match nil :weight 'bold))
2018-09-14 03:40:53 +00:00
(use-package smartparens
:config
(require 'smartparens-config)
(smartparens-global-mode 1))
;;; Org Mode
2019-11-24 10:00:48 +00:00
; org
2018-09-14 03:40:53 +00:00
(use-package org
:mode ("\\.org\\'" . org-mode)
2019-11-22 08:01:12 +00:00
:interpreter ("org" . org-mode)
:config
2019-11-24 10:00:48 +00:00
(custom-set-variables)
'(org-directory "~/.org")
'(org-agenda-files (list org-directory)))
2018-09-14 03:40:53 +00:00
2019-11-24 10:00:48 +00:00
; evil-org
2018-09-14 03:40:53 +00:00
(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)
2019-11-22 08:01:12 +00:00
(evil-org-agenda-set-keys))
2019-11-24 10:00:48 +00:00
;org-journal ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
2019-11-22 08:01:12 +00:00
(use-package org-journal
:custom
(org-journal-dir "~/org/journal/")
(org-journal-date-format "%A, %d %B %Y"))
2018-09-14 03:40:53 +00:00
;;; 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)
2019-02-19 23:23:30 +00:00
(setq LaTeX-item-indent 1)
2018-09-14 03:40:53 +00:00
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(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)
2019-02-19 23:23:30 +00:00
(add-hook 'LaTeX-mode-hook 'TeX-interactive-mode)
(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)
2019-05-25 20:44:44 +00:00
(setq TeX-view-program-selection '((output-pdf "Zathura")))
2019-05-17 23:39:30 +00:00
(eval-after-load "tex"
'(progn
(add-to-list
'TeX-engine-alist
'(default-shell-escape "Default with shell escape"
"pdftex -shell-escape"
"pdflatex -shell-escape"
2019-11-24 10:00:48 +00:00
ConTeXt-engine))))
;; (setq-default TeX-engine 'default-shell-escape)
2019-02-19 23:23:30 +00:00
(setq reftex-plug-into-AUCTeX t))
2018-09-14 03:40:53 +00:00
(use-package company-auctex
2019-11-24 10:00:48 +00:00
:after tex
:config
(company-auctex-init))
2018-09-14 03:40:53 +00:00
2019-02-19 23:23:30 +00:00
(use-package company-math
2019-11-24 10:00:48 +00:00
: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))
2018-09-14 03:40:53 +00:00
2019-05-25 20:44:44 +00:00
;;; projects
2019-11-24 10:00:48 +00:00
; projectile ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
2019-11-22 08:01:12 +00:00
(use-package projectile
:general
(general-nmap
2019-11-24 10:00:48 +00:00
"p" '(:keymap projectile-command-map :wk "projectile prefix")))
2018-09-14 03:40:53 +00:00
2019-11-24 10:00:48 +00:00
; magit ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
2018-09-14 03:40:53 +00:00
(use-package magit)
2019-02-19 23:23:30 +00:00
2019-11-26 23:48:10 +00:00
(use-package git-gutter
:config
(global-git-gutter-mode +1))
2019-11-24 10:00:48 +00:00
(use-package evil-magit)
2019-02-19 23:23:30 +00:00
;;; Misc
2019-11-22 08:01:12 +00:00
2019-02-19 23:23:30 +00:00
(use-package w3m)
2019-11-24 10:00:48 +00:00
(use-package circe
:config
(setq auth-sources '("~/.authinfo.gpg"))
(defun my-fetch-password (&rest params)
(require 'auth-source)
(let ((match (car (apply 'auth-source-search params))))
(if match
(let ((secret (plist-get match :secret)))
(if (functionp secret)
(funcall secret)
secret))
(error "Password not found for %S" params))))
(defun my-nickserv-password (server)
(my-fetch-password :login "forcer" :machine "irc.freenode.net"))
(setq circe-network-options
'(("Freenode"
:nick "gigavinyl"
:channels ("#emacs" "#emacs-circe" "#clojure" "#netbsd")
:nickserv-password my-nickserv-password))))
(use-package exec-path-from-shell
:config
(when (memq window-system '(mac ns x))
(exec-path-from-shell-initialize)))
(use-package rainbow-delimiters
:config
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode))
2019-11-22 08:01:12 +00:00
(use-package editorconfig
:config
(editorconfig-mode 1))
(use-package aggressive-indent
:config
(global-aggressive-indent-mode 1))
2019-11-24 10:00:48 +00:00
;(add-to-list 'load-path "~/.emacs.d/scel/el") ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
;(require 'sclang) ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
2019-11-22 08:01:12 +00:00
;;; Rust
(use-package rust-mode
:mode ("\\.rs\\'" . rust-mode)
:interpreter ("rust" . rust-mode))
2019-11-22 08:01:12 +00:00
(use-package flycheck-rust
:after rust-mode)
(use-package racer
:after rust-mode
:config
(add-hook 'rust-mode-hook #'racer-mode)
(add-hook 'racer-mode-hook #'eldoc-mode)
(add-hook 'racer-mode-hook #'company-mode)
(define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common)
(setq company-tooltip-align-annotations t))
(use-package toml-mode
:mode ("\\.toml\\'" . toml-mode)
:interpreter ("rust" . toml-mode))
2019-05-25 20:44:44 +00:00
;;; Haskell
(use-package haskell-mode
:mode ("\\.hs\\'" . haskell-mode)
:interpreter ("haskell" . haskell-mode))
(use-package lsp-haskell
2019-11-24 10:00:48 +00:00
:config
(add-hook 'haskell-mode-hook #'lsp))
2019-05-25 20:44:44 +00:00
2019-11-22 08:01:12 +00:00
;;; Clojure
(use-package clojure-mode
:mode ("\\.clj*\\'" . clojure-mode)
2019-11-24 10:00:48 +00:00
:interpreter ("clojure" . clojure-mode))
2019-11-22 08:01:12 +00:00
(use-package cider
:after clojure-mode
:config
(add-hook 'clojure-mode-hook #'cider-mode)
(setq nrepl-hide-special-buffers t))
2019-11-24 10:00:48 +00:00
(use-package emidje
:after clojure-mode
:config
(eval-after-load 'cider
#'emidje-setup))
2019-11-22 08:01:12 +00:00
(use-package flycheck-clojure
:after flycheck
:config
(eval-after-load 'flycheck '(flycheck-clojure-setup))
(add-hook 'after-init-hook #'global-flycheck-mode))
2019-11-24 10:00:48 +00:00
;; (use-package clj-refactor
;; :after clojure-mode
;; :config
;; (defun my-clojure-mode-hook ()
;; (clj-refactor-mode 1
;; (yas-minor-mode 1))
;; (cljr-add-keybindings-with-prefix "C-c C-m"))
;; (add-hook 'clojure-mode-hook #'my-clojure-mode-hook)) ; for adding require/use/import statements
;; This choice of keybinding leaves cider-macroexpand-1 unbound
;;; Misc langs
(use-package yaml-mode
:mode ("\\.yaml\\'" . yaml-mode)
:interpreter ("yaml" . yaml-mode))
2019-05-25 20:44:44 +00:00
(general-define-key
:states 'normal
"rl" 'load-file "~/emacs.d/init.el")
2019-11-22 08:01:12 +00:00
(defun goto-match-paren (arg)
2019-11-24 10:00:48 +00:00
"Go to the matching parenthesis if on parenthesis, otherwise insert %.)
vi style of % jumping to matching brace."
(interactive "p")
(cond ((looking-at "\\s\(\") (forward-list 1) (backward-char 1)
((looking-at \"\\s\)\") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))\)"))))
(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" "e4c8810d9ab925567a69c11d5c95d198a4e7d05871453b2c92c020712559c4c1" default)))
'(org-journal-date-format "%A, %d %B %Y")
'(org-journal-dir "~/org/journal/")
'(package-selected-packages
(quote
2019-11-26 23:48:10 +00:00
(git-gutter doom-modeline clj-refactor paredit yascroll yaml-mode writeroom-mode which-key w3m use-package toml-mode smartparens smart-mode-line rainbow-delimiters racer projectile parinfer org-plus-contrib org-journal neotree multiple-cursors minimap lsp-ui lsp-haskell inflections hydra general focus flycheck-rust flycheck-pos-tip flycheck-clojure flx exec-path-from-shell evil-org evil-magit evil-escape evil-commentary emidje edn editorconfig counsel company-quickhelp company-math company-lsp company-auctex bug-hunter auto-package-update all-the-icons aggressive-indent))))