Crafted Emacs Update
Two posts in one month! That's new! After my last post, I thought I'd catch up with an update about the issues and pull requests that have happened since the rename. I also made a really long post on Discord which I will cover later in this post as well.
Issues
There have been a few issues raised, the current outstanding ones haven't seen much movement in quite a while.
- Add
guix
as a possible package manager from inside Emacs. The idea here is the call tocrafted-package-install-package
would actually shell out toguix
to install the package from the Guix Store. An interesting idea and there is a good discussion there. - Use Git sub-modules. This one is about adding some text to the README.org file to describe how a user might use Git sub-modules when cloning
crafted-emacs
and their own config in the same directory. It's a bit out of scope for Crafted Emacs, but not a bad idea. I'll leave it open for a bit longer in case someone decides to step up and push a PR for it. - Use the XDG specification. This one is about re-homing the users config to fit the XDG specification, ie using
.local
for packages,.config
for config files,.cache
for temporary files (like history, projects, recentf, etc). We already re-home things to thecrafted-config-path
which has its own issues, especially since I haven't found every single place where Emacs drops a file or folder in theuser-emacs-directory
so that I move it to thecrafted-config-var-directory
(for example). Someone thought they would put together a PR, but it hasn't come about yet, which is why I'm leaving this one open. - Add bookmarks to the startup page. This is a good idea. One of the things on my todo list is to rework the
crafted-startup-screen
code to make a more generic API and allow additional modules like bookmarks (ie common files) to be added to the startup screen. This would allow others to customize the startup screen more easily. Leaving it open for the moment until I can get some spare time to rework the code. - Use
tabspaces
to implementcrafted-workspaces
. An interesting idea, one I've started to try out, but without using thetabspaces
package itself. The idea is to use Emacs built-in tabs for grouping project related buffers and (possibly) window layout. I don't know that we need a package to handle this, but I've found the concept useful as I now use it at work. One tab holds my org file with my tasks, meetings, notes, etc, and another tab holds my project files with its own window layout. I open another tab if I need to shift to another project, so I keep everything organized. All that is working well enough I'll probably take a serious look at implementing the requested solution. The author of thetabspaces
project graciously replied to the thread and provided an example configuration. More to come on this I think. - And the real head-scratcher, symbol's definition is void crafted-package-install-package when using native compile. No idea on this one. Anyone out there who knows how native compile works and can jump in are welcome to assist. In the meanwhile, I'll figure out how to get that turned on (its not hard, just need to make sure my Emacs was built with the feature turned on and then enable it in my config), and then debug, debug, debug. This issue has an example configuration to use as well.
Pull Requests
There were a lot of these, most of them bug fixes, and an update to the straight
package manager configuration to move to the most recent version. I won't mention all 23 of them, but here are some of them:
- Initial config for LaTeX and PDF files
- Fix
early-init.el
typo “crafted-bootstrap-directory” - Add error handling around crafted-updates
- Fix typo in cljr-add-keybindings-with-prefix
- Fix README.org typos
- Fix compile issue when cache is not found
- Add fallback completion style
- Update
straight.el
bootstrap code
And a few other typos, fixes, removals after the Rational to Crafted rename.
Recap from Discord
I recently made a long post on the #crafted-emacs channel on the System Crafters Discord server. Here is a recap.
Compared to other starter kits
As far as comparison to other kits like Prelude (a personal favorite), Doom, Spacemacs et. al., Crafted Emacs is not a complete solution in the same sense as those are. You are expected to “fill in the gaps”. So, its like a quick start from scratch kinda thing. Imagine starting your config from scratch, but using some pre-built pieces for some common things (and, in some cases, not so common – erlang anyone?) to jump start your config.
Emacs 29 compatibility
On whether Crafted Emacs is ready for Emacs 29… well, YMMV. We (and by “We”, I mean “Me”) aren't trying to make sure it works with 29. Keeping it going and killing bugs as they appear for 27 and 28 is the priority. When the 29 release cycle starts, I'll probably get a fresh copy and start making updates on a branch to merge after Emacs 29 comes out. That said, if you are using 29 as your daily driver, just know there are breaking changes there which affect more than just Crafted Emacs. There are packages which have not (yet) updated to the Emacs 29 API differences, so things can break. Other features, like eglot
being merged to mainline (!!) may cause a change in the crafted-ide
module since we prefer to use eglot
at the moment.
Crafted TODOs
Other things on my TODO list are items like:
- The
crafted-completion
may also get an update to prefer built-in completers likefido-vertical-mode
(available since 28) over theconsult/corfu/vertico
stack. - The
crafted-evil
module will probably stay around, but acrafted-viper
module might appear asviper
is built in and provides a reasonable vi-like style of keyboarding, so those who prefer built-in options will have that available as well. - I would also like to expand on the examples a bit and provide at least one using only built-in configuration, thus the
crafted-defaults
,crafted-mastering-emacs
modules at least.
Shameless Plug
If you enjoy configuring Emacs and tweak yours often, you might consider giving Crafted Emacs a try. I'm sure you'll find some rough edges, and when you do, I invite you to open an issue, or submit a pull request. Or, maybe you won't find any rough edges and this will be just the thing you need. I'm not holding my breath on that just yet.
If you enjoy crafting your computing experience, from hacking on Emacs, your Linux/Mac/Windows configuration, maybe your Guix or NixOS home configuration, or whatever it is… consider joining the SystemCrafters community!
Tags: #emacs