From 1a29e22362bc64dc1e9e0cb23cd81e1edd4ecc76 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Sun, 25 Oct 2020 12:11:41 -0500 Subject: Convert to Literate Config --- init.el | 262 +++------------------------------------------------------------- 1 file changed, 11 insertions(+), 251 deletions(-) (limited to 'init.el') diff --git a/init.el b/init.el index ab596b6..52fc593 100644 --- a/init.el +++ b/init.el @@ -1,251 +1,11 @@ -;;; init.el -*- lexical-binding: t; coding: utf-8; -*- - -;;; Commentary: -;; BANKRUPT_SCORE: 1 -;; ^ the number of times I've declared Emacs bankruptcy. -;; Does this mean I'm part of the cool kids now? - -;;; Macros -(defmacro cuss (var val) - "Basically `use-package' `:custom' but without either." - `(progn - (funcall (or (get ',var 'custom-set) #'set-default) - ',var ,val))) - -;;; Files -;; keep `emacs-user-directory' tidy -(use-package no-littering) - -;; don't clutter `init.el' with customize crap -(cuss custom-file (no-littering-expand-etc-file-name "custom.el")) - -;; backups -(cuss backup-directory-alist - `((".*" . ,(no-littering-expand-var-file-name "backup/")))) - -;; recent files -(use-package recentf - :config - (add-to-list 'recentf-exclude no-littering-var-directory) - (add-to-list 'recentf-exclude no-littering-etc-directory) - :custom - (recentf-max-menu-items 100) - (recentf-max-saved-items 100) - :config - (recentf-mode +1)) - -;; encoding -(set-charset-priority 'unicode) -(set-language-environment "UTF-8") -(set-default-coding-systems 'utf-8) -(set-terminal-coding-system 'utf-8) -(set-keyboard-coding-system 'utf-8) -(set-selection-coding-system 'utf-8) -(prefer-coding-system 'utf-8) - -;;; Save/Restore -;; autosave, but like, better -(use-package super-save - :custom - (auto-save-default nil) - (super-save-auto-save-when-idle t) - (super-save-exclude '(".gpg")) - :config - (super-save-mode +1)) - -;; save places in files -(use-package saveplace - :custom - (save-place-file (no-littering-expand-var-file-name "places")) - :config - (save-place-mode +1)) - -;; save history of variables -(use-package savehist - :custom - (savehist-additional-variables - '(kill-ring - search-ring - regexp-search-ring)) - :config - (savehist-mode +1)) - -;;; Buffers -;; uniquely name buffers -(cuss uniquify-buffer-name-style 'forward) - -;;; UI -;; frame defaults -(cuss default-frame-alist '((tool-bar-lines . 0) - (menu-bar-lines . 0) - (vertical-scroll-bars . nil) - (horizontal-scroll-bars . nil) - (right-divider-width . 2) - (bottom-divider-width . 2) - (left-fringe-width . 2) - (right-fringe-width . 2))) - -;; also disable these with modes, so I can re-enable them more easily -(menu-bar-mode -1) -(tool-bar-mode -1) -(scroll-bar-mode -1) - -;; cursor -(cuss cursor-type 'bar) -(cuss cursor-in-non-selected-windows 'hollow) -(blink-cursor-mode 0) - -;; mouse -(cuss mouse-yank-at-point t) ; yank at the point instead of where clicked - -;; startup screen -(cuss inhibit-startup-buffer-menu t) -(cuss inhibit-startup-screen t) -(cuss initial-buffer-choice t) ; start in *scratch* -(cuss initial-scratch-message nil) - -;; interactivity -(fset 'yes-or-no-p #'y-or-n-p) - -(cuss use-dialog-box nil) -(cuss disabled-command-function nil) - -;; themes -(use-package modus-operandi-theme - :config - (load-theme 'modus-operandi t)) - -(use-package modus-vivendi-theme) - -;; fonts -(set-face-attribute 'default nil - :family "DejaVu Sans Mono" - :height 110) - -(set-face-attribute 'fixed-pitch nil - :family "DejaVu Sans Mono" - :height 110) - -(set-face-attribute 'variable-pitch nil - :family "DejaVu Serif" - :height 120) - -;; unicode -(use-package unicode-fonts - :config - (unicode-fonts-setup)) - -;;; Selecting / Minibuffer -;; ignore case -(cuss completion-ignore-case t) -(cuss read-buffer-completion-ignore-case t) -(cuss read-file-name-completion-ignore-case t) - -(use-package selectrum - :config - (selectrum-mode +1)) - -(use-package prescient - :config - (prescient-persist-mode +1)) - -(use-package selectrum-prescient - :after (selectrum prescient) - :config - (selectrum-prescient-mode +1)) - -;; searching -(use-package ctrlf - :custom - (ctrlf-show-match-count-at-eol nil) - :config - (ctrlf-mode +1)) - -;;; Undo -(use-package undo-fu - :bind - ("C-/" . undo-fu-only-undo) - ("C-?" . undo-fu-only-redo)) - -(use-package undo-fu-session - :after no-littering - :custom - (undo-fu-session-incompatible-files - '("/COMMIT_EDITMSG\\'" - "/git-rebase-todo\\'")) - (undo-fu-session-directory - (no-littering-expand-var-file-name "undos/")) - :config - (global-undo-fu-session-mode +1)) - -;;; Text editing -;; visual line mode -(global-visual-line-mode +1) - -(use-package whole-line-or-region - :config - (whole-line-or-region-global-mode +1)) - -(use-package expand-region - :bind - ("C-=" . er/expand-region)) - -;; delete the selection when typing -(delete-selection-mode +1) - -;; clipboard -(cuss save-interprogram-paste-before-kill t) ; save existing clipboard text to kill ring before replacing it - -;; don't insert tabs. -(cuss indent-tabs-mode nil) - -;;; Programming -;; Git -(use-package magit - :bind - ("C-x g" . magit-status) - :config - (add-to-list 'magit-no-confirm 'stage-all-changes)) - -(when (executable-find "cmake") - (use-package libgit) - (use-package magit-libgit)) - -(use-package forge - :after magit - :custom - (forge-owned-accounts '(("duckwork")))) - -;; Code formatting -(use-package format-all - :hook - (prog-mode . format-all-mode)) - -;; display -(add-hook 'prog-mode-hook #'prettify-symbols-mode) - -;; parentheses -(cuss show-paren-style 'mixed) -(show-paren-mode +1) - -(use-package smartparens - :init - (defun acdw/setup-smartparens () - (require 'smartparens-config) - (smartparens-mode +1)) - :hook - (prog-mode . acdw/setup-smartparens)) - -(use-package rainbow-delimiters - :hook - (prog-mode . rainbow-delimiters-mode)) - -;; line numbers -(add-hook 'prog-mode-hook - (if (and (fboundp 'display-line-numbers-mode) - (display-graphic-p)) - #'display-line-numbers-mode - #'linum-mode)) - -;;; Writing -(cuss sentence-end-double-space t) + ;; This file replaces itself with the actual configuration when first run. To keep only this version in git, run this command: + ;; git update-index --assume-unchanged init.el + ;; + ;; If it needs to be changed, start tracking it again thusly: + ;; git update-index --no-assume-unchanged init.el + + (require 'org) + (find-file (concat user-emacs-directory "init.org")) + (org-babel-tangle) + (load-file (concat user-emacs-directory "init.el")) + (byte-compile-file (concat user-emacs-directory "init.el")) -- cgit 1.4.1-21-gabe81