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-configis now a more complete starting point, and is the combination of thecrafted-mastering-emacsandcrafted-windowsmodules. Those have both been marked for deletion.crafted-ide-configandcrafted-ide-packageshave 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-sitterandeglotinclusion.crafted-ide-confignow 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-toolsmodules, as well as additional settings for writing… well… things!- I leveraged the
compatpackage to smooth the path toward adoption of Emacs 29. I usekeymap-setandkeymap-set-globalfor 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 usesetoptin place ofcustomize-set-variable. - I removed the configuration for
use-short-answersas its use is discouraged in documentation. - Customizations are now saved to the
custom-fileafter the Emacs finishes initialization. - I found a way to set the
crafted-emacs-homevariable 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-configmodule is sufficient to set theload-pathso 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