From https://blog.chmouel.com/posts/emacs-isearch/:
- Bind `avy-isearch` to directly jump to currently visible matchings
- Use `consult-line` instead of `swiper` (this also removes a package dependency)
This avoids setting those variables in Emacs 29.x, which is still supported by this
configuration (it won't hurt much to set those variables in this case as well, though).
To this end, do not use :custom in use-package declaration, because
according to the documentation[1], `:custom` declarations can conflict
with settings done via `customize-option`. However, values set directly
in the configuration files should always be allowed to be overwritten by
custom settings done by the user – at least that's the general approach
of this Emacs configuration.
[1]: https://www.gnu.org/software/emacs/manual/html_mono/use-package.html#User-options
Give buffers running ephemeral `eshell` or `shell` sessions a name that
is different from the default name chosen by these commands, and only
restrict those ephemeral shell buffers to be displayed at the side.
This way, running the commands `eshell` and `shell` will yield windows
can be handled like any others and can be used for long-running
sessions.
This is mostly copied from the current implementation in `bookmark.el`,
adapted to non-filename bookmarks.
Note that we are now using the `location` slot in bookmarks to store the
URLs, and relocating bookmarks will set the `filename` slot to `nil`.
I keep a tree of Git repositories organized as submodules in my home
directories and want each of those repositories to be considered a
separated project. The repositories that are indeed a proper part of a
superproject I can ignore.
Shrink fist column, because my repositories are usually not that long.
Version information is also less important than upstream divergence to
me, so let's move this behind.
I haven't really used `company` in the recent past, so removing this
package does not hurt much. Maybe `corfu` will be more practical for
me, as it also only relies on builtin in-buffer completion and does not
require additional magic. However, I usually do not use popup
completion dialogs much, because I find them obstructive.
`projectile` is nice, but I rarely use a fraction of its functionality
and not having to use an external package for project management feels
more robust.
Seeing active minor modes directly might be informative. Try to reduce
the list of shown minor modes to only interesting ones using the (still
existing) diminish configuration. Remove now obsolete configuration of
the minions package.
`globel-company-mode` has not been used since quite some time, and
completion in the individual programming modes should be handeled by
LSP. Disabling `company-mode` also allows to use standard completion
features, which is nice.
This is to ease the configuration, as eglot is built in. lsp-mode might
provide a better programming experience, but I do not do much Python
programming nowadays.
Just learned about `use-short-answers` (from a comment [here][]).
However, when long answers are expected for confirmation, it's often an
indication that the question at hand might be serious enough to take the
time to type these out (as recommended by the docstring of
`use-short-answers`).
[here]: http://irreal.org/blog/?p=12595
Pandoc supports grid tables, which are supported in Emacs via `table.el`.
By default, the alignment markers for those tables (:) are not
recognized in table.el, so let's add those. Furthermore, editing grid
tables in `markdown-mode` does not work, since `jit-lock-mode`
overwrites the `keymap` text property that `table.el` relies on to
enable table editing. Using `edit-indirect` to edit those tables in an
indirect buffer where everything works nicely. Indeed, editing
`table.el` tables in Org also uses an indirect buffer, for the exact
same reason.
Whenever I try to check what I actually in the past couple of days, I
try to use a clocktable for this. However, those clocktables are
usually littered with small entries, i.e. entries where I only spent a
couple of minutes on (example: a quick chat with a colleague). Those
entries clutter the view for the relevant entries, making it hard to
make sense of past activities.
Restricting the clocktable to a certain depth somehow helps, but major
single tasks are hidden this way, and I usually want to see those.
The custom formatter added in this commit tries to alleviate this
situation by providing a mechanism to filter out those entries using a
minimum clocktime threshold. Let's see how this feature plays out.
Previously, links which end in a closing brackets got a non-breaking
space appended via a separate advice to `org-link-make-string`.
However, this did not work well with the other advice that removes
statistics cookies from links, mostly because I messed up the order in
which the advices were applied. To remedy this, the advice to remove
statistics cookies now also adds a non-breaking spaces as described
above.
When a headline ends on a closing bracket, Org adds an escape character
to the link text to distinguish the end of the link from the link
description. This escape character is a zero-width space, which is
counted for Org table alignment as one character, but the link itself is
displayed shorter, because the zero-width character is displayed as a
single pixel by emacs.
To work around this issue until the upstream fix is released, let's add
a final non-breaking space to those link descriptions to avoid the need
for the zero-width escape characters.
I found that opening this output on the right side to be annoying, so
let's switch try the bottom side window instead. This also works with
having an eshell buffer open at the same time, resulting in a nice reuse
of the right space of eshell windows that is usually empty.
With vertico, using the default `yank-pop` is nice enough. Furthermore,
yanking with helm does not update the current candidate selection when
in a minibuffer prompt (like for `find-file` or `org-insert-link`),
sometimes leading to confusion.
With `common-lisp-indent-function`, the indentation of `while` was not
correct – oops.
This change will break some current indentations, though. Stay tuned.