explaingit

purcell/emacs.d

7,064Emacs LispAudience · developerComplexity · 2/5Setup · moderate

TLDR

A ready-to-use Emacs configuration maintained since 2000 that replaces hours of manual setup with sensible defaults, modern code completion, real-time error highlighting, and support for a wide range of programming languages.

Mindmap

mindmap
  root((repo))
    What it does
      Emacs config baseline
      Modern defaults setup
      Multi-language support
    Features
      Code completion
      Real-time error check
      Better search navigation
    Languages supported
      Haskell Ruby Python
      Rust Clojure JavaScript
      SQL CSS HTML
    Setup
      Clone to emacs.d folder
      Auto package install
      Local overrides file
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Clone this config into your Emacs setup folder to get a modern productive editor for Haskell, Python, Ruby, Rust, or Clojure without manual configuration.

USE CASE 2

Use it as a baseline and add a personal local config file on top to customize keybindings and themes without breaking future updates.

USE CASE 3

Study the configuration as a reference for how to set up Emacs package management, code completion, and syntax checking.

Tech stack

Emacs LispEmacs

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Emacs 27.1 or newer, first launch automatically downloads third-party packages and may take a few minutes to complete.

In plain English

This repository is a ready-to-use configuration for Emacs, a long-established text editor popular among programmers and writers. Emacs out of the box works well but requires a lot of setup before it feels modern and productive. This configuration, maintained by developer Steve Purcell since 2000, is designed to give Emacs a sensible, well-chosen set of defaults without requiring the user to figure everything out from scratch. The configuration includes support for a wide range of programming languages, with the strongest coverage for Haskell, Ruby on Rails, SQL, CSS, JavaScript, HTML, Python, Rust, and Clojure, among others. It sets up automatic code completion as you type, better search and navigation tools for the command bar at the bottom of the screen, and real-time error highlighting so you can see mistakes in your code before you even try to run it. To install it, you clone the repository into a specific folder that Emacs checks on startup. The first time you open Emacs after doing this, it automatically downloads and installs a set of third-party packages that the configuration depends on. After that, you keep the configuration up to date by running a standard git pull command and then updating the packages through a menu inside Emacs. If you want to add your own personal customizations on top of this baseline, the author suggests creating a separate local file rather than modifying the shared config directly, so your changes survive future updates. The configuration is primarily developed for macOS but also works on Linux and Windows. It requires Emacs version 27.1 or newer, and the author recommends always using the latest stable Emacs release.

Copy-paste prompts

Prompt 1
I just cloned purcell/emacs.d into my ~/.emacs.d folder. Walk me through what happens the first time I open Emacs and what packages get downloaded and installed automatically.
Prompt 2
I am using purcell emacs.d and want to add Python LSP support with Pyright. Show me the local config file I should create and what to put in it.
Prompt 3
I want to customize the color theme in purcell/emacs.d without editing the main config. What is the correct way to override it in a local settings file?
Prompt 4
The emacs.d config includes real-time error highlighting. Explain how it works and how I can configure it to use a different linter for JavaScript files.
Open on GitHub → Explain another repo

← purcell on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.