Commit graph

382 commits

Author SHA1 Message Date
a665648b1e
nvim: Update plugins and lazy loading events 2024-06-13 16:33:33 +02:00
6d82162f16
nvim: Switch basic file editor to mini.files
While we can still reach vifm through the `<leader>E` mapping, the basic
`<leader>e` file editor mapping has been switched over to the mini.files
browser.
It works somewhat like oil.nvim, in that you simply get a buffer to work
with that you can delete/move/copy/rename lines in and after doing a
synchronization (with `=`) all changes are actually applied to the
files.
Since I mostly need the quick file opening to do some quick renaming
operation or want to open an adjacent file this seems like the quickest
and most painless option to do so. For larger operations I still have
access to the full vifm experience.
2024-06-07 11:08:56 +02:00
4f67a6d3ca
nvim: Fix which-key conditional usage if not loaded
The only left-over which-key invocation which did not check for its
existence beforehand.
2024-06-07 09:56:55 +02:00
57f2fbd5fe
nvim: Replace vim-easy-align with mini module
Mini.nvim now also comes with an align module which perfectly mimics
the behavior of my beloved junegunn vim-easy-align plugin. It is almost
sad to see such an old friend go, but ultimately it removes a redundant
plugin and switches the setup ever so slightly more towards being lua
based.
The mini module also allows more advanced lua-based modifier pattern
shenanigans but so far I don't need any of the advanced stuff: I just
need a quick way to align markdown tables and similar, and this one does
exactly the same as before, only with a couple nice additional options
and previews. It still uses the same key chord `ga<where>` but also
offers `gA<where>` which apparently comes with a nicer preview. My
fingers will probably stick to the former for the time being.

One thing that changes is that, by default, it will align *all*
separators not just the first instance on each line. To mimic the old
behavior you can, in alignment mode, hit `f` to enter a filter and enter
`n==2` to get the same result as default vim-easy-align (the first pair
of delimiters are aligned).
Also it comes with some nice extra functionality like trimming
whitespace by just hitting `t` when in alignment mode
2024-06-07 09:50:26 +02:00
5c4afcb0b3
nvim: Update plugins 2024-06-06 22:36:16 +02:00
94c2d83c86
nvim: Fix trouble for major version update
Fixed for new invocation usage and removed deprecated commands.
Added telescope functionality (to push results into trouble) though I am
not quite happy with the close coupling yet. Have not found an easy way
to only have this mapping be created if trouble exists.
2024-06-06 22:32:27 +02:00
1771a61334
nvim: Use peek for markdown preview where possible
On machines that have deno installed, we use peek instead of
markdown-preview for html-based previews of md files. The preview is
more responsive and in a neater package, as well as just not relying on
any vim plugin stuff to the same degree.
We still fall back to the old markdown-preview if no deno executable is
available.

