;;; early-init.el --- Emacs Solo (no external packages) Configuration --- Early Init -*- lexical-binding: t; -*- ;; ;; Author: Rahul Martim Juliato ;; URL: https://github.com/LionyxML/emacs-solo ;; Package-Requires: ((emacs "30.1")) ;; Keywords: config ;; SPDX-License-Identifier: GPL-3.0-or-later ;; ;;; Commentary: ;; Early init configuration for Emacs Solo ;; ;;; Code: (defcustom emacs-solo-avoid-flash-options '((enabled . t) (background . "#FFFFFF") ;; Catppuccin "#1e1e2e" or Crafters "#292D3E" (foreground . "#FFFFFF")) ;; (reset-background . "#292D3E") ;;(reset-foreground . "#EEFFFF")) ;; Catppuccin "#cdd6f4" or Crafters "#EEFFFF" "Options to avoid flash of light on Emacs startup. - `enabled`: Whether to apply the workaround. - `background`, `foreground`: Initial colors to use. - `reset-background`, `reset-foreground`: Optional explicit colors to restore after startup. NOTE: The default values here presented are set for the default `emacs-solo' custom theme. If you'd like to turn this ON with another theme, change the background/foreground variables. If reset values are nil, nothing is reset." :type '(alist :key-type symbol :value-type (choice (const nil) string)) :group 'emacs-solo) ;;; -------------------- PERFORMANCE & HACKS ;; HACK: inscrease startup speed ;; Delay garbage collection while Emacs is booting (setq gc-cons-threshold most-positive-fixnum gc-cons-percentage 0.6) ;; Schedule garbage collection sensible defaults for after booting (add-hook 'after-init-hook (lambda () (setq gc-cons-threshold (* 100 1024 1024) gc-cons-percentage 0.1))) ;; Single VC backend inscreases booting speed ;; (setq vc-handled-backends '(Git)) ;; Do not native compile if on battery power (setopt native-comp-async-on-battery-power nil) ; EMACS-31 ;; ;; HACK: avoid being flashbanged ;; (defun emacs-solo/avoid-initial-flash-of-light () ;; "Avoid flash of light when starting Emacs, based on `emacs-solo-avoid-flash-options`." ;; (when (alist-get 'enabled emacs-solo-avoid-flash-options) ;; (setq mode-line-format nil) ;; (set-face-attribute 'default nil ;; :background (alist-get 'background emacs-solo-avoid-flash-options) ;; :foreground (alisxt-get 'foreground emacs-solo-avoid-flash-options)))) ;; (defun emacs-solo/reset-default-colors () ;; "Reset any explicitly defined reset values in `emacs-solo-avoid-flash-options`." ;; (when (alist-get 'enabled emacs-solo-avoid-flash-options) ;; (let ((bg (alist-get 'reset-background emacs-solo-avoid-flash-options)) ;; (fg (alist-get 'reset-foreground emacs-solo-avoid-flash-options))) ;; (when bg ;; (set-face-attribute 'default nil :background bg)) ;; (when fg ;; (set-face-attribute 'default nil :foreground fg))))) ;; (emacs-solo/avoid-initial-flash-of-light) ;; (add-hook 'after-init-hook #'emacs-solo/reset-default-colors) ;; Always start Emacs and new frames maximized ;; (add-to-list 'default-frame-alist '(fullscreen . maximized)) ;; Better Window Management handling ;; (setq frame-resize-pixelwise t ;; frame-inhibit-implied-resize t ;; frame-title-format ;; '(:eval ;; (let ((project (project-current))) ;; (if project ;; (concat "Emacs - [p] " (project-name project)) ;; (concat "Emacs - " (buffer-name)))))) ;; (when (eq system-type 'darwin) ;; (setq ns-use-proxy-icon nil)) ;; (setq inhibit-compacting-font-caches t) ;; Disables unused UI Elements (if (fboundp 'menu-bar-mode) (menu-bar-mode -1)) (if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1)) (if (fboundp 'tool-bar-mode) (tool-bar-mode -1)) (if (fboundp 'tooltip-mode) (tooltip-mode -1)) (if (fboundp 'fringe-mode) (fringe-mode -1)) ;; Avoid raising the *Messages* buffer if anything is still without ;; lexical bindings (setq warning-minimum-level :error) (setq warning-suppress-types '((lexical-binding))) (provide 'early-init) ;;; early-init.el ends here