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 2f041bda5c jao-notmuch: inheriting original's tags in replies 11 hours ago
attic attic 5 days ago
data nits 7 months ago
lib jao-notmuch: inheriting original's tags in replies 11 hours ago
.gitignore enabling primary selection for yanking 11 months ago
blog.org H-s relics (either sway or emacs got a fix) 4 months ago
completion.org better term support: corfu 5 days ago
email.org email nits 3 weeks ago
eww.org avoiding eww session reopening 6 days ago
exwm.org exwm: app togglers 5 days ago
gnus.org email nits 3 weeks ago
init.org mopidy-tidal 4 days ago
notmuch.org nits 3 days ago
org.org recoll improvements (transient) 2 months ago
readme.org attic: w3m 5 months 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.