UP | HOME

Emacs Early Init

Table of Contents


This file contains Emacs Lisp code that will run before the Emacs init.el file.

This file was written using Emacs Org Mode. This makes navigating and modifying my Emacs configuration much simpler as I can place different elements of my configuration under separate headings. The code in this file is placed in source code blocks that are tangled to the early-init.el file that Emacs will look for upon starting. When this file is saved, the source code blocks that are marked for tangling will write their contents to early-init.el.

Header

The following code block will add a header to the early-init.el file when it is generated on saving.

  ;;; early-init.el --- Emacs early init -*- lexical-binding: t -*-
;; 

;; Author: Thomas Freeman
;; Maintainer: Thomas Freeman
;; Created: 09 Jan 2022

;; URL: https://github.com/tfree87/.emacs.d

;; This file is an early-init file for Emacs. It will be executed before
;; init.el when emacs is loaded.

;; This file IS NOT intended to be edited! It was generated by init.org.

;;; Commentary:

;; For documentation and for editing this file, see the init.org in the
;; github repository tfree87/.emacs.d
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Code:

Decrease Garbage Collection Frequency

Emacs collects garbage very fequently slowing down the startup process. Emacs normally does a garbage collection every 800 kB. Since I always have the RAM for it, I have set the garbage collection to only happen after 500 MB. Increasing the number above this does not provide any significant gains in startup time as of yet. This idea came from https://blog.d46.us/advanced-emacs-startup/#/.emacs.d/init.el.

(setq gc-cons-threshold 500000000)

Monitor Package Load Times   guix

The Benchmark Init package will monitor the load times for package loading as Emacs loads and create a report that can be used to check where optimizations can be made to speed up Emacs loading.

(require 'benchmark-init)
(add-hook 'after-init-hook 'benchmark-init/deactivate)

Prevent Unwanted Runtime Compilation

Prevent extra unnecessary runtime compilation for gccemacs. This idea came from the Doom Emacs early-init.el file.

(setq native-comp-deferred-compilation nil)

Disable Emacs Package Manager

In order to prevent conflicts between straight.el and the Emacs package manager, package-enable-at-startup should be set to nil. This came from the straight.el installation instructions.

(setq package-enable-at-startup nil)

Reduce Redisplay

To reduce slowdowns caused by early redisplays when loading, the following code will reduce the amount of times Emacs redisplays when setting up windows. This idea came from the Doom Emacs early-init.el file.

(setq-default inhibit-redisplay t
              inhibit-message t)

(add-hook 'window-setup-hook
          (lambda ()
            (setq-default inhibit-redisplay nil
                          inhibit-message nil)
            (redisplay)))

Set Environment to UTF-8

Set the default coding system to UTF-8.This idea came from the Doom Emacs early-init.el file.

(set-language-environment "UTF-8")
(setq default-input-method nil)

End

Tell Emacs what feature this file provides.

;;; early-init.el ends here

Date: Time-stamp: <2022-07-21 Thu 18:35>

Author: Thomas Freeman

Created: 2022-07-21 Thu 18:55

Validate