I've set `lexical-binding` to `nil` in all Emacs Lisp files to suppress
the warnings introduced in Emacs 31 requiring all elisp files to have a
`lexical-binding` comment.
This retains the default behavior of dynamic binding when no
`lexical-binding` comment is present. With it set to `t` across the
board, various things break, and fixing those is a task for another day.
It seems easysession is a more modern take on session management, and
most importantly, it is much faster than desktop.el. So far this seems
to work fine, so I'll give it a proper try.
yank-indent is more focused on specifically indenting after yank, and
the PR to enhance snap-indent with some similar features has been open
for some time now with no movement.
For a couple of years now, there's been a bug on macOS with the
non-native fullscreen implementation. When enabling fullscreen, any
child-frames created by packages like lsp-ui, company-box, posframe,
etc. all re-appear on top of the fullscreened frame, and stay there
until you re-trigger whatever package/command that created the
childframe originally.
This works around this issue by simply closing all child frames when
toggling non-native fullscreen.
Show project relative file paths even when project root and file paths
start with a mixure of "~/" and absolute path.
Also handle buffers not backed by a file on disk by falling back onto
marginalia--buffer-file.
Uses the new nerd-icons package to display icons in various places
similar to all-the-icons. But it works in a terminal too as long as the
terminal is using a Nerd Font.
When yank-indent-mode is enabled, yanked (pasted) text is indented based
on the indent rules of the current major mode. It has a
global-yank-indent-mode too which by default excludes a long list of
known indentation sensitive modes with which this approach does not work
very well.
It is based on some random hacky snippets elisp I've been using for over
a decade. Said snippets are themselves based on some random snippets I
found online, and since morphed into the weird monster they had become.
This makes switching between Emacs 29.x and 30.x much easier, as
straight doesn't need to re-build all packages from scratch when the
Emacs version changes.