;;; early-init.el --- GNU Emacs Early Initialization File -*- lexical-binding: t; -*- ;; Copyright (c) 2023 Andrew Scott ;; Author: Andrew Scott ;; Keywords: convenience, tools ;; URL: https://codeberg.org/andyscott/dotfiles ;; This file is not part of GNU Emacs. ;;; Commentary: ;; My customizations for early Emacs initialization ;;; License: ;; MIT No Attribution ;; Permission is hereby granted, free of charge, to any person obtaining a copy of this ;; software and associated documentation files (the "Software"), to deal in the Software ;; without restriction, including without limitation the rights to use, copy, modify, ;; merge, publish, distribute, sublicense, and/or sell copies of the Software, and to ;; permit persons to whom the Software is furnished to do so. ;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, ;; INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A ;; PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ;; OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ;;; Code: ;; Relocate emacs-user-directory to XDG_DATA_HOME (setq user-emacs-directory (expand-file-name "emacs/" (or (getenv "XDG_DATA_HOME") "~/.local/share/"))) ;; Set cache directory (setq xdg_cache_home (expand-file-name "emacs/" (or (getenv "XDG_CACHE_HOME") "~/.cache/"))) (unless (file-directory-p xdg_cache_home) (make-directory xdg_cache_home)) ;; Move eln-cache to XDG_CACHE_HOME (when (fboundp 'startup-redirect-eln-cache) (if (< emacs-major-version 29) (push (expand-file-name "eln-cache/" xdg_cache_home) native-comp-eln-load-path) (startup-redirect-eln-cache (expand-file-name "eln-cache/" xdg_cache_home)))) ;; Disable package.el (setq package-enable-at-startup nil) ;; Ensure other default libs are loaded (setq inhibit-default-init nil) ;; Load newest byte code (setq load-prefer-newer t) ;; Enable async native compilation and suppress warnings (when (featurep 'native-compile) (setq native-comp-deferred-compilation t native-comp-async-report-warnings-errors nil)) ;; Raise garbage collection threshold (setq gc-cons-threshold 500000000 gc-cons-percentage 0.1) ;; Don't advertise instructions for frame exit (setq server-client-instructions nil) ;; Don't implicitly resize the frame (setq frame-inhibit-implied-resize t) ;; Disable startup screen (setq inhibit-startup-screen t) ;; Visible bell only (setq visible-bell t) ;; Fonts {{- if eq .chezmoi.hostname "helix" }} (push '(font . "Hack-24") default-frame-alist) (set-face-font 'default "Hack-24") (set-face-font 'fixed-pitch "Hack-24") (set-face-font 'variable-pitch "DejaVu Sans-24") {{- else }} (push '(font . "Hack-12") default-frame-alist) (set-face-font 'default "Hack-12") (set-face-font 'fixed-pitch "Hack-12") (set-face-font 'variable-pitch "DejaVu Sans-12") {{- end }} ;; Some GUI options (push '(menu-bar-lines . 0) default-frame-alist) (push '(tool-bar-lines . 0) default-frame-alist) (push '(vertical-scroll-bars) default-frame-alist) ;; Make lsp-mode use plists (setenv "LSP_USE_PLISTS" "true") (provide 'early-init) ;;; early-init.el ends here