(require 'package) ;; You might already have this line (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (when (< emacs-major-version 24) ;; For important compatibility libraries like cl-lib (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) (package-initialize) ;; You might already have this line (require 'helm-config) (helm-mode) (require 'evil-numbers) (require 'evil-nerd-commenter) (load-theme 'tango-dark) (require 'projectile) (projectile-mode) (evilnc-default-hotkeys) (load (expand-file-name "~/quicklisp/slime-helper.el")) ;; Replace "sbcl" with the path to your implementation (setq inferior-lisp-program "sbcl") (slime-setup '(slime-fancy slime-macrostep slime-company)) (evil-mode) (paredit-mode) (evil-paredit-mode) (rainbow-delimiters-mode) (global-linum-mode) (setq linum-format "%5d\u2502") (global-set-key (kbd "C-x C-f") 'helm-find-files) (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt) (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt) (global-set-key (kbd "M-x") 'helm-M-x) (define-key evil-normal-state-map " f" 'helm-projectile) (define-key evil-normal-state-map " j" 'helm-buffers-list) (define-key evil-normal-state-map "ZZ" 'save-buffer) (defun paredit-wiggle-back () (paredit-forward) (paredit-backward)) (defmacro defparedit-wrapper (name invoked-wrapper) `(defun ,name () (interactive) (paredit-wiggle-back) (,invoked-wrapper))) (defparedit-wrapper back-then-wrap paredit-wrap-sexp) (defparedit-wrapper back-then-wrap-square paredit-wrap-square) (defparedit-wrapper back-then-wrap-curly paredit-wrap-curly) (defparedit-wrapper back-then-wrap-angled paredit-wrap-angled) (defparedit-wrapper back-then-wrap-doublequote paredit-meta-doublequote) (define-key evil-normal-state-map ",W" 'back-then-wrap) (define-key evil-normal-state-map ",w]" 'back-then-wrap-square) (define-key evil-normal-state-map ",w}" 'back-then-wrap-curly) (define-key evil-normal-state-map ",w>" 'back-then-wrap-angled) (define-key evil-normal-state-map ",w\"" 'back-then-wrap-doublequote) (define-key evil-normal-state-map ",S" 'paredit-splice-sexp) (define-key evil-normal-state-map ",A" 'paredit-splice-sexp-killing-backward) (define-key evil-normal-state-map ",D" 'paredit-splice-sexp-killing-forward) (define-key evil-normal-state-map ",|" 'paredit-split-sexp) (define-key evil-normal-state-map ",J" 'paredit-join-sexps) (define-key evil-normal-state-map ",<" 'paredit-backward-slurp-sexp) (define-key evil-normal-state-map ",," 'paredit-backward-barf-sexp) (define-key evil-normal-state-map ",>" 'paredit-forward-slurp-sexp) (define-key evil-normal-state-map ",." 'paredit-forward-barf-sexp) (define-key evil-normal-state-map ",~" 'paredit-convolute-sexp) (define-key evil-normal-state-map ",zz" 'zeal-at-point) (modify-syntax-entry ?_ "w" js-mode-syntax-table) (modify-syntax-entry ?- "w" lisp-mode-syntax-table) (modify-syntax-entry ?* "w" lisp-mode-syntax-table) (modify-syntax-entry ?+ "w" lisp-mode-syntax-table) (modify-syntax-entry ?! "w" lisp-mode-syntax-table) (modify-syntax-entry ?$ "w" lisp-mode-syntax-table) (modify-syntax-entry ?% "w" lisp-mode-syntax-table) (modify-syntax-entry ?& "w" lisp-mode-syntax-table) (modify-syntax-entry ?% "w" lisp-mode-syntax-table) (modify-syntax-entry ?= "w" lisp-mode-syntax-table) (modify-syntax-entry ?< "w" lisp-mode-syntax-table) (modify-syntax-entry ?> "w" lisp-mode-syntax-table) (modify-syntax-entry ?@ "w" lisp-mode-syntax-table) (modify-syntax-entry ?[ "w" lisp-mode-syntax-table) (modify-syntax-entry ?] "w" lisp-mode-syntax-table) (modify-syntax-entry ?^ "w" lisp-mode-syntax-table) (modify-syntax-entry ?_ "w" lisp-mode-syntax-table) (modify-syntax-entry ?~ "w" lisp-mode-syntax-table) (modify-syntax-entry ?{ "w" lisp-mode-syntax-table) (modify-syntax-entry ?} "w" lisp-mode-syntax-table) (modify-syntax-entry ?. "w" lisp-mode-syntax-table) (defun slime-ecl () (interactive) (let ((inferior-lisp-program "ecl")) (slime))) (defun slime-cmucl () (interactive) (let ((inferior-lisp-program "cmucl")) (slime))) (defun slime-sbcl () (interactive) (let ((inferior-lisp-program "sbcl")) (slime))) (defun slime-ccl () (interactive) (let ((inferior-lisp-program "ccl")) (slime))) (add-hook 'after-init-hook 'global-company-mode) (add-hook 'lisp-mode-hook '(lambda () (define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol) (paredit-mode) (evil-paredit-mode))) (add-hook 'ruby-mode-hook '(lambda () (eldoc-mode) (robe-mode))) (add-hook 'clojure-mode-hook '(lambda () ;; Hoplon functions and macros (paredit-mode) (define-key evil-insert-state-map "^N" 'helm-cider-apropos) (dolist (pair '((page . 'defun) (loop-tpl . 'defun) (if-tpl . '1) (for-tpl . '1) (case-tpl . '1) (cond-tpl . 'defun))) (put-clojure-indent (car pair) (car (last pair)))))) (require 'editorconfig) (editorconfig-mode 1)