diff options
| author | seth <[email protected]> | 2023-04-02 21:14:36 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-04-02 21:14:36 -0400 |
| commit | 8a8be409c0f0d911eb19969c05e7f4a171a63767 (patch) | |
| tree | 3dcdd90daed9ef83527093396d185a7bfda9dbd5 | |
| parent | d421be1222d6744c0d738e5fbf96ee6daafd61b2 (diff) | |
copy refactor from flake for neovim config
| -rw-r--r-- | .config/nvim/lua/.luarc.json | 3 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/filetypes.lua (renamed from .config/nvim/lua/getchoo/ftdetect.lua) | 0 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/init.lua | 64 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/keymap.lua | 34 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/cmp.lua | 71 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/init.lua | 31 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/lsp_config.lua | 44 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/mason.lua | 17 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/null_ls.lua | 42 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/config/sources.lua | 31 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/init.lua | 11 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/keymap.lua | 21 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/lsp/server.lua | 22 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/plugins/general.lua | 57 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/plugins/init.lua (renamed from .config/nvim/lua/getchoo/plugins.lua) | 16 | ||||
| -rw-r--r-- | .config/nvim/lua/getchoo/plugins/lsp.lua | 200 |
16 files changed, 295 insertions, 369 deletions
diff --git a/.config/nvim/lua/.luarc.json b/.config/nvim/lua/.luarc.json new file mode 100644 index 0000000..23b9ee2 --- /dev/null +++ b/.config/nvim/lua/.luarc.json @@ -0,0 +1,3 @@ +{ + "workspace.checkThirdParty": false +}
\ No newline at end of file diff --git a/.config/nvim/lua/getchoo/ftdetect.lua b/.config/nvim/lua/getchoo/filetypes.lua index c13bdb6..c13bdb6 100644 --- a/.config/nvim/lua/getchoo/ftdetect.lua +++ b/.config/nvim/lua/getchoo/filetypes.lua diff --git a/.config/nvim/lua/getchoo/init.lua b/.config/nvim/lua/getchoo/init.lua index beae5d6..60fde4b 100644 --- a/.config/nvim/lua/getchoo/init.lua +++ b/.config/nvim/lua/getchoo/init.lua @@ -1,65 +1,3 @@ --- --- setup plugins --- - require("getchoo.plugins") - -local M = {} - -M.bufferline = { - animation = true, - auto_hide = true, - highlights = require("catppuccin.groups.integrations.bufferline").get(), - icons = true, - maximum_padding = 2, - semantic_letters = true, -} - -local compile_path = vim.fn.stdpath("cache") .. "/catppuccin-nvim" -vim.fn.mkdir(compile_path, "p") -vim.opt.runtimepath:append(compile_path) - -M.catppuccin = { - compile_path = compile_path, - flavour = "mocha", -- mocha, macchiato, frappe, latte - integrations = { - barbar = true, - cmp = true, - gitsigns = true, - leap = true, - native_lsp = { - enabled = true, - }, - nvimtree = true, - treesitter_context = true, - treesitter = true, - telescope = true, - lsp_trouble = true, - }, - no_italic = true, -} - -M.lualine = { - options = { - theme = "catppuccin", - }, - extensions = { "nvim-tree" }, -} - -M.tree = {} - -require("catppuccin").setup(M.catppuccin) -vim.api.nvim_command("colorscheme catppuccin") -require("bufferline").setup(M.bufferline) -require("leap").add_default_mappings() -require("lualine").setup(M.lualine) -require("nvim-tree").setup(M.tree) - -if vim.g.use_lsp_plugins then - require("getchoo.ftdetect") - require("getchoo.lsp") -end - require("getchoo.keymap") - -return M +require("getchoo.filetypes") diff --git a/.config/nvim/lua/getchoo/keymap.lua b/.config/nvim/lua/getchoo/keymap.lua index 9a4484c..44a05aa 100644 --- a/.config/nvim/lua/getchoo/keymap.lua +++ b/.config/nvim/lua/getchoo/keymap.lua @@ -1,7 +1,9 @@ -- --- keymaps for general plugins +-- keymaps -- +vim.g.mapleader = "," + local opts = { noremap = true, silent = true } local set = function(mode, key, cmd) vim.keymap.set(mode, key, cmd, opts) @@ -12,16 +14,28 @@ set("n", "<leader>t", function() end) for i = 1, 9 do - set("n", "<leader>" .. i, function() - local cmd = "BufferGoto " .. i - vim.cmd(cmd) - end) + set("n", "<leader>" .. i, function() + local vimcmd = "BufferLineGoToBuffer " .. i + vim.cmd(vimcmd) + end) end -set("n", "<leader>p", function() - vim.cmd("BufferPick") -end) - set("n", "<leader>q", function() - vim.cmd("BufferClose") + vim.cmd("BufferLinePickClose") end) + +if vim.g.use_lsp_plugins then + -- lsp + set("n", "<space>e", vim.diagnostic.open_float) + set("n", "[d", vim.diagnostic.goto_prev) + set("n", "]d", vim.diagnostic.goto_next) + set("n", "<space>q", vim.diagnostic.setloclist) + + set("n", "<space>f", function() + vim.cmd("Telescope") + end) + + set("n", "<space>t", function() + vim.cmd("TroubleToggle") + end) +end diff --git a/.config/nvim/lua/getchoo/lsp/config/cmp.lua b/.config/nvim/lua/getchoo/lsp/config/cmp.lua deleted file mode 100644 index cef2ad1..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/cmp.lua +++ /dev/null @@ -1,71 +0,0 @@ --- --- config for nvim-cmp --- - -local cmp = require("cmp") -local mapping = cmp.mapping -local luasnip = require("luasnip") - -local M = {} - -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 - -M.config = { - snippet = { - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) - luasnip.lsp_expand(args.body) - end, - }, - mapping = mapping.preset.insert({ - ["<Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif vim.fn["vsnip#available"](1) == 1 then - feedkey("<Plug>(vsnip-expand-or-jump)", "") - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - ["<S-Tab>"] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - elseif vim.fn["vsnip#available"](-1) == 1 then - feedkey("<Plug>(vsnip-jump-prev)", "") - else - fallback() - end - end, { "i", "s" }), - }), - sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "vsnip" }, - { name = "buffer" }, - { name = "path" }, - }), -} - -local capabilities = require("cmp_nvim_lsp").default_capabilities() -capabilities.textDocument.completion.completionItem.snippetSupport = true - -M.capabilities = capabilities - -M.on_attach = function(_, bufnr) - vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") -end - -return M diff --git a/.config/nvim/lua/getchoo/lsp/config/init.lua b/.config/nvim/lua/getchoo/lsp/config/init.lua deleted file mode 100644 index b3e58dd..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/init.lua +++ /dev/null @@ -1,31 +0,0 @@ --- --- load all lsp configs --- - -local cmp = require("getchoo.lsp.config.cmp") -local lsp_config = require("getchoo.lsp.config.lsp_config") -local mason = require("getchoo.lsp.config.mason") -local null_ls = require("getchoo.lsp.config.null_ls") - -local M = {} - -M.cmp = cmp.config - -M.lsp_servers = lsp_config.servers - -M.mason_tool_installer = mason.mason_tool_installer -M.mason_lspconfig = mason.mason_lspconfig - -M.null_ls = null_ls.config - -M.treesitter = { - auto_install = true, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, -} - -M.trouble = {} - -return M diff --git a/.config/nvim/lua/getchoo/lsp/config/lsp_config.lua b/.config/nvim/lua/getchoo/lsp/config/lsp_config.lua deleted file mode 100644 index eb6bb84..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/lsp_config.lua +++ /dev/null @@ -1,44 +0,0 @@ --- --- setup lsp_config --- - -local cmp = require("getchoo.lsp.config.cmp") -local sources = require("getchoo.lsp.config.sources") - -local M = {} - -local on_attach = function(client, bufnr) - cmp.on_attach(client, bufnr) -end - -local all_config = { - capabilities = cmp.capabilities, - on_attach = on_attach, -} - -local servers = {} -for _, server in ipairs(sources.lsp_servers) do - servers[server] = all_config -end - -servers["lua_ls"] = { - capabilities = cmp.capabilities, - on_attach = on_attach, - settings = { - Lua = { - runtime = { - version = "LuaJIT", - }, - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - }, - }, -} - -M.servers = servers - -return M diff --git a/.config/nvim/lua/getchoo/lsp/config/mason.lua b/.config/nvim/lua/getchoo/lsp/config/mason.lua deleted file mode 100644 index 24adffb..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/mason.lua +++ /dev/null @@ -1,17 +0,0 @@ --- --- config for mason tools --- - -local sources = require("getchoo.lsp.config.sources") - -local M = {} - -M.mason_tool_installer = { - ensure_installed = sources.mason, -} - -M.mason_lspconfig = { - automatic_installation = true, -} - -return M diff --git a/.config/nvim/lua/getchoo/lsp/config/null_ls.lua b/.config/nvim/lua/getchoo/lsp/config/null_ls.lua deleted file mode 100644 index 16b1b3c..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/null_ls.lua +++ /dev/null @@ -1,42 +0,0 @@ --- --- config for null_ls --- - -local sources = require("getchoo.lsp.config.sources") - -local M = {} - --- only use null-ls for formatting --- for neovim >= 8 -local lsp_formatting = function(bufnr) - vim.lsp.buf.format({ - filter = function(client) - return client.name == "null-ls" - end, - bufnr = bufnr, - }) -end - -local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) -local formatting_on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - -- for neovim < 8 - ---- local params = require("vim.lsp.util").make_formatting_params({}) - ---- client.request("textDocument/formatting", params, nil, bufnr) - lsp_formatting(bufnr) -- neovim >= 8 - end, - }) - end -end - -M.config = { - on_attach = formatting_on_attach, - sources = sources.null_ls, -} - -return M diff --git a/.config/nvim/lua/getchoo/lsp/config/sources.lua b/.config/nvim/lua/getchoo/lsp/config/sources.lua deleted file mode 100644 index 3b67ab2..0000000 --- a/.config/nvim/lua/getchoo/lsp/config/sources.lua +++ /dev/null @@ -1,31 +0,0 @@ --- --- sources for lsp --- - -local null_ls = require("null-ls") -local diagnostics = null_ls.builtins.diagnostics -local formatting = null_ls.builtins.formatting - -local M = { - lsp_servers = { "rust_analyzer", "pyright", "bashls" }, - null_ls = { - diagnostics.alex, - diagnostics.codespell, - diagnostics.pylint, - formatting.codespell, - formatting.prettier, - formatting.rustfmt, - formatting.stylua, - formatting.yapf, - }, - mason = { - "alex", - "codespell", - "prettier", - "pylint", - "stylua", - "yapf", - }, -} - -return M diff --git a/.config/nvim/lua/getchoo/lsp/init.lua b/.config/nvim/lua/getchoo/lsp/init.lua deleted file mode 100644 index f354b2a..0000000 --- a/.config/nvim/lua/getchoo/lsp/init.lua +++ /dev/null @@ -1,11 +0,0 @@ --- --- setup lsp environment --- - -require("getchoo.lsp.server") -require("getchoo.lsp.keymap") -local config = require("getchoo.lsp.config") - -require("gitsigns").setup() -require("nvim-treesitter.configs").setup(config.treesitter) -require("trouble").setup(config.trouble) diff --git a/.config/nvim/lua/getchoo/lsp/keymap.lua b/.config/nvim/lua/getchoo/lsp/keymap.lua deleted file mode 100644 index 9f34ffa..0000000 --- a/.config/nvim/lua/getchoo/lsp/keymap.lua +++ /dev/null @@ -1,21 +0,0 @@ --- --- keymaps for lsp --- - -local opts = { noremap = true, silent = true } -local set = function(mode, key, cmd) - vim.keymap.set(mode, key, cmd, opts) -end - -set("n", "<space>e", vim.diagnostic.open_float) -set("n", "[d", vim.diagnostic.goto_prev) -set("n", "]d", vim.diagnostic.goto_next) -set("n", "<space>q", vim.diagnostic.setloclist) - -set("n", "<space>f", function() - vim.cmd("Telescope") -end) - -set("n", "<space>t", function() - vim.cmd("TroubleToggle") -end) diff --git a/.config/nvim/lua/getchoo/lsp/server.lua b/.config/nvim/lua/getchoo/lsp/server.lua deleted file mode 100644 index 325e1c7..0000000 --- a/.config/nvim/lua/getchoo/lsp/server.lua +++ /dev/null @@ -1,22 +0,0 @@ --- --- initialize lsp servers --- - -local cmp = require("cmp") -local lspconfig = require("lspconfig") -local null_ls = require("null-ls") -local config = require("getchoo.lsp.config") - -if vim.g.use_mason then - require("mason").setup() - require("mason-lspconfig").setup(config.mason_lspconfig) - require("mason-tool-installer").setup(config.mason_tool_installer) - vim.opt.runtimepath:append("~/.local/share/nvim/mason/bin/") -end - -null_ls.setup(config.null_ls) -cmp.setup(config.cmp) - -for server, settings in pairs(config.lsp_servers) do - lspconfig[server].setup(settings) -end diff --git a/.config/nvim/lua/getchoo/plugins/general.lua b/.config/nvim/lua/getchoo/plugins/general.lua new file mode 100644 index 0000000..93cd720 --- /dev/null +++ b/.config/nvim/lua/getchoo/plugins/general.lua @@ -0,0 +1,57 @@ +-- +-- configuration for general plugins +-- + +---- autopairs +require("nvim-autopairs").setup({ + disable_filetype = { "TeleScopePrompt" }, +}) + +---- catppuccin +local compile_path = vim.fn.stdpath("cache") .. "/catppuccin-nvim" +vim.fn.mkdir(compile_path, "p") +vim.opt.runtimepath:append(compile_path) + +require("catppuccin").setup({ + compile_path = compile_path, + flavour = "mocha", -- mocha, macchiato, frappe, latte + integrations = { + barbar = true, + cmp = true, + gitsigns = true, + leap = true, + native_lsp = { + enabled = true, + }, + nvimtree = true, + treesitter_context = true, + treesitter = true, + telescope = true, + lsp_trouble = true, + }, + no_italic = true, +}) +vim.api.nvim_command("colorscheme catppuccin") + +---- bufferline +require("bufferline").setup({ + options = { + highlights = require("catppuccin.groups.integrations.bufferline").get(), + diagnostics = "nvim_lsp", + numbers = "ordinal", + }, +}) + +---- leap +require("leap").add_default_mappings() + +---- lualine +require("lualine").setup({ + options = { + theme = "catppuccin", + }, + extensions = { "nvim-tree" }, +}) + +---- nvim-tree +require("nvim-tree").setup() diff --git a/.config/nvim/lua/getchoo/plugins.lua b/.config/nvim/lua/getchoo/plugins/init.lua index 222ed80..b76f4c5 100644 --- a/.config/nvim/lua/getchoo/plugins.lua +++ b/.config/nvim/lua/getchoo/plugins/init.lua @@ -1,5 +1,5 @@ -- --- plugins for neovim +-- plugin init for neovim -- local fn = vim.fn @@ -30,17 +30,15 @@ require("packer").startup(function(use) as = "catppuccin", }) - ---- use("shaunsingh/nord.nvim") - ---- use({ "rose-pine/neovim", as = "rose-pine" }) - -- general use plugins use({ - "romgrk/barbar.nvim", + "akinsho/bufferline.nvim", requires = { "kyazdani42/nvim-web-devicons" }, }) use("ggandor/leap.nvim") use("kyazdani42/nvim-tree.lua") + use("windwp/nvim-autopairs") -- lsp plugins if vim.g.use_lsp_plugins then @@ -83,10 +81,16 @@ require("packer").startup(function(use) }) use("lewis6991/gitsigns.nvim") - use("editorconfig/editorconfig-vim") + use("j-hui/fidget.nvim") end if Packer_bootstrap then require("packer").sync() end end) + +require("getchoo.plugins.general") + +if vim.g.use_lsp_plugins then + require("getchoo.plugins.lsp") +end diff --git a/.config/nvim/lua/getchoo/plugins/lsp.lua b/.config/nvim/lua/getchoo/plugins/lsp.lua new file mode 100644 index 0000000..96dc950 --- /dev/null +++ b/.config/nvim/lua/getchoo/plugins/lsp.lua @@ -0,0 +1,200 @@ +-- +-- configuration for lsp plugins +-- + +---- cmp +local cmp = require("cmp") +local luasnip = require("luasnip") +local mapping = cmp.mapping + +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 +local cmp_on_attach = function(_, bufnr) + vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") +end + +local capabilities = require("cmp_nvim_lsp").default_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +require("cmp").setup({ + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + luasnip.lsp_expand(args.body) + end, + }, + + mapping = mapping.preset.insert({ + ["<Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif vim.fn["vsnip#available"](1) == 1 then + feedkey("<Plug>(vsnip-expand-or-jump)", "") + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + ["<S-Tab>"] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + elseif vim.fn["vsnip#available"](-1) == 1 then + feedkey("<Plug>(vsnip-jump-prev)", "") + else + fallback() + end + end, { "i", "s" }), + }), + + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "vsnip" }, + { name = "buffer" }, + { name = "path" }, + }), + + capabilities = capabilities, + + on_attach = cmp_on_attach, +}) + +---- fidget +require("fidget").setup() + +---- gitsigns +require("gitsigns").setup() + +---- lsp sources +local null_ls = require("null-ls") +local diagnostics = null_ls.builtins.diagnostics +local formatting = null_ls.builtins.formatting + +local sources = { + lsp_servers = { "bashls", "clangd", "pyright", "rust_analyzer" }, + null_ls = { + diagnostics.alex, + diagnostics.codespell, + diagnostics.deadnix, + diagnostics.pylint, + diagnostics.shellcheck, + diagnostics.statix, + formatting.alejandra, + formatting.codespell, + formatting.prettier, + formatting.rustfmt, + formatting.stylua, + formatting.yapf, + }, + mason = { + "alex", + "codespell", + "pylint", + "prettier", + "shellcheck", + "stylua", + "yapf", + }, +} + +--- lsp config +local all_config = { + capabilities = capabilities, + on_attach = cmp_on_attach, +} + +local servers = {} +for _, server in ipairs(sources.lsp_servers) do + servers[server] = all_config +end + +servers["lua_ls"] = { + capabilities = capabilities, + on_attach = cmp_on_attach, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + }, + }, +} + +for server, settings in pairs(servers) do + require("lspconfig")[server].setup(settings) +end + +---- mason +if vim.g.use_mason then + require("mason").setup() + require("mason-lspconfig").setup({ + automatic_installation = true, + }) + require("mason-lspconfig").setup_handlers({ + function(server) + require("lspconfig")[server].setup(all_config) + end, + }) + require("mason-tool-installer").setup({ + ensure_installed = sources.mason, + }) +end + +---- null-ls +-- auto-format +local lsp_formatting = function(bufnr) + vim.lsp.buf.format({ + filter = function(client) + return client.name == "null-ls" + end, + bufnr = bufnr, + }) +end + +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) +local formatting_on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + lsp_formatting(bufnr) + end, + }) + end +end + +require("null-ls").setup({ + on_attach = formatting_on_attach, + sources = sources.null_ls, +}) + +---- trouble +require("trouble").setup() + +---- treesitter +require("nvim-treesitter.configs").setup({ + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, +}) |
