nvdots banner

nvdots

5 devlogs
22h 1m 54s

neovim distro for nix users using nix-wrapper-modules

Demo Repository

Loading README...

Voxi0

damn it’s 3am already and i have an assignment due in like, 6 days…. oh and if you’re wondering what’s with the 25 hours logged in a single devlog with not really that many changes, it seems that this project was only tracking the old project name weirdly enough. i thought i added in my new hackatime project. yes this was previously called yay i suck with names okay?

feat

  • added lze plugin manager back in. it’s just super convenient over plain ol manual vim.pack adding stuff. plugin management is way nicer now and i think im lazy loading stuff more properly as well.
  • updated the docs with a new theme and updated with fresh content. i tried summarizing a bunch of text to make it shorter and more readable. i still think i can do even better.
  • realized that i was adding a bunch of plugins to the startup spec in which all plugins are loaded at startup by neovim while also managing said plugins with lze so i was actually loading the same plugins TWICE. i fixed that by making sure that only lze itself was loaded on startup by nvim. everything else is loaded by lze.
  • added noice.nvim for ui and replaced mini.files with fyler and just polished the ui in general by customizing the theme and snacks.picker and all.
  • replaced mini.picker with snacks.picker and made a bunch of keybinds for fun stuff like picking themes. i made sure that all of neovim’s builtin colorschemes weren’t included in the picker search results though since they honestly kinda suck.
  • removed conform.nvim so now it’s up to the user to install and configure it
  • two new autocmds to toggle relative numbers everytime you enter/leave insert mode. no relative nums in insert mode yes. also ensured that treesitter would be started even if the lsp didn’t kick in.
  • fixed nvim-ts-autotag which i probably broke in a previous update.
  • added an autocmd to make help pages open in a vertical split while man pages opened in a new buffer.
Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
0
Voxi0

a whole boatload of changes. again. yes. and i mean a lot lot. also im using iosevka font now instead of jetbrains. i like it.

feat

  • replaced nixCats with nix-wrapper-modules which is the successor to nixCats and exporting nvdots as a wrapped neovim package (an overlay is available)
  • wrote a docs site using astrojs and the starlight template. still incomplete
  • added nix binary cache to use neovim nightly without having to manually compile everything
  • properly configuring nvim-treesitter. i also install all treesitter grammars to make life easier though it does take a bit of space
  • added nvim-treesitter-textobjects which uses treesitter for smarter and more code-aware motions e.g. selecting everything inside a function
  • added nvim-lspconfig so a simple vim.lsp.enable is enough to get whatever lsp working right away without any manual configuration. no lsp’s are enabled by default so the user has to enable it themselves which is documented in the docs
  • added conform-nvim to use external formatters instead of the built in formatter that some lsp’s might have
  • added live-preview-nvim which allows you to preview markdown and a bunch of other types of files in the browser with live reloading or whatever
  • added nvim-ts-autotag which uses treesitter to basically auto-pair and auto-rename html tags. it works with a lot of things e.g. astro, react, vue etc etc.
  • a whole lot of ui changes - different theme, lualine configuration, mini.animate plugin to animate common neovim actions and bufferline-nvim to for a nice looking bufferline. i dunno if i’ll keep it or not though.

extra yapping

complete black backgrounds look so friggin nice man. i just took the catppuccin colorscheme and did an override on the colours to change the base colour to all zeroes pretty much.

Attachment
Attachment
Attachment
0
Voxi0

i made a lotta changes, i think i did atleast

changes

  • this is one of the biggest changes, i got rid of the lze plugin manager and migrated all my plugin configuration over to use the latest native plugin manager offered by neovim, packadd. it’s super simple to work with and didn’t take me long to figure out that i can combine packadd with autocmds to get lazy-loading too.
  • exporting two packages in my flake. one is “stable” the other is “unstable” which uses neovim nightly binary which is currently 0.12 dev.
  • configured the lua_ls lsp a bit to ensure it can get access to all the neovim api library stuff or whatever so that i can get autocompletion and documentation and everything for nvim api functions so now i have no warnings and i get some sweet autocompletion from the lsp
  • added lualine plugin for a cool ahh statusline. for a while i had an issue where opening up mini picker to search for files/buffers would actually get rid of lualine, replacing it with the default statusline which really sucked. but i managed to figure out that setting globalstatus in lualine’s config fixes it all.
  • added snacks.nvim plugin which gave me a plethora of cool features like being able to use lazygit inside of neovim and having even fancier indentation guides and also a dashboard cause why not? might use other stuff from snacks later
  • added wakatime plugin since i personally need it for hackatime and all anyways. i’ll be switching over to nvdots very soon right after im sure its complete and ready
  • two new autocmds to highlight yanked text for a second or two and the other to show lsp loading progress.

some extra yapping

i also wrote a bunch of keybinds or keymaps or whatever for blink.cmp which im using for autocompletion and slightly changed treesitter configuration to handle loading an lsp better than before (the last version is error-prone and just super, risque yk, and i really would rather avoid that)

Attachment
Attachment
Attachment
0
Voxi0

changes

  • added nvim-treesitter for syntax highlighting
  • added nvim-ufo for code folding
  • stopped neovim from creating auto-comments or whatever. you know how after you type a comment and go to a newline that neovim like, creates a comment for you or whatever? it’s really annoying so yeah say sayonara.

extra yapping

nvim-treesitter appears to have had a massive rewrite not too long ago and therefore the way it’s configured and all has changed. so it took my goofy ahh a while to figure it out cause im stupid and it’s 2:15am…

Attachment
Attachment
0
Voxi0

i should’ve done a devlog as soon as i decided to start on this but anyways… yes i’m using markdown this time round, i love markdown and how i can easily make beautiful text with it.

init

  • initialized a new project using the fresh template flake for nixCats and cleaned up the flake file
  • created a basic neovim configuration to test everything was working before adding plugins
  • installed lze which is a dead-simple lazy-loading library along with a bunch of plugins and configured them. i didn’t install a whole lotta plugins, just a theme, icon pack, blink.cmp for autocompletion and some plugins from mini.nvim and finally cord.nvim for discord rich presence because uh, it’s cool yes i totally need it.

extra yapping

yes i love bullet points a lot. unordered lists are cool and i always use them in my notes and all for whatever reason. i cant live without them.

while the configuration is mostly complete and this project is ready to be used, im sure there’s a couple more things i can do to polish this more and make it slightly better but so far so good. (edit: there were SO many more things to improve and im still not done).

if im not wrong, neovim 0.12 introduces a bunch of really cool things. mainly the packadd plugin manager which is the built-in native plugin manager for neovim. i’m super interested in that so i’m planning on trying that out later when i tweak my flake to use the nightly version of neovim. obviously 0.12 is still a nightly release as of now.

Attachment
Attachment
0