Skip to content

sergeyklay/.emacs.d

Repository files navigation

Serghei’s GNU Emacs Configuration

This repository contains my personal configuration for GNU Emacs that I use on the daily and port around from system to system with me. This is the second repository I clone — after my dotfiles — when settling in on a new system.

The Philosophy

The guiding philosophy behind this Emacs configuration is that it should be a direct extension of my own memory. This project serves as a representation of what I can actively recall and understand.

As a result, you won’t find overly complex settings or sophisticated designs here. The aim is to keep everything as straightforward and transparent as possible. This ensures that the configuration can be easily read, understood, and held mentally.

If you come across this project, bear in mind that it’s molded to fit what I can keep “in my head” rather than what Emacs is capable of doing. The simplicity is intentional and serves as a mnemonic aid for me.

This Emacs configuration is designed around four core principles that aim to make it an efficient, transparent, and portable extension of my workflow:

self-contained
A duo of early-init.el and init.el files responsible for loading and configuring publicly available packages, with the exception of custom.el.
small
The configuration files collectively stay under 512 lines in total.
built-in packages
Preference is given to built-in solutions; if unavailable, GNU alternatives take precedence over MELPA packages.
system-agnostic
The setup should function seamlessly across different operating systems.

While the focus is on a streamlined Emacs setup, it’s crucial to have some form of documentation for better clarity and maintenance. Unlike other Emacs users who opt for literate programming, my approach leans towards self-explanatory Lisp code or inline documentation. The 512-line limit isn’t just an arbitrary number; it serves as a discipline to keep the code and its documentation straightforward, nudging me to strip down complex features to their essentials.

The custom.el is an autogenerated configuration layer that’s kept out of version control (it’s git-ignored). Since I don’t manually edit or even read this file, it’s exempt from the 512-line limit. It serves as a repository for machine-specific settings and sensitive data, like the paths to my agenda files or my ERC username.

Requirements

This configuration uses default-style keybindings and known to work with GNU Emacs 29.1 and later. If you’re using an older version, you may encounter issues that won’t be addressed. Please update your Emacs to meet this requirement for a smooth experience.

Typically, I roll with environments that have the following set of tools:

So, this config project is kinda built around that fact.

License

This project is open source software licensed under the GNU General Public Licence version 3. Copyright © 2019, 2020, 2021, 2022, 2023 Serghei Iakovlev.

Note On Copyright Years

In copyright notices where the copyright holder is Serghei Iakovlev, then where a range of years appears, this is an inclusive range that applies to every year in the range. For example: 2019-2023 represents the years 2019, 2020, 2021, 2022 and 2023.