Lambda-Emacs / lambda-emacs

Emacs distribution with sane defaults, pre-configured packages, and useful functions.
MIT License
154 stars 12 forks source link

+html: GNU Emacs

+html: Discord Server

+html: Buy Me A Coffee

Lambda-Emacs (𝛌-Emacs) is an Emacs configuration aimed at those engaged in writing and academic work in the humanities (for discussion of my view of the use of text editors in the humanities [[https://www.colinmclear.net/posts/texteditor/][see here]]), rather than opposed to, e.g., a programming language emphasis, though I've tried to make it user-friendly for programmers as well. Another goal of 𝛌-Emacs is to provide enough commentary on the configuration such that it might be useful to those new to emacs or even [[https://en.wikipedia.org/wiki/Text_editor][text-editors]] generally. In either case it is intended to serve as a useful starting point for one's own custom configuration. Note that Lambda-Emacs is only compatible with Emacs 29+. However, parts of the configuration may easily be backported to older versions of Emacs.

+BEGIN_HTML

+END_HTML

The themes here are from [[https://github.com/Lambda-Emacs/lambda-themes][lambda-themes.]]

There are a great number of amazing Emacs "distros" out there, such as (if you use vim-bindings) [[http://spacemacs.org][spacemacs]], or [[https://github.com/hlissner/doom-emacs][doom-emacs]], or the more traditional configurations of [[Https://github.com/purcell/emacs.d][Purcell]], [[https://github.com/bbatsov/prelude][Batsov (prelude)]], [[https://github.com/seagle0128/.emacs.d][Zhang (Centaur Emacs)]], the [[https://github.com/gilbertw1/bmacs][bmacs]] configuration of Bryan Gilbert (see also his [[https://github.com/gilbertw1/emacs-literate-starter][literate starter kit]]) and [[https://github.com/novoid/dot-emacs][Karl Voit's]] config, John Kitchen's [[https://github.com/jkitchin/scimax][scimax]], Kieran Healy's [[https://github.com/kjhealy/emacs-starter-kit][social sciences starter kit]], and [[https://github.com/caisah/emacs.dz][many others]]. Further helpful starts include [[https://github.com/hrs/sensible-defaults.el][sensible defaults]] or especially [[https://github.com/SystemCrafters/crafted-emacs][Crafted Emacs]]. There are also the recent stylings of [[https://github.com/rougier][Nicolas Rougier's]] [[https://github.com/rougier/elegant-emacs][elegant-emacs]] and [[https://github.com/rougier/nano-emacs][nano-emacs]]. Truly a surfeit of riches. Why choose this configuration over any of these others? Indeed, why did I bother to write another one at all? Here are three reasons. First, much of it already existed as part of my personal Emacs config. 𝛌-Emacs is largely an abstraction from this, which I wanted to make more easily available to others. Second, I also wanted a clean but useful config to which I could point my students. Finally, setting this up is a useful way for me to think about how "best" to configure Emacs.

  1. Short start up time -- emacs-init-time < 1 sec (though this may vary somewhat depending on your system)
  2. Uses the built-in package.el and package-vc.el for package management
  3. Comprehensive keybindings using [[https://github.com/jwiegley/use-package/blob/master/bind-key.el][bind-key]]
  4. Sensible defaults
  5. Dired with sensible colors and settings
  6. Completion with [[https://github.com/minad/vertico][Vertico]] and related packages
  7. [[https://github.com/Lambda-Emacs/lambda-themes][Lambda-themes]], with toggles for dark/light mode & various other options
  8. A custom status-line, [[https://github.com/Lambda-Emacs/lambda-line][Lambda-line]]
  9. Extensive MacOS integration
  10. Tab-based project workflow leveraging the built-in project.el and tab-bar, with [[https://github.com/mclear-tools/tabspaces][buffer-isolated tab/workspaces]]
  11. A configurable splash page
  12. A writing-centric configuration with great citation support, markdown, [[https://github.com/jgm/pandoc][pandoc]], [[https://github.com/mclear-tools/consult-notes][dedicated functions for notes]] and note-taking (using [[https://github.com/protesilaos/denote][denote]]), and settings for org-mode

𝛌-Emacs is a "modular" distribution of Emacs. It consists of a set of "setup" elisp files grouped according to the following areas (NOTE: these are still works in progress):

See the [[file:DOCUMENTATION.org][documentation]] (WIP) for further details.

  1. Clone lambda-emacs as a directory named "emacs.d" (NOTE: you should back-up your current emacs config if you have one!): =git clone https://github.com/Lambda-Emacs/lambda-emacs.git ~/.emacs.d=
  2. Run Emacs -- it will ask at startup if you want to generate a user configuration file, if you do it will generate that file and start up with some basic packages (this requires an internet connection and may take a little while to complete). If you do not create a config file Emacs will start with all the default packages in Lambda-Emacs (which will take time to fully download).
  3. Put whatever settings you prefer in your config file. This should include things like the font you prefer and whatever other variable settings you might like. For some hints see my [[https://github.com/mclear-tools/dotemacs/blob/master/config.el][configuration file]] and the list of variables in the [[id:20220623T011222.999171][docs]].
  4. For further questions please look at the [[id:20220623T011222.999171][documentation]] or ask a question on the [[https://discord.gg/NtYcrRtTxg][Lambda-Emacs discord]].