diff --git a/emacs.d/config.org b/emacs.d/config.org new file mode 100644 index 0000000..6f22724 --- /dev/null +++ b/emacs.d/config.org @@ -0,0 +1,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 diff --git a/emacs.d/init.el b/emacs.d/init.el new file mode 100644 index 0000000..059e76a --- /dev/null +++ b/emacs.d/init.el @@ -0,0 +1,2 @@ +(org-babel-load-file + (expand-file-name "config.org" user-emacs-directory))