-------------------- -- Mini -------------------- require("mini-conf") -------------------- -- Toggleterm -------------------- require("toggleterm").setup{ open_mapping = [[]], direction = "float", close_on_exit = true, } -------------------- -- Telescope -------------------- local telescope = require("telescope.builtin") vim.keymap.set("n", "", telescope.buffers, {noremap = true, silent = true}) vim.keymap.set("n", "ff", telescope.find_files, {noremap = true, silent = true}) vim.keymap.set("n", "fg", telescope.git_files, {noremap = true, silent = true}) vim.keymap.set("n", "fc", telescope.command_history, {noremap = true, silent = true}) vim.keymap.set("n", "fa", telescope.live_grep, {noremap = true, silent = true}) vim.keymap.set("n", "f8", telescope.grep_string, {noremap = true, silent = true}) vim.keymap.set("n", "fs", telescope.treesitter, {noremap = true, silent = true}) vim.keymap.set("n", "fq", telescope.quickfix, {noremap = true, silent = true}) vim.keymap.set("n", "fq", telescope.quickfix, {noremap = true, silent = true}) vim.keymap.set("n", "f", telescope.resume, {noremap = true, silent = true}) local telescope = require("telescope") telescope.setup({ defaults = { layout_strategy = "vertical", layout_config = { width = .90, }, prompt_title = false, results_title = false, preview_title = false, vimgrep_arguments = { "rg", "--color=never", "--no-heading", "--hidden", "--with-filename", "--line-number", "--column", "--smart-case" }, mappings = { i = { ["wq"] = require("telescope.actions").close, [""] = require("telescope.actions").close, [""] = require("telescope.actions").move_selection_previous, [""] = require("telescope.actions").move_selection_next, }, }, }, }) telescope.load_extension("fzf") -------------------- -- Treesitter -------------------- require("nvim-treesitter.configs").setup { ensure_installed = {}, highlight = { enable = true, }, indent = { enable = true, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["af"] = "@function.outer", ["if"] = "@function.inner", ["aa"] = "@statement.outer", ["ia"] = "@parameter.inner", }, }, move = { enable = true, set_jumps = true, -- whether to set jumps in the jumplist goto_next_start = { [']]'] = '@function.outer', [']a'] = '@parameter.inner', }, goto_previous_start = { ['[['] = '@function.outer', ['[a'] = '@parameter.inner', }, }, swap = { enable = true, swap_next = { ["s]"] = "@parameter.inner", }, swap_previous = { ["s["] = "@parameter.inner", }, }, }, incremental_selection = { enable = true, keymaps = { init_selection = '', node_incremental = '', node_decremental = '', }, }, } -------------------- -- LSP Config -------------------- -- Setup language servers. local lspconfig = require('lspconfig') local capabilities = require('cmp_nvim_lsp').default_capabilities() lspconfig.gopls.setup { on_attach = function(_, bufnr) capabilities = capabilities vim.api.nvim_command("au BufWritePre lua vim.lsp.buf.format { async = false }") end } lspconfig.pyright.setup { capabilities = capabilities } lspconfig.nil_ls.setup { capabilities = capabilities } -- Global mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions vim.keymap.set('n', 'de', vim.diagnostic.open_float) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) vim.keymap.set('n', ']d', vim.diagnostic.goto_next) vim.diagnostic.config({ virtual_text = true, underline = true, update_in_insert = false, }) -- Use LspAttach autocommand to only map the following keys -- after the language server attaches to the current buffer vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) -- Enable completion triggered by vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' -- Buffer local mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local opts = { buffer = ev.buf } vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) vim.keymap.set({ 'n', 'v' }, 'da', vim.lsp.buf.code_action, opts) vim.keymap.set("n", "dd", "Telescope lsp_definitions", { buffer = bufnr }) vim.keymap.set("n", "di", "Telescope lsp_implementations", { buffer = bufnr }) vim.keymap.set("n", "dr", "Telescope lsp_references", { buffer = bufnr }) vim.keymap.set("n", "dt", "Telescope lsp_type_definitions", { buffer = bufnr }) vim.keymap.set("n", "ds", "Telescope lsp_document_symbols", { buffer = bufnr }) vim.keymap.set('n', 'dl', vim.lsp.codelens.run) vim.keymap.set('n', 'dg', vim.diagnostic.setqflist) vim.keymap.set('n', 'df', function() vim.lsp.buf.format { async = true } end, opts) end, }) -------------------- -- Git -------------------- require('gitsigns').setup{ signcolumn = false, numhl = true, on_attach = function() local gs = package.loaded.gitsigns vim.keymap.set("n", "gg", gs.preview_hunk) vim.keymap.set('n', 'gb', function() gs.blame_line{full=true} end) vim.keymap.set('n', 'gr', gs.reset_hunk) vim.keymap.set('v', 'gr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end) -- Navigation vim.keymap.set('n', ']g', function() if vim.wo.diff then return ']c' end vim.schedule(function() gs.next_hunk() end) return '' end, {expr=true}) vim.keymap.set('n', '[g', function() if vim.wo.diff then return '[c' end vim.schedule(function() gs.prev_hunk() end) return '' end, {expr=true}) end } require("diffview").setup({ use_icons = false, }) local neogit = require('neogit') neogit.setup {integrations = {diffview = true}} vim.keymap.set('n', 'ng', neogit.open) -------------------- -- Oil & Undo -------------------- local oil = require('oil') oil.setup({ watch_for_changes = true, columns = { "permissions", "size" }, view_options = { show_hidden = true }, keymaps = { ["wq"] = "actions.close" } }) vim.keymap.set("n", "c", oil.toggle_float, {noremap = true, silent = true}); vim.keymap.set("n", "u", "UndotreeToggle") vim.g.undotree_ShortIndicators = 1 vim.g.undotree_SetFocusWhenToggle = 1 -------------------- -- Aerial -------------------- require("aerial").setup({ default_direction = "prefer_left", autojump = true, on_attach = function(bufnr) vim.keymap.set("n", "{", "AerialPrev", { buffer = bufnr }) vim.keymap.set("n", "}", "AerialNext", { buffer = bufnr }) end, }) vim.keymap.set("n", "aa", "AerialToggle!") --- -------------------- -- Refactoring -------------------- require('refactoring').setup({ prompt_func_return_type = { go = true, }, prompt_func_param_type = { go = true, }, show_success_message = true, }) require("telescope").load_extension("refactoring") vim.keymap.set( {"n"}, "rr", function() require('telescope').extensions.refactoring.refactors() end ) -------------------- -- Colors -------------------- require("rose-pine").setup({ variant = "moon", styles = { bold = false, italic = false, transparency = true, }, }) vim.cmd.colorscheme "rose-pine-main" -------------------- -- Neogen -------------------- require("neogen").setup{} vim.keymap.set("n","nd", "Neogen", {noremap = true, silent = true}) -------------------- ---Completion -------------------- local cmp = require'cmp' cmp.setup({ snippet = { expand = function(args) require('luasnip').lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), ['q'] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'luasnip' }, }, { { name = 'buffer' }, }) }) cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }), matching = { disallow_symbol_nonprefix_matching = false } }) -------------------- -- Luasnip -------------------- local ls = require("luasnip") ls.config.set_config { history = true, updateevents = "TextChanged, TextChangedI", } require("luasnip.loaders.from_vscode").lazy_load() vim.keymap.set({"i", "s"}, "", function() if ls.expand_or_jumpable() then ls.expand_or_jump() end end, {silent = true}) vim.keymap.set({"i", "s"}, "", function() if ls.jumpable(-1) then ls.jump(-1) end end, {silent = true}) vim.keymap.set({"i", "s"}, "", function() if ls.choice_active() then ls.change_choice(1) end end, {silent = true}) -------------------- -- Snippets -------------------- require("snippets") -------------------- -- include our config last to override -------------------- require("nvim-conf")