Skip to content

Walheimat/wal-emacs

Repository files navigation

Walheimat’s Emacs Config

./assets/logo.png

About

This project is my personal literate Emacs 29[fn:1] configuration.

If you’re a complete beginner, you will find more user-friendly and less tailor-made configs out there.

Feel free to consider it a jumping-off-point for your own custom config. Just know that nothing in this config should be considered good practice, it’s mostly just how I (think I) like things to be.

Installation

If you’re interested in trying out Emacs using my config, here are the necessary steps:

  • install Emacs[fn:2] if you haven’t
  • =git clone –recurse-submodules=[fn:3] this repository
  • make which will tangle the libraries, setup[fn:4] your user-init-file and install all[fn:5] packages

Customization

Use wal-customize-group or add your customization manually to your custom-file.

Peculiarities

As a Daemon

This config is daemon-ready, i.e. if you start Emacs with the --daemon flag, the config will make sure that any customization that requires a frame will only be loaded once a frame was created.

You can install either a systemd service[fn:6] or just execute emacs --daemon in a terminal (or your login shell’s configuration).

In any case, an Emacs daemon will start. To connect, you can use, for example, emacsclient -cn.

Package-Like

Coverage Status

Custom functions and variables use the wal- scope[fn:7] and belong to their respective library’s package. Many libraries define a group for customization purposes.

With a few exceptions, each library has a Header and a Footer that contains declarations for its package, as well as either a Packages section or several sections grouping packages.

Libraries

The configuration is subdivided into several libraries/packages. The order of evaluation of the libraries is determined by wal-load--core-packages and customizabale wal-additional-packages which are defined in the prelude package.

The library consists of:

Footnotes

[fn:1] There’s no guarantee anything below works although some effort is made that it may with a few tweaks (or by using compat. VC packages require 29 since they depend on package-vc-install. These are mainly my own packages harpoon, partial-recall, junk, bydi and whale-line which you can also install following the instructions there.

[fn:2] If you’re feeling adventurous, build from source.

[fn:3] This repo uses my Emacs package helper repo dinghy for many goals of its makefile.

[fn:4] If your user-init-file is not ~/.emacs.d/init.el you need to run make EMACS_INIT_FILE=<path_to_your_init> install.

You might want to run make ensure-init after version updates to make sure you still have a working bootstrap snippet.

[fn:5] Packages that belong to an expansion pack (mainly language-specific packages) or its extras need to be installed manually by calling wal-install-expansion-pack.

You can also force installation of all base packages manually by running Emacs with custom flag --ensure.

[fn:6] Also confer the manual.

[fn:7] There are some exceptions, like the general definers for leader keys.