## 24.1 Emacs

20210312

Emacs is not just one of the most sophisticated editors available, but an integrated development environment for everything, including the kitchen sink.

Emacs comes with an extensive collection of packages implemented in elisp developed over 40 years (I wrote my first elisp package in 1986).

In general, to use these extra packages that are not included in the Emacs distribution or available as Debian elpa-packages, you can use autoload where possible, so we do not load every thing at startup. Use require when the package has to set things up in advance.

I like to manually install packages, generally from their git repository, installing those packages into ~/.emacs.d/elisp which needs to be added to the package path. I add all directories/files under the path ~/.emacs.d/elisp into the load path so that packages can be installed there from git or manually as independent files and found by Emacs. Another common path for this is ~/.emacs.d/lisp.

(let ((default-directory  "~/.emacs.d/elisp/"))
(normal-top-level-add-subdirs-to-load-path))