emacs.d/config.org (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
* Emacs config
** Mepal
#+begin_src elisp
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
#+end_src
*** selected packages
The packages what I need/use in emacs
#+begin_src elisp
(setq package-list
'(paredit
magit
cider
clojure-mode
mood-line
one-themes
emojify
async
ob-async
ob-clojurescript
org-babel-eval-in-repl
eval-in-repl))
(package-initialize)
;; fetch the list of packages available
(unless package-archive-contents
(package-refresh-contents))
;; install missing packages
(dolist (package package-list)
(unless (package-installed-p package)
(package-install package)))
#+end_src
** Global settings
*** Disable backups, atuosave, loads
#+begin_src elisp
(setq make-backup-files nil) ;; stop creating backup~ files
(setq auto-save-default nil) ;; stop creating #autosave# files
(setq create-lockfiles nil) ;; no lockfiles
#+end_src
*** good defaults
#+begin_src elisp
(set-frame-font "JetBrains Mono 14" nil t)
(load-theme 'one-light t)
(global-auto-revert-mode t)
(tool-bar-mode 0)
(scroll-bar-mode 0)
(cua-mode 1)
(setq-default
ad-redefinition-action 'accept ; Silence warnings for redefinition
auto-window-vscroll nil ; Lighten vertical scroll
confirm-kill-emacs 'yes-or-no-p ; Confirm before exiting Emacs
display-time-default-load-average nil ; Don't display load average
display-time-mode 0 ; Display time in frames
display-time-format "%H:%M" ; Format the time string
fill-column 80 ; Set width for automatic line breaks
scroll-bar-mode nil
display-line-numbers-type nil
help-window-select t ; Focus new help windows when opened
indent-tabs-mode nil ; Stop using tabs to indent
inhibit-startup-screen t ; Disable start-up screen
initial-scratch-message "" ; Empty the initial *scratch* buffer
left-margin-width 1 right-margin-width 1 ; Add left and right margins
mouse-yank-at-point t ; Yank at point rather than pointer
ns-use-srgb-colorspace nil ; Don't use sRGB colors
select-enable-clipboard t ; Merge system's and Emacs' clipboard
sentence-end-double-space nil ; End a sentence after a dot and a space
show-trailing-whitespace nil ; Display trailing whitespaces
split-height-threshold nil ; Disable vertical window splitting
split-width-threshold 1 ; Disable horizontal window splitting
tab-width 4 ; Set width for tabs
uniquify-buffer-name-style 'forward ; Uniquify buffer names
window-combination-resize t ; Resize windows proportionally
x-stretch-cursor t ; Stretch cursor to the glyph width
scroll-step 1
scroll-conservatively 10000)
(delete-selection-mode 1) ; Replace region when inserting text
(display-time-mode 0) ; Enable time in the mode-line
(fset 'yes-or-no-p 'y-or-n-p) ; Replace yes/no prompts with y/n
(menu-bar-mode 0) ; Disable the menu bar
(put 'downcase-region 'disabled nil) ; Enable downcase-region
(put 'upcase-region 'disabled nil) ; Enable upcase-region
(set-default-coding-systems 'utf-8) ; Default to utf-8 encoding
(add-hook 'focus-out-hook #'garbage-collect) ; make Garbage faster
#+end_src
** Other setups
*** org-mode
#+begin_src elisp
(require 'org)
(add-to-list 'org-modules 'org-tempo)
(setq org-startup-folded nil
org-hide-emphasis-markers nil
org-edit-src-content-indentation 0
org-src-tab-acts-natively t
org-src-fontify-natively t
org-confirm-babel-evaluate nil
org-support-shift-select 'always)
(remove-hook 'org-cycle-hook
'org-optimize-window-after-visibility-change)
(eval-after-load 'org
(org-babel-do-load-languages
'org-babel-load-languages
'((clojure . t)
(clojurescript . t)
(emacs-lisp . t)
(shell . t))))
#+end_src
*** Clojure
REPL setup cuz editing clj is feeling best with it.
#+begin_src elisp
(setq nrepl-hide-special-buffers t
cider-repl-clear-help-banner t
cider-font-lock-dynamically nil
cider-popup-stacktraces nil
cider-repl-popup-stacktraces t
cider-repl-use-pretty-printing t
cider-repl-pop-to-buffer-on-connect t
cider-repl-display-help-banner nil)
;; Allow cider-repl to be cleared with shortcut
(add-hook 'cider-repl-mode-hook
'(lambda () (define-key cider-repl-mode-map (kbd "C-c M-b")
'cider-repl-clear-buffer)))
(add-hook 'clojure-mode-hook #'cider-mode)
(add-hook 'clojurescript-mode #'enable-paredit-mode)
(add-hook 'cider-mode-hook (lambda () (show-paren-mode 1)))
(add-hook 'cider-mode-hook #'eldoc-mode)
(add-hook 'cider-mode-hook #'enable-paredit-mode)
(add-hook 'cider-repl-mode-hook #'enable-paredit-mode)
(add-hook 'cider-mode-hook #'imenu-add-menubar-index)
#+end_src
*** Paredit
Enable ~paredit~ in ~org-mode~ code block
#+begin_src elisp
(defun my-paredit-in-code-block ()
(interactive)
(when (derived-mode-p 'org-mode)
(unless (window-minibuffer-p)
(if (org-babel-when-in-src-block)
(paredit-mode 1)
(paredit-mode 0)))))
(add-hook 'post-command-hook #'my-paredit-in-code-block)
(define-key org-mode-map (kbd "M-s") 'org-babel-demarcate-block)
(define-key org-mode-map (kbd "M-P") 'paredit-mode)
(remove-hook 'org-cycle-hook
'org-optimize-window-after-visibility-change)
#+end_src
*** Status line
#+begin_src elisp
(mood-line-mode)
#+end_src
** Funcs
*** Reload config
#+begin_src elisp
(defun reload-conf ()
(interactive)
(load-file (expand-file-name "init.el" user-emacs-directory)))
#+end_src
|