We also change the key maps slightly to prepare for future 'prose' or
'preview' based mappings: All mappings are registered under the
`<leader>p` layer, with md preview being `<leader>pp` and various
mindmap operations moved to `<leader>pm`.
2024-06-06 20:50:37 +02:00
b69548fa38
nvim: Load nvim-surround as VeryLazy
This fixes the somewhat confusing issue of trying to use any of the
surround operations before entering insert mode at least once in a file
(so, probably as the first operation). Before, the plugin would just
silently fail.
Now it simply loads very lazily, which does not affect load times
strongly.
2024-06-06 20:45:53 +02:00
8748b66344
nvim: Switch python lsp to basedpyright
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).
2024-06-06 16:23:44 +02:00
4697e09472
nvim: Ensure pythonPath setting always finds entry
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.
2024-06-06 16:23:43 +02:00
b37650ac03
nvim: Re-enable femaco plugin
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.
2024-06-06 16:23:42 +02:00
989081abfc
nvim: Only register markdown which-keys if available
Check for availability of which-key plugin before setting up layer
key descriptions.
2024-06-06 16:23:41 +02:00
405af0f020
nvim: Move util to core.util module
Moved all utility functions from their own directory into
the core functionality direcotyr as a single file.
2024-06-06 16:23:41 +02:00
e939305df3
nvim: Update plugins 2024-06-06 10:25:08 +02:00
7fd32f873a
nvim: Change cmp results order and icons
Made lsp and LaTeX icons a little less obnoxious,
and fixed order to better load more pertinent results.
2024-06-06 10:12:24 +02:00
434974284a
nvim: Fix flash for search and operator pending
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`, ...).
2024-06-06 09:58:25 +02:00
cb21789f3a
nvim: Add mapping for inlay hints
`<localleader>li` will show inlay hints if they are available
for the active LSP server.
2024-06-06 09:45:34 +02:00
c03b88c6cc
nvim: Formatting 2024-06-06 09:43:20 +02:00
418670790e
nvim: Update rainbow brackets for deprecated ts modules
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.
2024-05-28 18:31:43 +02:00
1e7e6f082d
nvim: Refactor linter and formatter loading
Put them into tables next to each other in preparation for more
dynamic module loading.
2024-03-01 10:37:25 +01:00
bbe972cfc2
nvim: Fix mini mapping descriptions 2024-03-01 10:36:35 +01:00
b0aabf719a
nvim: Add lsp references preview window
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.
2024-03-01 10:36:16 +01:00
fcaaba9e8d
nvim: Improve auto spellfix mapping
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.
2024-03-01 10:33:36 +01:00
da8a9a02f9
nvim: Update spellfile 2024-02-24 09:13:39 +01:00
572f7b29a4
nvim: Switch lightspeed to flash
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.
2024-02-18 11:14:37 +01:00
4c5d18d7e4
nvim: Change lualine design
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.
2024-02-18 10:24:46 +01:00
0c7ad09789
nvim: Move mini configuration into core plugin file
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.
2024-02-15 09:02:39 +01:00
7c37baa565
nvim: Move toggleterm out of core plugins
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.
2024-02-15 08:53:55 +01:00
9fb1f958e6
nvim: Remove fixed term sigwinch timer 2024-02-15 08:52:14 +01:00
1d70d0c649
nvim: Switch starter screen recent files order
First show recent files of the current directory, then follow up with
general recent files.
2024-02-10 14:14:17 +01:00
89ea7e9cf2
nvim: Switch to mini operators plugin
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.
2024-02-10 14:07:07 +01:00
7e65c42001
nvim: Update plugins 2024-02-10 13:39:44 +01:00
683cd64b26
nvim: Lazy load editing plugins after entering insert 2024-02-10 13:37:14 +01:00
7e3377d60d
nvim: Update spellfile 2024-02-10 13:36:42 +01:00
cf153808a2
nvim: Switch to mini base16 plugin
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.
2024-02-10 13:27:37 +01:00
fbceea242d
nvim: Fully switch to zk-nvim
Removed my own plugin in favor of zk-nvim integration.
2024-02-07 22:29:48 +01:00
8512bbf2cf
nvim: Add existing zettel link insertion mappings
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.
2024-02-05 15:44:07 +01:00
22b70a0639
nvim: Enter notes dir when calling zettel index
When switching the current buffer to the Zettelkasten index page
(`<leader>ni`), we now also switch the working directory to the
corresponding notes directory.
2024-02-05 15:07:22 +01:00
32bf7d1f38
nvim: Update packages 2024-01-18 10:25:00 +01:00
ba56e6f546
nvim: Add ft detection for dvc files
Added ftdetect folder for files from dvc.
2024-01-11 17:59:46 +01:00
506b6cb2f6
nvim: Update plugins and spellfile 2023-12-30 21:33:21 +01:00
8e3ef257d3
nvim: Create global option to disable linting
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.
2023-12-30 21:33:16 +01:00
c977bfea06
nvim: Simplify linter loading function 2023-12-30 21:33:15 +01:00
a5fee8959f
nvim: Move base16 functionality to plugin config
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.
2023-12-30 21:33:14 +01:00
df10d40510
nvim: Remove reliance on lspconfig for python path
Localize the path joining function to the utility module.
2023-12-30 21:33:11 +01:00
49f6a0ef58
nvim: Refactor plugin mappings to loading code 2023-12-12 23:24:16 +01:00
ca7d43ba51
nvim: Update plugins and lazy loading 2023-12-12 15:43:44 +01:00
116cbe79be
nvim: Refactor lualine configuration
Configure in its lazy loading file to not have an extra file flying around.
2023-12-12 15:11:14 +01:00
0d017f7747
nvim: Unpin base16 plugin
Since the newer versions are working well on my system again, we can
unpint the pinned commit from base16.
2023-12-12 14:49:40 +01:00
0bdd406f56
nvim: Replace popup notifications with fidget
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).
2023-12-12 14:40:58 +01:00
75334e9e87
nvim: Improve spellfile download messages 2023-12-12 14:08:17 +01:00
c27e697870
nvim: Refactor core setting loading into core module
Move everything pertinent from init.lua to the core module init file
itself. For now the only thing remaining in the init lua is requiring
the core.
2023-12-12 14:07:43 +01:00
d459d79de0
nvim: Update spellfile 2023-12-12 12:11:03 +01:00
1e47459801
nvim: Add endwise plugin to treesitter
Will automatically add function end tags for a bunch of languages, most importantly
for me to lua and bash.
2023-12-12 12:11:02 +01:00
ea7b2e632e
nvim: Configure image.nvim lazyness
Set up to load on the file types it affects.
2023-12-12 12:11:01 +01:00
c550a9d514
nvim: Move Molten info toggle to vim-meta key group
Moved mapping from `<localleader>cI` to `<leader>vn` (for molteN).
2023-12-12 12:11:00 +01:00
ea224ebbc1
nvim: Lazy load zen-mode, nvim-cmp
Correctly lazy load nvim-cmp as much as possible.
Loading it with certain events but also before lsp.
See here: https://github.com/hrsh7th/nvim-cmp/discussions/688#discussioncomment-1891544
2023-12-12 12:10:34 +01:00
eec90ad7e2
nvim: Add automatic mason tool installation
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.
2023-12-12 12:10:33 +01:00
ab06ef922b
nvim: Replace null-ls with nvim-lint
Fully replaced null-ls. Will need more tweaking on the nvim-lint setup but
works generally for now. Works well in tandem with conform formatter.
2023-12-12 12:10:32 +01:00
5ccf8bc1fc
nvim: Add formatting expression and more filetypes 2023-12-12 12:10:28 +01:00
bad6200bd2
nvim: Move Mason quick mapping to plugin setup 2023-12-12 12:10:27 +01:00
49692601da
nvim: Change Lsp info mapping to vim layer
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.
2023-12-12 12:10:26 +01:00
293dc8a467
nvim: Add conform.nvim formatter
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.
2023-12-12 12:10:25 +01:00
1def627edd
nvim: Turn off treesitter highlights in big files
Files above 1000 lines, 300 linelength or really big filesize.
2023-12-12 12:10:15 +01:00
7f112816b0
nvim: Remove TSPlayground plugin
Has been superseded by internal functionality, just run `:Inspect` or
`:InspectTree`.
2023-12-12 12:09:58 +01:00
5d8177b1b5
nvim: Update +show mode mappings and descriptions
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.
2023-12-12 12:09:30 +01:00
8d9b67cb04
nvim: Add Trouble.nvim plugin to quickly show diag 2023-12-12 12:09:29 +01:00
c487da69a8
nvim: Add molten and image.nvim plugins
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.
2023-12-12 12:07:41 +01:00
297f2c87a3
nvim: Update plugins 2023-12-05 18:01:15 +01:00
55a8a18feb
nvim: Fix spelling language
Accidentally put the wrong british language into the global spell setting.
Now it uses the correct one.
2023-12-05 18:00:32 +01:00
4d886e7e6d
nvim: Add experimental nushell lsp and treesitter
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.
2023-12-04 09:28:22 +01:00
78f7112c11
nvim: Update plugins 2023-12-04 09:27:03 +01:00
dfaed8c9dd
nvim: Update plugins and spellfile 2023-11-15 14:25:09 +01:00
b45296765a
nvim: Hide virtual-text diagnostics on insert
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.
2023-11-15 13:28:35 +01:00
c3fe4cdc58
nvim: Add mapping to toggle buffer diagnostics
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.
2023-11-15 13:22:19 +01:00
8be40f5630
nvim: Update plugins 2023-10-05 18:28:15 +02:00
117b692dae
nvim: Map zenmode to global show/hide toggle group
Mapped de-/activating zen mode to <leader>sz which means it belongs
to the '+s' group of mappings which generally activate or deactivate
showing something in nvim.

Previously belonged to <leader>vz which rather is a group changing
something about nvim configuration itself.
2023-10-05 18:24:07 +02:00
0a686ab647
nvim: Add mapping to enable British spell check
Updated mappings to enable spell checking slightly: <ll>ZZ enables all
languages (german, us, gb) <ll>ZE only US spellcheck, <ll>ZB GB
spelling and <ll>ZD German spelling.
2023-10-05 18:22:11 +02:00
681e35b92c
nvim: Add markdownlint diagnostics to md, quarto
Added markdownlint. Will be used by default on markdown and
quarto filetypes.
2023-10-05 18:20:00 +02:00
29ff9db62b
nvim: Pin base16 plug to last working version
HACK base16 plugin changed something in its internal application
of highlights so that not all highlights get correctly applied
when my nvim setup boots up. Have to investigate.
2023-10-05 18:19:20 +02:00
444676caac
nvim: Add markmap to build mindmaps
Added markmap plugin to make mindmaps from markdown. Uses
headings for leaves, and works pretty automatically.
Testing its functionality longer-term for now.
2023-10-02 20:06:56 +02:00
065488e57d
nvim: Remove debug printing of activated python venv
Removed notification on activating a python venv.
It should just work, transparent to the user and we do
not need a big ol' notification each time we enter
a file.
2023-10-02 19:21:29 +02:00
bfb62e6783
nvim: Add markdown code evaluation mappings
Can edit (`<ll>ce`), jump-to (`]c`, `[c`), insert (`<ll>co`,
`<ll>cO`) and run (`<ll>cc`) code cells in markdown files.

They will not be evaluated as part of an overall repl but
only stand-alone!
2023-10-02 19:20:44 +02:00
8b603b8c66
nvim: Improve lazy-loading of select plugins
Aerial (on command), test-runners (on python only) and other plugins
are now only loaded when actually required.
2023-10-02 19:18:29 +02:00
bf2e74265c
nvim: Auto format prose soft with word-linebreaks
Automatically set formatting mode to soft for markdown, text and asciidoc files.
Also automatically format on startup (no lazy-loading), and thus have
nicely word-ending linebreaks (a word will not just be cut off wherever the
line is over but will be fully moved to the next line instead).
2023-09-25 19:54:38 +02:00
490232d18a
nvim: Update plugins 2023-09-25 19:44:11 +02:00
23793795d6
nvim: Add coverage support for python testing
Use `,tp` to load a coverage report and show it in the gutter.
Use `,tP` to toggle it off and on. Use `,ts` to show a summary
instead.
2023-09-25 19:41:27 +02:00
497b19fcbe
nvim: Add util function to grab plugin conditionally 2023-09-25 19:39:51 +02:00
41934d3000
nvim: Attach ruff client to active python environment 2023-09-25 19:38:57 +02:00
8a5381a4aa
nvim: Add test setup for python to ide
Added neotest with some mappings to run tests and view
outputs, as well as neotest-python for now to make it
work under python.

Added registering with which-key if it exists.
2023-09-23 08:37:29 +02:00
e016b0a056
nvim: Remap lsp go to next/previous error
Mapped to `[D` / `]D`, reflecting the capitalization of going to the
next general diagnostic (`[d`/`]d`).
Now it is similar to spelling mistakes and spelling errors
(`]s[s`/`]S[S` respectively).
2023-09-23 07:43:49 +02:00
dc9f9373fe
nvim: Remove obsolete mappings
Removed easyread and nabla toggles since the plugins are removed.
2023-09-23 07:41:37 +02:00
6254c92bd3
chore: Update qutebrowser redirects, nvim spellfiles 2023-09-16 11:29:22 +02:00
061e341253
nvim: Remove speed-reading plugin
The 'bionic-reading' mode, I have never used successfully.
It distracts rather than enabling me to move over text
more quickly.
2023-09-16 11:22:03 +02:00
f31b1b29ed
nvim: Enable marksman lsp for quarto files 2023-09-16 11:21:01 +02:00
c7393c9114
nvim: Move between git conflict hunks with ][H
Since we move between git chunks with ]h/[h, we may as well
move between git *conflict* chunks (should there be any)
with ]H and [H mirroring the diagnostics/error setup
situation.
2023-09-16 11:21:00 +02:00
60ae2e43c3
nvim: Switch signature help to cmp plugin
Simply switched signature help. Need to extensively test, but to
be perfectly honest the previous sig help plugin did not work all
the time either.
2023-09-16 11:20:59 +02:00
fd12c2b962
nvim: Remove unnecessary variable declaration 2023-08-29 22:38:08 +02:00
0033116a73
nvim: Refactor py environment detection function 2023-08-29 22:37:38 +02:00
a9d7f96ad2
nvim: Update plugins 2023-08-25 16:32:51 +02:00