;;; acdw-defaults.el --- measured defaults for Emacs -*- lexical-binding: t -*- ;; by C. Duckworth ;;; Commentary: ;; I find myself copy-pasting a lot of "boilerplate" type code when ;; bankrupting my Emacs config and starting afresh. Instead of doing ;; that, I'm putting it here, where it'll be easier to include in my ;; config. ;; Of course, some might say I could just ... stop bankrupting my ;; Emacs. But like, why would I want to? ;;; Code: (require 'seq) (defvar default-ring-max 256 "Default maximum for ring variables.") (unless (boundp 'use-short-answers) (fset 'yes-or-no-p 'y-or-n-p)) (setc async-shell-command-buffer 'new-buffer async-shell-command-display-buffer nil auto-hscroll-mode t auto-window-vscroll nil cursor-in-non-selected-windows 'hollow cursor-type 'bar echo-keystrokes 0.01 fast-but-imprecise-scrolling t fill-column 80 global-mark-ring-max default-ring-max hscroll-margin 1 hscroll-step 1 inhibit-startup-screen t initial-buffer-choice t kill-do-not-save-duplicates t kill-read-only-ok t kill-ring-max default-ring-max kmacro-ring-max default-ring-max mark-ring-max default-ring-max read-answer-short t read-process-output-max (* 10 1024 1024) ring-bell-function #'ignore save-interprogram-paste-before-kill t scroll-conservatively 25 scroll-margin 0 scroll-preserve-screen-position 1 scroll-step 1 sentence-end-double-space t set-mark-command-repeat-pop t tab-width 8 undo-limit (* 10 1024 1024) use-dialog-box nil use-file-dialog nil use-short-answers t window-resize-pixelwise t yank-pop-change-selection t) ;;; Encodings ;; Allegedly, this is the only one you need... (set-language-environment "UTF-8") ;; But I still set all of these, for fun. (setq-default buffer-file-coding-system 'utf-8-unix coding-system-for-read 'utf-8-unix coding-system-for-write 'utf-8-unix default-process-coding-system '(utf-8-unix . utf-8-unix) locale-coding-system 'utf-8-unix x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING)) (set-charset-priority 'unicode) (prefer-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (set-terminal-coding-system 'utf-8-unix) (set-keyboard-coding-system 'utf-8-unix) (pcase system-type ((or 'ms-dos 'windows-nt) (set-clipboard-coding-system 'utf-16-le) (set-selection-coding-system 'utf-16-le)) (_ (set-selection-coding-system 'utf-8) (set-clipboard-coding-system 'utf-8))) ;;; Modes (dolist (enable-mode '(;; Enable these modes on startup delete-selection-mode global-so-long-mode )) (funcall enable-mode +1)) (dolist (disable-mode '(;; Disable these modes on startup horizontal-scroll-bar-mode menu-bar-mode scroll-bar-mode tool-bar-mode tooltip-mode )) (funcall disable-mode -1)) (deftheme use-package) (enable-theme 'use-package) ;;; Internal packages (when (require 'abbrev nil t) (custom-theme-set-variables 'use-package '(abbrev-file-name (sync/ "abbrev.el")) '(save-abbrevs 'silently))) (when (require 'autorevert nil t) (custom-theme-set-variables 'use-package '(auto-revert-verbose nil) '(global-auto-revert-non-file-buffers t)) (global-auto-revert-mode +1)) (when (require 'comp nil t) (custom-theme-set-variables 'use-package '(native-comp-async-report-warnings-errors 'silent) '(native-comp-deferred-compilation t))) (when (require 'custom nil t) (custom-theme-set-variables 'use-package '(custom-file (etc/ "custom.el")))) (when (require 'ediff nil t) (custom-theme-set-variables 'use-package '(ediff-window-setup-function #'ediff-setup-windows-plain))) (when (require 'eldoc nil t) (custom-theme-set-variables 'use-package '(eldoc-echo-area-use-multiline-p nil) '(eldoc-idle-delay 0.1))) (when (require 'executable nil t) (custom-theme-set-variables 'use-package '(executable-prefix-env t))) (when (require 'files nil t) (custom-theme-set-variables 'use-package '(auto-save-default nil) '(auto-save-interval 1) '(auto-save-no-message t) '(auto-save-timeout 1) '(auto-save-visited-interval 1) '(backup-by-copying t) '(create-lockfiles nil) '(delete-old-versions t) '(find-file-visit-truename t) '(kept-new-versions 8) '(kept-old-versions 8) '(mode-require-final-newline t) '(version-control t) '(view-read-only t)) (dolist (h/f '((after-save-hook . executable-make-buffer-file-executable-if-script-p) (find-file-not-found-functions . create-missing-directories) (find-file-hook . +vc-off@remote))) (add-hook (car h/f) (cdr h/f))) (auto-save-visited-mode)) (when (require 'frame nil t) (custom-theme-set-variables 'use-package '(blink-cursor-blinks 1) '(blink-cursor-interval 0.25) '(blink-cursor-delay 0.25)) (blink-cursor-mode)) (when (require 'goto-addr nil t) (if (fboundp 'global-goto-address-mode) (global-goto-address-mode +1) (add-hook 'after-change-major-mode-hook 'goto-address-mode))) (when (require 'ibuffer nil t) (global-set-key (kbd "C-x C-b") #'ibuffer) (add-hook 'ibuffer-mode-hook #'hl-line-mode)) (when (require 'image nil t) (custom-theme-set-variables 'use-package '(image-use-external-converter (seq-some #'executable-find '("convert" "gm" "ffmpeg"))))) (when (require 'imenu nil t) (custom-theme-set-variables 'use-package '(imenu-auto-rescan t))) (when (require 'isearch nil t) (custom-theme-set-variables 'use-package '(regexp-search-ring-max default-ring-max) '(search-ring-max default-ring-max))) (when (require 'minibuffer nil t) (custom-theme-set-variables 'use-package '(completion-category-defaults nil) '(completion-category-overrides '((file (styles partial-completion)))) '(completion-ignore-case t) '(completion-styles '(substring partial-completion)) '(enable-recursive-minibuffers t) '(file-name-shadow-properties '(invisible t intangible t)) '(minibuffer-eldef-shorten-default t) '(minibuffer-prompt-properties '( read-only t cursor-intangible t face minibuffer-prompt)) '(read-buffer-completion-ignore-case t)) (file-name-shadow-mode) (minibuffer-electric-default-mode)) (when (require 'mouse nil t) (custom-theme-set-variables 'use-package '(mouse-drag-copy-region t) '(mouse-wheel-progressive-speed nil) '(mouse-yank-at-point t))) (when (require 'paren nil t) (custom-theme-set-variables 'use-package '(show-paren-delay 0.01) '(show-paren-style 'parenthesis) '(show-paren-when-point-in-periphery t) '(show-paren-when-point-inside-paren t)) (show-paren-mode) (electric-pair-mode)) (when (require 'recentf nil t) (custom-theme-set-variables 'use-package '(recentf-save-file (var/ "recentf.el")) '(recentf-max-menu-items default-ring-max) '(recentf-max-saved-items nil) '(recentf-auto-cleanup 'mode)) (add-to-list 'recentf-exclude etc/) (add-to-list 'recentf-exclude var/) (add-to-list 'recentf-exclude cache/) (add-to-list 'recentf-exclude "-autoloads.el\\'") (recentf-mode +1)) (when (require 'savehist nil t) (custom-theme-set-variables 'use-package '(history-length 1024) '(history-delete-duplicates t) '(savehist-file (var/ "savehist.el")) '(savehist-save-minibuffer-history t) '(savehist-autosave-interval 30) ;; Other variables --- don't truncate any of these. ;; `add-to-history' uses the values of these variables unless ;; they're nil, in which case it falls back to `history-length'. '(kill-ring-max default-ring-max) '(mark-ring-max default-ring-max) '(global-mark-ring-max default-ring-max) '(regexp-search-ring-max default-ring-max) '(search-ring-max default-ring-max) '(kmacro-ring-max default-ring-max) '(eww-history-limit default-ring-max)) (dolist (var '(global-mark-ring mark-ring kill-ring kmacro-ring regexp-search-ring search-ring)) (add-to-list 'savehist-additional-variables var)) (savehist-mode +1)) (when (require 'saveplace nil t) (custom-theme-set-variables 'use-package '(save-place-file (var/ "places.el")) '(save-place-forget-unreadable-files (eq system-type 'gnu/linux))) (save-place-mode 1)) (when (require 'uniquify nil t) (custom-theme-set-variables 'use-package '(uniquify-after-kill-buffer-p t) '(uniquify-buffer-name-style 'forward) '(uniquify-ignore-buffers-re "^\\*") '(uniquify-separator path-separator))) (when (require 'vc nil t) (custom-theme-set-variables 'use-package '(vc-follow-symlinks t) '(vc-make-backup-files t))) (when (require 'window nil t) (custom-theme-set-variables 'use-package '(recenter-positions '(top 2 middle bottom)))) ;;; New features (when (fboundp 'pixel-scroll-precision-mode) (pixel-scroll-precision-mode)) (provide 'acdw-defaults) ;;; acdw-defaults.el ends here