Mal schnell Neovim neu konfigurieren

Das nächste Release von Neovim ist 0.12 und soll Mitte März kommen. Darauf umstellen werde ich definitiv, denn ich verwende derzeit lazy.nvim als Pluginmanager und der ist mir schlicht und einfach zu bloatig und mit 0.12 auch nicht mehr nötig. Der bietet nämlich vim.pack an, welcher für mich völlig ausreichend ist. Also aus

return {
    "fooBar/plugin.nvim",
    "barFoo/plug.nvim",
}

wird ein

vim.pack.add({
    { src = "https://github.com/fooBar/plugin.nvim" },
    { src = "https://github.com/barFoo/plug.nvim" },
})

wobei man sich das src = sparen kann; das nutze ich nur für den Fall das ich mal Optionen übergeben will (anderen Branch, Version, ..).

Die neue LSP API ist auch relativ simple gehalten. Es geht zwar auch ohne, aber ich verwende am liebsten mason.nvim um die LSP-Server zu verwalten (installieren, updaten, ..). Wenn man mason.nvim mit vim.pack.add() installiert hat, reicht ein simples

require("mason").setup({})

um ihn zu laden. Die Konfiguration eines LSP ist auch denkbar einfach. Dazu wird unter ~/.config/nvim/lua/lsp die Datei lsp.lua mit folgendem Inhalt erstellt:

-- Alle LSP die aktiviert werden sollen
vim.lsp.enable({
  "bashls",
  "html",
  "gopls",
  "lua_ls",
})

und danach braucht man noch für jeden LSP eine dazu passende Konfiguration. Wenn man lua_ls laden will, muss man die Datei ~/.config/nvim/lua/lsp/lua_ls.lua erstellen und folgendes reinschreiben:

return {
  cmd = { "lua-language-server" },
  filetypes = { "lua" },
  root_markers = {
    ".luarc.json", ".luarc.jsonc", ".luacheckrc",
    ".stylua.toml", "stylua.toml", "selene.toml",
    "selene.yml", ".git"
  },
  settings = {
    Lua = {
      runtime = { version = "LuaJIT" }, -- Neovim uses LuaJIT
      diagnostics = { globals = { "vim" } }, -- Recognize 'vim' global
    },
  },
}

Und geladen wird das Ganze dann mit vim.lsp.enable('lua_ls')

Was ich auch noch machen will, ist von den ganzen "Overkillplugins" wegzukommen. So Sachen wie which-key, lualine, .. sind zwar ganz nett anzusehen und funktionieren auch, aber ich brauche nur einen Bruchteil deren Funktionalität. Einige Plugins kann ich mit den aus der mini.nvim Library ersetzen und anstelle von nvim-cmp kommt wahrscheinlich blink.cmp zum Einsatz. lualine kommt ganz raus und wird durch eine selbstgeschriebene ersetzt.

Mit anderen Worten: Das einzige was von meiner Konfiguration letztendlich erhalten bleibt, sind die Keybindings und autocmd's. Also alles halb so wild ^^

For comments, please send me an email