summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/core/disable_builtin.lua16
-rw-r--r--lua/core/init.lua64
-rw-r--r--lua/plugins/core/auto-session.lua6
-rw-r--r--lua/plugins/core/gitsigns.lua8
-rw-r--r--lua/plugins/core/luasnip.lua50
-rw-r--r--lua/plugins/core/nerdcommenter.lua18
-rw-r--r--lua/plugins/core/nvim-tree.lua36
-rw-r--r--lua/plugins/core/tabline.lua3
-rw-r--r--lua/plugins/core/telescope.lua27
-rw-r--r--lua/plugins/core/tmux.lua13
-rw-r--r--lua/plugins/core/treesitter.lua54
-rw-r--r--lua/plugins/core/which-key.lua45
-rw-r--r--lua/plugins/extra/copilot.lua33
-rw-r--r--lua/plugins/extra/feline.lua84
-rw-r--r--lua/plugins/extra/vim-fugitive.lua14
-rw-r--r--lua/plugins/eyecandy/indent-blankline.lua22
-rw-r--r--lua/plugins/eyecandy/themes.lua25
-rw-r--r--lua/plugins/eyecandy/vim-illuminate.lua4
-rw-r--r--lua/plugins/eyecandy/virt-column.lua7
-rw-r--r--lua/plugins/lang/ansible.lua26
-rw-r--r--lua/plugins/lang/bash.lua42
-rw-r--r--lua/plugins/lang/c.lua20
-rw-r--r--lua/plugins/lang/dockerfile.lua24
-rw-r--r--lua/plugins/lang/go.lua65
-rw-r--r--lua/plugins/lang/groovy.lua38
-rw-r--r--lua/plugins/lang/helm.lua6
-rw-r--r--lua/plugins/lang/jq.lua21
-rw-r--r--lua/plugins/lang/json.lua21
-rw-r--r--lua/plugins/lang/jsonnet.lua26
-rw-r--r--lua/plugins/lang/ledger.lua25
-rw-r--r--lua/plugins/lang/lua.lua46
-rw-r--r--lua/plugins/lang/markdown.lua76
-rw-r--r--lua/plugins/lang/nix.lua36
-rw-r--r--lua/plugins/lang/perl.lua36
-rw-r--r--lua/plugins/lang/promql.lua19
-rw-r--r--lua/plugins/lang/swift.lua35
-rw-r--r--lua/plugins/lang/terraform.lua40
-rw-r--r--lua/plugins/lang/typescript.lua34
-rw-r--r--lua/plugins/lang/yaml.lua59
-rw-r--r--lua/plugins/lang/zig.lua40
-rw-r--r--lua/plugins/lsp/cmp.lua97
-rw-r--r--lua/plugins/lsp/config.lua45
-rw-r--r--lua/plugins/lsp/null-ls.lua5
-rw-r--r--lua/plugins/lsp/trouble.lua9
-rw-r--r--lua/snippets/lua.lua3
-rw-r--r--lua/snippets/sh/bash-find.lua32
-rw-r--r--lua/snippets/sh/bash-misc.lua16
47 files changed, 1471 insertions, 0 deletions
diff --git a/lua/core/disable_builtin.lua b/lua/core/disable_builtin.lua
new file mode 100644
index 0000000..ea546ba
--- /dev/null
+++ b/lua/core/disable_builtin.lua
@@ -0,0 +1,16 @@
+vim.g.loaded_gzip = 1
+vim.g.loaded_zip = 1
+vim.g.loaded_zipPlugin = 1
+vim.g.loaded_tar = 1
+vim.g.loaded_tarPlugin = 1
+
+vim.g.loaded_getscript = 1
+vim.g.loaded_getscriptPlugin = 1
+vim.g.loaded_vimball = 1
+vim.g.loaded_vimballPlugin = 1
+vim.g.loaded_2html_plugin = 1
+
+vim.g.loaded_matchit = 1
+vim.g.loaded_matchparen = 1
+vim.g.loaded_logiPat = 1
+vim.g.loaded_rrhelper = 1
diff --git a/lua/core/init.lua b/lua/core/init.lua
new file mode 100644
index 0000000..1b4542a
--- /dev/null
+++ b/lua/core/init.lua
@@ -0,0 +1,64 @@
+-----------------------------------------------------------
+-- General
+-----------------------------------------------------------
+vim.opt.mouse = "a" -- Enable mouse support
+vim.opt.clipboard = "unnamedplus" -- Copy/paste to system clipboard
+vim.opt.termguicolors = true -- Enable 24-bit RGB colors
+vim.o.background = "light"
+vim.opt.hidden = true
+vim.opt.number = true
+vim.o.cursorlineopt = "both"
+vim.opt.conceallevel = 0
+vim.opt.relativenumber = true
+vim.opt.showcmd = true
+vim.opt.showmode = true
+vim.opt.colorcolumn = "80"
+vim.opt.cursorline = true
+vim.opt.foldlevelstart = 99
+vim.opt.showtabline = 1
+vim.opt.laststatus = 3 -- Single status line across all buffers
+vim.opt.undofile = true
+vim.opt.list = true -- Show some invisible characters like tabs
+vim.opt.undodir = vim.fn.stdpath("data") .. "/undo"
+vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
+-- TODO make it pretty with the highlights
+--vim.opt.winbar = '%!luaeval("_winbar()")' -- The winbar text, I don't know if it is possible to embed it directly here :(
+--vim.opt.winbar = "%=%m %t%="
+-----------------------------------------------------------
+-- Tabs, indent
+-----------------------------------------------------------
+vim.opt.expandtab = true -- Use spaces instead of tabs
+vim.opt.shiftwidth = 2 -- Shift 4 spaces when tab
+vim.opt.tabstop = 2 -- 1 tab == 4 spaces
+vim.opt.smartindent = true -- Autoindent new lines
+
+-----------------------------------------------------------
+-- Custom keymaps
+-----------------------------------------------------------
+vim.api.nvim_set_keymap("i", "jk", "<Esc>", {}) -- Use jk to exit insert mode
+vim.api.nvim_set_keymap("i", "kj", "<Esc>", {}) -- Use kj to exit insert mode
+vim.api.nvim_set_keymap("t", "jk", "<Esc>", {}) -- Use jk to exit terminal mode
+vim.api.nvim_set_keymap("t", "kj", "<Esc>", {}) -- Use kj to exit terminal mode
+vim.api.nvim_set_keymap("t", "<Esc>", "<C-\\><C-n>", { noremap = true }) -- Use Esc to exit terminal mode
+
+vim.api.nvim_set_keymap("i", "<C-t>", "<Esc>:tabnew<CR>", {}) -- New tab
+vim.api.nvim_set_keymap("n", "<C-t>", ":tabnew<CR>", {}) -- New tab
+
+-- No arrow keys for movement
+--nnoremap <up> <nop>
+--nnoremap <down> <nop>
+--inoremap <up> <nop>
+--inoremap <down> <nop>
+--inoremap <left> <nop>
+--inoremap <right> <nop>
+
+--Left and right to switch buffers
+--nnoremap <left> :bp<CR>
+--nnoremap <right> :bn<CR>
+
+--_winbar = function() -- My custom winbar text
+--local filename = vim.fn.expand('%')
+--return string.gsub(filename, 'term://.*:', '')
+--end
+
+require("core.disable_builtin")
diff --git a/lua/plugins/core/auto-session.lua b/lua/plugins/core/auto-session.lua
new file mode 100644
index 0000000..9bfcac0
--- /dev/null
+++ b/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/lua/plugins/core/gitsigns.lua b/lua/plugins/core/gitsigns.lua
new file mode 100644
index 0000000..e856855
--- /dev/null
+++ b/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/lua/plugins/core/luasnip.lua b/lua/plugins/core/luasnip.lua
new file mode 100644
index 0000000..622af58
--- /dev/null
+++ b/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",
+ "<leader><leader>s",
+ '<cmd>lua require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })<CR>'
+ )
+
+ 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/lua/plugins/core/nerdcommenter.lua b/lua/plugins/core/nerdcommenter.lua
new file mode 100644
index 0000000..720b3d2
--- /dev/null
+++ b/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", "<leader>cc", "<plug>NERDCommenterComment", { silent = true })
+ vim.api.nvim_set_keymap("v", "<leader>cu", "<plug>NERDCommenterUncomment", { silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>cc", "<plug>NERDCommenterComment", { noremap = false, silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>cu", "<plug>NERDCommenterUncomment", { noremap = false, silent = true })
+ end,
+ keys = {
+ { "<leader>cc", mode = "v" },
+ { "<leader>cc", mode = "n" },
+ { "<leader>cu", mode = "v" },
+ { "<leader>cu", mode = "n" },
+ },
+}
diff --git a/lua/plugins/core/nvim-tree.lua b/lua/plugins/core/nvim-tree.lua
new file mode 100644
index 0000000..e8ca82f
--- /dev/null
+++ b/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"] = { "<cmd>NvimTreeToggle<cr>", "Explorer" }
+ end,
+ },
+}
diff --git a/lua/plugins/core/tabline.lua b/lua/plugins/core/tabline.lua
new file mode 100644
index 0000000..0a8305d
--- /dev/null
+++ b/lua/plugins/core/tabline.lua
@@ -0,0 +1,3 @@
+return {
+ "mkitt/tabline.vim",
+}
diff --git a/lua/plugins/core/telescope.lua b/lua/plugins/core/telescope.lua
new file mode 100644
index 0000000..367e20c
--- /dev/null
+++ b/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"] = { "<cmd>Telescope buffers<cr>", "All" }
+ opts.f["f"] = { "<cmd>Telescope find_files<cr>", "Find" }
+ opts.f["g"] = { "<cmd>Telescope live_grep<cr>", "Grep" }
+ opts.f["b"] = { "<cmd>Telescope file_browser<cr>", "Browse" }
+ end
+ end,
+ },
+}
diff --git a/lua/plugins/core/tmux.lua b/lua/plugins/core/tmux.lua
new file mode 100644
index 0000000..0d63aa4
--- /dev/null
+++ b/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, "<C-j>", "<cmd>:TmuxNavigateDown<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-k>", "<cmd>:TmuxNavigateUp<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-h>", "<cmd>:TmuxNavigateLeft<CR>", { noremap = true })
+ nvim_set_keymap(mode, "<C-l>", "<cmd>:TmuxNavigateRight<CR>", { noremap = true })
+ end
+ end,
+}
diff --git a/lua/plugins/core/treesitter.lua b/lua/plugins/core/treesitter.lua
new file mode 100644
index 0000000..3818555
--- /dev/null
+++ b/lua/plugins/core/treesitter.lua
@@ -0,0 +1,54 @@
+---@param tbl table
+---@return table
+local tbl_uniq = function(tbl)
+ ---@type table<string, boolean>
+ 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/lua/plugins/core/which-key.lua b/lua/plugins/core/which-key.lua
new file mode 100644
index 0000000..6e046a3
--- /dev/null
+++ b/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 = { "<cmd>BufferNext<cr>", "Next" },
+ p = { "<cmd>BufferPrevious<cr>", "Previous" },
+ c = { "<cmd>BufferClose<cr>", "Close" },
+ ["1"] = { "<cmd>BufferGoto 1<cr>", "1" },
+ ["2"] = { "<cmd>BufferGoto 2<cr>", "2" },
+ ["3"] = { "<cmd>BufferGoto 3<cr>", "3" },
+ ["4"] = { "<cmd>BufferGoto 4<cr>", "4" },
+ ["5"] = { "<cmd>BufferGoto 5<cr>", "5" },
+ ["6"] = { "<cmd>BufferGoto 6<cr>", "6" },
+ ["7"] = { "<cmd>BufferGoto 7<cr>", "7" },
+ ["8"] = { "<cmd>BufferGoto 8<cr>", "8" },
+ ["9"] = { "<cmd>BufferGoto 9<cr>", "9" },
+ },
+ l = {
+ name = "LSP",
+ a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Action" },
+ f = { "<cmd>lua vim.lsp.buf.format({ async = false, timeout_ms = 5000 })<cr>", "Format" },
+ d = { "<cmd>lua vim.diagnostic.open_float()<cr>", "Diagnostic" },
+ h = { "<cmd>lua vim.lsp.buf.hover()<cr>", "Help" },
+ g = {
+ name = "Go to",
+ D = { "<cmd>lua vim.lsp.buf.declaration()<cr>", "Go to declaration" },
+ d = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Go to definition" },
+ i = { "<cmd>lua vim.lsp.buf.definition()<cr>", "Go to implementation" },
+ },
+ },
+ },
+
+ config = function(_, opts)
+ local wk = require("which-key")
+ wk.register(opts, { prefix = "<leader>" })
+ end,
+}
diff --git a/lua/plugins/extra/copilot.lua b/lua/plugins/extra/copilot.lua
new file mode 100644
index 0000000..15d0c73
--- /dev/null
+++ b/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/lua/plugins/extra/feline.lua b/lua/plugins/extra/feline.lua
new file mode 100644
index 0000000..037db34
--- /dev/null
+++ b/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/lua/plugins/extra/vim-fugitive.lua b/lua/plugins/extra/vim-fugitive.lua
new file mode 100644
index 0000000..d1f8a5a
--- /dev/null
+++ b/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/lua/plugins/eyecandy/indent-blankline.lua b/lua/plugins/eyecandy/indent-blankline.lua
new file mode 100644
index 0000000..8756757
--- /dev/null
+++ b/lua/plugins/eyecandy/indent-blankline.lua
@@ -0,0 +1,22 @@
+return {
+ "lukas-reineke/indent-blankline.nvim",
+ event = { "BufRead" },
+ main = "ibl",
+ opts = {
+ indent = {
+ char = "▏",
+ tab_char = "▏",
+ },
+ scope = {
+ enabled = true,
+ show_start = true,
+ show_end = true,
+ exclude = {
+ language = {
+ "help",
+ },
+ },
+ },
+ },
+ dependencies = { "nvim-treesitter" },
+}
diff --git a/lua/plugins/eyecandy/themes.lua b/lua/plugins/eyecandy/themes.lua
new file mode 100644
index 0000000..42e5d6c
--- /dev/null
+++ b/lua/plugins/eyecandy/themes.lua
@@ -0,0 +1,25 @@
+return {
+ {
+ "catppuccin/nvim",
+ lazy = false,
+ priority = 1000,
+ name = "catppuccin",
+ config = function()
+ local catp = require("catppuccin")
+ catp.setup({
+ flavour = "frappe",
+ integrations = {
+ indent_blankline = true,
+ which_key = true,
+ illuminate = true,
+ lsp_trouble = true,
+ navic = {
+ enabled = true,
+ custom_bg = "NONE",
+ },
+ },
+ })
+ vim.api.nvim_command("colorscheme catppuccin")
+ end,
+ },
+}
diff --git a/lua/plugins/eyecandy/vim-illuminate.lua b/lua/plugins/eyecandy/vim-illuminate.lua
new file mode 100644
index 0000000..20b9bb2
--- /dev/null
+++ b/lua/plugins/eyecandy/vim-illuminate.lua
@@ -0,0 +1,4 @@
+return {
+ "RRethy/vim-illuminate",
+ event = { "BufRead" },
+}
diff --git a/lua/plugins/eyecandy/virt-column.lua b/lua/plugins/eyecandy/virt-column.lua
new file mode 100644
index 0000000..5259d7a
--- /dev/null
+++ b/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/lua/plugins/lang/ansible.lua b/lua/plugins/lang/ansible.lua
new file mode 100644
index 0000000..6a65027
--- /dev/null
+++ b/lua/plugins/lang/ansible.lua
@@ -0,0 +1,26 @@
+return {
+ {
+ "arouene/vim-ansible-vault",
+ ft = { "ansible", "yaml.ansible", "yaml" },
+ },
+
+ {
+ "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/lua/plugins/lang/bash.lua b/lua/plugins/lang/bash.lua
new file mode 100644
index 0000000..6c6c98c
--- /dev/null
+++ b/lua/plugins/lang/bash.lua
@@ -0,0 +1,42 @@
+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
+ null_ls.builtins.formatting.shfmt,
+ })
+ 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 }
+ opts.servers.bashls = {}
+ end
+ end,
+ },
+}
diff --git a/lua/plugins/lang/c.lua b/lua/plugins/lang/c.lua
new file mode 100644
index 0000000..5b54a9d
--- /dev/null
+++ b/lua/plugins/lang/c.lua
@@ -0,0 +1,20 @@
+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, { "c" })
+ end
+ end,
+ },
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.clangd = {}
+ end
+ end,
+ },
+}
diff --git a/lua/plugins/lang/dockerfile.lua b/lua/plugins/lang/dockerfile.lua
new file mode 100644
index 0000000..ca3ccc2
--- /dev/null
+++ b/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/lua/plugins/lang/go.lua b/lua/plugins/lang/go.lua
new file mode 100644
index 0000000..7e7fa03
--- /dev/null
+++ b/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/lua/plugins/lang/groovy.lua b/lua/plugins/lang/groovy.lua
new file mode 100644
index 0000000..1ab404d
--- /dev/null
+++ b/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/lua/plugins/lang/helm.lua b/lua/plugins/lang/helm.lua
new file mode 100644
index 0000000..6b303ec
--- /dev/null
+++ b/lua/plugins/lang/helm.lua
@@ -0,0 +1,6 @@
+return {
+ {
+ "towolf/vim-helm",
+ ft = { "yaml" },
+ },
+}
diff --git a/lua/plugins/lang/jq.lua b/lua/plugins/lang/jq.lua
new file mode 100644
index 0000000..a9a41c6
--- /dev/null
+++ b/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/lua/plugins/lang/json.lua b/lua/plugins/lang/json.lua
new file mode 100644
index 0000000..1d2d073
--- /dev/null
+++ b/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/lua/plugins/lang/jsonnet.lua b/lua/plugins/lang/jsonnet.lua
new file mode 100644
index 0000000..dff2e4b
--- /dev/null
+++ b/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/lua/plugins/lang/ledger.lua b/lua/plugins/lang/ledger.lua
new file mode 100644
index 0000000..bc265e1
--- /dev/null
+++ b/lua/plugins/lang/ledger.lua
@@ -0,0 +1,25 @@
+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, { "ledger" })
+ end
+ end,
+ },
+ {
+ "ledger/vim-ledger",
+ ft = { "ldg", "ledger", "journal" },
+ },
+ -- TODO
+ --{
+ --"hrsh7th/nvim-cmp",
+ --opts = function(_, opts)
+ --if type(opts) == "table" then
+ --opts.sources = opts.sources or {}
+ --vim.list_extend(opts.sources, { name = "ledger" })
+ --end
+ --end,
+ --},
+}
diff --git a/lua/plugins/lang/lua.lua b/lua/plugins/lang/lua.lua
new file mode 100644
index 0000000..5e08867
--- /dev/null
+++ b/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/lua/plugins/lang/markdown.lua b/lua/plugins/lang/markdown.lua
new file mode 100644
index 0000000..cfa6fd2
--- /dev/null
+++ b/lua/plugins/lang/markdown.lua
@@ -0,0 +1,76 @@
+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" },
+ },
+
+ {
+ "dbridges/vim-markdown-runner",
+ cmd = { "MarkdownRunner", "MarkdownRunnerInsert" },
+ config = function()
+ vim.api.nvim_set_keymap("n", "<leader>r", "<cmd>MarkdownRunner<CR>", { noremap = false, silent = true })
+ vim.api.nvim_set_keymap("n", "<leader>R", "<cmd>MarkdownRunnerInsert<CR>", { noremap = false, silent = true })
+ end,
+ ft = { "markdown" },
+ },
+
+ {
+ "preservim/vim-markdown",
+ dependencies = { "godlygeek/tabular" },
+ init = function()
+ -- All concealing is handled by Treesitter
+ vim.g.vim_markdown_conceal = 0
+ vim.g.vim_markdown_conceal_code_blocks = 0
+ vim.g.vim_markdown_frontmatter = 0
+ vim.g.vim_markdown_strikethrough = 0
+
+ vim.g.vim_markdown_auto_insert_bullets = 0
+ vim.g.vim_markdown_new_list_item_indent = 0
+ vim.g.vim_markdown_folding_disabled = 1
+ 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",
+ "markdown",
+ })
+ 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/lua/plugins/lang/nix.lua b/lua/plugins/lang/nix.lua
new file mode 100644
index 0000000..8fed2ce
--- /dev/null
+++ b/lua/plugins/lang/nix.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, { "nix" })
+ 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.statix,
+ null_ls.builtins.diagnostics.deadnix,
+ null_ls.builtins.formatting.nixpkgs_fmt,
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.rnix = {}
+ end
+ end,
+ },
+}
diff --git a/lua/plugins/lang/perl.lua b/lua/plugins/lang/perl.lua
new file mode 100644
index 0000000..6ec7220
--- /dev/null
+++ b/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/lua/plugins/lang/promql.lua b/lua/plugins/lang/promql.lua
new file mode 100644
index 0000000..5589b89
--- /dev/null
+++ b/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/nvim/promqlfmt.nvim",
+ --dir = "/Users/christian.segundo/git/promql.nvim",
+ --dev = true,
+ cmd = { "Promqlfmt" },
+ },
+}
diff --git a/lua/plugins/lang/swift.lua b/lua/plugins/lang/swift.lua
new file mode 100644
index 0000000..d7f6d33
--- /dev/null
+++ b/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/lua/plugins/lang/terraform.lua b/lua/plugins/lang/terraform.lua
new file mode 100644
index 0000000..e7ccff4
--- /dev/null
+++ b/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/lua/plugins/lang/typescript.lua b/lua/plugins/lang/typescript.lua
new file mode 100644
index 0000000..f21c876
--- /dev/null
+++ b/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", "javascript" })
+ 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/lua/plugins/lang/yaml.lua b/lua/plugins/lang/yaml.lua
new file mode 100644
index 0000000..f4b34aa
--- /dev/null
+++ b/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/lua/plugins/lang/zig.lua b/lua/plugins/lang/zig.lua
new file mode 100644
index 0000000..1970797
--- /dev/null
+++ b/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/lua/plugins/lsp/cmp.lua b/lua/plugins/lsp/cmp.lua
new file mode 100644
index 0000000..004c265
--- /dev/null
+++ b/lua/plugins/lsp/cmp.lua
@@ -0,0 +1,97 @@
+return {
+ "hrsh7th/nvim-cmp",
+ opts = {
+ sources = {
+ { name = "ledger" },
+ {
+ 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 = {
+ ["<C-p>"] = 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" }),
+ ["<C-n>"] = 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" }),
+ ["<C-l>"] = cmp.mapping(function(fallback)
+ if luasnip.choice_active() then
+ luasnip.change_choice(1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.close(),
+ ["<CR>"] = 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" },
+ { "someone-stole-my-name/cmp-ledger" },
+ },
+}
diff --git a/lua/plugins/lsp/config.lua b/lua/plugins/lsp/config.lua
new file mode 100644
index 0000000..579cfec
--- /dev/null
+++ b/lua/plugins/lsp/config.lua
@@ -0,0 +1,45 @@
+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/lua/plugins/lsp/null-ls.lua b/lua/plugins/lsp/null-ls.lua
new file mode 100644
index 0000000..5f71af7
--- /dev/null
+++ b/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/lua/plugins/lsp/trouble.lua b/lua/plugins/lsp/trouble.lua
new file mode 100644
index 0000000..207edb5
--- /dev/null
+++ b/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,
+ },
+}
diff --git a/lua/snippets/lua.lua b/lua/snippets/lua.lua
new file mode 100644
index 0000000..dbec22a
--- /dev/null
+++ b/lua/snippets/lua.lua
@@ -0,0 +1,3 @@
+return {
+ s("ignore", t("-- foo $0")),
+}
diff --git a/lua/snippets/sh/bash-find.lua b/lua/snippets/sh/bash-find.lua
new file mode 100644
index 0000000..be56beb
--- /dev/null
+++ b/lua/snippets/sh/bash-find.lua
@@ -0,0 +1,32 @@
+local is_bash = function()
+ local shebang = vim.api.nvim_buf_get_lines(0, 0, 1, true) or {}
+ if shebang[1] and string.find(shebang[1], "bash") then
+ return true
+ end
+ return false
+end
+
+return {
+ s(
+ { trig = "find-xargs", dscr = "" },
+ fmt( -- The snippet code actually looks like the equation environment it produces.
+ [[
+ find <> \
+ -type <> \
+ -name '*.<>' \
+ -print0 | xargs -0 -r -P 0 <>
+ ]],
+ {
+ i(1, "."), -- search directory
+ c(2, { t("f"), t("d") }), -- file or directory
+ i(3, "ext"), -- file extension
+ i(4, "echo"), -- xaargs command
+ },
+ { delimiters = "<>" }
+ ),
+ {
+ show_condition = is_bash,
+ condition = is_bash,
+ }
+ ),
+}
diff --git a/lua/snippets/sh/bash-misc.lua b/lua/snippets/sh/bash-misc.lua
new file mode 100644
index 0000000..f3a11eb
--- /dev/null
+++ b/lua/snippets/sh/bash-misc.lua
@@ -0,0 +1,16 @@
+return {
+ s({
+ trig = "no-source",
+ dscr = "Exit with an error if script is being sourced",
+ }, {
+ t({
+ 'if [[ "${0}" != "${BASH_SOURCE[0]}" ]]; then',
+ '\techo "Error: script ${BASH_SOURCE[0]} is not supported to be sourced!"',
+ "\treturn 1",
+ "fi",
+ }),
+ }),
+}
+
+
+