5.1 KiB

Emacs Config

Package Management

Straight.el

For now, use straight.el until [[https://github.com/progfolio/elpaca ][elpaca]] is ready for production use.

First, disable package.el during early init

  (setq package-enable-at-startup nil)

Then bootstrap

  (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"))

General Settings

Misc Stuff
  (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))))
Visuals
  (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)
Text
  (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)

Org Mode

  (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)

VEMCO (Vertico Embark Marginalia Consult Orderless)

  (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)

COMMENT Local variables

;; Local Variables: ;; eval: (add-hook 'after-save-hook '(lambda () (org-babel-tangle)) nil t) ;; End: