From 56cfaf436047de8f03d124cb4ae4725b49e8eccb Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Thu, 28 Sep 2023 10:31:25 -0400 Subject: [PATCH] Fixed .gitignore --- .gitignore | 3 - nvim/lazy-lock.json | 33 ++++ nvim/m-housh/lazy-lock.json | 34 ++++ nvim/m-housh/lua/user/plugin/cmp.lua | 143 ++++++++++++++ nvim/m-housh/lua/user/plugin/diffview.lua | 48 +++++ nvim/m-housh/lua/user/plugin/init.lua | 30 +++ nvim/m-housh/lua/user/plugin/lsp.lua | 209 ++++++++++++++++++++ nvim/m-housh/lua/user/plugin/lualine.lua | 119 +++++++++++ nvim/m-housh/lua/user/plugin/neo-tree.lua | 23 +++ nvim/m-housh/lua/user/plugin/neogit.lua | 38 ++++ nvim/m-housh/lua/user/plugin/swift.lua | 14 ++ nvim/m-housh/lua/user/plugin/telescope.lua | 78 ++++++++ nvim/m-housh/lua/user/plugin/theme.lua | 29 +++ nvim/m-housh/lua/user/plugin/toggleterm.lua | 25 +++ nvim/m-housh/lua/user/plugin/treesitter.lua | 75 +++++++ nvim/m-housh/lua/user/plugin/which-key.lua | 8 + nvim/m-housh/lua/user/plugin/wrapping.lua | 20 ++ 17 files changed, 926 insertions(+), 3 deletions(-) create mode 100644 nvim/lazy-lock.json create mode 100644 nvim/m-housh/lazy-lock.json create mode 100644 nvim/m-housh/lua/user/plugin/cmp.lua create mode 100644 nvim/m-housh/lua/user/plugin/diffview.lua create mode 100644 nvim/m-housh/lua/user/plugin/init.lua create mode 100644 nvim/m-housh/lua/user/plugin/lsp.lua create mode 100644 nvim/m-housh/lua/user/plugin/lualine.lua create mode 100644 nvim/m-housh/lua/user/plugin/neo-tree.lua create mode 100644 nvim/m-housh/lua/user/plugin/neogit.lua create mode 100644 nvim/m-housh/lua/user/plugin/swift.lua create mode 100644 nvim/m-housh/lua/user/plugin/telescope.lua create mode 100644 nvim/m-housh/lua/user/plugin/theme.lua create mode 100644 nvim/m-housh/lua/user/plugin/toggleterm.lua create mode 100644 nvim/m-housh/lua/user/plugin/treesitter.lua create mode 100644 nvim/m-housh/lua/user/plugin/which-key.lua create mode 100644 nvim/m-housh/lua/user/plugin/wrapping.lua diff --git a/.gitignore b/.gitignore index 9f5767e..579406b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ **/.DS_Store **/Brewfile.lock.json -**/plugins -**/plugin **/.zcompdump* **/.zcompdump **/.zcompcache @@ -11,4 +9,3 @@ **/completions/* **/.netrwhist **/.zshrc-local -**/lazy-lock.json diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json new file mode 100644 index 0000000..c181ee7 --- /dev/null +++ b/nvim/lazy-lock.json @@ -0,0 +1,33 @@ +{ + "bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-calc": { "branch": "main", "commit": "ce91d14d2e7a8b3f6ad86d85e34d41c1ae6268d9" }, + "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, + "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-spell": { "branch": "master", "commit": "60584cb75e5e8bba5a0c9e4c3ab0791e0698bffa" }, + "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, + "diffview.nvim": { "branch": "main", "commit": "a111d19ccceac6530448d329c63f998f77b5626e" }, + "lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" }, + "lsp_signature.nvim": { "branch": "master", "commit": "51784ba4ce87b362c139b8c2db6583c0aec20536" }, + "lspkind-nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, + "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "f014db32437aa61c86fc0ef1067cd2bc6a37205c" }, + "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "2d89ca96e08eb6e9c8e50e1bb4738bc5125c9f12" }, + "neogit": { "branch": "master", "commit": "66ba8b8cacc4481cc9002aa8b518c5f01f685b56" }, + "nightfox.nvim": { "branch": "main", "commit": "e886e39e592e89f316536a6f070365a9d88901c9" }, + "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" }, + "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, + "nvim-lsp-installer": { "branch": "main", "commit": "17e0bfa5f2c8854d1636fcd036dc8284db136baa" }, + "nvim-lspconfig": { "branch": "master", "commit": "cc388d3f6b9c7c943ae2b2dcd46ad470fd257f91" }, + "nvim-treesitter": { "branch": "master", "commit": "f9034812d8335356ef3ede49110d1569624033fa" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" }, + "nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" }, + "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, + "vim-vsnip": { "branch": "master", "commit": "be277461265f1e5c7db470aa479f30956597ea9e" }, + "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" } +} \ No newline at end of file diff --git a/nvim/m-housh/lazy-lock.json b/nvim/m-housh/lazy-lock.json new file mode 100644 index 0000000..12940a5 --- /dev/null +++ b/nvim/m-housh/lazy-lock.json @@ -0,0 +1,34 @@ +{ + "bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-calc": { "branch": "main", "commit": "ce91d14d2e7a8b3f6ad86d85e34d41c1ae6268d9" }, + "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, + "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-spell": { "branch": "master", "commit": "32a0867efa59b43edbb2db67b0871cfad90c9b66" }, + "diffview.nvim": { "branch": "main", "commit": "a111d19ccceac6530448d329c63f998f77b5626e" }, + "lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" }, + "lsp_signature.nvim": { "branch": "master", "commit": "bdf3dc7bb03edd25c2173e0e31c2fb122052ed23" }, + "lspkind-nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, + "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "2451adb9bdb0fd32140bf3aa8dbc17ff60050db3" }, + "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "71f1841ba6c652908678cece623f52c1fea8a6cd" }, + "neogit": { "branch": "master", "commit": "c4f4cd0116cbd969aa0f485c9f4154df1c3f3662" }, + "nightfox.nvim": { "branch": "main", "commit": "ee3525fdfbe2ed81270a336ccbe62f433165357b" }, + "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" }, + "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, + "nvim-lsp-installer": { "branch": "main", "commit": "17e0bfa5f2c8854d1636fcd036dc8284db136baa" }, + "nvim-lspconfig": { "branch": "master", "commit": "ede4114e1fd41acb121c70a27e1b026ac68c42d6" }, + "nvim-treesitter": { "branch": "master", "commit": "f3fb301b267e85e4cbc725561da4a82b1c3089c8" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "bd103502252027434ec42f628d2dbf54821d4ce6" }, + "nvim-web-devicons": { "branch": "master", "commit": "45d0237c427baba8cd05e0ab26d30e2ee58c2c82" }, + "plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" }, + "swift.nvim": { "branch": "main", "commit": "a84cb608b0076aef39d3d4b1d20448a86a73b2eb" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "54930e1abfc94409e1bb9266e752ef8379008592" }, + "toggleterm.nvim": { "branch": "main", "commit": "61e8ad370d4da5d84c77e31671027bc094ac06ca" }, + "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }, + "wrapping.nvim": { "branch": "master", "commit": "e1ce68aae5ea729fc20e5bc17fb569314f76b9bb" } +} \ No newline at end of file diff --git a/nvim/m-housh/lua/user/plugin/cmp.lua b/nvim/m-housh/lua/user/plugin/cmp.lua new file mode 100644 index 0000000..d6772bc --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/cmp.lua @@ -0,0 +1,143 @@ +return { + "hrsh7th/nvim-cmp", + enabled = true, + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-cmdline", + --"hrsh7th/cmp-vsnip", + --"saadparwaiz1/cmp_luasnip", + "f3fora/cmp-spell", + "hrsh7th/cmp-calc", + "hrsh7th/cmp-emoji" + }, + config = function() + -- Setup nvim-cmp. + local cmp = require "cmp" + local lspkind = require("lspkind") + local capabilities = require('cmp_nvim_lsp').default_capabilities() + --local luasnip = require('luasnip') + + local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 + and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub( + col, col):match("%s") == nil + end + + local feedkey = function(key, mode) + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), + mode, true) + end + + + require('lspconfig').sourcekit.setup { + capabilities = capabilities + } + + lspkind.init({ + symbol_map = { + + Text = "", + Method = "󰡱", + Function = "󰡱", + Constructor = "", + Field = "ﰠ", + Variable = "", + Class = "ﴯ", + Interface = "", + Module = "", + Property = "ﰠ", + Unit = "塞", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "פּ", + Event = "", + Operator = "", + TypeParameter = "" + } + }) + + cmp.setup({ + formatting = { + format = lspkind.cmp_format { + with_text = false, + maxwidth = 50, + menu = { + buffer = "BUF", + nvim_lsp = "LSP", + path = "PATH", + vsnip = "SNIP", + calc = "CALC", + spell = "SPELL", + emoji = "EMOJI" + } + } + }, + experimental = {native_menu = false, ghost_text = false}, + snippet = { + expand = function(args) + --require('luasnip').lsp_expand(args.body) + end + }, + mapping = { + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.close(), + [""] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = false + }, +-- [""] = cmp.mapping(function(fallback) +-- if cmp.visible() then +-- cmp.select_next_item() +-- elseif luasnip.expandable() then +-- luasnip.expand() +-- elseif luasnip.expand_or_jumpable() then +-- luasnip.expand_or_jump() +-- elseif has_words_before() then +-- cmp.complete() +-- else +-- fallback() +-- end +-- end, {"i", "s"}), +-- [""] = cmp.mapping(function() +-- if cmp.visible() then +-- cmp.select_prev_item() +-- elseif vim.fn["vsnip#jumpable"](-1) == 1 then +-- feedkey("(vsnip-jump-prev)", "") +-- end +-- end, {"i", "s"}) + }, + sources = { + {name = "nvim_lsp"}, + {name = "buffer", keyword_length = 5}, + {name = 'luasnip', option = { show_autosnippets = true } }, + {name = "calc"}, + {name = "emoji"}, + {name = "spell"}, + {name = "path"} + } + }) + + -- Use buffer source for `/`. + cmp.setup.cmdline("/", {sources = {{name = "buffer"}}}) + + -- Use cmdline & path source for ':'. + cmp.setup.cmdline(":", { + sources = cmp.config.sources({{name = "path"}}, {{name = "cmdline"}}) + }) + end + } diff --git a/nvim/m-housh/lua/user/plugin/diffview.lua b/nvim/m-housh/lua/user/plugin/diffview.lua new file mode 100644 index 0000000..fe54e53 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/diffview.lua @@ -0,0 +1,48 @@ +return { + "sindrets/diffview.nvim", + cmd = { + "DiffviewOpen", + "DiffviewClose", + "DiffviewToggleFiles", + "DiffviewFocusFiles" + }, + config = function() + local cb = require('diffview.config').diffview_callback + + require('diffview').setup { + diff_binaries = false, -- Show diffs for binaries + use_icons = true, -- Requires nvim-web-devicons + file_panel = { + width = 35, + }, + key_bindings = { + disable_defaults = false, -- Disable the default key bindings + -- The `view` bindings are active in the diff buffers, only when the current + -- tabpage is a Diffview. + view = { + [""] = cb("select_next_entry"), -- Open the diff for the next file + [""] = cb("select_prev_entry"), -- Open the diff for the previous file + ["e"] = cb("focus_files"), -- Bring focus to the files panel + ["b"] = cb("toggle_files"), -- Toggle the files panel. + }, + file_panel = { + ["j"] = cb("next_entry"), -- Bring the cursor to the next file entry + [""] = cb("next_entry"), + ["k"] = cb("prev_entry"), -- Bring the cursor to the previous file entry. + [""] = cb("prev_entry"), + [""] = cb("select_entry"), -- Open the diff for the selected entry. + ["o"] = cb("select_entry"), + ["<2-LeftMouse>"] = cb("select_entry"), + ["-"] = cb("toggle_stage_entry"), -- Stage / unstage the selected entry. + ["S"] = cb("stage_all"), -- Stage all entries. + ["U"] = cb("unstage_all"), -- Unstage all entries. + ["R"] = cb("refresh_files"), -- Update stats and entries in the file list. + [""] = cb("select_next_entry"), + [""] = cb("select_prev_entry"), + ["e"] = cb("focus_files"), + ["b"] = cb("toggle_files"), + } + } + } + end +} diff --git a/nvim/m-housh/lua/user/plugin/init.lua b/nvim/m-housh/lua/user/plugin/init.lua new file mode 100644 index 0000000..81501e9 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/init.lua @@ -0,0 +1,30 @@ +-- This file contains plugin's that don't require much configuration. +return { + { + "L3MON4D3/LuaSnip", + version = "2.*", + build = "make install_jsregexp", + config = function() + local luasnip = require('luasnip') + local types = require('luasnip.util.types') + luasnip.config.set_config { + history = true, + updateevents = "TextChanged,TextChangedI", + enable_autosnippets = true, + ext_opts = { + [types.choiceNode] = { + active = { + virt_text = { { "<-", "Error" } }, + }, + }, + }, + } + end + }, + { + "hrsh7th/vim-vsnip", + config = function() + vim.g.vsnip_snippet_dir = os.getenv('HOME') .. '/.config/m-housh/lua/snippets/' + end + }, +} diff --git a/nvim/m-housh/lua/user/plugin/lsp.lua b/nvim/m-housh/lua/user/plugin/lsp.lua new file mode 100644 index 0000000..6d86fad --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/lsp.lua @@ -0,0 +1,209 @@ +return { + { + "williamboman/nvim-lsp-installer", + config = function() + require("nvim-lsp-installer").setup() + end + }, + { + "williamboman/mason-lspconfig.nvim", + dependencies = { + "williamboman/mason.nvim", + "onsails/lspkind-nvim", + "famiu/bufdelete.nvim", + "ray-x/lsp_signature.nvim", + "neovim/nvim-lspconfig" + }, + opts = { + ensure_installed = { + "bashls", + "clangd", + "dockerls", + "gopls", + "jsonls", + "jedi_language_server", + "lua_ls", + "marksman", + "terraformls", + "tsserver", + "texlab", + "yamlls", + } + } + }, + { + "neovim/nvim-lspconfig", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + }, + config = function() + require("mason").setup() + require("mason-lspconfig").setup() + local nvim_lsp = require("lspconfig") + + -- Use an on_attach function to only map the following keys + -- after the language server attaches to the current buffer + local on_attach = function(bufnr) + local function buf_set_keymap(...) + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + + -- Mappings. + local opts = {noremap = true, silent = true} + + -- See `:help vim.lsp.*` for documentation on any of the below functions + buf_set_keymap("n", "gD", "lua vim.lsp.buf.declaration()", opts) + buf_set_keymap("n", "gd", "lua vim.lsp.buf.definition()", opts) + buf_set_keymap("n", "K", "lua vim.lsp.buf.hover()", opts) + buf_set_keymap("n", "gi", "lua vim.lsp.buf.implementation()", opts) + buf_set_keymap("n", "gT", vim.lsp.buf.type_definition, opts) + -- buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap("n", "wa", + "lua vim.lsp.buf.add_workspace_folder()", opts) + buf_set_keymap("n", "wr", + "lua vim.lsp.buf.remove_workspace_folder()", opts) + buf_set_keymap("n", "wl", + "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", + opts) + buf_set_keymap("n", "D", + "lua vim.lsp.buf.type_definition()", opts) + buf_set_keymap("n", "rn", "lua vim.lsp.buf.rename()", opts) + buf_set_keymap("n", "ca", "lua vim.lsp.buf.code_action()", + opts) + buf_set_keymap("n", "gr", "lua vim.lsp.buf.references()", opts) + buf_set_keymap("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) + buf_set_keymap("n", "[d", "lua vim.lsp.diagnostic.goto_prev()", opts) + + buf_set_keymap("n", "]d", "lua vim.lsp.diagnostic.goto_next()", opts) + buf_set_keymap("n", "q", "lua vim.lsp.diagnostic.set_loclist()", opts) + buf_set_keymap("n", "f", "lua vim.lsp.buf.formatting()", opts) + + end + + -- Use a loop to conveniently call 'setup' on multiple servers and + -- map buffer local keybindings when the language server attaches + --local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = require("cmp_nvim_lsp").default_capabilities() + + local servers = { + "bashls", + "clangd", + "dockerls", + "gopls", + "jsonls", + "jedi_language_server", + "lua_ls", + "marksman", + "sourcekit", + "terraformls", + "tsserver", + "texlab", + "yamlls", + } + for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { + on_attach = on_attach, + capabilities = capabilities, + settings = { + gopls = {analyses = {unusedparams = false}, staticcheck = true}, + lua_ls = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + } + }, + json = { + format = {enabled = false}, + schemas = { + { + description = "ESLint config", + fileMatch = {".eslintrc.json", ".eslintrc"}, + url = "http://json.schemastore.org/eslintrc" + }, { + description = "Package config", + fileMatch = {"package.json"}, + url = "https://json.schemastore.org/package" + }, { + description = "Packer config", + fileMatch = {"packer.json"}, + url = "https://json.schemastore.org/packer" + }, { + description = "Renovate config", + fileMatch = { + "renovate.json", "renovate.json5", + ".github/renovate.json", ".github/renovate.json5", + ".renovaterc", ".renovaterc.json" + }, + url = "https://docs.renovatebot.com/renovate-schema" + }, { + description = "OpenApi config", + fileMatch = {"*api*.json"}, + url = "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json" + } + } + }, + redhat = {telemetry = {enabled = false}}, + texlab = { + auxDirectory = ".", + bibtexFormatter = "texlab", + build = { + args = { + "--keep-intermediates", "--keep-logs", "--synctex", "%f" + }, + executable = "tectonic", + forwardSearchAfter = false, + onSave = false + }, + chktex = {onEdit = false, onOpenAndSave = false}, + diagnosticsDelay = 300, + formatterLineLength = 80, + forwardSearch = {args = {}}, + latexFormatter = "latexindent", + latexindent = {modifyLineBreaks = false} + }, + yaml = { + schemaStore = { + enable = true, + url = "https://www.schemastore.org/api/json/catalog.json" + }, + schemas = { + kubernetes = "/*.yaml", + ["http://json.schemastore.org/github-workflow"] = ".github/workflows/*.{yml,yaml}", + ["http://json.schemastore.org/github-action"] = ".github/action.{yml,yaml}", + ["http://json.schemastore.org/ansible-stable-2.9"] = "roles/tasks/*.{yml,yaml}", + ["http://json.schemastore.org/prettierrc"] = ".prettierrc.{yml,yaml}", + ["http://json.schemastore.org/kustomization"] = "kustomization.{yml,yaml}", + ["http://json.schemastore.org/ansible-playbook"] = "*play*.{yml,yaml}", + ["http://json.schemastore.org/chart"] = "Chart.{yml,yaml}", + ["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}", + ["https://json.schemastore.org/gitlab-ci"] = "*gitlab-ci*.{yml,yaml}", + ["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}", + ["https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json"] = "docker-compose.{yml,yaml}", + ["https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json"] = "*flow*.{yml,yaml}" + }, + format = {enabled = false}, + validate = false, -- TODO: conflicts between Kubernetes resources and kustomization.yaml + completion = true, + hover = true + } + }, + flags = {debounce_text_changes = 150} + } + require"lsp_signature".setup({ + bind = true, -- This is mandatory, otherwise border config won't get registered. + floating_window = true, -- show hint in a floating window, set to false for virtual text only mode + doc_lines = 2, -- Set to 0 for not showing doc + hint_prefix = "🐼 ", + -- use_lspsaga = false, -- set to true if you want to use lspsaga popup + handler_opts = { + border = "shadow" -- double, single, shadow, none + } + }) + end + + -- Test source-kit + require('lspconfig').sourcekit.setup{} + + end + } +} diff --git a/nvim/m-housh/lua/user/plugin/lualine.lua b/nvim/m-housh/lua/user/plugin/lualine.lua new file mode 100644 index 0000000..a48bf77 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/lualine.lua @@ -0,0 +1,119 @@ +return { + "nvim-lualine/lualine.nvim", + config = function() + local colors = { + red = '#ca1243', + grey = '#a0a1a7', + black = '#383a42', + white = '#f3f3f3', + light_green = '#83a598', + orange = '#fe8019', + green = '#8ec07c', + } + + local empty = require('lualine.component'):extend() + function empty:draw(default_highlight) + self.status = '' + self.applied_separator = '' + self:apply_highlights(default_highlight) + self:apply_section_separators() + return self.status + end + + -- Put proper separators and gaps between components in sections + local function process_sections(sections) + for name, section in pairs(sections) do + local left = name:sub(9, 10) < 'x' + for pos = 1, name ~= 'lualine_z' and #section or #section - 1 do + table.insert(section, pos * 2, { empty, color = { fg = colors.white, bg = colors.white } }) + end + for id, comp in ipairs(section) do + if type(comp) ~= 'table' then + comp = { comp } + section[id] = comp + end + comp.separator = left and { right = '' } or { left = '' } + end + end + return sections + end + + local function search_result() + if vim.v.hlsearch == 0 then + return '' + end + local last_search = vim.fn.getreg '/' + if not last_search or last_search == '' then + return '' + end + local searchcount = vim.fn.searchcount { maxcount = 9999 } + return last_search .. '(' .. searchcount.current .. '/' .. searchcount.total .. ')' + end + + local function modified() + if vim.bo.modified then + return '+' + elseif vim.bo.modifiable == false or vim.bo.readonly == true then + return '-' + end + return '' + end + + require('lualine').setup { + options = { + theme = 'auto', + component_separators = '', + section_separators = { left = '', right = '' }, + }, + sections = process_sections { + lualine_a = { 'mode' }, + lualine_b = { + 'branch', + 'diff', + { + 'diagnostics', + source = { 'nvim' }, + sections = { 'error' }, + diagnostics_color = { error = { bg = colors.red, fg = colors.white } }, + }, + { + 'diagnostics', + source = { 'nvim' }, + sections = { 'warn' }, + diagnostics_color = { warn = { bg = colors.orange, fg = colors.white } }, + }, + { 'filename', file_status = false, path = 1 }, + { modified, color = { bg = colors.red } }, + { + '%w', + cond = function() + return vim.wo.previewwindow + end, + }, + { + '%r', + cond = function() + return vim.bo.readonly + end, + }, + { + '%q', + cond = function() + return vim.bo.buftype == 'quickfix' + end, + }, + }, + lualine_c = {}, + lualine_x = {}, + lualine_y = { search_result, 'filetype' }, + lualine_z = { '%l:%c', '%p%%/%L' }, + }, + inactive_sections = { + lualine_c = { '%f %y %m' }, + lualine_x = {}, + }, + tabline = {}, + extensions = {"nvim-tree"} + } + end +} diff --git a/nvim/m-housh/lua/user/plugin/neo-tree.lua b/nvim/m-housh/lua/user/plugin/neo-tree.lua new file mode 100644 index 0000000..b5b9b24 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/neo-tree.lua @@ -0,0 +1,23 @@ +return { + "nvim-neo-tree/neo-tree.nvim", + branch = "v3.x", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended + "MunifTanjim/nui.nvim", + }, + opts = { + close_if_last_window = false, + enable_git_status = true, + enable_diagnostics = true, + filesystem = { + always_show = { + "plugins" + }, + filtered_items = { + hide_dotfiles = false + }, + use_libuv_file_watcher = true + }, + } + } diff --git a/nvim/m-housh/lua/user/plugin/neogit.lua b/nvim/m-housh/lua/user/plugin/neogit.lua new file mode 100644 index 0000000..c19d6e9 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/neogit.lua @@ -0,0 +1,38 @@ +return { + "TimUntersberger/neogit", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-telescope/telescope.nvim", -- optional + "sindrets/diffview.nvim", -- optional + }, + opts = { + disable_signs = false, + disable_context_highlighting = false, + disable_commit_confirmation = true, + -- customize displayed signs + signs = { + -- { CLOSED, OPENED } + section = { ">", "v" }, + item = { ">", "v" }, + hunk = { "", "" }, + }, + integrations = { + diffview = true + }, + -- override/add mappings + mappings = { + -- modify status buffer mappings + status = { + -- Adds a mapping with "B" as key that does the "BranchPopup" command + ["B"] = "BranchPopup", + ["C"] = "CommitPopup", + -- ["P"] = "PullPopup", + ["S"] = "Stage", + -- ["D"] = "Discard", + -- Removes the default mapping of "s" + -- ["s"] = "", + } + } + }, + cmd = "Neogit", +} diff --git a/nvim/m-housh/lua/user/plugin/swift.lua b/nvim/m-housh/lua/user/plugin/swift.lua new file mode 100644 index 0000000..2c0a844 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/swift.lua @@ -0,0 +1,14 @@ +return { + 'm-housh/swift.nvim', + dependencies = { + 'akinsho/toggleterm.nvim' + }, + config = function() + require('swift').setup() + local default_options = { noremap = true, silent = true } + local actions = require('swift.actions') + + vim.keymap.set('n', '', actions.build, default_options) + vim.keymap.set('n', '', actions.test, default_options) + end + } diff --git a/nvim/m-housh/lua/user/plugin/telescope.lua b/nvim/m-housh/lua/user/plugin/telescope.lua new file mode 100644 index 0000000..4cdd7b2 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/telescope.lua @@ -0,0 +1,78 @@ +return { + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + dependencies = { + 'nvim-lua/plenary.nvim' + }, + config = function() + local actions = require('telescope.actions') + + require('telescope').setup({ + defaults = { + file_ignore_patterns = {"node_modules", "%.jpg", "%.png"}, + vimgrep_arguments = { + 'rg', + '--follow', + '--color=never', + '--no-heading', + '--with-filename', + '--line-number', + '--column', + '--smart-case' + }, + mappings = { + i = { + -- Close on first esc instead of gonig to normal mode + [""] = actions.close, + [""] = actions.send_selected_to_qflist, + [""] = actions.send_to_qflist, + [""] = actions.toggle_selection + actions.move_selection_next, + [""] = actions.toggle_selection + actions.move_selection_previous, + }, + n = { + [""] = actions.toggle_selection + actions.move_selection_next, + [""] = actions.toggle_selection + actions.move_selection_previous, + [""] = actions.send_selected_to_qflist, + [""] = actions.send_to_qflist, + }, + }, + prompt_prefix = " ", + selection_caret = " ", + entry_prefix = " ", + initial_mode = "insert", + selection_strategy = "reset", + sorting_strategy = "descending", + layout_strategy = "flex", + layout_config = { + width = 0.75, + prompt_position = "bottom", + preview_cutoff = 120, + horizontal = { mirror = false }, + vertical = { mirror = true }, + }, + file_sorter = require'telescope.sorters'.get_fuzzy_file, + generic_sorter = require'telescope.sorters'.get_generic_fuzzy_sorter, + -- path_display = true, -- strange behaviour not showing the files in result window + winblend = 0, + border = {}, + borderchars = { '─', '│', '─', '│', '╭', '╮', '╯', '╰' }, + color_devicons = true, + use_less = true, + set_env = { ['COLORTERM'] = 'truecolor' }, -- default = nil, + file_previewer = require'telescope.previewers'.vim_buffer_cat.new, + grep_previewer = require'telescope.previewers'.vim_buffer_vimgrep.new, + qflist_previewer = require'telescope.previewers'.vim_buffer_qflist.new, + + -- Developer configurations: Not meant for general override + buffer_previewer_maker = require'telescope.previewers'.buffer_previewer_maker + } + }) + + local builtin = require('telescope.builtin') + -- Telescope keymaps + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'fb', builtin.buffers, {}) + vim.keymap.set('n', 'fh', builtin.help_tags, {}) + end +} diff --git a/nvim/m-housh/lua/user/plugin/theme.lua b/nvim/m-housh/lua/user/plugin/theme.lua new file mode 100644 index 0000000..b51c4d6 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/theme.lua @@ -0,0 +1,29 @@ +return { + 'EdenEast/nightfox.nvim', + lazy = false, -- make sure we load this during startup + priority = 1000, -- make sure to load this before all other plugins. + opts = { + fox = "nightfox", -- change the colorscheme to use terafox + styles = { + comments = "italic", -- change style of comments to be italic + keywords = "bold", -- change style of keywords to be bold + functions = "italic,bold" -- styles can be a comma separated list + }, + inverse = { + match_paren = true, -- inverse the highlighting of match_parens + }, + colors = { + red = "#FF000", -- Override the red color for MAX POWER + --bg_alt = "#000000", + }, + hlgroups = { + TSPunctDelimiter = { fg = "${red}" }, -- Override a highlight group with the color red + LspCodeLens = { bg = "#000000", style = "italic" }, + } + + }, + config = function() + require('nightfox').load() + vim.cmd("colorscheme terafox") + end + } diff --git a/nvim/m-housh/lua/user/plugin/toggleterm.lua b/nvim/m-housh/lua/user/plugin/toggleterm.lua new file mode 100644 index 0000000..cf901a1 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/toggleterm.lua @@ -0,0 +1,25 @@ +return { + 'akinsho/toggleterm.nvim', + enable = true, + opts = { + size = 20, + open_mapping = [[]], + hide_numbers = true, + shade_terminals = true, + shading_factor = 2, + start_in_insert = true, + insert_mappings = true, + persist_size = true, + direction = "float", + close_on_exit = true, + shell = vim.o.shell, + float_opts = { + border = "curved", + winblend = 0, + highlights = { + border = "Normal", + background = "Normal", + }, + }, + } + } diff --git a/nvim/m-housh/lua/user/plugin/treesitter.lua b/nvim/m-housh/lua/user/plugin/treesitter.lua new file mode 100644 index 0000000..e78824b --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/treesitter.lua @@ -0,0 +1,75 @@ +return { + "nvim-treesitter/nvim-treesitter", + dependencies = { + 'nvim-telescope/telescope-fzf-native.nvim', + 'nvim-treesitter/nvim-treesitter-textobjects', + }, + build = ':TSUpdate', + config = function() + require('nvim-treesitter.configs').setup { + ensure_installed = { + "bash", + "cmake", + "dockerfile", + "go", + "hcl", + "html", + "java", + "javascript", + "json", + "latex", + "ledger", + "llvm", + "lua", + "make", + "markdown", + "python", + "swift", + "toml", + "xml", + "yaml" + }, -- one of "all", "maintained" (parsers with maintainers), or a list of languages + ignore_install = {}, -- List of parsers to ignore installing + highlight = { + enable = true, -- false will disable the whole extension + disable = {} -- list of language that will be disabled + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "", + scope_incremental = "", + node_incremental = "", + node_decremental = "" + } + }, + indent = {enable = true}, + autopairs = {{enable = true}}, + textobjects = { + select = { + enable = true, + -- Automatically jump forward to textobj, similar to targets.vim + lookahead = true, + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + ["al"] = "@loop.outer", + ["il"] = "@loop.inner", + ["ib"] = "@block.inner", + ["ab"] = "@block.outer", + ["ir"] = "@parameter.inner", + ["ar"] = "@parameter.outer" + } + } + }, + rainbow = { + enable = true, + extended_mode = true, -- Highlight also non-parentheses delimiters, boolean or table: lang -> boolean + max_file_lines = 2000 -- Do not enable for files with more than specified lines + } + } + end +} diff --git a/nvim/m-housh/lua/user/plugin/which-key.lua b/nvim/m-housh/lua/user/plugin/which-key.lua new file mode 100644 index 0000000..05531a2 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/which-key.lua @@ -0,0 +1,8 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + init = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end, + } diff --git a/nvim/m-housh/lua/user/plugin/wrapping.lua b/nvim/m-housh/lua/user/plugin/wrapping.lua new file mode 100644 index 0000000..8fb9fd3 --- /dev/null +++ b/nvim/m-housh/lua/user/plugin/wrapping.lua @@ -0,0 +1,20 @@ +return { + "andrewferrier/wrapping.nvim", + opts = { + auto_set_mode_filetype_allowlist = { + "asciidoc", + "gitcommit", + "latex", + "markdown", + "tex", + "text" + }, + }, + config = function() + require("wrapping").setup({ + softener = { + markdown = 1.3 + }, + }) + end + }