diff --git a/nvim/.config/nvim/README.md b/nvim/.config/nvim/README.md index bb6daeb..030bc77 100644 --- a/nvim/.config/nvim/README.md +++ b/nvim/.config/nvim/README.md @@ -74,6 +74,20 @@ Leave terminal mode and return to normal mode: ## LSP +Mason is installed through `vim.pack` together with `mason-lspconfig.nvim` and `nvim-lspconfig`. + +This config automatically installs and enables the managed language servers on first start. The current managed set is `bashls`, `clangd`, `jsonls`, `lua_ls`, `marksman`, `taplo`, `ts_ls`, and `yamlls`. + +Useful Mason commands: + +```vim +:Mason +:MasonLog +:checkhealth mason +``` + +`ts_ls` provides TypeScript and JavaScript language server support after Mason installs `typescript-language-server`. + When an LSP server is attached to the current buffer: - `gd` go to definition diff --git a/nvim/.config/nvim/lua/romanzy/plugins.lua b/nvim/.config/nvim/lua/romanzy/plugins.lua index a114780..395067c 100644 --- a/nvim/.config/nvim/lua/romanzy/plugins.lua +++ b/nvim/.config/nvim/lua/romanzy/plugins.lua @@ -1,4 +1,5 @@ require("romanzy.plugins.rose-pine") +require("romanzy.plugins.mini") require("romanzy.plugins.oil") require("romanzy.plugins.telescope") require("romanzy.plugins.nvim-treesitter") diff --git a/nvim/.config/nvim/lua/romanzy/plugins/lsp.lua b/nvim/.config/nvim/lua/romanzy/plugins/lsp.lua index 6925ec0..f55249d 100644 --- a/nvim/.config/nvim/lua/romanzy/plugins/lsp.lua +++ b/nvim/.config/nvim/lua/romanzy/plugins/lsp.lua @@ -104,5 +104,6 @@ end require("mason").setup() mason_lspconfig.setup({ + ensure_installed = managed_servers, automatic_enable = managed_servers, }) diff --git a/nvim/.config/nvim/lua/romanzy/plugins/mini.lua b/nvim/.config/nvim/lua/romanzy/plugins/mini.lua new file mode 100644 index 0000000..e1bebe5 --- /dev/null +++ b/nvim/.config/nvim/lua/romanzy/plugins/mini.lua @@ -0,0 +1,56 @@ +vim.pack.add({ + { + src = "https://github.com/echasnovski/mini.nvim", + name = "mini.nvim", + branch = "stable", + }, +}) + +local clue = require("mini.clue") +local icons = require("mini.icons") +local git = require("mini.git") +local diff = require("mini.diff") +local statusline = require("mini.statusline") +local hipatterns = require("mini.hipatterns") +local ai = require("mini.ai") +local notify = require("mini.notify") +local surround = require("mini.surround") + +clue.setup({ + triggers = { + { mode = "n", keys = "" }, + { mode = "n", keys = "g" }, + { mode = "n", keys = "z" }, + { mode = "i", keys = "" }, + }, + clues = { + clue.gen_clues.builtin_completion(), + clue.gen_clues.g(), + clue.gen_clues.marks(), + clue.gen_clues.registers(), + clue.gen_clues.windows(), + clue.gen_clues.z(), + }, + window = { + delay = 500, + }, +}) + +icons.setup({}) +git.setup({}) +diff.setup({}) +statusline.setup({ use_icons = true }) +hipatterns.setup({ + highlighters = { + fixme = { pattern = "%f[%w]()FIXME()%f[%W]", group = "MiniHipatternsFixme" }, + hack = { pattern = "%f[%w]()HACK()%f[%W]", group = "MiniHipatternsHack" }, + todo = { pattern = "%f[%w]()TODO()%f[%W]", group = "MiniHipatternsTodo" }, + note = { pattern = "%f[%w]()NOTE()%f[%W]", group = "MiniHipatternsNote" }, + file = { pattern = "%f[%w]()FILE()%f[%W]", group = "MiniHipatternsNote" }, + hex_color = hipatterns.gen_highlighter.hex_color(), + }, +}) +ai.setup({}) +notify.setup({}) +vim.notify = notify.make_notify() +surround.setup({}) diff --git a/nvim/.config/nvim/nvim-pack-lock.json b/nvim/.config/nvim/nvim-pack-lock.json index 531abdc..58cf8b5 100644 --- a/nvim/.config/nvim/nvim-pack-lock.json +++ b/nvim/.config/nvim/nvim-pack-lock.json @@ -12,6 +12,10 @@ "rev": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d", "src": "https://github.com/mason-org/mason.nvim" }, + "mini.nvim": { + "rev": "1599a473aa6f5290a5d740b1144846e6f0c3963d", + "src": "https://github.com/echasnovski/mini.nvim" + }, "nvim-lspconfig": { "rev": "bfcc0171a43f22afa61d927ffe9fcb6cb85dc99e", "src": "https://github.com/neovim/nvim-lspconfig"