;;; Until I embrace the declarative nix autism
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))(use-package diminish
:ensure t
:init
(diminish 'which-key-mode)
(diminish 'subword-mode)
(diminish 'rainbow-mode)
(diminish 'auto-revert-mode)
(diminish 'company-mode)
(diminish 'eldoc-mode))(unless (package-installed-p 'spacemacs-theme)
(package-refresh-contents)
(package-install 'spacemacs-theme))(use-package spaceline
:ensure t
:config
(require 'spaceline-config)
(setq powerline-default-separator (quote arrow))
(spaceline-spacemacs-theme))(use-package which-key
:ensure t
:diminish which-key-mode
:init
(which-key-mode))(use-package switch-window
:ensure t
:config
(setq switch-window-input-style 'minibuffer)
(setq switch-window-increase 4)
(setq switch-window-threshold 2)
(setq switch-window-shortcut-style 'qwerty)
(setq switch-window-qwerty-shortcuts
'("a" "s" "d" "f" "j" "k" "l"))
:bind
([remap other-window] . switch-window))(use-package avy
:ensure t
:bind
("M-s" . avy-goto-char))(use-package sudo-edit
:ensure t
:bind ("C-M-e" . sudo-edit))(use-package rainbow-mode
:ensure t
:diminish rainbow-mode
:init (rainbow-mode 1))(use-package rainbow-delimiters
:ensure t
:init
(rainbow-delimiters-mode 1))(use-package dashboard
:ensure t
:config
(dashboard-setup-startup-hook)
(setq dashboard-items '((recents . 10)))
(setq dashboard-banner-logo-title "Rise and Shine"))(use-package magit
:ensure t)
(global-set-key (kbd "C-x g") 'magit-status)(use-package company
:ensure t
:diminish company-mode
:init
(add-hook 'after-init-hook 'global-company-mode))
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 1)
(setq company-selection-wrap-around t)
(company-tng-configure-default)(use-package multiple-cursors
:ensure t)
(global-set-key (kbd "C-,") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-.") 'mc/mark-next-like-this)
(global-set-key (kbd "C-c C-.") 'mc/mark-all-like-this)(use-package haskell-mode
:ensure t)(use-package racket-mode
:ensure t)(setq org-src-window-setup 'current-window)
(add-to-list 'org-structure-template-alist
'("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"))
(add-hook 'org-mode-hook (lambda () (company-mode -1)))(use-package org-bullets
:ensure t
:config
(add-hook 'org-mode-hook (lambda () (org-bullets-mode))))(setq ido-enable-flex-matching nil)
(setq ido-create-new-buffer 'always)
(setq ido-everywhere t)
(ido-mode 1)(use-package ido-vertical-mode
:ensure t
:init
(ido-vertical-mode 1))
(setq ido-vertical-define-keys 'C-n-and-C-p-only)(use-package smex
:ensure t
:init (smex-initialize)
:bind
("M-x" . smex))(global-set-key (kbd "C-x C-b") 'ido-switch-buffer)(defadvice ansi-term (before force-bash)
(interactive (list "/bin/zsh")))
(ad-activate 'ansi-term)(global-set-key (kbd "<s-return>") 'ansi-term)(setq make-backup-files nil)
(setq auto-save-default nil)
(setq create-lockfiles nil)(tool-bar-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)(defalias 'yes-or-no-p 'y-or-n-p);;; On some terminals it looks atrocious, only use with the GUI
(when window-system (global-hl-line-mode t)) ;;; Don't trust any terminal to display unicode properly
;;; Will probably have to disable it in agda-mode
(when window-system (global-prettify-symbols-mode t))(setq inhibit-startup-message t)(setq scroll-conservatively 100)(setq ring-bell-function 'ignore)(global-set-key (kbd "C-x b") 'ibuffer)(global-subword-mode 1) (setq electric-pair-pairs '(
(?\( . ?\))
(?\[ . ?\])
(?\{ . ?\})
))
;; for now disabled will see how it goes (electric-pair-mode 1)(line-number-mode 1)
(column-number-mode 1)(setq display-time-24hr-format t)
(display-time-mode 1)(defun config-visit ()
(interactive)
(find-file "~/.emacs.d/README.org"))
(global-set-key (kbd "C-c e") 'config-visit)(defun config-reload ()
(interactive)
(org-babel-load-file (expand-file-name "~/.emacs.d/README.org")))
(global-set-key (kbd "C-c r") 'config-reload)(defun split-and-follow-horizontally ()
(interactive)
(split-window-below)
(balance-windows)
(other-window 1))
(global-set-key (kbd "C-x 2") 'split-and-follow-horizontally)
(defun split-and-follow-vertically ()
(interactive)
(split-window-right)
(balance-windows)
(other-window 1))
(global-set-key (kbd "C-x 3") 'split-and-follow-vertically)(defun kill-whole-word ()
(interactive)
(forward-word)
(backward-word)
(kill-word 1))
(global-set-key (kbd "M-d") 'kill-whole-word);; Override for smex
(defun kill-curr-buffer ()
(interactive)
(kill-buffer (current-buffer)))
(global-set-key (kbd "C-x k") 'kill-curr-buffer) (defun copy-whole-line ()
(interactive)
(save-excursion
(kill-new
(buffer-substring
(point-at-bol)
(point-at-eol)))))
(global-set-key (kbd "M-k") 'copy-whole-line)(defun kill-all-buffers ()
(interactive)
(mapc 'kill-buffer (buffer-list)))
(global-set-key (kbd "C-M-s-k") 'kill-all-buffers) (defun eval-and-replace ()
"Replace the preceding sexp with its value"
(interactive)
(backward-kill-sexp)
(condition-case nil
(prin1 (eval (read (current-kill 0)))
(current-buffer))
(error (message "Invalid expression")
(insert (current-kill 0)))))
(global-set-key (kbd "C-c C-e") 'eval-and-replace)