summaryrefslogtreecommitdiff
path: root/users/seth/programs/neovim/config/lua
diff options
context:
space:
mode:
Diffstat (limited to 'users/seth/programs/neovim/config/lua')
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/ftdetect.lua12
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/init.lua50
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/keymap.lua27
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/config/cmp.lua71
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/config/init.lua27
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/config/lsp_config.lua44
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/config/null_ls.lua42
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/config/sources.lua26
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/init.lua11
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/keymap.lua21
-rw-r--r--users/seth/programs/neovim/config/lua/getchoo/lsp/server.lua15
11 files changed, 346 insertions, 0 deletions
diff --git a/users/seth/programs/neovim/config/lua/getchoo/ftdetect.lua b/users/seth/programs/neovim/config/lua/getchoo/ftdetect.lua
new file mode 100644
index 0000000..c13bdb6
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/ftdetect.lua
@@ -0,0 +1,12 @@
+--
+-- load custom file types
+--
+
+local filetypes = {
+ filename = {
+ PKGBUILD = "text",
+ [".makepkg.conf"] = "text",
+ },
+}
+
+vim.filetype.add(filetypes)
diff --git a/users/seth/programs/neovim/config/lua/getchoo/init.lua b/users/seth/programs/neovim/config/lua/getchoo/init.lua
new file mode 100644
index 0000000..89edf11
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/init.lua
@@ -0,0 +1,50 @@
+--
+-- setup plugins
+--
+
+local M = {}
+
+M.bufferline = {
+ animation = true,
+ auto_hide = true,
+ icons = true,
+ maximum_padding = 2,
+ semantic_letters = true,
+}
+
+M.catppuccin = {
+ compiler_path = vim.fn.expand('$XDG_CACHE_HOME/nvim/compile'),
+ flavour = "mocha", -- mocha, macchiato, frappe, latte
+ integrations = {
+ barbar = true,
+ gitsigns = true,
+ lightspeed = true,
+ cmp = 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("bufferline").setup(M.bufferline)
+require("catppuccin").setup(M.catppuccin)
+require("lualine").setup(M.lualine)
+require("nvim-tree").setup(M.tree)
+
+require("getchoo.ftdetect")
+require("getchoo.lsp")
+require("getchoo.keymap")
+
+return M
diff --git a/users/seth/programs/neovim/config/lua/getchoo/keymap.lua b/users/seth/programs/neovim/config/lua/getchoo/keymap.lua
new file mode 100644
index 0000000..9a4484c
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/keymap.lua
@@ -0,0 +1,27 @@
+--
+-- keymaps for general plugins
+--
+
+local opts = { noremap = true, silent = true }
+local set = function(mode, key, cmd)
+ vim.keymap.set(mode, key, cmd, opts)
+end
+
+set("n", "<leader>t", function()
+ vim.cmd("NvimTreeToggle")
+end)
+
+for i = 1, 9 do
+ set("n", "<leader>" .. i, function()
+ local cmd = "BufferGoto " .. i
+ vim.cmd(cmd)
+ end)
+end
+
+set("n", "<leader>p", function()
+ vim.cmd("BufferPick")
+end)
+
+set("n", "<leader>q", function()
+ vim.cmd("BufferClose")
+end)
diff --git a/users/seth/programs/neovim/config/lua/getchoo/lsp/config/cmp.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/cmp.lua
new file mode 100644
index 0000000..cef2ad1
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/cmp.lua
@@ -0,0 +1,71 @@
+--
+-- 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/users/seth/programs/neovim/config/lua/getchoo/lsp/config/init.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/init.lua
new file mode 100644
index 0000000..f2634d5
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/init.lua
@@ -0,0 +1,27 @@
+--
+-- load all lsp configs
+--
+
+local cmp = require("getchoo.lsp.config.cmp")
+local lsp_config = require("getchoo.lsp.config.lsp_config")
+local null_ls = require("getchoo.lsp.config.null_ls")
+
+local M = {}
+
+M.cmp = cmp.config
+
+M.lsp_servers = lsp_config.servers
+
+M.null_ls = null_ls.config
+
+M.treesitter = {
+ auto_install = false,
+ highlight = {
+ enable = true,
+ additional_vim_regex_highlighting = false,
+ },
+}
+
+M.trouble = {}
+
+return M
diff --git a/users/seth/programs/neovim/config/lua/getchoo/lsp/config/lsp_config.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/lsp_config.lua
new file mode 100644
index 0000000..9874820
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/lsp_config.lua
@@ -0,0 +1,44 @@
+--
+-- 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["sumneko_lua"] = {
+ 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/users/seth/programs/neovim/config/lua/getchoo/lsp/config/null_ls.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/null_ls.lua
new file mode 100644
index 0000000..16b1b3c
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/null_ls.lua
@@ -0,0 +1,42 @@
+--
+-- 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/users/seth/programs/neovim/config/lua/getchoo/lsp/config/sources.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/sources.lua
new file mode 100644
index 0000000..bed6361
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/config/sources.lua
@@ -0,0 +1,26 @@
+--
+-- 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.deadnix,
+ diagnostics.pylint,
+ diagnostics.statix,
+ formatting.alejandra,
+ formatting.codespell,
+ formatting.prettier,
+ formatting.rustfmt,
+ formatting.stylua,
+ formatting.yapf,
+ }
+}
+
+return M
diff --git a/users/seth/programs/neovim/config/lua/getchoo/lsp/init.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/init.lua
new file mode 100644
index 0000000..f354b2a
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/init.lua
@@ -0,0 +1,11 @@
+--
+-- 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/users/seth/programs/neovim/config/lua/getchoo/lsp/keymap.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/keymap.lua
new file mode 100644
index 0000000..9f34ffa
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/keymap.lua
@@ -0,0 +1,21 @@
+--
+-- 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/users/seth/programs/neovim/config/lua/getchoo/lsp/server.lua b/users/seth/programs/neovim/config/lua/getchoo/lsp/server.lua
new file mode 100644
index 0000000..f238eb5
--- /dev/null
+++ b/users/seth/programs/neovim/config/lua/getchoo/lsp/server.lua
@@ -0,0 +1,15 @@
+--
+-- initialize lsp servers
+--
+
+local cmp = require("cmp")
+local lspconfig = require("lspconfig")
+local null_ls = require("null-ls")
+local config = require("getchoo.lsp.config")
+
+null_ls.setup(config.null_ls)
+cmp.setup(config.cmp)
+
+for server, settings in pairs(config.lsp_servers) do
+ lspconfig[server].setup(settings)
+end