Packages that need to be loaded on emacs startup, should just be loaded
through use-package in a non-deferred manner.
It makes no real difference to startup, loading the packages either
slows down emacs before "startup" is complete, or right after it
completes. End result is that Emacs is unresponsive for basically the
same amount of time regardless.
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.
On my 2016 MacBook Pro correction times are around 200ms with the
daemon, compared to around 3-4 seconds without.
There might be some issues if bundler depends heavily on gems included
in the project, but we'll see how that goes.
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.