Emacs configuration and packages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jao 0c4548bfa3 notmuch notification clean-ups 3 days ago
attic vterm redux 7 days ago
data nits 2 months ago
lib jao-mpc: fix for previous 3 days ago
.gitignore enabling primary selection for yanking 7 months ago
blog.org dehydration: transient is all we need 3 months ago
completion.org completion nits (and why eshell's capf wasn't working) 7 days ago
email.org jao-message-to-from utilitiy 6 days ago
eww.org nits 7 days ago
exwm.org vterm redux 7 days ago
gnus.org gnus nits 3 weeks ago
init.org fix for jao-rss-subscribe 6 days ago
notmuch.org notmuch notification clean-ups 3 days ago
org.org org: load texinfo export engine by default 5 days ago
readme.org attic: w3m 2 weeks ago


Emacs configuration and personal packages


This is the emacs standard init file, which will load (maybe tangled) the file init.org, checking first whether a fresh tangle is needed. Note that the rest of elisp tangling in init.org goes to a different file (namely, the one that is loaded by ~/.emacs.d/init.el).

However, also note that if literate-elisp is installed, we load instead the org file, directly. It's because of that that we start by setting up packages. A drawback of literate-elisp is that it only knows how to load with lexical binding set to nil, so i tend to prefer just loading tangled .el files. The packages org-auto-tangle (to asyncronously generate those files) and embark (to easily navigate between the two flavours) come in handy in that scenario.

Here's the directory where a checkout of this repo lives:

  (defvar jao-emacs-dir (expand-file-name "~/etc/emacs"))

followed by package.el's initialisation:

  (setq package-user-dir
        (expand-file-name (format "~/.emacs.d/elpa.%s" emacs-major-version))
        package-check-signature 'allow-unsigned)

  (require 'package)
  (dolist (a '(("melpa" . "https://melpa.org/packages/")
               ("gnu-devel" . "https://elpa.gnu.org/devel/")))
    (add-to-list 'package-archives a t))
  (setf (alist-get "gnu" package-archives nil t #'string=) nil)


and a tangling helper:

  (require 'org)
  (defun jao-load-org (file)
    (let ((file (concat (file-name-sans-extension file) ".org")))
      (org-babel-load-file (expand-file-name file jao-emacs-dir))))

Finally, we load either init.org or its tangled version from jao-emacs-dir:

  (jao-load-org "init")

You can tangle this readme to generate the minimal init.el file above.

Configuration as a set of literate files

  • init.org: main configuration as a literate org file; it uses (besides lots of packages), many of my libraries in lib, and loads on demand the other org files below.

  • completion.org: completion setup using corfu, vertico, consult and friends.

  • org.org org mode configuration.

  • blog.org: blogging using org-static-blog.

  • email.org: email handling in emacs.

  • gnus.org: email using gnus.

  • notmuch.org: email using notmuch.

  • eww.org: browsing with eww.

  • exwm.org: configuration for exwm, loaded when jao-exwmn-enable is called.

The attic contains other literate configuration files not currently used by init.org, like counsel.org for old ivy-based completion, or w3m.org for an emacs-w3m configuration i used for many years.