Switched pyright to basedpyright as it adds a couple noteworthy
rules and some functions that are otherwise exlusive to pylance.
Especially useful for me are semantic highlighting as well as
inlay hints (now that nvim supports it from 0.10 onwards).
LSP attachment would complain if it did not find an existing dict to
access in the `settings.python` section of the python lsp dictionaries.
This fixes that by creating an empty dict if nothing exists yet,
essentially functioning as null-check.
Since it in fact works wonderfully now, we re-enable FeMaco, allowing to
edit codeblocks in markdown-like environments (but really anywhere) by
simply invoking `<localleader>ce` ('codeblock-edit').
The mapping is only active in markdown and quarto files for the time
being, though more can probably be added.
The command itself works anywhere (`:FeMaco`), so can be used in racket
or norg or whereever.
flash.nvim was activating on searches which, while perhaps useful
for some people, was not for me. It stops the (incremental) search
as soon as no valid target exists which drops you back into normal
mode while still typing out the search and thus doing
who-knows-what.
The operator pending mode for the original jump mapping has been
removed to allow the 'surround' mappings from mini plugin to
always work correctly (`ysiw`, `csaw`, ...).
Added simple function to clear the screen but additionally re-run the
last executed command.
Mirroring my clear screen alias `cl`, this one is executed with `cll`
(clear-and-last) currently.
It comes in useful for me every now and again because I sometimes just
need a quick way to get rid of 'clutter' on my terminal (e.g. running
multiple rg invocations after each other, or diffs, or anything that
spews a bunch of stuff on screen and I want to find specific things
afterwards).
I am very used to running `cl` and then the second to last history item.
This makes those additional keystrokes unnecessary.
The newly added `:cmp` command can compare the contents of either two
files or two directories.
Works in two ways: If nothing is selected, compares the currently
hovered-over object with that in the other pane.
If things are selected, compares those instead.
Since treesitter is deprecating modules we switch to the new fork of the
plugin which works without any use of treesitter modules.
A painless switch since I only use the default settings of the plugin
anyway.
Tabular data was only opened in visidata if it was a csv file,
now we also correctly open xlsx, tsv, and even json files.
Also do not display an extra file title in the tabular previewer
since we already know which file we are pointing at to gain some
space.
Added privacy-aware redirects for goodreads (biblioreads) and
twitch (safetwitch). Safetwitch unfortunately requires
javascript enabled but is still heaps lighter of a website
than the official streaming one.
Farside does not offer redirects for these services yet so we
keep a manual list to redirect to for the time being.
When looking for the most up-to-date link to grab a scihub url
we used to use wikiless but now simply directly scrape from
wikipedia.
Functionality is not changed but should work much faster and
more reliably.
Add 'glances.nvim' plugin which shows the LSP references, definitions and
implementations in a very nice floating preview window. (Previously we
used Telescope which is still called if the glances plugin does not
exist.)
Can preview, scroll in the floating window, go to the destination, open
the destination in vert/horiz splits.
If the cursor was on the very first letter of a word it would fix
the misspelled word instead - now it should stay and fix the
current word under cursor instead.
Hide the years that ncpmpcpp always adds to the library albums, and
don't split them by date. Also importantly use 'album_artist' to
sort the corresponding artists instead of just 'artist' since beets
will often sort the individual acting artist for the latter, pulling
apart single songs from larger albums.
Lastly, add a 'data_fetching_delay' (of I believe 250ms) when quickly
scrolling through the artist/album list so it goes a little smoother
when loading data from remote sources.
Added 'Mod+Shift+L' as shortcut to open the associated file of a
papis library item. May make more sense in a dedicated river
mode but for now is good enough to get an overview of papis items
and open them if needed. Could also probably use an equivalent
of 'open edit file' and 'open note if exists' but again -
let's see how much I use it first.
Takes a second to open with my library size.
Since reorganizing my screens we have to switch the output
order of wallpapers. Would be really useful to be able to
talk to `swww` like kanshi with the full screen ID instead
of just the output number for wallpaper setting.
Flash.nvim provides a very tasty remote editing functionality which lightspeed
does not. Otherwise it behaves *mostly* the same. For now, I have the flash
search label functionality activated (default) but if it is annoying I will
turn it off (It injects labels into the normal neovim search. So if you search
a word and want to go directly there, you just press the label key as part
of the search and it jumps there. This might be problematic if I quickly type
something that does not exist but it picks up a non-existent letter as label
instead.)
Otherwise, the remote editing functionality is activated by
<operator>r<label><movement>, such as `yr<label>iw` to yank inside a word
somewhere else and stay at the current position. Similarly for example
`cr<label>$` to change from the label to the end of the line and then jump
back to the original position and so on.
Slightly adapt lualine to not have arrow section/component dividers,
but simple slanted lines. Gets rid of a tiny bit of noise while still
clearly subdividing the sections for me which I need.
Also, removed displaying the hostname. I know which host I am on
generally, and rarely make use of it so it's just unnecessary info
for me.
Tab display can be toggled on or off with `Ctrl+Shift+T`. The toggling
takes place per-window and not globally, so we can have a wezterm
terminal on desktop 1 with a tabbar and on desktop 2 without. Opening
a new terminal always defaults to an enabled tab bar.
Since I would like to keep my plugin configurations as modular as possible
I think it is a good first step to move the mini configuration directly
into the core plugin file where mini is loaded. Since this is the plugin
spec I want to take to basically any nvim installation I have, having it
in a single file makes it much easier to be portable.
Toggleterm, as nice as it is, is not one of my core dependencies.
I do not 'need' toggleterm on every nvim installation I have. Instead,
it can go into ui-related plugins since that is what it does, extend
nvim's UI functionality with new terminal dropdowns/floats.
Removed vim-exchange which, while an amazing functionality, is also
exactly replicated in mini.nvim (along with even more operators).
Uses slightly different mapping - not `cx<movement>` anymore but
`gx<movement>`. But this actually makes sense and fits in well with
my other g-prefixed operators (`gc` for comment and `ga` for align).
It is also the prefix for the other additional operators supplied
by mini.operators: `gs` for sorting text, `gm` for multiplying,
`gr` for replacing, `g=` for evaluating.
By invoking 'print' for ics files from neomutt we can simply
add it to our local calendar directly from the interface.
Neat little 'cheat' to provide custom functions for specific
file types.
Since we already have the mini library installed in our setup, we don't
need to make use of external base16 plugins. It provides the same exact
functionality, and seems slim and bug-free. Nothing changes for the
user, but we have 1 plugin less to take care of (and it was
mis-behaving in new versions anyway).
Also set lualine to be reloaded on theme switch so it takes on the
colorscheme as well.
Added mapping to insert a link to an existing Zettel with
`<localleader>ni` (note insert), either from normal mode which creates
the complete link, or from visual selection mode which surrounds the
current selection (as visible link text) with the link.
New zettel links still use my own implementation so I have full control
over their naming scheme.
When switching the current buffer to the Zettelkasten index page
(`<leader>ni`), we now also switch the working directory to the
corresponding notes directory.