diff --git a/.emacs.bankruptcy/init.org b/.emacs.bankruptcy/init.org index 4fbcceb..ef0c28d 100644 --- a/.emacs.bankruptcy/init.org +++ b/.emacs.bankruptcy/init.org @@ -3,44 +3,160 @@ #+PROPERTY: header-args:emacs-lisp :tangle ./init.el #+TOC: true -* Package Management +** 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) + (setq package-enable-at-startup nil) #+END_SRC -** El Paca -[[https://github.com/progfolio/elpaca][Elpaca: An Elisp Package Manager]] - -Apparently the developer of straight.el is working on this, which is a cleaner implementation of the package. +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")) + (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: