Crafted Emacs Update for March 2023
Another month has passed, more development for the next version of Crafted Emacs! Picking up from last month, I've been working on the plans for the modules I outlined before.
crafted-defaults-config
is now a more complete starting point, and is the combination of thecrafted-mastering-emacs
andcrafted-windows
modules. Those have both been marked for deletion.crafted-ide-config
andcrafted-ide-packages
have both been updated. The latter includes packages like Mickey Petersen's Combobulate package,aggressive-indent
,editorconfig
, andibuffer-project
. Additionally, there is code to handle both Emacs prior to and post Emacs 29 fortree-sitter
andeglot
inclusion.crafted-ide-config
now configures those packages with the same attention to pre-/post-Emacs 29. Language specific modules were deleted.crafted-writing
(thanks to the suggestion from the #systemcrafters IRC channel for the name) now combines the formercrafted-editing
,crafted-latex
, andcrafted-pdf-tools
modules, as well as additional settings for writing… well… things!- I leveraged the
compat
package to smooth the path toward adoption of Emacs 29. I usekeymap-set
andkeymap-set-global
for any key bindings in modules, including references in comments. However, as that package is meant for package authors and not configuration authors, there is no provision for moving to usesetopt
in place ofcustomize-set-variable
. - I removed the configuration for
use-short-answers
as its use is discouraged in documentation. - Customizations are now saved to the
custom-file
after the Emacs finishes initialization. - I found a way to set the
crafted-emacs-home
variable in case it isn't set by the user. I'm not checking for an environment variable value yet, that is still on the todo list. But now, just loading thecrafted-init-config
module is sufficient to set theload-path
so the other modules can be simplyrequired
.
On that last point, an example init.el
file might look like this structurally:
(when (file-exists-p custom-file)
(load custom-file :noerror :nomessage))
(load "/path/to/crafted-emacs/modules/crafted-init-config" :noerror :nomessage)
;; -- below not needed when using Guix to manage packages --
;; add any packages to the `package-selected-packages' list
;; for example:
(require 'crafted-ide-packages)
;; install packages as necessary
(package-install-selected-packages :noconfirm)
;; -- above not needed when using Guix to manage packages --
;; add any crafted configure modules
(require 'crafted-defaults-config)
(require 'crafted-ide-config)
;; any personal configuration, for example:
(keymap-set "C-c '" #'imenu)
When using GNU Guix to manage your Emacs packages, the bits related to adding packages to the package-selected-packages
list and then installing them is not needed. The same might be true if you use some other tool like straight.el
to install packages. I continue to eschew using use-package
, this does not prevent the user from doing so in the “personal configuration” section in the example above. In fact it may be possible to use use-package
everywhere once the crafted-init-config
file is loaded.
While I feel like I'm making progress, there is still much to do. From my list last month, I haven't begun to touch the documentation or examples. I have a few articles to read and test ideas for a more usable completion experience out-of-the-box using built-in facilities. This work will be in the crafted-defaults-config
module. The intention is to be able to load just that one module and have a nicely working Emacs configuration. Enhancements come from adding any additional modules, like crafted-writing-config
, crafted-completion-config
, etc.
More to follow next month, but I feel like I'm getting closer to something I could turn into a beta. I'll probably start to focus more on the documentation and examples so I can do just that sooner rather than later.
Tags: #emacs