diff options
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/getchoo/globals.lua | 1 | ||||
| -rw-r--r-- | lua/getchoo/init.lua | 4 | ||||
| -rw-r--r-- | lua/getchoo/keymaps.lua | 47 | ||||
| -rw-r--r-- | lua/getchoo/options.lua | 12 | ||||
| -rw-r--r-- | lua/getchoo/plugins/bufferline.lua | 18 | ||||
| -rw-r--r-- | lua/getchoo/plugins/catppuccin.lua | 30 | ||||
| -rw-r--r-- | lua/getchoo/plugins/cmp.lua | 36 | ||||
| -rw-r--r-- | lua/getchoo/plugins/general.lua | 55 | ||||
| -rw-r--r-- | lua/getchoo/plugins/init.lua | 3 | ||||
| -rw-r--r-- | lua/getchoo/plugins/lsp.lua | 29 | ||||
| -rw-r--r-- | lua/getchoo/plugins/lspconfig.lua | 47 | ||||
| -rw-r--r-- | lua/getchoo/plugins/lualine.lua | 6 | ||||
| -rw-r--r-- | lua/getchoo/plugins/neo-tree.lua | 5 | ||||
| -rw-r--r-- | lua/getchoo/plugins/null-ls.lua | 49 | ||||
| -rw-r--r-- | lua/getchoo/plugins/ui.lua | 40 |
15 files changed, 382 insertions, 0 deletions
diff --git a/lua/getchoo/globals.lua b/lua/getchoo/globals.lua new file mode 100644 index 0000000..79db9e3 --- /dev/null +++ b/lua/getchoo/globals.lua @@ -0,0 +1 @@ +vim.g.mapleader = "," diff --git a/lua/getchoo/init.lua b/lua/getchoo/init.lua new file mode 100644 index 0000000..e7b816f --- /dev/null +++ b/lua/getchoo/init.lua @@ -0,0 +1,4 @@ +require("getchoo.globals") +require("getchoo.keymaps") +require("getchoo.options") +require("getchoo.plugins") diff --git a/lua/getchoo/keymaps.lua b/lua/getchoo/keymaps.lua new file mode 100644 index 0000000..8068db9 --- /dev/null +++ b/lua/getchoo/keymaps.lua @@ -0,0 +1,47 @@ +local opts = { noremap = true, silent = true } +local set = function(mode, key, vimcmd) + vim.keymap.set(mode, key, vimcmd, opts) +end + +if pcall(require, "neo-tree.command") then + set("n", "<leader>t", function() + require("neo-tree.command").execute({ + toggle = true, + dir = vim.loop.cwd(), + }) + end) +end + +if pcall(require, "flash") then + set({ "n", "o", "x" }, "s", function() + require("flash").jump() + end) +end + +for i = 1, 9 do + set("n", "<leader>" .. i, function() + local vimcmd = "BufferLineGoToBuffer " .. i + vim.cmd(vimcmd) + end) +end + +set("n", "<leader>q", function() + vim.cmd("BufferLinePickClose") +end) + +set("n", "<leader>e", vim.diagnostic.open_float) +set("n", "[d", vim.diagnostic.goto_prev) +set("n", "]d", vim.diagnostic.goto_next) +set("n", "<leader>u", vim.diagnostic.setloclist) + +set("n", "<leader>f", function() + vim.cmd("Telescope") +end) + +set("n", "<leader>p", function() + vim.cmd("TroubleToggle") +end) + +set("n", "<leader>z", function() + vim.api.nvim_clear_autocmds({ group = "LspFormatting" }) +end) diff --git a/lua/getchoo/options.lua b/lua/getchoo/options.lua new file mode 100644 index 0000000..7a13888 --- /dev/null +++ b/lua/getchoo/options.lua @@ -0,0 +1,12 @@ +local opt = vim.opt + +-- text options +opt.tabstop = 2 +opt.shiftwidth = 2 +opt.expandtab = false +opt.smartindent = true +opt.wrap = true + +-- appearance +opt.syntax = "on" +opt.termguicolors = true diff --git a/lua/getchoo/plugins/bufferline.lua b/lua/getchoo/plugins/bufferline.lua new file mode 100644 index 0000000..b945a62 --- /dev/null +++ b/lua/getchoo/plugins/bufferline.lua @@ -0,0 +1,18 @@ +require("bufferline").setup({ + options = { + always_show_bufferline = false, + highlights = require("catppuccin.groups.integrations.bufferline").get(), + diagnostics = "nvim_lsp", + mode = "buffers", + numbers = "ordinal", + separator_style = "slant", + offsets = { + { + filetype = "neo-tree", + text = "neo-tree", + highlight = "Directory", + text_align = "left", + }, + }, + }, +}) diff --git a/lua/getchoo/plugins/catppuccin.lua b/lua/getchoo/plugins/catppuccin.lua new file mode 100644 index 0000000..853d283 --- /dev/null +++ b/lua/getchoo/plugins/catppuccin.lua @@ -0,0 +1,30 @@ +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 = { + cmp = true, + flash = true, + gitsigns = true, + indent_blankline = { + enabled = true, + }, + lsp_trouble = true, + native_lsp = { + enabled = true, + }, + neotree = true, + notify = true, + treesitter_context = true, + treesitter = true, + telescope = true, + which_key = true, + }, + + no_italic = true, +}) + +vim.cmd.colorscheme("catppuccin") diff --git a/lua/getchoo/plugins/cmp.lua b/lua/getchoo/plugins/cmp.lua new file mode 100644 index 0000000..323e342 --- /dev/null +++ b/lua/getchoo/plugins/cmp.lua @@ -0,0 +1,36 @@ +local cmp = require("cmp") +local luasnip = require("luasnip") +local mapping = cmp.mapping + +require("cmp").setup({ + completion = { + completeopt = "menu,menuone,noinsert", + }, + + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + + mapping = mapping.preset.insert({ + ["<C-n>"] = mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), + ["<C-p>"] = mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), + ["<C-b>"] = mapping.scroll_docs(-4), + ["<C-f>"] = mapping.scroll_docs(4), + ["<C-Space>"] = mapping.complete(), + ["<C-e>"] = mapping.abort(), + ["<CR>"] = mapping.confirm({ select = true }), + ["<S-CR>"] = mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + }), + + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "async_path" }, + { name = "buffer" }, + }), +}) diff --git a/lua/getchoo/plugins/general.lua b/lua/getchoo/plugins/general.lua new file mode 100644 index 0000000..e9806f3 --- /dev/null +++ b/lua/getchoo/plugins/general.lua @@ -0,0 +1,55 @@ +require("getchoo.plugins.bufferline") +require("getchoo.plugins.catppuccin") +require("getchoo.plugins.lualine") +require("getchoo.plugins.neo-tree") + +---- gitsigns +require("gitsigns").setup() + +---- indent-blankline.nvim +require("ibl").setup({ + exclude = { + filetypes = { + "help", + "neo-tree", + "Trouble", + "lazy", + "mason", + "notify", + "toggleterm", + }, + }, + + indent = { + char = "│", + tab_char = "│", + }, + + scope = { enabled = false }, +}) + +---- mini.nvim +require("mini.pairs").setup() +require("mini.indentscope").setup({ + options = { try_as_border = true }, +}) + +vim.api.nvim_create_autocmd("FileType", { + pattern = { + "help", + "neo-tree", + "Trouble", + "lazy", + "mason", + "notify", + "toggleterm", + }, + callback = function() + vim.b.miniindentscope_disable = true + end, +}) + +---- which-key +require("which-key").setup({ + plugins = { spelling = true }, +}) diff --git a/lua/getchoo/plugins/init.lua b/lua/getchoo/plugins/init.lua new file mode 100644 index 0000000..95883c7 --- /dev/null +++ b/lua/getchoo/plugins/init.lua @@ -0,0 +1,3 @@ +require("getchoo.plugins.general") +require("getchoo.plugins.lsp") +require("getchoo.plugins.ui") diff --git a/lua/getchoo/plugins/lsp.lua b/lua/getchoo/plugins/lsp.lua new file mode 100644 index 0000000..7ca1083 --- /dev/null +++ b/lua/getchoo/plugins/lsp.lua @@ -0,0 +1,29 @@ +require("getchoo.plugins.cmp") +require("getchoo.plugins.lspconfig") +require("getchoo.plugins.null-ls") + +require("gitsigns").setup() + +require("fidget").setup() + +require("mini.comment").setup({ + options = { + custom_commentstring = function() + return require("ts_context_commentstring.internal").calculate_commentstring() + or vim.bo.context_commentstring + end, + }, +}) + +require("nvim-treesitter.configs").setup({ + auto_install = false, + highlight = { enable = true }, + indent = { enable = true }, + context_commentstring = { + enable = true, + enable_autocmd = false, + }, +}) + +---- trouble +require("trouble").setup() diff --git a/lua/getchoo/plugins/lspconfig.lua b/lua/getchoo/plugins/lspconfig.lua new file mode 100644 index 0000000..8811e3f --- /dev/null +++ b/lua/getchoo/plugins/lspconfig.lua @@ -0,0 +1,47 @@ +local sources = { + ["bashls"] = "bash-language-server", + ["clangd"] = "clangd", + ["eslint"] = "eslint", + ["nil_ls"] = "nil", + ["pyright"] = "pyright-langserver", + ["rust_analyzer"] = "rust-analyzer", + ["tsserver"] = "typescript-language-server", +} + +local capabilities = vim.tbl_deep_extend( + "force", + require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), + { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } } +) + +local all_config = { + capabilities = capabilities, +} + +local servers = {} +for server, binary in pairs(sources) do + if vim.fn.executable(binary) == 1 then + servers[server] = all_config + end +end + +servers["lua_ls"] = { + capabilities = capabilities, + 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 diff --git a/lua/getchoo/plugins/lualine.lua b/lua/getchoo/plugins/lualine.lua new file mode 100644 index 0000000..2727d75 --- /dev/null +++ b/lua/getchoo/plugins/lualine.lua @@ -0,0 +1,6 @@ +require("lualine").setup({ + options = { + theme = "catppuccin", + }, + extensions = { "neo-tree", "trouble" }, +}) diff --git a/lua/getchoo/plugins/neo-tree.lua b/lua/getchoo/plugins/neo-tree.lua new file mode 100644 index 0000000..1d6f7f5 --- /dev/null +++ b/lua/getchoo/plugins/neo-tree.lua @@ -0,0 +1,5 @@ +require("neo-tree").setup({ + filetype_exclude = { "help", "neo-tree", "Trouble", "lazy", "mason", "notify", "toggleterm" }, + show_current_context = false, + show_trailing_blankline_indent = false, +}) diff --git a/lua/getchoo/plugins/null-ls.lua b/lua/getchoo/plugins/null-ls.lua new file mode 100644 index 0000000..a4f86dc --- /dev/null +++ b/lua/getchoo/plugins/null-ls.lua @@ -0,0 +1,49 @@ +local null_ls = require("null-ls") +local diagnostics = null_ls.builtins.diagnostics +local formatting = null_ls.builtins.formatting + +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", {}) + +null_ls.setup({ + 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, + + sources = { + diagnostics.actionlint, + diagnostics.alex, + diagnostics.codespell, + diagnostics.deadnix, + diagnostics.pylint, + diagnostics.shellcheck, + diagnostics.statix, + formatting.alejandra, + formatting.beautysh, + formatting.codespell, + formatting.just, + formatting.nimpretty, + formatting.prettier, + formatting.rustfmt, + formatting.shellharden, + formatting.stylua, + formatting.yapf, + }, +}) diff --git a/lua/getchoo/plugins/ui.lua b/lua/getchoo/plugins/ui.lua new file mode 100644 index 0000000..7a8c085 --- /dev/null +++ b/lua/getchoo/plugins/ui.lua @@ -0,0 +1,40 @@ +require("dressing") + +vim.ui.select = function(...) + return vim.ui.select(...) +end + +vim.ui.input = function(...) + return vim.ui.input(...) +end + +vim.notify = require("notify") + +require("noice").setup({ + lsp = { + override = { + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, + ["vim.lsp.util.stylize_markdown"] = true, + ["cmp.entry.get_documentation"] = true, + }, + }, + routes = { + { + filter = { + event = "msg_show", + any = { + { find = "%d+L, %d+B" }, + { find = "; after #%d+" }, + { find = "; before #%d+" }, + }, + }, + view = "mini", + }, + }, + presets = { + bottom_search = true, + command_palette = true, + long_message_to_split = true, + inc_rename = true, + }, +}) |
