* 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