Replace persp-mode with:
- tab-bar-mode for perspective/screen management
- desktop-save-mode for session management
Both tab-bar-mode and desktop are enhanced and customized a decent bit
via the siren-tab-bar and siren-desktop modules.
This allows specific major-modes to disable hl-line-mode, which is
desired some terminal/shell modes like vterm where the hl-line flickers
constantly while typing.
company-lsp is no longer supported by lsp-mode for providing completions
to company, instead company-capf should be used which it built-in to
company itself.
It seems the visual-fill-column-mode that writeroom-mode depends upon
causes persp-mode to sometimes forget the contents/layout of a persp.
Hence I'm completely disabling it for now to see if it resolves my
issues, specially as I hardly ever use writeroom-mode anyway.
This involved always loading `helm-config` which sets up
`helm-command-prefix` and `helm-command-map` allowing use-package to set
bindings on the map all without loading anything else until needed.
Additionally allow `recursive-narrow-or-widen-dwin` to also trigger
`org-edit-src-code` within org buffers. This technically does not use
narrowing, but it does "focus" on the source code block for editing, so
it at least in spirit embodies the intent of narrowing.
This behavior was inspired by:
https://endlessparentheses.com/emacs-narrow-or-widen-dwim.html
By default when region is not active, both `downcase-region` (C-x C-l)
and `upcase-region` (C-x C-u) will operate on surrounding text in
different ways depending on major-mode. This has caught me off guard a
few times.
So let's replace them with safer `downcase-region-only` and
`upcase-region-only` functions which ONLY perform changes when the
region is active. And obviously changes are only applied to the text
within the region.
The auto-highlight-symbol package has a nicer interactive editing mode,
but it messes with the visual presentation for selected region and other
things. So let's go back to the less fancy but more reliable
highlight-symbol package.
Also let's properly disable both symbol highlighting packages in golang
and dart, where lsp-mode provides a better and more intelligent symbol
highlighting feature.
Smex has not been updated since late 2015. Amx was originally a fork of
smex, but as since evolved much further into it's own thing.
Among other things is supports other completing backends, and ivy with
it's fuzzy matching feels rather nice. I'm keeping ido-mode for
everything else, but specifically for M-x I'll give ivy a try.
I've been using doom-themes' doom-vibrant for long enough now that I'm
certain I won't be moving away from it anytime soon. So let's simplify
and strip away all other theme setup stuff.
It seems to cause very long freezes within magit itself, especially when
trying to commit. It seems to that the git diff command that's run in
the background hangs and/or takes a very long time to complete for some
reason.
Manually killing those git processes let's magit wake up instantly
again, in htop they're listed as:
git --no-pager diff --no-color -U0 <Git SHA of HEAD>
As I don't see myself using tabs all the time, but potentially wanting
access to them every now and then, I need to manually trigger one of the
tab / tab-group switching keybindings, or M-x centaur-tabs-mode to load
and enable it.
The undo history feature of undo-tree has been very unreliable lately,
to the point it fails to load undo history for nearly every file.
It seems the undohist package is a lot more reliable.
This module wraps around the fill-column-indicator and it's
fci-mode. This will enable easy switch-over to Emacs 27's native
display-fill-column-indicator feature.
Also create a new siren-display-line-numbers module and function that's
responsible for turning on the display of line numbers. Future changes
to how line numbers are displayed can now be done in a single place.
There are a few major modes which are not based on prog-mode, that I
want to behave like prog-mode. Previously each did nearly all the same
setup that's done via the prog-mode hooks. Now instead let's actually
run runs the hooks for prog-mode.
- Switch from highlight-indentation package to highlight-indent-guides.
- Activate visual indentation in a prog-mode hook, rather than doing
within each individual major mode. It was already done within all
major modes based on prog-mode anyway.
- Add new siren-display-indetation module and function as a central way
to enable visual indetation guides. This makes switching the
underlying package at some point in the future much easier.