└── .emacs /.emacs: -------------------------------------------------------------------------------- 1 | ;;;; Add popkit package archive. 2 | (require 'package) ;; You might already have this line 3 | (add-to-list 'package-archives 4 | '("melpa" . "http://melpa.org/packages/")) 5 | (when (< emacs-major-version 24) 6 | ;; For important compatibility libraries like cl-lib 7 | (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/"))) 8 | (package-initialize) ;; You might already have this line 9 | 10 | ;; *** Add new packages here *** 11 | (defvar my-packages 12 | '(material-theme 13 | page-break-lines 14 | paredit 15 | undo-tree 16 | auto-complete 17 | ac-slime 18 | tabbar-ruler 19 | ecb 20 | yasnippet)) 21 | ;; Install package which is not installed 22 | (mapc #'(lambda (package) 23 | (unless (package-installed-p package) 24 | (package-install package))) 25 | my-packages) 26 | 27 | ;;;; Miscellaneous for better defaults 28 | (tool-bar-mode -1) 29 | (show-paren-mode 1) 30 | (global-hl-line-mode 1) 31 | (global-linum-mode 1) 32 | (fset 'yes-or-no-p 'y-or-n-p) 33 | (setq initial-scratch-message "") 34 | (global-auto-revert-mode 1) 35 | (require 'saveplace) 36 | (setq-default save-place t) 37 | (defalias 'list-buffers 'ibuffer) 38 | (ido-mode 1) 39 | (setq ido-separator "\n") 40 | (setq ido-enable-flex-matching t) 41 | (recentf-mode 1) 42 | (setq ring-bell-function 'ignore) 43 | ;(setq browse-url-browser-function 'eww-browse-url) 44 | (setq backup-directory-alist (quote (("." . "~/.backups")))) 45 | (add-hook 'org-mode-hook (lambda () (setq truncate-lines nil))) 46 | (defun unfill-region (start end) 47 | "Replace newline chars in region by single spaces. 48 | This command does the inverse of `fill-region'. 49 | URL `http://ergoemacs.org/emacs/emacs_unfill-paragraph.html' 50 | Version 2016-07-13" 51 | (interactive "r") 52 | (let ((fill-column most-positive-fixnum)) 53 | (fill-region start end))) 54 | ;; (defadvice show-paren-function (after blink activate) 55 | ;; (when (= ?\) (char-before (point))) 56 | ;; (blink-matching-open))) 57 | 58 | ;;;; Package settings 59 | ;;; Set theme 60 | (load-theme 'material t) 61 | (require 'page-break-lines) 62 | (global-page-break-lines-mode) 63 | 64 | ;;; The path to lisp and slime 65 | (setq inferior-lisp-program "~/common-lisp/ccl/ccl.bat") 66 | ;(setq inferior-lisp-program "~/common-lisp/sbcl/1.3.9/sbcl") 67 | ;(setq inferior-lisp-program "~/common-lisp/clisp-2.49/clisp") 68 | (load "~/quicklisp/slime-helper.el") 69 | (load "~/quicklisp/clhs-use-local.el" t) 70 | 71 | ;;; Auto completion 72 | (require 'ac-slime) 73 | (ac-config-default) 74 | (add-hook 'slime-mode-hook 'set-up-slime-ac) 75 | (add-hook 'slime-repl-mode-hook 'set-up-slime-ac) 76 | (eval-after-load "auto-complete" 77 | '(add-to-list 'ac-modes 'slime-repl-mode)) 78 | 79 | ;;; slime 80 | (add-hook 'slime-mode-hook 81 | (lambda () 82 | (unless (slime-connected-p) 83 | (save-excursion (slime))))) 84 | (setq slime-net-coding-system 'utf-8-unix) 85 | (eval-after-load 'slime 86 | `(define-key slime-prefix-map (kbd "M-h") 'slime-documentation-lookup)) 87 | 88 | ;;; Tabbar 89 | (setq tabbar-ruler-use-mode-icons nil) 90 | (setq tabbar-ruler-popup-scrollbar t) 91 | (require 'tabbar-ruler) 92 | 93 | ;;; Undo and Redo tree 94 | (require 'undo-tree) 95 | (global-undo-tree-mode 1) 96 | 97 | ;;; Arrange buffers and navigate files and code 98 | (require 'ecb) 99 | (set-face-attribute 'ecb-default-highlight-face nil 100 | :background "#464646") 101 | (set-face-attribute 'ecb-tag-header-face nil 102 | :background "#008b8b") 103 | 104 | ;;; Paredit in lisp source 105 | (require 'paredit) 106 | (add-hook 'lisp-mode-hook #'enable-paredit-mode) 107 | 108 | ;;; Snippets 109 | (require 'yasnippet) 110 | (yas-global-mode 1) 111 | 112 | ;;;; For convinience 113 | ;;; Aliases 114 | (defalias 'rr 'query-replace-regexp) 115 | 116 | ;;; Global Keybindings 117 | (global-set-key (kbd "") 'recentf-open-files) 118 | (global-set-key (kbd "") 'paredit-mode) 119 | (global-set-key (kbd "C-c s") 'slime-selector) 120 | (defun up-slightly () 121 | (interactive) 122 | (scroll-up 1)) 123 | (defun down-slightly () 124 | (interactive) 125 | (scroll-down 1)) 126 | (global-set-key [mouse-4] 'down-slightly) 127 | (global-set-key [mouse-5] 'up-slightly) 128 | (global-set-key (kbd "C-x k") 'kill-this-buffer) 129 | (global-set-key (kbd "") 'tabbar-forward-tab) 130 | (global-set-key (kbd "") 'tabbar-backward-tab) 131 | (global-set-key (kbd "") 'delete-indentation) 132 | (global-set-key (kbd "C-c m") 'mark-sexp) 133 | (defun kill-backward-sexp () 134 | (interactive) 135 | (backward-sexp) 136 | (kill-sexp)) 137 | (global-set-key (kbd "")'kill-backward-sexp) 138 | ;; TODO: kill/mark/copy/delete/move backward/forward sexp/char/word/line/inner-sexp 139 | 140 | ;;; Local Keybindings 141 | ;(define-key paredit-mode-map (kbd "C-]") 'paredit-close-round-and-newline) 142 | 143 | 144 | ;;;; Custiomize by emacs 145 | (custom-set-variables 146 | ;; custom-set-variables was added by Custom. 147 | ;; If you edit it by hand, you could mess it up, so be careful. 148 | ;; Your init file should contain only one such instance. 149 | ;; If there is more than one, they won't work right. 150 | '(ecb-auto-update-methods-after-save t) 151 | '(ecb-compilation-buffer-names 152 | (quote 153 | (("*Calculator*") 154 | ("*Apropos*") 155 | ("*Occur*") 156 | ("*shell*") 157 | ("\\*[cC]ompilation.*\\*" . t) 158 | ("\\*i?grep.*\\*" . t) 159 | ("*Help*") 160 | ("*eww*") 161 | ("\\.*w3\\.*") 162 | ("*Completions*") 163 | ("*Backtrace*") 164 | ("*Compile-Log*") 165 | ("*Messages*") 166 | ("*slime-events*") 167 | ("*inferior-lisp*")))) 168 | '(ecb-compilation-major-modes (quote (compilation-mode slime-repl-mode))) 169 | '(ecb-compile-window-height 0.3) 170 | '(ecb-compile-window-width (quote edit-window)) 171 | '(ecb-display-default-dir-after-start t) 172 | '(ecb-enlarged-compilation-window-max-height 1.0) 173 | '(ecb-layout-always-operate-in-edit-window (quote (delete-other-windows switch-to-buffer))) 174 | '(ecb-layout-window-sizes 175 | (quote 176 | (("left8" 177 | (ecb-directories-buffer-name 0.1927710843373494 . 0.41379310344827586) 178 | (ecb-sources-buffer-name 0.1927710843373494 . 0.3448275862068966) 179 | (ecb-methods-buffer-name 0.1927710843373494 . 0.4482758620689655) 180 | (ecb-history-buffer-name 0.1927710843373494 . 0.2413793103448276))))) 181 | '(ecb-options-version "2.50") 182 | '(ecb-other-window-behavior (quote edit-and-compile)) 183 | '(ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2)) 184 | '(ecb-select-edit-window-on-redraw t) 185 | '(ecb-source-path (quote ("~"))) 186 | '(ecb-tip-of-the-day nil) 187 | '(ecb-windows-width 0.2) 188 | '(imenu-auto-rescan t) 189 | '(package-selected-packages 190 | (quote 191 | (flymd markdown-mode paredit undo-tree tabbar-ruler page-break-lines material-theme ac-slime))) 192 | '(tabbar-ruler-swap-faces t)) 193 | (custom-set-faces 194 | ;; custom-set-faces was added by Custom. 195 | ;; If you edit it by hand, you could mess it up, so be careful. 196 | ;; Your init file should contain only one such instance. 197 | ;; If there is more than one, they won't work right. 198 | '(secondary-selection ((t (:background "steel blue")))) 199 | '(slime-repl-inputed-output-face ((t (:foreground "chocolate")))) 200 | '(tabbar-selected-modified ((t (:inherit tabbar-default :foreground "deep sky blue" :box nil :height 98 :width normal :family "Sans Serif"))))) 201 | 202 | 203 | ;;;; Start up ecb and slime 204 | (ecb-activate) 205 | (slime) 206 | 207 | (put 'downcase-region 'disabled nil) 208 | (put 'upcase-region 'disabled nil) 209 | --------------------------------------------------------------------------------