all repos

dotfiles @ 6f27c7f6ab83858d1158dffea7222cd6cb7a1d28

my dotfiles

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