#+TITLE: Emacs Config #+AUTHOR: Joseph Ferano #+PROPERTY: header-args:emacs-lisp :tangle ./init.el #+TOC: true ** Package Management *** Straight.el For now, use [[https://github.com/radian-software/straight.el][straight.el]] until [[https://github.com/progfolio/elpaca ][elpaca]] is ready for production use. First, disable package.el during early init #+BEGIN_SRC emacs-lisp :tangle ./early-init.el (setq package-enable-at-startup nil) #+END_SRC Then bootstrap #+BEGIN_SRC emacs-lisp (declare-function elpaca-generate-autoloads "elpaca") (defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory)) (when-let ((elpaca-repo (expand-file-name "repos/elpaca/" elpaca-directory)) (elpaca-build (expand-file-name "builds/elpaca/" elpaca-directory)) (elpaca-target (if (file-exists-p elpaca-build) elpaca-build elpaca-repo)) (elpaca-url "https://www.github.com/progfolio/elpaca.git") ((add-to-list 'load-path elpaca-target)) ((not (file-exists-p elpaca-repo))) (buffer (get-buffer-create "*elpaca-bootstrap*"))) (condition-case-unless-debug err (progn (unless (zerop (call-process "git" nil buffer t "clone" elpaca-url elpaca-repo)) (error "%s" (list (with-current-buffer buffer (buffer-string))))) (byte-recompile-directory elpaca-repo 0 'force) (require 'elpaca) (elpaca-generate-autoloads "elpaca" elpaca-repo) (kill-buffer buffer)) ((error) (delete-directory elpaca-directory 'recursive) (with-current-buffer buffer (goto-char (point-max)) (insert (format "\n%S" err)) (display-buffer buffer))))) (require 'elpaca-autoloads) (add-hook 'after-init-hook #'elpaca-process-queues) (elpaca (elpaca :host github :repo "progfolio/elpaca")) #+END_SRC *** General Settings **** Misc Stuff #+begin_SRC emacs-lisp (setq vc-follow-symlinks t) ; Visit real file when editing a symlink without prompting. (global-auto-revert-mode t) ; Revert buffer's file when the file changes on disk (fset 'yes-or-no-p 'y-or-n-p) (prefer-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (setq gc-cons-threshold 50000000) (setq max-specpdl-size 1200) (setq max-lisp-eval-depth 800) (setq large-file-warning-threshold 100000000) (setq backup-by-copying t delete-old-versions t kept-new-versions 6 kept-old-versions 2 version-control t backup-directory-alist '((".*" . (expand-file-name "backups" user-emacs-directory)))) #+END_SRC **** Visuals #+begin_src emacs-lisp (setq inhibit-startup-screen t) (add-hook 'text-mode-hook (lambda () (setq fill-column 100) (turn-on-auto-fill))) (setq-default display-line-numbers 'relative) (make-variable-buffer-local 'global-hl-line-mode) (set-window-margins nil 0) (setq-default right-fringe-width 10) (setq scroll-margin 0 scroll-conservatively 100000 scroll-preserve-screen-position 1) (global-hl-line-mode +1) (column-number-mode +1) (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) (tooltip-mode -1) (setq custom-safe-themes t) ;; (load-theme 'doom-vibrant t) ;; (load-theme 'doom-flatwhite t) #+end_src **** Text #+begin_src emacs-lisp (set-face-attribute 'default nil :font "Fira Code Nerd Font" :height 105) (setq-default c-basic-offset 4) ;; This is annoying (setq-default indent-tabs-mode nil) (setq-default tab-width 4) (setq indent-line-function 'insert-tab) (set-default 'truncate-lines nil) (set-default 'truncate-partial-width-windows nil) (setq-default line-spacing 5) (add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12))) (add-hook 'before-save-hook 'whitespace-cleanup) #+end_src *** Org Mode #+begin_src emacs-lisp (require 'org) (require 'org-tempo) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) (setq org-agenda-files '("~/todo.org")) (add-hook 'org-mode-hook '(defun joe/org-mode-setup () ((org-bullets-mode) (org-indent-mode)))) (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) ;; (elpaca-use-package 'org-bullets) #+end_src *** VEMCO (Vertico Embark Marginalia Consult Orderless) #+begin_src emacs-lisp (elpaca-use-package 'vertico) (vertico-mode) (vertico-multiform-mode) (define-key vertico-map "\M-G" #'vertico-multiform-mode) (elpaca-use-package 'embark) (elpaca-use-package 'embark-consult) (define-key vertico-map "\M-e" #'embark-act) (elpaca-use-package 'marginalia) (marginalia-mode t) (setq marginalia-annotators '(marginalia-annotators-heavy marginalia-annotators-light nil)) (elpaca-use-package 'orderless) (setq completion-styles '(orderless basic) completion-category-overrides '((file (styles basic partial-completion)))) (elpaca-use-package 'savehist) (savehist-mode) #+end_src * COMMENT Local variables ;; Local Variables: ;; eval: (add-hook 'after-save-hook '(lambda () (org-babel-tangle)) nil t) ;; End: