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.
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.
Setting `vim.g.disable_autoformat` to true will disable automatic linting globally,
though I have not set up commands or mappings for manual linting. It is also
missing buffer-local linting which could be copied from buffer-local formatting.
Moved loading and setting up file watching to the loading of the plugin itself.
Will make it a little more self-contained and not crash or complain if we are
missing the plugin.
HACK
At the same time, reverted back to pinned base16 commit since the new one did
not work again. Gotta figure it out at some point but no time now.
Since I am already using fidget.nvim for lsp notifications, might as well use it
for other, more explicit ones. Removed nvim-notify in favor of this since I like
how unobtrusive the notifications are (and let's be honest, most you don't need
to pay attention to, instead they just take you out of flow).
Using mason-tool-installer we ensure everything is installed correctly.
Need to improve the collection of things to install. Currently we just
do everything in lsp configuration file, even the non-lsp things
(formatters/linters) which should be sourced where they belong not
in that file.
Moved the mapping to show lsp info window from `<localleader>li` to
`<leader>vs`.
Local leader +l mappings should be reserved for lsp functionality,
while we have a whole +v layer to grab (meta) information about our
vim installation. It fits in there much better.
In the process of moving away from null-ls, added formatting with the help
of conform.nvim. Brings one new command, :ConformInfo which can also be
reached via `<leader>vc`.
AutoFormat on saving remains disabled by default but can be enabled with
:FormatEnable (and disabled again with :FormatDisable) or quickly through
`<localleader>lL`.
Manual formatting works like before with `<localleader>ll`. Uses the
formatters set in the plugin (similar setup to null-ls before) but
automatically falls back to lsp formatters if it does not have its own
and lsp has one enabled.
Mappings preceded by <leader>s 'show' something so removed a lot of the 'toggle'
wording from their descriptions.
Subsumed the toggleterm toggles under this menu since they 'show' a term window
(lazygit or ipython).
Changed Aerial mappings to show navigator by default (`<leader>so`) and the
sidebar outline only on capital version (`<leader>sO`) since this mapping is
used less often.
Removed broken molten-image setup.
Image nvim works mostly well (slow on wezterm but that will always be the case
with kitty protocol for now as far as I know).
Would love to be able to toggle images on/off dynamically but I don't see a
way to accomplish that now. (or really, get to any option of the plugin).
Molten itself also works well - the output is displayed more nicely than for
the Magma plugins and everything continues working mostly well (or rather,
just as wonky as I had it set up on my older magma install :)
For now, the molten - image.nvim integration seems to not work at all -
it simply errors out when it would produce an image as output. No clue why
and it also complains about the wrong image provider (which I have taken from
the molten readme). No time to bugfix now but maybe at some point.
To do - find a much better way of installing the image.nvim required
luarock magick - done manually with hardcoded path in setup now
Also extended the old `py` alias to a full-blown script which will in
addition to detecting the python repl also find any running molten
session for the current directory (i.e. any running jupy kernel) and let
the user choose the right one if there is multiple. Will then default to
starting a kernel-aware repl environment (euporia or jupyter-console).
Added a very simple `-c` option which lets you choose python command to
run manually.
HACK
Added support for nushell lsp (not yet available to automatically install
through mason integration) and for nushell treesitter (VERY manual
installation as of right now).
Will work for testing out the shell and its nvim integration but
definitely has to be integrated better in the future.
When writing something we often want to ideally hide the long comments
added to the end of any line in-progress as virtual text currently.
This simply adds an auto-command to hide when entering and show again
when exiting insert mode, simple but hopefully useful.
If you want to hide buffer diagnostics for any reason, there is now a
quick mapping reachable through the usual lsp submenu: `<localleader>lo`
(I suppose the mnemonic would be 'lsp off').
It toggles them enabled and disabled and only affects the current
buffer.