Commit graph

540 commits

Author SHA1 Message Date
091274fd82
nvim: Add custom lazy loading events
Using lazy-events.nvim we can create custom events (such as the LazyVim
equivalent LazyFile event) based on other events (i.e. a grouping), on
globbing files in the current dir, or on arbitrary custom logic.

For now, any plugins which require files to be present to work are
loaded with the 'LazyFile' event.

Any plugins which need to be loaded when opening a directory with vim
are loaded with the 'StartWithDir' event (essentially only neo-tree for
now). Similarly mini.starter is loaded on the `StartScreen` event.

Any plugin which only makes sense to run in a `.git` dir (gitsigns etc)
will only run on the `LazyProject:git` event.
2025-06-21 16:44:39 +02:00
71ddce4119
nvim: Fix nvim-dap lazy loading
Switch its key maps to anonymous functions to not instantly run
'require' when creating the plugin load spec.
2025-06-21 16:44:39 +02:00
0d8208d722
nvim: Add highlights to nvim-dap repl 2025-06-21 16:44:38 +02:00
3454c60c44
nvim: Add nvim-dap configuration
Automatically opens dap-view when in debugging session (and closes when
done), sets some breakpoint jump logic and makes the gutter symbols
nicer.

Adds keybinds for most of the dap operations with
`<localleader>d<something>` where something is the operation (i.e. `c`
for continue, `b` for breakpoint and so on).
2025-06-21 16:44:38 +02:00
bbab0f1674
nvim: Add file bracketed movement
For now there is no strict reason to have it disabled, even if I don't
use it much. At the same time I can always re-disable it if I need the
bracketed movement for something more important later down the line.
2025-06-21 13:58:33 +02:00
f558a68976
nvim: Change diagnostic movement to ][e
In preparation for adding debugging we change the bracket movement
between diagnostics from `[d`/`]d` to `[e`/`]e` instead.

This will be a big switch in muscle memory for me and I hope I can adapt
to it pretty quickly, but at least mnemonically it still makes sense
since we jump between [E]rrors (or warnings but good enough).
2025-06-21 13:58:33 +02:00
8f9954bd8a
nvim: Fix bracketed configuration
mini.bracketed never received its configuration which is the reason I
had some issues in the past. It was simply wrapped in one too many
layers of tables. Now works as intended.
2025-06-21 13:58:32 +02:00
22e8f9761f
nvim: Version-pin treesitter again
Treesitter had to run as a non-versioned (trunk-tracking) plugin for a
while since there was no updated version released.
Now that it is we can return to a nicely versioned tag.
2025-06-21 13:58:32 +02:00
bb11a12f25
nvim: Remove criticmarkup
Sad but I'll have to face it - I've never successfully used
criticmarkup in, by now, 6 years of professional academic writing.

The plugin also does not work as well as it should (anymore?) with my
current neovim setup. The `:Critic` command works neither with accept
nor reject and the different highlights are presumably overwritten by
treesitter queries.

Now, all of those _could_ be fixed but as I say above, I have never
successfully used the markup. Perhaps one day it could be implemented in
a slick nvim lua plugin with hiding and extmarks which mimicks a truly
nice review editing experience. But not today.
2025-06-21 13:58:31 +02:00
b9c60ffde6
nvim: Update plugins 2025-06-21 13:58:31 +02:00
9f415f8ccc
nvim: Fix render-markdown naming scheme
Old versions of render-markdown.nvim suggested renaming it to another
plugin name, but this seems to not be the case anymore. I removed both
for the time being and it fixed a long-standing issue I had with the
plugin.
2025-06-21 13:58:30 +02:00
35d1f8b03d
nvim: Improve mini.pairs triple mappings
Whenever there is a left-over quote (') or double quote ("), if we want
to 'close' it, mini.pairs will by default add a new pair (e.g. """)
instead. This simply changes it to close the pair. Makes some
'double-quote' pairings harder (e.g. we have a python dict: {"name"})
and want to add another {"name""value"} into it, but this happens
relatively rarely in my use cases. The first on the other hand happens
frequently enough to be an annoyance.

Additionally, did the same for back-ticks so we can more easily create
triple backticks ``` which are essential in many literate programming
markup languages (markdown, quarto, rmd and so on).
2025-06-21 13:58:30 +02:00
b5198c385c
nvim: Switch zenmode to new toggle map
Like other 'switch' toggles, turn on/off zen-mode with `]sz`/`[sz`
respectively.
2025-06-21 13:58:29 +02:00
a3b1efeb05
nvim: Set default tabwidth in md, quarto to 2
Makes it easier to read lists, and also easier to work with
markdownlint even if it has not been configured for a given repository
(since its list indentations default to 2 spaces).
2025-06-21 13:58:26 +02:00
c2bdda9acf
nvim: Fix build of markdown-preview
For some versions apparently markdown preview could not be built anymore
with the suggested installation in the readme. Instead it requires the
build function to be called through a string from lazy.

See:
https://github.com/iamcco/markdown-preview.nvim/issues/690
2025-06-19 22:35:50 +02:00
688a001e01
nvim: Remove fzf-lua version adherence
Fzf-lua is unfortunately not released in versioned updates, which means
following the main branch instead of any versioned tags.
2025-06-19 22:35:49 +02:00
8f15fb404a
nvim: Fix path completing on insert mode return
When hitting return in insert mode we would enter a path completion.
With this change the completion is moved from <c-m> (i.e. return) to
<c-t>.
2025-06-19 22:35:48 +02:00
90f3add4db
nvim: Update plugins 2025-06-19 22:35:48 +02:00
bcbe527ac6
nvim: Add mcphub for mcp llm agent installation 2025-06-19 22:35:47 +02:00
7447cb3354
nvim: Turn image preview setting into switch
Can be toggled with `]sp` ([P]review images _everywhere_), or with `[sp`
([P]review images _only at cursor_).
2025-06-12 22:01:18 +02:00
b0ed357037
nvim: Move switch options from ]o to ]s maps
Function is the same, `]s` for [S]witching something 'off', and `]s` for
[S]witching something on.
2025-06-12 12:15:34 +02:00
3f4c057ffe
nvim: Add option switch to italicize/normalize comments 2025-06-12 12:15:34 +02:00
6435a7b51a
nvim: Improve marksman diagnostic filtering in zk dirs
When in a ZK dir I do not want any marksman diagnostics polluting my
interface since the linking in (my) ZK is based on anchor IDs and not
full filenames/titles. Thus, every single link will be detected as
non-existent by marksman.

This commit ensures that when in a zk-enabled directory, each
non-existent link diagnostic will be filtered before presenting
diagnostics.
2025-06-10 18:31:41 +02:00
99098f56a1
nvim: Move typescript and vue LSP config into lsp dir 2025-06-10 18:31:40 +02:00
bb6f401ff3
nvim: Move arduino LSP config into lsp dir
Also ensure that clangd and arduino-cli are installed since the lsp
otherwise won't work.
2025-06-10 18:31:39 +02:00
07e820ac00
nvim: Move ruff/pyright lsp settings into after/lsp/ dir 2025-06-10 18:31:39 +02:00
8dd268caf2
nvim: Allow registering lsp without providing configuration 2025-06-09 14:38:14 +02:00
de1591c7a7
nvim: Switch to maintained emmet lsp
Called 'emmet_language_server' instead of 'emmet_ls'.
2025-06-09 14:38:14 +02:00
7cc7195f9a
nvim: Update nushell lsp installation
Nushell lsp is now integrated directly into the 'nu' command. This
update stops mason from trying to install a 'nushell' LSP and simply
activates the nu-internal LSP if it finds the correct executable
instead.
2025-06-09 14:38:13 +02:00
3d1f925f78
nvim: Update mason-lspconfig for 2.0 2025-06-09 14:38:13 +02:00
63c6c81f6e
nvim: Fix ltex disabled autostart
Fixes #1ef7570.

We implement our own autostart-aware lsp register function. Any lsp
which has the option {autostart=false} set at their config root will be
not automatically enabled and can instead be enabled on demand.
2025-06-09 14:38:12 +02:00
d8458ae010
nvim: Update checkbox markdown states
We now have the usual 'undone' ([ ]) and 'done' ([x]) states, but
express 3 further ones that are _somewhat_ standardized:

- [o] this one is 'doing', in-progress
- [-] this one is 'indeterminate', we're not sure
- [~] this one is 'deleted', never to be done
2025-06-09 14:38:11 +02:00
fad8f65214
nvim: Improve which-key group rendering
Moved most group definition functions into plugin 'init' functions so
they run at the beginning and are displayed more reliably.
2025-06-09 14:38:10 +02:00
4e7b64aad0
nvim: Add gitcommit and history extensions to codecompanion 2025-06-09 14:38:10 +02:00
1397fee17a
nvim: Enable fzf-lua integration for codecompanion
Since version 15.5.0 it supports showing selection menus with fzf-lua,
so we enable it here. Hardcoded for now.
2025-06-09 14:38:09 +02:00
19f3cd3457
nvim: Add copilot status to lualine 2025-06-09 14:38:09 +02:00
d3cdd0b30a
nvim: Fix llm models used by codecompanion 2025-06-09 14:38:08 +02:00
9efbcbfa01
nvim: Replace copilot.vim with copilot.lua
Makes the plugin less intrusive (will now only autocomplete on <M-p> or
<leader>ap). Can select suggestion with <M-]> or <M-[>, and accept with
<M-p> in-text or <CR> in-panel.

Still automatically started when invoking CodeCompanion chat.
2025-06-09 14:38:08 +02:00
f160a5b4a7
nvim: Update zk-nvim
Changes filetypes option placement in configuration.
2025-06-06 22:30:35 +02:00
21e80aeb87
nvim: Fix markdown rendering in codecompanion buffers 2025-06-06 15:58:45 +02:00
e912c3f535
nvim: Add vue language LSP/Treesitter/formatting setup 2025-06-06 15:58:44 +02:00
1f05e0775d
nvim: Add mason env utility function
Should return the mason environment for lsp servers to be able to set it
in the 'core/languages.lua' list.

However, currently it is initialized too early (I think), before
mason.nvim, and thus never gets the initialized env var.
2025-06-06 15:58:44 +02:00
9900750e81
nvim: Change creating lsp servers into local function 2025-06-06 15:58:43 +02:00
d2432e0039
nvim: Extend lsp configuration with multiple declarations
So far if LSP declarations in 'core/languages.lua' were duplicated (e.g.
the 'astro' filetype and the 'vue' filetype both declare the
'typescript' lsp), one would simply overwrite the other. That is fine as
long as there is no custom setup, but if there is one of them is lost.

This commit changes it so that the different configurations extend each
other. The 'latter' one still overwrites the former but this is just
what must happen if there should be conflicting setups. 

May increase loading time slightly.
2025-06-06 15:58:43 +02:00
1d5fbef0fb
nvim: Use new non-programmatic lspconfig interface for 0.11 2025-06-06 15:58:42 +02:00
5913948705
nvim: Check linter existence before setting options
We only change 'markdownlint' arguments if it actually exists in the
nvim-lint 'linters' table.
2025-06-06 15:58:41 +02:00
cf9a25d1c6
nvim: Use uv for running python coverage
Still needs to be improved and less hardcoded but for now at least we
use the tool that I use every day.
2025-06-06 15:58:41 +02:00
2bdfb291ae
nvim: Add jj source to neotree 2025-06-06 15:58:38 +02:00
d2be1c8795
nvim: Change mapping for printing Fidget message history
Since it is technically vim-internal (and relatively rarely used unless
to debug things), I have moved the shortcut for this function from
`<leader>sh` (show-history) to `<leader>vp` (vim-print-messages).

The 'p'-suffix is a little unfortunate but currently h/H/m are all taken
in this vim-internal submenu.

The reasoning behind this is that the 'show' menu is intended primarily
for user-facing, middle-of-work tasks and windows that help me
accomplish goals when actually working and getting things done.
Showing the fidget history does not do that, but allows
introspection into the vim editor history. So, it should accordingly
live under the 'vim' menu. Additionally, it frees space in the
'show' menu and lets me/the user forget about the functionality
until it is needed.
2025-05-22 14:00:08 +02:00
15015e61e0
nvim: Add neowarrior plugin
Allows quickly listing and working with taskwarrior tasks from within
neovim. Show a floating `:NeoWarriorOpen` window with `<leader>sw` or a
vertical neowarrior buffer with `<leader>sW`.
2025-05-22 14:00:07 +02:00