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 the
crafted-windowsmodules. Those have both been marked for deletion.
crafted-ide-packageshave both been updated. The latter includes packages like Mickey Petersen's Combobulate package,
ibuffer-project. Additionally, there is code to handle both Emacs prior to and post Emacs 29 for
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 former
crafted-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 use
keymap-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 use
setoptin place of
- 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 the
crafted-init-configmodule is sufficient to set the
load-pathso the other modules can be simply
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
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.