From 542613a0f58ccb3722c93b4b68677d7b5053fd57 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Thu, 12 Oct 2023 15:29:11 +0200 Subject: Add nvim --- .../nvim/.nvim/lua/plugins/core/auto-session.lua | 6 ++ public/nvim/.nvim/lua/plugins/core/gitsigns.lua | 8 ++ public/nvim/.nvim/lua/plugins/core/luasnip.lua | 50 ++++++++++++ .../nvim/.nvim/lua/plugins/core/nerdcommenter.lua | 18 ++++ public/nvim/.nvim/lua/plugins/core/nvim-tree.lua | 36 ++++++++ public/nvim/.nvim/lua/plugins/core/tabline.lua | 3 + public/nvim/.nvim/lua/plugins/core/telescope.lua | 27 ++++++ public/nvim/.nvim/lua/plugins/core/tmux.lua | 13 +++ public/nvim/.nvim/lua/plugins/core/treesitter.lua | 54 ++++++++++++ public/nvim/.nvim/lua/plugins/core/which-key.lua | 45 ++++++++++ public/nvim/.nvim/lua/plugins/extra/copilot.lua | 33 ++++++++ public/nvim/.nvim/lua/plugins/extra/feline.lua | 84 +++++++++++++++++++ public/nvim/.nvim/lua/plugins/extra/neorg.lua | 36 ++++++++ .../nvim/.nvim/lua/plugins/extra/vim-fugitive.lua | 14 ++++ .../lua/plugins/eyecandy/indent-blankline.lua | 11 +++ public/nvim/.nvim/lua/plugins/eyecandy/themes.lua | 24 ++++++ .../.nvim/lua/plugins/eyecandy/vim-illuminate.lua | 4 + .../.nvim/lua/plugins/eyecandy/virt-column.lua | 7 ++ public/nvim/.nvim/lua/plugins/lang/ansible.lua | 21 +++++ public/nvim/.nvim/lua/plugins/lang/bash.lua | 40 +++++++++ public/nvim/.nvim/lua/plugins/lang/dockerfile.lua | 24 ++++++ public/nvim/.nvim/lua/plugins/lang/go.lua | 65 +++++++++++++++ public/nvim/.nvim/lua/plugins/lang/groovy.lua | 38 +++++++++ public/nvim/.nvim/lua/plugins/lang/helm.lua | 6 ++ public/nvim/.nvim/lua/plugins/lang/jq.lua | 21 +++++ public/nvim/.nvim/lua/plugins/lang/json.lua | 21 +++++ public/nvim/.nvim/lua/plugins/lang/jsonnet.lua | 26 ++++++ public/nvim/.nvim/lua/plugins/lang/lua.lua | 46 +++++++++++ public/nvim/.nvim/lua/plugins/lang/markdown.lua | 61 ++++++++++++++ public/nvim/.nvim/lua/plugins/lang/perl.lua | 36 ++++++++ public/nvim/.nvim/lua/plugins/lang/promql.lua | 19 +++++ public/nvim/.nvim/lua/plugins/lang/swift.lua | 35 ++++++++ public/nvim/.nvim/lua/plugins/lang/terraform.lua | 40 +++++++++ public/nvim/.nvim/lua/plugins/lang/typescript.lua | 34 ++++++++ public/nvim/.nvim/lua/plugins/lang/yaml.lua | 59 ++++++++++++++ public/nvim/.nvim/lua/plugins/lang/zig.lua | 40 +++++++++ public/nvim/.nvim/lua/plugins/lsp/cmp.lua | 95 ++++++++++++++++++++++ public/nvim/.nvim/lua/plugins/lsp/config.lua | 40 +++++++++ public/nvim/.nvim/lua/plugins/lsp/null-ls.lua | 5 ++ public/nvim/.nvim/lua/plugins/lsp/trouble.lua | 9 ++ 40 files changed, 1254 insertions(+) create mode 100644 public/nvim/.nvim/lua/plugins/core/auto-session.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/gitsigns.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/luasnip.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/nvim-tree.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/tabline.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/telescope.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/tmux.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/treesitter.lua create mode 100644 public/nvim/.nvim/lua/plugins/core/which-key.lua create mode 100644 public/nvim/.nvim/lua/plugins/extra/copilot.lua create mode 100644 public/nvim/.nvim/lua/plugins/extra/feline.lua create mode 100644 public/nvim/.nvim/lua/plugins/extra/neorg.lua create mode 100644 public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua create mode 100644 public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua create mode 100644 public/nvim/.nvim/lua/plugins/eyecandy/themes.lua create mode 100644 public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua create mode 100644 public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/ansible.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/bash.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/dockerfile.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/go.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/groovy.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/helm.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/jq.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/json.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/jsonnet.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/lua.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/markdown.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/perl.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/promql.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/swift.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/terraform.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/typescript.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/yaml.lua create mode 100644 public/nvim/.nvim/lua/plugins/lang/zig.lua create mode 100644 public/nvim/.nvim/lua/plugins/lsp/cmp.lua create mode 100644 public/nvim/.nvim/lua/plugins/lsp/config.lua create mode 100644 public/nvim/.nvim/lua/plugins/lsp/null-ls.lua create mode 100644 public/nvim/.nvim/lua/plugins/lsp/trouble.lua (limited to 'public/nvim/.nvim/lua/plugins') diff --git a/public/nvim/.nvim/lua/plugins/core/auto-session.lua b/public/nvim/.nvim/lua/plugins/core/auto-session.lua new file mode 100644 index 0000000..9bfcac0 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/auto-session.lua @@ -0,0 +1,6 @@ +return { + "rmagatti/auto-session", + config = function() + require("auto-session").setup({ log_level = "info" }) + end, +} diff --git a/public/nvim/.nvim/lua/plugins/core/gitsigns.lua b/public/nvim/.nvim/lua/plugins/core/gitsigns.lua new file mode 100644 index 0000000..e856855 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/gitsigns.lua @@ -0,0 +1,8 @@ +return { + "lewis6991/gitsigns.nvim", + event = { "BufRead" }, + config = function() + require("gitsigns").setup() + end, + dependencies = { "nvim-lua/plenary.nvim" }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/luasnip.lua b/public/nvim/.nvim/lua/plugins/core/luasnip.lua new file mode 100644 index 0000000..622af58 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/luasnip.lua @@ -0,0 +1,50 @@ +return { + { + "L3MON4D3/LuaSnip", + dependencies = { "rafamadriz/friendly-snippets" }, + build = "make install_jsregexp", + config = function() + local ls = require("luasnip") + local types = require("luasnip.util.types") + + ls.config.set_config({ + history = true, + updateevents = "TextChanged,TextChangedI", + enable_autosnippets = true, + ext_opts = { + [types.choiceNode] = { + active = { + virt_text = { { "<-", "Error" } }, + }, + }, + }, + }) + + -- luasnip keymaps are defined as cmp keymaps + + vim.keymap.set( + "n", + "s", + 'lua require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })' + ) + + require("luasnip.loaders.from_lua").lazy_load({ paths = "~/.config/nvim/lua/snippets" }) + end, + }, + + -- VSCode like (JSON) snippets + -- For the full list of supported languages see: + -- https://github.com/rafamadriz/friendly-snippets/blob/main/package.json + { + "rafamadriz/friendly-snippets", + opts = { include = {} }, + config = function(_, opts) + if #opts.include == 0 then + return + end + + opts.path = "~/.local/share/nvim/lazy/friendly-snippets" + require("luasnip.loaders.from_vscode").lazy_load(opts) + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua b/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua new file mode 100644 index 0000000..720b3d2 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/nerdcommenter.lua @@ -0,0 +1,18 @@ +return { + "preservim/nerdcommenter", + init = function() + vim.g.NERDCreateDefaultMappings = 0 + end, + config = function() + vim.api.nvim_set_keymap("v", "cc", "NERDCommenterComment", { silent = true }) + vim.api.nvim_set_keymap("v", "cu", "NERDCommenterUncomment", { silent = true }) + vim.api.nvim_set_keymap("n", "cc", "NERDCommenterComment", { noremap = false, silent = true }) + vim.api.nvim_set_keymap("n", "cu", "NERDCommenterUncomment", { noremap = false, silent = true }) + end, + keys = { + { "cc", mode = "v" }, + { "cc", mode = "n" }, + { "cu", mode = "v" }, + { "cu", mode = "n" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua b/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua new file mode 100644 index 0000000..e8ca82f --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/nvim-tree.lua @@ -0,0 +1,36 @@ +return { + { + "nvim-tree/nvim-tree.lua", + config = function() + require("nvim-tree").setup({ + sync_root_with_cwd = false, + update_focused_file = { + enable = true, + update_root = false, + }, + renderer = { + indent_markers = { enable = true }, + highlight_git = true, + highlight_opened_files = "all", + }, + }) + end, + dependencies = { "nvim-tree/nvim-web-devicons" }, + }, + + -- Add nvim-tree which-key shortcuts + { + "folke/which-key.nvim", + opts = function(_, opts) + if type(opts) ~= "table" then + opts = {} + end + + if type(opts.f) ~= "table" then + opts["f"] = {} + end + + opts.f["e"] = { "NvimTreeToggle", "Explorer" } + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/tabline.lua b/public/nvim/.nvim/lua/plugins/core/tabline.lua new file mode 100644 index 0000000..0a8305d --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/tabline.lua @@ -0,0 +1,3 @@ +return { + "mkitt/tabline.vim", +} diff --git a/public/nvim/.nvim/lua/plugins/core/telescope.lua b/public/nvim/.nvim/lua/plugins/core/telescope.lua new file mode 100644 index 0000000..367e20c --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/telescope.lua @@ -0,0 +1,27 @@ +return { + { + "nvim-telescope/telescope.nvim", + config = function() + require("telescope").load_extension("file_browser") + end, + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope-file-browser.nvim", + }, + }, + + { + "folke/which-key.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.b = opts.b or {} + opts.f = opts.f or {} + + opts.b["b"] = { "Telescope buffers", "All" } + opts.f["f"] = { "Telescope find_files", "Find" } + opts.f["g"] = { "Telescope live_grep", "Grep" } + opts.f["b"] = { "Telescope file_browser", "Browse" } + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/tmux.lua b/public/nvim/.nvim/lua/plugins/core/tmux.lua new file mode 100644 index 0000000..0d63aa4 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/tmux.lua @@ -0,0 +1,13 @@ +return { + "christoomey/vim-tmux-navigator", + config = function() + local nvim_set_keymap = vim.api.nvim_set_keymap + vim.g.tmux_navigator_no_mappings = 1 + for _, mode in pairs({ "n", "v", "i", "t" }) do + nvim_set_keymap(mode, "", ":TmuxNavigateDown", { noremap = true }) + nvim_set_keymap(mode, "", ":TmuxNavigateUp", { noremap = true }) + nvim_set_keymap(mode, "", ":TmuxNavigateLeft", { noremap = true }) + nvim_set_keymap(mode, "", ":TmuxNavigateRight", { noremap = true }) + end + end, +} diff --git a/public/nvim/.nvim/lua/plugins/core/treesitter.lua b/public/nvim/.nvim/lua/plugins/core/treesitter.lua new file mode 100644 index 0000000..3818555 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/treesitter.lua @@ -0,0 +1,54 @@ +---@param tbl table +---@return table +local tbl_uniq = function(tbl) + ---@type table + local added = {} + local res = {} + res = vim.tbl_filter(function(k) + if added[k] then + return false + end + added[k] = true + return true + end, tbl) + + return res +end + +return { + { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + cmd = { "TSUpdateSync" }, + event = { "BufReadPost", "BufNewFile" }, + init = function() + vim.o.foldmethod = "expr" + vim.o.foldexpr = "nvim_treesitter#foldexpr()" + end, + opts = { + ensure_installed = { "query" }, + ignore_install = {}, + highlight = { + enable = true, + }, + query_linter = { + enable = true, + use_virtual_text = true, + lint_events = { "BufWrite", "CursorHold" }, + }, + }, + config = function(_, opts) + if type(opts.ensure_installed) == "table" then + opts.ensure_installed = tbl_uniq(opts.ensure_installed) + end + require("nvim-treesitter.configs").setup(opts) + end, + }, + + { + "nvim-treesitter/playground", + build = ":TSInstall query", + dependencies = { "nvim-treesitter" }, + cmd = { "TSPlaygroundToggle" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/core/which-key.lua b/public/nvim/.nvim/lua/plugins/core/which-key.lua new file mode 100644 index 0000000..6e046a3 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/core/which-key.lua @@ -0,0 +1,45 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end, + + opts = { + f = { name = "File" }, + b = { + name = "Buffer", + n = { "BufferNext", "Next" }, + p = { "BufferPrevious", "Previous" }, + c = { "BufferClose", "Close" }, + ["1"] = { "BufferGoto 1", "1" }, + ["2"] = { "BufferGoto 2", "2" }, + ["3"] = { "BufferGoto 3", "3" }, + ["4"] = { "BufferGoto 4", "4" }, + ["5"] = { "BufferGoto 5", "5" }, + ["6"] = { "BufferGoto 6", "6" }, + ["7"] = { "BufferGoto 7", "7" }, + ["8"] = { "BufferGoto 8", "8" }, + ["9"] = { "BufferGoto 9", "9" }, + }, + l = { + name = "LSP", + a = { "lua vim.lsp.buf.code_action()", "Action" }, + f = { "lua vim.lsp.buf.format({ async = false, timeout_ms = 5000 })", "Format" }, + d = { "lua vim.diagnostic.open_float()", "Diagnostic" }, + h = { "lua vim.lsp.buf.hover()", "Help" }, + g = { + name = "Go to", + D = { "lua vim.lsp.buf.declaration()", "Go to declaration" }, + d = { "lua vim.lsp.buf.definition()", "Go to definition" }, + i = { "lua vim.lsp.buf.definition()", "Go to implementation" }, + }, + }, + }, + + config = function(_, opts) + local wk = require("which-key") + wk.register(opts, { prefix = "" }) + end, +} diff --git a/public/nvim/.nvim/lua/plugins/extra/copilot.lua b/public/nvim/.nvim/lua/plugins/extra/copilot.lua new file mode 100644 index 0000000..15d0c73 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/extra/copilot.lua @@ -0,0 +1,33 @@ +return { + { + "zbirenbaum/copilot.lua", + event = { "InsertEnter" }, + build = ":Copilot auth", + config = function() + vim.schedule(function() + require("copilot").setup({ + filetypes = { yaml = true }, + suggestion = { enabled = false }, + panel = { enabled = false }, + }) + end) + end, + }, + + { + "zbirenbaum/copilot-cmp", + dependencies = { "copilot.lua" }, + opts = {}, + }, + + { + "hrsh7th/nvim-cmp", + dependencies = { "zbirenbaum/copilot-cmp" }, + opts = function(_, opts) + if type(opts) == "table" then + table.insert(opts.sources, 1, { name = "copilot" }) + opts.formatting.format.menu["copilot"] = "" + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/extra/feline.lua b/public/nvim/.nvim/lua/plugins/extra/feline.lua new file mode 100644 index 0000000..037db34 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/extra/feline.lua @@ -0,0 +1,84 @@ +return { + { + "feline-nvim/feline.nvim", + dependencies = { "nvim-navic", "catppuccin", "nvim-tree/nvim-web-devicons" }, + config = function() + local ctp_feline = require("catppuccin.groups.integrations.feline") + ctp_feline.setup({ + assets = { + left_separator = "", + right_separator = "", + }, + }) + + local catpuccin_components = ctp_feline.get() + require("feline").setup({ components = catpuccin_components }) + + local catpuccin_winbar_components = { active = { {}, {}, {} }, inactive = {} } + --catpuccin_winbar_components.inactive = catpuccin_components.inactive + + -- Removes the mode_icon and its left padding + --table.remove(catpuccin_components.active[1], 2) + --table.remove(catpuccin_components.active[1], 1) + --local catpuccin_winbar_components = catpuccin_components + + --local yaml_schema_component = { + --provider = function() + --local schema = require("yaml-companion").get_buf_schema(0) + --return schema.result[1].name + --end, + --enabled = function() + --local enabled = catpuccin_components.active[3][1].enabled + --if vim.bo.filetype == "yaml" and enabled then + --return true + --end + --end, + --hl = catpuccin_components.active[3][1].hl, + --left_sep = catpuccin_components.active[3][1].left_sep, + --right_sep = catpuccin_components.active[3][1].right_sep, + --} + + local navic_component = { + provider = function() + local location = require("nvim-navic").get_location() + if location == "" then + return location + end + return "> " .. require("nvim-navic").get_location() + end, + enabled = function() + local ok, navic = pcall(require, "nvim-navic") + if ok then + return navic.is_available() + end + end, + hl = { + bg = require("catppuccin.palettes").get_palette().base, + fg = catpuccin_components.active[3][1].hl.fg, + }, + } + + --table.insert(catpuccin_components.active[3], 1, yaml_schema_component) + -- Overwrite the useless LSP component + --catpuccin_components.active[3][2] = yaml_schema_component + + -- this is a hack to properly align the next component + catpuccin_winbar_components.active[1][1] = { + provider = function() + return " " + end, + hl = { + bg = require("catppuccin.palettes").get_palette().base, + fg = require("catppuccin.palettes").get_palette().base, + }, + } + + catpuccin_winbar_components.active[1][2] = navic_component + catpuccin_winbar_components.inactive = catpuccin_winbar_components.active + + require("feline").winbar.setup({ + components = catpuccin_winbar_components, + }) + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/extra/neorg.lua b/public/nvim/.nvim/lua/plugins/extra/neorg.lua new file mode 100644 index 0000000..991ec40 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/extra/neorg.lua @@ -0,0 +1,36 @@ +return { + { + "nvim-neorg/neorg", + build = ":Neorg sync-parsers", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + require("neorg").setup({ + load = { + ["core.defaults"] = {}, -- Loads default behaviour + ["core.concealer"] = {}, -- Adds pretty icons to your documents + ["core.completion"] = { config = { engine = "nvim-cmp" } }, + ["core.dirman"] = { -- Manages Neorg workspaces + config = { + workspaces = { + notes = "~/notes", + www = "~/www", + }, + default_workspace = "notes", + }, + }, + }, + }) + end, + }, + + { + "hrsh7th/nvim-cmp", + dependencies = { "nvim-neorg/neorg" }, + opts = function(_, opts) + if type(opts) == "table" then + table.insert(opts.sources, 1, { name = "neorg" }) + opts.formatting.format.menu["neorg"] = "" + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua b/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua new file mode 100644 index 0000000..d1f8a5a --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/extra/vim-fugitive.lua @@ -0,0 +1,14 @@ +return { + { + "shumphrey/fugitive-gitlab.vim", + cmd = "GBrowse", + config = function() + vim.g.fugitive_gitlab_domains = { "https://gitlab.otters.xyz" } + end, + }, + + { + "tpope/vim-fugitive", + dependencies = { "tpope/vim-rhubarb", "fugitive-gitlab.vim" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua b/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua new file mode 100644 index 0000000..618c730 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/eyecandy/indent-blankline.lua @@ -0,0 +1,11 @@ +return { + "lukas-reineke/indent-blankline.nvim", + event = { "BufRead" }, + config = function() + require("indent_blankline").setup({ + show_current_context = true, + show_current_context_start = false, + }) + end, + dependencies = { "nvim-treesitter" }, +} diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua b/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua new file mode 100644 index 0000000..69bbe99 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/eyecandy/themes.lua @@ -0,0 +1,24 @@ +return { + { + "catppuccin/nvim", + lazy = false, + priority = 1000, + name = "catppuccin", + config = function() + local catp = require("catppuccin") + catp.setup({ + flavour = "frappe", + integrations = { + which_key = true, + illuminate = true, + lsp_trouble = true, + navic = { + enabled = true, + custom_bg = "NONE", + }, + }, + }) + vim.api.nvim_command("colorscheme catppuccin") + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua b/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua new file mode 100644 index 0000000..20b9bb2 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/eyecandy/vim-illuminate.lua @@ -0,0 +1,4 @@ +return { + "RRethy/vim-illuminate", + event = { "BufRead" }, +} diff --git a/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua b/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua new file mode 100644 index 0000000..5259d7a --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/eyecandy/virt-column.lua @@ -0,0 +1,7 @@ +return { + "lukas-reineke/virt-column.nvim", + event = { "BufRead" }, + config = function() + require("virt-column").setup() + end, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/ansible.lua b/public/nvim/.nvim/lua/plugins/lang/ansible.lua new file mode 100644 index 0000000..91f34df --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/ansible.lua @@ -0,0 +1,21 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "yaml" }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.ansiblels = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/bash.lua b/public/nvim/.nvim/lua/plugins/lang/bash.lua new file mode 100644 index 0000000..d9911a6 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/bash.lua @@ -0,0 +1,40 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "bash" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.code_actions.shellcheck, -- Diagnostics handled by Bash LS + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + -- Just here because it doesn't work with the default node + -- https://github.com/bash-lsp/bash-language-server/issues/418 + local brew_prefix = vim.fn.systemlist("brew --prefix")[1] + local bashls_script_name = "bash-language-server" + local bashls_script_path = vim.fn.systemlist("which " .. bashls_script_name)[1] + local bashls_cmd = { brew_prefix .. "/opt/node@16/bin/node", bashls_script_path, "start" } + opts.servers.bashls = { cmd = bashls_cmd } + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua b/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua new file mode 100644 index 0000000..ca3ccc2 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/dockerfile.lua @@ -0,0 +1,24 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "dockerfile" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.hadolint, + }) + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/go.lua b/public/nvim/.nvim/lua/plugins/lang/go.lua new file mode 100644 index 0000000..7e7fa03 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/go.lua @@ -0,0 +1,65 @@ +return { + { + "fatih/vim-go", + init = function() + vim.g.go_fmt_command = "gofumpt" + end, + ft = { "go" }, + }, + + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { + "go", + "gomod", + "gosum", + }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.golangci_lint, + null_ls.builtins.formatting.gofumpt, -- Just here because gopls integrated gofumpt doesn't work + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.gopls = { + -- Because integrated gofumpt doesn't work + -- I disable formatting for gopls + -- Formatting is handled with gofumpt by: + -- - null-ls on format request + -- - vim-go on save + on_attach = function(client, _) + client.server_capabilities.documentFormattingProvider = false + client.server_capabilities.documentRangeFormattingProvider = false + end, + cmd = { "gopls", "-remote=auto", "serve" }, -- Shared with vim-go's gopls instance + settings = { + gopls = { + buildFlags = { "-tags=integration,unit" }, -- To make packages with those build flags actually work with the LSP + semanticTokens = false, + gofumpt = true, -- gofumpt formatting, doesn't work + }, + }, + } + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/groovy.lua b/public/nvim/.nvim/lua/plugins/lang/groovy.lua new file mode 100644 index 0000000..1ab404d --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/groovy.lua @@ -0,0 +1,38 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "groovy" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.npm_groovy_lint, + null_ls.builtins.formatting.npm_groovy_lint, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + local groovyls_path = "/Users/christian.segundo/git/groovy-language-server" + local groovyls_app_path = "build/libs/app-all.jar" + local groovyls_cmd = { "java", "-jar", groovyls_path .. "/" .. groovyls_app_path } + opts.servers.groovyls = { cmd = groovyls_cmd } + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/helm.lua b/public/nvim/.nvim/lua/plugins/lang/helm.lua new file mode 100644 index 0000000..6b303ec --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/helm.lua @@ -0,0 +1,6 @@ +return { + { + "towolf/vim-helm", + ft = { "yaml" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/jq.lua b/public/nvim/.nvim/lua/plugins/lang/jq.lua new file mode 100644 index 0000000..a9a41c6 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/jq.lua @@ -0,0 +1,21 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "jq" }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.jqls = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/json.lua b/public/nvim/.nvim/lua/plugins/lang/json.lua new file mode 100644 index 0000000..1d2d073 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/json.lua @@ -0,0 +1,21 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "json" }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.jsonls = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua b/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua new file mode 100644 index 0000000..dff2e4b --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/jsonnet.lua @@ -0,0 +1,26 @@ +return { + { + "google/vim-jsonnet", + ft = { "jsonnet" }, + }, + + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "jsonnet" }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.jsonnet_ls = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/lua.lua b/public/nvim/.nvim/lua/plugins/lang/lua.lua new file mode 100644 index 0000000..5e08867 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/lua.lua @@ -0,0 +1,46 @@ +return { + { "folke/neodev.nvim", lazy = true, opts = {} }, + + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "lua" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.selene, + null_ls.builtins.formatting.stylua, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.on_attach = opts.on_attach or {} + opts.servers.lua_ls = { + on_attach = function(client, _) + client.server_capabilities.documentFormattingProvider = false + client.server_capabilities.documentRangeFormattingProvider = false + end, + } + end + end, + dependencies = { + "folke/neodev.nvim", + }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/markdown.lua b/public/nvim/.nvim/lua/plugins/lang/markdown.lua new file mode 100644 index 0000000..dcacfc7 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/markdown.lua @@ -0,0 +1,61 @@ +return { + { + "iamcco/markdown-preview.nvim", + build = "cd app && npm install", + init = function() + vim.g.mkdp_filetypes = { "markdown" } + end, + ft = { "markdown" }, + }, + + { + "mzlogin/vim-markdown-toc", + init = function() + vim.g.vmt_auto_update_on_save = 0 + vim.g.vmt_dont_insert_fence = 1 + end, + ft = { "markdown" }, + }, + + { + "preservim/vim-markdown", + dependencies = { "godlygeek/tabular" }, + config = function() + vim.g.vim_markdown_conceal_code_blocks = 0 + vim.g.vim_markdown_frontmatter = 1 + vim.g.vim_markdown_strikethrough = 0 + vim.g.vim_markdown_auto_insert_bullets = 0 + vim.g.vim_markdown_new_list_item_indent = 0 + end, + ft = { "markdown" }, + }, + + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { + "markdown_inline", + }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.markdownlint_cli2, + null_ls.builtins.diagnostics.vale, + null_ls.builtins.formatting.prettierd.with({ + filetypes = { "markdown" }, + }), + }) + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/perl.lua b/public/nvim/.nvim/lua/plugins/lang/perl.lua new file mode 100644 index 0000000..6ec7220 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/perl.lua @@ -0,0 +1,36 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "perl" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + -- perlls is supposed to use perltidy for formatting, but it doesn't + -- work not sure why. + null_ls.builtins.formatting.perltidy, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.perlls = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/promql.lua b/public/nvim/.nvim/lua/plugins/lang/promql.lua new file mode 100644 index 0000000..267e118 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/promql.lua @@ -0,0 +1,19 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "promql" }) + end + end, + }, + + { + name = "promqlfmt.nvim", + url = "https://git.segundo.io/promqlfmt.nvim", + --dir = "/Users/christian.segundo/git/promql.nvim", + --dev = true, + cmd = { "Promqlfmt" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/swift.lua b/public/nvim/.nvim/lua/plugins/lang/swift.lua new file mode 100644 index 0000000..d7f6d33 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/swift.lua @@ -0,0 +1,35 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "swift" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.swiftlint, + null_ls.builtins.formatting.swiftformat, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.sourcekit = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/terraform.lua b/public/nvim/.nvim/lua/plugins/lang/terraform.lua new file mode 100644 index 0000000..e7ccff4 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/terraform.lua @@ -0,0 +1,40 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { + "hcl", + "terraform", + }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.tfsec, + null_ls.builtins.formatting.terraform_fmt.with({ + extra_filetypes = { "hcl" }, + }), + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.terraformls = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/typescript.lua b/public/nvim/.nvim/lua/plugins/lang/typescript.lua new file mode 100644 index 0000000..d5cf529 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/typescript.lua @@ -0,0 +1,34 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "typescript" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.code_actions.eslint_d, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.tsserver = {} + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/yaml.lua b/public/nvim/.nvim/lua/plugins/lang/yaml.lua new file mode 100644 index 0000000..83af09e --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/yaml.lua @@ -0,0 +1,59 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "yaml" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.diagnostics.yamllint, + }) + end + end, + }, + + { + --"someone-stole-my-name/yaml-companion.nvim", + dev = true, + dir = "/Users/christian.segundo/git/nvim_plugins/yaml-companion.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope.nvim", + }, + init = function() + require("telescope").load_extension("yaml_schema") + end, + ft = { "yaml" }, + }, + + { + "neovim/nvim-lspconfig", + --dependencies = { "someone-stole-my-name/yaml-companion.nvim" }, + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.servers.yamlls = require("yaml-companion").setup() + end + end, + }, + + { + "rafamadriz/friendly-snippets", + opts = function(_, opts) + if type(opts) == "table" then + opts.include = opts.include or {} + vim.list_extend(opts.include, { "yaml" }) + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lang/zig.lua b/public/nvim/.nvim/lua/plugins/lang/zig.lua new file mode 100644 index 0000000..1970797 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lang/zig.lua @@ -0,0 +1,40 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts) == "table" then + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "zig" }) + end + end, + }, + + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts) == "table" then + opts.sources = opts.sources or {} + local null_ls = require("null-ls") + vim.list_extend(opts.sources, { + null_ls.builtins.formatting.zigfmt, + }) + end + end, + }, + + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + if type(opts) == "table" then + opts.servers = opts.servers or {} + opts.on_attach = opts.on_attach or {} + opts.servers.zls = { + on_attach = function(client, _) + client.server_capabilities.documentFormattingProvider = false + client.server_capabilities.documentRangeFormattingProvider = false + end, + } + end + end, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lsp/cmp.lua b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua new file mode 100644 index 0000000..6099683 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua @@ -0,0 +1,95 @@ +return { + "hrsh7th/nvim-cmp", + opts = { + sources = { + { + name = "luasnip", + option = { + show_autosnippets = true, + use_show_condition = true, + }, + }, + { name = "nvim_lsp", priority = 1 }, + { name = "nvim_lsp_signature_help" }, + { name = "nvim_lua" }, + { name = "path" }, + { name = "emoji" }, + }, + formatting = { + format = { + mode = "symbol_text", + maxwidth = 50, + before = function(entry, vim_item) + return vim_item + end, + menu = { + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + latex_symbols = "[Latex]", + }, + }, + }, + }, + config = function(_, opts) + local cmp = require("cmp") + local luasnip = require("luasnip") + local lspkind = require("lspkind") + cmp.setup({ + sources = opts.sources, + --experimental = { ghost_text = { hl_group = "Comment" } }, + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + formatting = { format = lspkind.cmp_format(opts.formatting.format) }, + mapping = { + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if luasnip.choice_active() then + luasnip.change_choice(1) + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.close(), + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, -- Automatically select first item on CR + }), + }, + }) + end, + dependencies = { + { "L3MON4D3/LuaSnip" }, + { "hrsh7th/cmp-emoji" }, + { "hrsh7th/cmp-nvim-lsp" }, + { "hrsh7th/cmp-nvim-lsp-signature-help" }, + { "hrsh7th/cmp-nvim-lua" }, + { "hrsh7th/cmp-path" }, + { "onsails/lspkind.nvim" }, + { "saadparwaiz1/cmp_luasnip" }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lsp/config.lua b/public/nvim/.nvim/lua/plugins/lsp/config.lua new file mode 100644 index 0000000..b579720 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lsp/config.lua @@ -0,0 +1,40 @@ +return { + + { + "neovim/nvim-lspconfig", + event = { "BufReadPre", "BufNewFile" }, + opts = { servers = {} }, + config = function(_, opts) + local add_hook_after = require("lspconfig.util").add_hook_after + local on_attach = function(client, bufnr) + require("nvim-navic").attach(client, bufnr) + end + + for lsp, lsp_opts in pairs(opts.servers) do + lsp_opts = lsp_opts or {} + if lsp_opts.on_attach ~= nil then + lsp_opts["on_attach"] = add_hook_after(on_attach, lsp_opts.on_attach) + end + lsp_opts["capabilities"] = require("cmp_nvim_lsp").default_capabilities(lsp_opts.capabilities or {}) + require("lspconfig")[lsp].setup(lsp_opts) + end + end, + init = function() + vim.diagnostic.config({ + float = { + source = "always", + format = function(diagnostic) + -- should work for any LSP, see: https://github.com/neovim/neovim/pull/17510 + if diagnostic.code then + return string.format("(%s) %s", diagnostic.code, diagnostic.message) + end + return diagnostic.message + end, + }, + }) + end, + dependencies = { + { "SmiteshP/nvim-navic", opts = { highlight = true } }, + }, + }, +} diff --git a/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua new file mode 100644 index 0000000..5f71af7 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua @@ -0,0 +1,5 @@ +return { + "jose-elias-alvarez/null-ls.nvim", + opts = { sources = {}, debug = false }, + dependencies = { "nvim-lua/plenary.nvim" }, +} diff --git a/public/nvim/.nvim/lua/plugins/lsp/trouble.lua b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua new file mode 100644 index 0000000..207edb5 --- /dev/null +++ b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua @@ -0,0 +1,9 @@ +return { + { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + config = function() + require("trouble").setup({}) + end, + }, +} -- cgit v1.2.3