Bowmansarrow

crafted

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 to crafted-package-install-package would actually shell out to guix 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 the crafted-config-path which has its own issues, especially since I haven't found every single place where Emacs drops a file or folder in the user-emacs-directory so that I move it to the crafted-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 implement crafted-workspaces. An interesting idea, one I've started to try out, but without using the tabspaces 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 the tabspaces 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 like fido-vertical-mode (available since 28) over the consult/corfu/vertico stack.
  • The crafted-evil module will probably stay around, but a crafted-viper module might appear as viper 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