Added an item to quickly create a scratchpad to the mini.starter
template.
The difference to opening a default empty buffer is that it is seen as
ephemeral (i.e. will not complain if you close vim without saving) and
it sets the default filetype to markdown.
Closes 753ed1f.
Update and fix small breaking change in new conform by specifically
setting lsp formatting as fallback. Move to explicit ruff format import
organizing and remove tailwind css lsp for the time being.
Snippets can be jumped through more easily now since jumping between
snippets (with <tab> and <s-tab>) takes precedence over completions and
jumping through completions. That means when a snippet has been expanded
we can now cycle through its insertion points without worrying about
activating completion items instead.
Additionally, only jump through insertion points as long as we are
within the snippet boundaries with the cursor, so it doesn't surprise
jump later when pressing <tab> from somewhere else in the file.
When a `.zk` directory is found in the current root directory of the
marksman project, the lsp is disabled.
This is because zk delivers its own lsp server with correct following of
note ids instead of full file names which marksman expects and fails to
find.
Since ltex-lsp eats quite a lot of resources and takes a while to start
up we don't always want it enabled for every prose file. This commit
ensures that it only starts up when spellchecking is enabled for a
buffer (through the custom user command `SpellToggle`).
Added a user command `SpellTogle` which toggles on or off spellchecking
in the current buffer. Can be invoked like that, or with one or multiple
language to spellcheck (e.g. `SpellToggle en_us en_gb`). Can also be
invoked with a bang to always enable instead of toggling.
Publishes a user event called `SpellEnable` or `SpellDisable` depending
on the aciton which autocommands can listen for.
Renamed from `docker` to `hub` since I otherwise always accidentally
search the actual docker hub when I want to find solutions for docker
issues.
Also sorted search engines alphabetically.
For some reason molten-nvim fails sometimes when lazy loading. This
simply turns lazy load off for the time being but I should instead
investigate a little more what is actually causing it.
Fixed issue when pynvim did not exist in the environment but we tried to
invoke a molten-nvim command. Now we first fire up python to check for
pynvim existence. This takes a moment so we do it asynchronously and
cache the result for the rest of the program runtime.
Also we only show the molten icon if we are actually connected to a
running kernel.
Switch out mason-tool-installer for mason-conform.nvim and
mason-nvim-lint as respective wrappers for automatically installing
formatters and linters.
Follows the same principle as mason-lspconfig.nvim (in fact, the repos
are mostly based on the same code) and apply the concept to the other
tools: Whatever is enabled in the respective plugins (lspconfig,
nvim-lint and conform.nvim) will automatically be installed by mason.
This is really neat and basically takes care of me ever having to
interact much with Mason itself or manually set up the tools to be
installed. All I have to make sure is that they're updated once in a
while.
Enabled snippet completion from the first letter (allowing single letter
snippet prefixes).
Extended the luasnip usage and added a telescope extension to show all
enabled snippets for the current buffer.
As a first step to disentangle the ide.lua module into completion,
formatting, lsp (and maybe lint?), this separates the completion module
into its own file.
Moved rainbow delimiters into dependencies so that it runs with TS
instead of loading TS on its own. Made TS itself more lazy (only loading
on VeryLazy by default).
Run TSUpdate on each run instead of only each build step.
These bindings ensure that wezterm understands (and informs the shell)
that `<C-Return>` and `<S-Return>` are different key binds than just
`<Return>` on its own.
For example 'euporie' uses it to mimic the python notebook 'enter means
newline but ctrl-enter means execute' style of quick coding.
Since I (almost) never use the navigator, it has been put behind
`<leader>T`. The tab-hiding I used a (little) more often so that now
lies behind `<leader>t`. Simple change.
With the new `img-clip.nvim` extension we can copy any image anywhere
and simply paste it into a markdown/quarto/latex/typst/... document with
the right markup already.
Those can be from the web/locally. Also allows drag and drop from e.g.
web pages.
Mapped to `<leader>pp` currently, though we will have to find a better
mapping. Or invoked with `:ImagePaste`.
We can now open any ipynb file as if it were a quarto document by
leveraging the `jupytext.nvim` extension which works in the background
to convert everything. Will only work if `jupytext` program is actually
installed on the machine.
Allows normal editing of the file and will write any changes back to the
original notebook on save and exit!
Added mapping to quickly edit any code cell in FeMaco, an extra buffer
which brings lsp functionality and similar with it. Can be used as a
fallback if otter.nvim is not working for the buffer, or when working on
a buffer which otter.nvim does not understand.
Set it up with extended options and keymaps. Will use an image provider
if it has been set externally (usually set by the 'image.nvim' setup
routine) or fall back to use the `wezterm.nvim` plugin to display it in
a wezterm pane. This display can be a little buggy so we should prefer
others.
Moved the mini bracketed comment following to use the ]k [k suffix. I am
not sure if this is completely taking since every now and again it seems
to still be overriding my own configured mapping.
Now we can either fetch the python venv basefolder
(`require('core.util').get_python_venv_basefolder()`) or specifically
the python binary contained within (`.get_python_bin()`).
Additionally, the venv result should be cached for the duration of using
nvim so that we only have to fetch it once, regardless of how many
modules require it.
Removes them from being active in vim as well as removing them from
being displayed in which-key.
Unfortunately the which-key implementation still seems broken, sometimes
removing them sometimes leaving them as-is.
Since we do not make use of my own zettelkasten plugin anymore, this
commit is a quick fix to reinstate the functionality of the `vn` alias
in the shell opening the note index.
An issue is that there is now no dedicated function to show or open the
index, so we have to make do with a hardcoded path. Perhaps at some
point I will get around to fixing that issue but until then I am fine
with it just working again.