in pursuit of neovim nirvanna

I’ve been increasingly more frustrated with Neovim lately. Not because there’s anything wrong with it, but because of my lack of understanding. I started to try to articulate my issues in another note, but I didn’t get very far.

I toyed a bit with NVF and decided I should instead focus on creating a new configuration for Neovim 0.11 where I just try to make it do one thing really well. So I started a Compulsive Notes configuration. Forget the why for now, and focus on the method.

It should eliminate any friction in writing Markdown notes by staying out of the way with too much fanciness, but also reduce or simplify repetitive aspects of making notes while being aesthetically pleasing – to me.

Most of these things are not quantifiable, but here’s a hit list of features:

For links and inserting things like dates I investigated snippets. That’s well under way. It’s aiding with inserting calculated values, as well, but I haven’t developed that very far. It’s a little bit in my way though, but more on that later.

For browsing notes and inserting links to the browsed notes I can rely a bit on what I have started with Telescope, but I also want to find a way to turn on file previews for file-name completion. When blink-cmp provides files, it does display a preview, much like how snippets have a preview, so that works well.

For visual elements I started configuring a set of sane defaults and making key bindings for toggling them. And then stuff just kind of started to grow.

As far as staying out of the way – some of this is accomplished by toggling options, such as visual elements, but I also configured snippets to not jump up in my face and instead they have to be triggered. It’s similar to the NvChad fix from when I was using that.

I put the following in the opts for blink.cmp,

completion = {
    trigger = {
        show_on_keyword = false,
        show_on_trigger_character = true,
        }
    }

This is pretty subtle, if the show_on_trigger_character is true, it will cause suggestions to pop up after a period is typed with no space after it. I don’t like that, but if I turn it off completely then I get no file name suggestions when trying to autocomplete with :new or :e or … Not a lot of words have periods embedded in them, so this is a fair compromise, for now.

Maybe I’ll add a keybinding to toggle it. That could look something like this:

function TOGGLE_COMPLETION()
    local blink = require("blink.cmp.config")
    if blink == nil then
        print("Blink is not loaded, cannot toggle")
        return
    end
    blink.completion.trigger.show_on_keyword = not blink.completion.trigger.show_on_keyword
    blink.completion.trigger.show_on_trigger_character = not blink.completion.trigger.show_on_trigger_character
end

Anyway, the config I’m using now began by adding Lazy and then borrowing from kickstart-nvim in order to get lsp stuff to load, then I converted it to a format that Neovim 0.11 didn’t mind so much, and then the resulting init.lua is here.

Tags: index, nvim, journal

issues
snippets
defaults
fix
init.lua

Tags

#index
#nvim
#journal

Navigation

index
tags
prev ⏰

created: 2025-10-18

updated: 2025-10-19 09:59:30

(re)generated: 2025-11-27