|
| 1 | +(prelude-require-packages '(neotree)) |
| 2 | + |
| 3 | +(setq prelude-guru nil) |
| 4 | + |
| 5 | + |
| 6 | +(prelude-require-package 'rainbow-delimiters) |
| 7 | + |
| 8 | +(add-hook 'clojure-mode-hook #'rainbow-delimiters-mode) |
| 9 | +(add-hook 'cider-repl-mode-hook #'rainbow-delimiters-mode) |
| 10 | +(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode) |
| 11 | + |
| 12 | +(prelude-require-package 'paredit) |
| 13 | +(add-hook 'emacs-lisp-mode-hook #'paredit-mode) |
| 14 | +(add-hook 'clojure-mode-hook #'paredit-mode) |
| 15 | +(add-hook 'helm-swoop-mode-hook #'paredit-mode) |
| 16 | +(add-hook 'cider-repl-mode-hook #'paredit-mode) |
| 17 | + |
| 18 | +;;;;;;;;;;;;;;; HELM ;;;;;;;;;;;;;;;;;;; |
| 19 | + |
| 20 | +(prelude-require-packages '(helm helm-swoop helm-projectile)) |
| 21 | +;; http://tuhdo.github.io/helm-intro.html |
| 22 | +;; https://github.com/ShingoFukuyama/helm-swoop |
| 23 | + |
| 24 | +(with-eval-after-load 'helm |
| 25 | + (helm-mode 1) |
| 26 | + (define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebind tab to run persistent action |
| 27 | + (define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB work in terminal |
| 28 | + (define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z |
| 29 | + ) |
| 30 | + |
| 31 | +(global-set-key (kbd "M-x") 'helm-M-x) |
| 32 | +(global-set-key (kbd "s-x") 'helm-M-x) |
| 33 | +(global-set-key (kbd "C-x b") 'helm-mini) |
| 34 | +(global-set-key (kbd "C-x C-b") 'helm-mini) |
| 35 | +(global-set-key (kbd "C-x C-f") 'helm-find-files) |
| 36 | +(global-set-key (kbd "C-x f") 'helm-projectile) |
| 37 | +(global-set-key (kbd "C-x C-r") 'helm-resume) |
| 38 | + |
| 39 | +(setq helm-M-x-fuzzy-match t) |
| 40 | +(setq helm-split-window-in-side-p nil) |
| 41 | +(setq helm-split-window-default-side 'other) |
| 42 | + |
| 43 | +(global-set-key (kbd "M-i") 'helm-swoop) |
| 44 | + |
| 45 | +(with-eval-after-load 'helm-swoop |
| 46 | + (define-key helm-swoop-map (kbd "M-i") 'helm-multi-swoop-all-from-helm-swoop)); From helm-swoop to helm-multi-swoop-all |
| 47 | + |
| 48 | +(with-eval-after-load 'isearch |
| 49 | + (define-key isearch-mode-map (kbd "M-i") 'helm-swoop-from-isearch)); When doing isearch, hand the word over to helm-swoop |
| 50 | + |
| 51 | +(setq helm-swoop-split-direction 'split-window-horizontally) |
| 52 | + |
| 53 | + |
| 54 | +(setq projectile-indexing-method 'alien) |
| 55 | +(setq projectile-enable-caching t) |
| 56 | + |
| 57 | +(setq helm-follow-mode-persistent t) |
| 58 | +(setq helm-ag-use-temp-buffer t) |
| 59 | + |
| 60 | +(prelude-require-packages '(ag helm-ag)) |
| 61 | + |
| 62 | +(global-set-key (kbd "M-I") 'helm-projectile-ag) |
| 63 | + |
| 64 | +;;;;;;;;;;;;;;;;;; CIDER ;;;;;;;;;;;;;;; |
| 65 | + |
| 66 | +(prelude-require-packages '(cider eldoc)) |
| 67 | + |
| 68 | +(setq cider-prompt-for-symbol nil) ; try to jump to symbol under cursor without minibuffer prompt |
| 69 | +(setq cider-repl-use-pretty-printing t) ; use pretty print in repl |
| 70 | +(setq cider-prompt-save-file-on-load 'always-save) ; when reloading file just save without prompting |
| 71 | +(setq cider-font-lock-dynamically '(macro core function var)) ; colorize usages of functions and variables from any namespace |
| 72 | +(setq cider-repl-display-help-banner nil) |
| 73 | +;;;;;;;;;;;;;;;; |
| 74 | + |
| 75 | +(prelude-require-packages '(company flx company-flx)) |
| 76 | + (global-company-mode) |
| 77 | + (add-hook 'cider-repl-mode-hook #'company-mode) |
| 78 | + (add-hook 'cider-mode-hook #'company-mode) |
| 79 | + |
| 80 | +(with-eval-after-load 'company |
| 81 | + (company-flx-mode t) |
| 82 | + (setq company-flx-limit 15)) |
| 83 | + |
| 84 | + (setq company-idle-delay nil) ; never start completions automatically |
| 85 | + (global-set-key (kbd "TAB") #'company-indent-or-complete-common) |
| 86 | + |
| 87 | +;;;;;;;;;; BUFFER-MOVE ;;;;;;;;;;;;;;;;; |
| 88 | + |
| 89 | +(prelude-require-package 'buffer-move) |
| 90 | +(global-set-key (kbd "<C-s-up>") #'buf-move-up) |
| 91 | +(global-set-key (kbd "<C-s-down>") #'buf-move-down) |
| 92 | +(global-set-key (kbd "<C-s-left>") #'buf-move-left) |
| 93 | +(global-set-key (kbd "<C-s-right>") #'buf-move-right) |
| 94 | + |
| 95 | +;;;;;;;;;;; GLOBALS ;;;;;;;;;;;;;;;;;;; |
| 96 | + |
| 97 | +(define-key global-map [home] 'beginning-of-line) |
| 98 | +(define-key global-map [end] 'end-of-line) |
| 99 | + |
| 100 | +(global-set-key (kbd "<M-c M-p>") #'cider-eval-print-last-sexp) |
| 101 | +(global-set-key (kbd "M-k") #'paredit-copy-as-kill) |
| 102 | + |
| 103 | +(set-default 'truncate-lines t) |
| 104 | +(setq truncate-lines t) |
| 105 | + |
| 106 | +(setq scroll-margin 10) |
| 107 | + |
| 108 | +(defun gcm-scroll-down () (interactive) (scroll-up 1)) |
| 109 | +(defun gcm-scroll-up () (interactive) (scroll-down 1)) |
| 110 | + |
| 111 | +(global-set-key (kbd "<s-up>") 'gcm-scroll-up) |
| 112 | +(global-set-key (kbd "<s-down>") 'gcm-scroll-down) |
| 113 | + |
| 114 | +;; do not show scrollbars in windowed version |
| 115 | +(if (display-graphic-p) |
| 116 | + (scroll-bar-mode -1)) |
| 117 | + |
| 118 | +(setq vc-follow-symlinks t) |
| 119 | + |
| 120 | +(load-theme 'zenburn t) |
| 121 | + |
| 122 | +(if (not (display-graphic-p)) |
| 123 | + (progn |
| 124 | + ;; disable current line highlight |
| 125 | + (global-hl-line-mode 0) |
| 126 | + |
| 127 | + ;; i like my terminal transparent, but background other than black makes it difficult to read |
| 128 | + (add-to-list 'default-frame-alist '(background-color . "black")) |
| 129 | + |
| 130 | + ;; i have no idea why i should change custom theme, but otherwise terminal's background flashes on opening from zenburn's grey to default black |
| 131 | + (with-eval-after-load "zenburn-theme" |
| 132 | + (zenburn-with-color-variables |
| 133 | + (custom-theme-set-faces 'zenburn `(default ((t (:foreground, zenburn-fg :background, "black"))))))))) |
| 134 | + |
| 135 | +(when (window-system) |
| 136 | + (set-default-font "Fira Code")) |
| 137 | + |
| 138 | +(let ((alist '( |
| 139 | +;; (33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") |
| 140 | +;; (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") |
| 141 | +;; (36 . ".\\(?:>\\)") |
| 142 | +;; (37 . ".\\(?:\\(?:%%\\)\\|%\\)") |
| 143 | +;; (38 . ".\\(?:\\(?:&&\\)\\|&\\)") |
| 144 | +;; (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") |
| 145 | +;; (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") |
| 146 | +;; (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") |
| 147 | +;; (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") |
| 148 | +;; (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") |
| 149 | +;; (48 . ".\\(?:x[a-zA-Z]\\)") |
| 150 | +;; (58 . ".\\(?:::\\|[:=]\\)") |
| 151 | +;; (59 . ".\\(?:;;\\|;\\)") |
| 152 | + |
| 153 | +;; (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") |
| 154 | +;; (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") |
| 155 | +;; (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") |
| 156 | +;; (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") |
| 157 | +;; (91 . ".\\(?:]\\)") |
| 158 | + |
| 159 | +;; (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") |
| 160 | +;; (94 . ".\\(?:=\\)") |
| 161 | +;; (119 . ".\\(?:ww\\)") |
| 162 | +;; (123 . ".\\(?:-\\)") |
| 163 | +;; (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") |
| 164 | +;; (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") |
| 165 | + ) |
| 166 | + )) |
| 167 | + (dolist (char-regexp alist) |
| 168 | + (set-char-table-range composition-function-table (car char-regexp) |
| 169 | + `([,(cdr char-regexp) 0 font-shape-gstring])))) |
| 170 | +(setq-default cursor-type 'bar) |
| 171 | + |
| 172 | + |
| 173 | + |
| 174 | +(global-set-key (kbd "C--") 'undo) |
| 175 | +(global-set-key (kbd "M-c") 'paredit-copy-as-kill) |
| 176 | +(global-set-key "\M-p" 'cider-eval-print-last-sexp) |
| 177 | +(global-set-key "\M-n" 'gcm-scroll-down) |
| 178 | + |
| 179 | + |
| 180 | +(defun pretty-lambda () |
| 181 | + "make some word or string show as pretty Unicode symbols" |
| 182 | + (setq prettify-symbols-alist |
| 183 | + '( |
| 184 | + ("fn" . 955) ; λ |
| 185 | + |
| 186 | + ))) |
| 187 | + |
| 188 | +(add-hook 'clojure-mode-hook 'pretty-lambda) |
| 189 | +(global-prettify-symbols-mode 1) |
0 commit comments