I've always known that doom uses dash.el and f.el underneath, and many
many other packages do too, but never really paid much attention there.
But after a (very) brief stint with Clojure, I'm liking the left->right
flow that these higher level functions offer. I've already started to
abuse them in Java, but they are much more natural in lisps. I can see
why Clojurians spam them everywhere.
I know that they are slower than the builtins, but using these higher
level APIs is such a nice development and reading exerience, that I'm
going to try abusing them more now. They are a bit out-of-place for
idiomatic elisp, but here we go.
To use ChatGPT from within Emacs. This removes the problem of having to
switch away from Emacs, as well as gives better prompt customizability
as API is more flexible than their stupid Chat interface.
Lets see how this one goes..
Devil intercepts and interprets ',' as Ctr. It seems to make sense, and
work quite well, especially because I can observe it not being much of
an annoyance just while writing this message.
Anyway, it has potential to reduce number of keypresses and especially
number of keypresses where both hands are involved significantly,
particularly around scrolling and movement.
I remember disabling this way back when trying out mu4e for first time,
but I'm kinda tired of horizontal splits and constant window height
adjustment. This will need some tuning, probably around column order,
but I think it will be doable.
I'm not sure whether the passwordless sudo is required, but I'm too
tired to test right now. Anyway, this works.
Also unsure on the statelessness of deploy-rs, but again, its simple
enough, didn't require changing anything else much and it works.
Perhaps some day, I'll see about trying out colmena for deploying
secrets, but until then, agenix is good enough for my needs.
Right now this fails, because what I assume is a failure with emulation
in WSL, but otherwise I'm linking the overall approach of reusing the
preconfigured nixOSConfigurations in the same flake, as well as
lightweight burden of configuration. Doesn't hurt that it is written in
Rust rather than Python.
Since Emacs 28+ upstream follow freedesktop standards, doom has started
recommending cloning emacs config to ~/.config/emacs rather than
~/.emacs.d.
This commit updated my config to be agnostic to this location, and
always uses whatever location is used by Emacs itself.
flyspell+aspell is doing perfectly fine job, but I wanted to try the
newfalngled Jinx thingy from minad. It is supposed to be faster, by
offloading spellcheck to enchant lib asynchronously, which in turn uses
different backends such as aspell, hunspell, nuspell etc, as well as
only doing spellcheck for visible text, rather than whole buffer.
Here, I am using aspell, because I couldn't get nuspell to work, but
aspell worked wonderfully.
I had to disable the existing spellcheck module in doom, but considering
jinx required very little config, I'm willing to give it a better shot.
Jinx is also likely to be better maintained than doom (which has fallen
behind in commit activity, thanks to Henrik being a busy bottleneck).
On another note, this commit is also a perfect demonstration of
cross-system changes consisting of both system libs as well as Emacs,
combining them, and changing both in single go. This has also reduced
mental calculations, as separate 'doom sync' is now not required, and
the only command I need to remember to deploy my system OR Emacs config
is 'sudo nixos-rebuild switch'. This is also why I'm now even more
reluctant to move home-manager to its separate repo. Monorepo for
personal config rocks!
While unlikely during most use-times, on new system activation, for e.g.
the doom binary will be absent because doom setup is run by manually
cloning its upstream. Checking this before will prevent unnecessary
activation failure and runtime editing.
All the grammars I need are already added by upstream (emacs-overlay),
except for tree-sitter-nix, but I can live with that.
This will save little bit of time while rebuilding emacs closure, and
will take me a bit closer to upstream.
Doom recommends this, and I had a habit of it anyway.
This takes away some anxiety because now I know for sure that doom sync
has run on every doom config change as well as every NixOS config change.
This makes managing two distinct repos unnecessary, and only single repo
is required.
Since doom config repo was intended to be public anyway, there are no
secrets (I hope).
Pros are being able to deploy doom configs via single repo, which might
come in handy in future.
Cons are the need to redeploy NixOS config again just to deploy Emacs
config. Another config is increased Emacs startup time, because now it
has to traverse through the symlinks to nix-store to get the file
contents.
But, this is an experiment worth trying, so let's try this. Doom's setup
is still done imperatively via its own installer, but the config itself
is deployed via NixOS. We'll see how the trade-off goes.
Now that the Emacs unstable branch has switched to 29.0, I am getting
off the wild ride of master. Hopefully doom will also stablize pretty
soon, and this was planned all along.
I like the default behavior of magit, but after increasing font size it
suddenly started opening from bottom instead of from the right.
There's probably some config somewhere to decide this (probably
line-length limit), but for now I'm not going to spend much effort on
it. doom's popup rule macro is good enough™.
- Comments are brownish rather than yellow
- Strings are more intense green
I'm digging the comments, but strings are sort of too pronounced
compared to rest of the code. Might want to revert to orignal
green-cooler if it gets distracting.
Some component in ox-zola+ox-hugo+zola was making markdown not be
rendered properly to HTML. I had no time to figure it out so Hugo was
it.
ox-hugo is well maintained by Kaushal Modi and others, has much more
widespread use, is well documented, and Hugo even uses it automatically!
Overall, I'm liking the result, and keeping it.
I moved my blog to Hugo. Zola's markdown rendering wasn't really
working, and I didn;t want to debug that at this moment.
Hugo worked much much better, with no intermediary step for converting
to md, as it supports orgmode by default.
partly inspired by
https://christiantietze.de/posts/2023/01/modus-themes-v4-changes/
- Use variable pitch font in some org-agenda constructs
- Enable mixed-fonts
- Use medium and italic for prompts
- use medium weight instead of semibold for default org headings
- Use :custom keyword in use-package config
This is a major, breaking change.
Nearly all the variables are gone, and face-by-face override is
necessary. Modus-themes are now a theme-engine with some reasonable
defaults. This makes it more customizable, but also needs more tweaking
than before and knowing more about Emacs faces.
Anyway, I got to a reasonably close approximation of what I had before,
but there are things remaining. Namely, completions, org-blocks,
org-agenda bolds and hl-line brightness.
But, for now, its mostly good enough.
This is the ultimate solution for weird intricacies of Rust programs
or SBCL needing OpenSSL for compiling stuff, or pre-compiled internet
binaries (not that they're good..) needing specific libs in specific
places that don't exist on NixOS.
While this makes the system less good, it does make it a more
accommodating citizen in the Unix land. This is also a lot more
declarative than any other system out there, so that's an added benefit.
If this works out as advertised, this is going to change a lot of things.
- Add arxiv-citation
- Download arxiv PDFs
- Automatically add bibtex entry to specified file
- Minor modifications to Citar config
- Configure citar-org-roam to not use any subdirectory
The commit line length in Doom by default is 80. However, because of my
current laptop screen and split screen editing of commit message in
magit is configured, the line endings happen very awkwardly with single
character on newline. This is generally not an issue, but its just a
nagging thing that I personally do not like.
One of the obvious fix is to simply set the commit message line length
limit to 72 characters as does Linux kernel (and hopefully other GNU
projects, possibly including Emacs itself). This doesn't make too much
difference in usability, while preserving the aesthetics on my laptop
display.
Because this utilizes both the hook and a check for buffer name, this
should not modify the line length for any other buffer and remain at 80.
Like Prot, I have concerns on use-package DSL becoming a problem, but for now, I
find the declarative nature of it to be a good thing and consider it worthwhile.
Its a better more ergonomic replacement for isearch (C-s/C-r) commands.
In cursory usage I like it, its use is a bit less in collapsed Org content, but
otherwise the UX is well thought out.
I've never used them since adding them, and the plans to publish it regularly
did not materialize. So rather than have these useless properties cluttering
space (especially apparent because I no longer hide them, thanks to notes in
org-mode), I just remove them.
By default, Org binds C-' to cycling org-agenda-files, which is useless for me,
since my agenda is collected from hundreds of files.
Since discovering imenu, I am probably going to use it more going forward, and
making this experience uniform across all modes, as is The Emacs Way™, it only
makes sense to reset the keybinding here.
text-properties are still slightly faster than overlays, but over long enough
timeline (Emacs 32+) they will probably be deprecated in favor of fast overlay
implementation in newer Emacs versions.
Since the speed it pretty much the same (I do not have very large Org buffers),
it makes sense to just keep the forward compatible behavior.
I like the alternating half-screen windows from original magit compared to the
full page doom behavior that wastes right side of screen and overlaps the commit
message and changes.
This is better IMO, and I remember I missed it quite dearly after switching to
doom first time around. Nice to have it back :)
Instead of popping a tiny buffer from the bottom, it now opens a buffer from
right, taking half the screen space. This is more comfortable for me right now,
especially since my programs tend to be small and do not extend to the right too
much.
use-package allows specifying dependencies and only loading org-modern after
org-mode is loaded, and pretty much ensure global activation of org-modern
immediately after org-mode is loaded.
Org-modern is a new package by minad (of consult, vertico and marginalia). The
package attempts to make org-mode a bit more pretty and nicer looking, but
instead of using images or heavy regex overrides, it uses box properties. It
kinda fits better in Emacs aesthetics IMO and looks kinda nice and clean.
Instead of colored text abound everywhere, the boxes make spotting things
slightly easier, although reduces text size on those boxes might be annoying
down the road.
Although cleaner and faster than its other brethren, there still is a
performance impact. It is noticeable when doing for eg. big scrolling fast, and
that might just make me hesitant to use it long term, but for now, I'm going to
give it honest and good test run for a while.
CATEGORY property is picked to show in agenda instead of filename.
since my filenames are quite long and contain unhelpful numbers in front, this
makes the agenda a lot cleaner. It is not perfect, but its better than before.
Since discovering how easy it is to add timestamped notes to headings, I have
been using that. It is quite convenient, and might just save me from
consolidating lot of daily notes.
But the notes are added under LOGBOOK drawer and since it does not open
automatically, I lose the sight of how extensive the notes are. This variable
opens all the drawers, and I'll have to see how much I like that, but its a
decent compromise for now.
While it is generally nice, I don't use a lot of tabs (yet) and it wastes space
on shorter tab names and crops longer tab names, making both scenarios fairly
problematic.
This is in hopes that the ABI mismatch will be less likely, but it still happens
sometimes. Anyway, since tree-sitter needs a dynamic module for now, its better
to include all the related packages from NixOS.
This is to test out the new fast overlays in 29. Apparemtly Ihor's
text-properties based folding is fast, but takes large files to be really
noticeable. But overlays have been made nearly (equally?) as fast now, and the
variable doc says they are probably more compatible with 3rd party packages.
Now that Music collection from WSL can be accessed by Strawberry directly from
filesystem, it is not necessary to keep navidrome service around any more.
Because Elixir dev env issues are killing motivation for Neha, we are evaluating
Rust.
We know the trade-offs, and this is just an evaluation, to see how things end up
with improved dev experience.
- Add keybinding and hack around limitation of package loading detection
- Change C-SPC 1 keybinding title to "news" from elfeed
- Save matrix session to avoid logging in too often
Due to some weird combination of use-package and doom-emacs' org-roam module,
the usual keywords from use-package are not working (:custom, :init, :config
etc).
But this weird ordering appears to be working, so this is what we shall keep.
..and shave off half a second on startup time. Considering this is on SSD, this
half second is actually fairly impressive, and brings load time consisitently
below 4 seconds.
This is bit of an experiment, so see all the headings (including sub-headings)
by default, but none of the content, kind of giving a complete outline of the
document, but we'll see if I want to keep it down the road
Because apparently setting some variables before org is loaded meant their
default values were set by the mode and not the config.
Setting them after loading the mode worked as expected, as was the working
config before.
Make things more tidy and arrange them where they belong, with mode specific
config neatly nestled inside use-package for that mode or package forming nice
islands of declarative config.