From 39d19909525940cc16695ad3e7fcdb5812f744ac Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sat, 6 Jul 2024 20:07:41 +0300 Subject: Neovim: started rework on the conifg, changed a bunch of stuff --- .config/nvim/lua/custom/plugins/TODO-alpha.lua | 68 +++++++ .../nvim/lua/custom/plugins/TODO-auto-session.lua | 12 ++ .config/nvim/lua/custom/plugins/TODO-autopair.lua | 5 + .config/nvim/lua/custom/plugins/TODO-color.lua | 13 ++ .config/nvim/lua/custom/plugins/TODO-comment.lua | 27 +++ .../nvim/lua/custom/plugins/TODO-completions.lua | 50 +++++ .config/nvim/lua/custom/plugins/TODO-debug.lua | 27 +++ .config/nvim/lua/custom/plugins/TODO-edgy.lua | 37 ++++ .config/nvim/lua/custom/plugins/TODO-ftFT.lua | 8 + .config/nvim/lua/custom/plugins/TODO-git.lua | 28 +++ .../nvim/lua/custom/plugins/TODO-illuminate.lua | 6 + .../lua/custom/plugins/TODO-indent-blankline.lua | 8 + .config/nvim/lua/custom/plugins/TODO-lazydev.lua | 15 ++ .config/nvim/lua/custom/plugins/TODO-leap.lua | 16 ++ .config/nvim/lua/custom/plugins/TODO-lightbulb.lua | 20 ++ .config/nvim/lua/custom/plugins/TODO-lsp-saga.lua | 51 ++++++ .config/nvim/lua/custom/plugins/TODO-lsp.lua | 48 +++++ .../nvim/lua/custom/plugins/TODO-lsp_signature.lua | 20 ++ .config/nvim/lua/custom/plugins/TODO-lualine.lua | 12 ++ .config/nvim/lua/custom/plugins/TODO-neoclip.lua | 22 +++ .config/nvim/lua/custom/plugins/TODO-neotree.lua | 15 ++ .config/nvim/lua/custom/plugins/TODO-noice.lua | 204 +++++++++++++++++++++ .config/nvim/lua/custom/plugins/TODO-none-ls.lua | 13 ++ .config/nvim/lua/custom/plugins/TODO-obsidian.lua | 15 ++ .config/nvim/lua/custom/plugins/TODO-overseer.lua | 10 + .config/nvim/lua/custom/plugins/TODO-surround.lua | 21 +++ .../nvim/lua/custom/plugins/TODO-time-tracking.lua | 4 + .config/nvim/lua/custom/plugins/TODO-todo.lua | 105 +++++++++++ .config/nvim/lua/custom/plugins/TODO-trouble.lua | 37 ++++ .../lua/custom/plugins/TODO-vim-tmux-navigator.lua | 7 + .config/nvim/lua/custom/plugins/colorschemes.lua | 26 +++ .config/nvim/lua/custom/plugins/harpoon.lua | 24 +++ .config/nvim/lua/custom/plugins/oil.lua | 21 +++ .config/nvim/lua/custom/plugins/telescope.lua | 14 ++ .config/nvim/lua/custom/plugins/treesitter.lua | 13 ++ .config/nvim/lua/custom/telescope.lua | 50 +++++ 36 files changed, 1072 insertions(+) create mode 100644 .config/nvim/lua/custom/plugins/TODO-alpha.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-auto-session.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-autopair.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-color.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-comment.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-completions.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-debug.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-edgy.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-ftFT.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-git.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-illuminate.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-indent-blankline.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lazydev.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-leap.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lightbulb.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lsp-saga.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lsp.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lsp_signature.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-lualine.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-neoclip.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-neotree.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-noice.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-none-ls.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-obsidian.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-overseer.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-surround.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-time-tracking.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-todo.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-trouble.lua create mode 100644 .config/nvim/lua/custom/plugins/TODO-vim-tmux-navigator.lua create mode 100644 .config/nvim/lua/custom/plugins/colorschemes.lua create mode 100644 .config/nvim/lua/custom/plugins/harpoon.lua create mode 100644 .config/nvim/lua/custom/plugins/oil.lua create mode 100644 .config/nvim/lua/custom/plugins/telescope.lua create mode 100644 .config/nvim/lua/custom/plugins/treesitter.lua create mode 100644 .config/nvim/lua/custom/telescope.lua (limited to '.config/nvim/lua/custom') diff --git a/.config/nvim/lua/custom/plugins/TODO-alpha.lua b/.config/nvim/lua/custom/plugins/TODO-alpha.lua new file mode 100644 index 0000000..e1b9532 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-alpha.lua @@ -0,0 +1,68 @@ +return { + 'goolord/alpha-nvim', + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + config = function() + local alpha = require('alpha') + local dashboard = require('alpha.themes.dashboard') + + local function get_natural_day(day) + local suffix = 'th' + local day_mod = day % 10 + + if day_mod == 1 and day ~= 11 then + suffix = 'st' + elseif day_mod == 2 and day ~= 12 then + suffix = 'nd' + elseif day_mod == 3 and day ~= 13 then + suffix = 'rd' + end + + return tostring(day) .. suffix + end + + local find_file_path = '$HOME' + local date = os.date('  %A, %B ') .. get_natural_day(tonumber(os.date('%d'))) + local plugins = '  ' .. require('lazy').stats().count .. ' plugins ' + local v = vim.version() + local version = '  v' .. v.major .. '.' .. v.minor .. '.' .. v.patch + local info_line = date .. plugins .. version + + -- WARN: Just hardcoded the length of the first line in the header + local header_length = #'  ' + local padding = (header_length - #info_line) / 2 + info_line = string.rep(' ', padding) .. info_line + + dashboard.section.header.val = { + [[  ]], + [[ ████ ██████ █████ ██ ██ ]], + [[ ███████████ █████ ███ ]], + [[ █████████ ███████████████████ ███ ███████████ ]], + [[ █████████ ███ █████████████ █████ ██████████████ ]], + [[ █████████ ██████████ █████████ █████ █████ ████ █████ ]], + [[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]], + [[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]], + [[ ]], + info_line, + } + + dashboard.section.buttons.opts.spacing = 0 + dashboard.section.buttons.val = { + dashboard.button('e', ' > New file', 'ene startinsert'), + dashboard.button('w', ' > Find file', 'cd ' .. find_file_path .. ' | Telescope find_files'), + dashboard.button('r', ' > Recent', 'Telescope oldfiles'), + dashboard.button('c', ' > Configuration', 'e $MYVIMRC | cd %:p:h'), + dashboard.button( + 's', + '󱎠 > Last Session', + 'lua require("auto-session.session-lens.actions").alternate_session()' + ), + dashboard.button('q', '󰈆 > Quit NVIM', 'qa'), + } + + dashboard.section.footer.val = require('alpha.fortune')() + + alpha.setup(dashboard.opts) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-auto-session.lua b/.config/nvim/lua/custom/plugins/TODO-auto-session.lua new file mode 100644 index 0000000..bf4fa27 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-auto-session.lua @@ -0,0 +1,12 @@ +return { + 'rmagatti/auto-session', + config = function() + vim.opt.sessionoptions = 'blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions' + require('auto-session').setup({ + log_level = 'error', + auto_session_suppress_dirs = { '~/', '/' }, + }) + local session = require('auto-session.session-lens') + vim.keymap.set('n', '', session.search_session, { desc = '[S]ession Manager' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-autopair.lua b/.config/nvim/lua/custom/plugins/TODO-autopair.lua new file mode 100644 index 0000000..c51bf19 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-autopair.lua @@ -0,0 +1,5 @@ +return { + 'windwp/nvim-autopairs', + event = 'InsertEnter', + config = true, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-color.lua b/.config/nvim/lua/custom/plugins/TODO-color.lua new file mode 100644 index 0000000..0597733 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-color.lua @@ -0,0 +1,13 @@ +return { + 'uga-rosa/ccc.nvim', + lazy = false, + config = function() + require('ccc').setup({ + highlighter = { + auto_enable = true, + }, + }) + vim.keymap.set('n', 'cp', ':CccPick', { desc = '[C]olor [P]icker' }) + vim.keymap.set('n', 'ct', ':CccHighlighterToggle', { desc = '[C]olor [T]oggle' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-comment.lua b/.config/nvim/lua/custom/plugins/TODO-comment.lua new file mode 100644 index 0000000..02eb39d --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-comment.lua @@ -0,0 +1,27 @@ +return { + 'numToStr/Comment.nvim', + opts = { + padding = true, + ignore = nil, + + toggler = { line = 'gcc', block = 'gbc' }, + opleader = { line = 'gc', block = 'gb' }, + extra = { above = 'gcO', below = 'gco', eol = 'gcA' }, + + mappings = { + basic = true, -- `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}` + extra = false, -- `gco`, `gcO`, `gcA` + }, + }, + config = function() + local api = require('Comment.api') + local esc = vim.api.nvim_replace_termcodes('', true, false, true) + local toggole_linewise_selection = function() + vim.api.nvim_feedkeys(esc, 'nx', false) + api.toggle.linewise(vim.fn.visualmode()) + end + + vim.keymap.set('n', '', api.toggle.linewise.current, { noremap = true, silent = true }) + vim.keymap.set('v', '', toggole_linewise_selection, { noremap = true, silent = true }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-completions.lua b/.config/nvim/lua/custom/plugins/TODO-completions.lua new file mode 100644 index 0000000..0699e9b --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-completions.lua @@ -0,0 +1,50 @@ +return { + { + 'hrsh7th/cmp-nvim-lsp', + }, + { + 'L3MON4D3/LuaSnip', + dependencies = { + 'saadparwaiz1/cmp_luasnip', + 'rafamadriz/friendly-snippets', + }, + }, + { + 'hrsh7th/nvim-cmp', + opts = function(_, opts) + -- Setup options for lazydev.nvim + opts.sources = opts.sources or {} + table.insert(opts.sources, { + name = 'lazydev', + group_index = 0, + }) + end, + config = function() + local cmp = require('cmp') + require('luasnip.loaders.from_vscode').lazy_load() + + cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { { name = 'buffer' } }), + }) + end, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-debug.lua b/.config/nvim/lua/custom/plugins/TODO-debug.lua new file mode 100644 index 0000000..191dd33 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-debug.lua @@ -0,0 +1,27 @@ +return { + 'mfussenegger/nvim-dap', + dependencies = { + 'rcarriga/nvim-dap-ui', + 'nvim-neotest/nvim-nio', -- dependency for nvim-dap-ui + }, + config = function() + local dap = require('dap') + local dapui = require('dapui') + + dap.listeners.before.attach.dapui_config = function() + dapui.open() + end + dap.listeners.before.launch.dapui_config = function() + dapui.open() + end + dap.listeners.before.event_terminated.dapui_config = function() + dapui.close() + end + dap.listeners.before.event_exited.dapui_config = function() + dapui.close() + end + + vim.keymap.set('n', 'bp', dap.toggle_breakpoint, { desc = 'Set [B]reak[p]oint (toggle)' }) + vim.keymap.set('n', 'dd', dap.continue, { desc = '[D]ebugger [D]ebug (start)' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-edgy.lua b/.config/nvim/lua/custom/plugins/TODO-edgy.lua new file mode 100644 index 0000000..7f01245 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-edgy.lua @@ -0,0 +1,37 @@ +return { + 'folke/edgy.nvim', + event = 'VeryLazy', + opts = { + bottom = { + 'Trouble', + { ft = 'qf', title = 'QuickFix' }, + { + ft = 'help', + size = { height = 20 }, + filter = function(buf) -- only show help buffers + return vim.bo[buf].buftype == 'help' + end, + }, + { ft = 'spectre_panel', size = { height = 0.4 } }, + }, + left = { + { + title = 'Neo-Tree', + ft = 'neo-tree', + filter = function(buf) + return vim.b[buf].neo_tree_source == 'filesystem' + end, + size = { height = 0.5 }, + }, + { + title = 'Neo-Tree Git', + ft = 'neo-tree', + filter = function(buf) + return vim.b[buf].neo_tree_source == 'git_status' + end, + pinned = true, + open = 'Neotree position=right git_status', + }, + }, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-ftFT.lua b/.config/nvim/lua/custom/plugins/TODO-ftFT.lua new file mode 100644 index 0000000..fcf37d8 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-ftFT.lua @@ -0,0 +1,8 @@ +return { + "gukz/ftFT.nvim", + opts = { + keys = { "f", "t", "F", "T" }, + modes = {"n", "v"}, + }, + config = true, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-git.lua b/.config/nvim/lua/custom/plugins/TODO-git.lua new file mode 100644 index 0000000..bd022b9 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-git.lua @@ -0,0 +1,28 @@ +return { + { + 'lewis6991/gitsigns.nvim', + config = function() + require('gitsigns').setup() + vim.keymap.set('n', 'gp', ':Gitsigns preview_hunk', { desc = '[G]it [P]review' }) + vim.keymap.set('n', 'gb', ':Gitsigns toggle_current_line_blame', { desc = '[G]it [B]lame' }) + end, + }, + { 'tpope/vim-fugitive' }, + { 'sindrets/diffview.nvim' }, + { + 'pwntester/octo.nvim', + config = function() + require('octo').setup() + vim.treesitter.language.register('markdown', 'octo') + + vim.api.nvim_create_autocmd('FileType', { + pattern = 'octo', + callback = function() + vim.keymap.set('i', '@', '@', { silent = true, buffer = true }) + vim.keymap.set('i', '#', '#', { silent = true, buffer = true }) + end, + }) + vim.keymap.set('n', 'gi', ':Octo issue search', { desc = '[G]thub [I]ssues' }) + end, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-illuminate.lua b/.config/nvim/lua/custom/plugins/TODO-illuminate.lua new file mode 100644 index 0000000..ae99f39 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-illuminate.lua @@ -0,0 +1,6 @@ +return { + 'RRethy/vim-illuminate', + config = function() + vim.keymap.set('n', 'it', ':IlluminateToggle', { desc = '[I]lluminate [Tloggle]' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-indent-blankline.lua b/.config/nvim/lua/custom/plugins/TODO-indent-blankline.lua new file mode 100644 index 0000000..7130fbb --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-indent-blankline.lua @@ -0,0 +1,8 @@ +return { + 'lukas-reineke/indent-blankline.nvim', + main = 'ibl', + opts = {}, + config = function() + require('ibl').setup() + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lazydev.lua b/.config/nvim/lua/custom/plugins/TODO-lazydev.lua new file mode 100644 index 0000000..ab0de90 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lazydev.lua @@ -0,0 +1,15 @@ +return { + { + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + { path = 'luvit-meta/library', words = { 'vim%.uv' } }, + }, + }, + }, + { + 'Bilal2453/luvit-meta', + lazy = true, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-leap.lua b/.config/nvim/lua/custom/plugins/TODO-leap.lua new file mode 100644 index 0000000..3c4e99e --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-leap.lua @@ -0,0 +1,16 @@ +return { + 'ggandor/leap.nvim', + dependencies = { "tpope/vim-repeat" }, + config = function() + vim.keymap.set({ 'n', 'x', 'o' }, 's', '(leap-forward)') + vim.keymap.set({ 'n', 'x', 'o' }, 'S', '(leap-backward)') + vim.keymap.set({ 'n', 'x', 'o' }, 'gs', '(leap-from-window)') + + -- Define equivalence classes for brackets and quotes, in addition to + -- the default whitespace group. + require('leap').opts.equivalence_classes = { ' \t\r\n', '([{', ')]}', '\'"`' } + + -- Set background to gray in searchable area + vim.api.nvim_set_hl(0, 'LeapBackdrop', { fg = '#777777' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lightbulb.lua b/.config/nvim/lua/custom/plugins/TODO-lightbulb.lua new file mode 100644 index 0000000..29aeffb --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lightbulb.lua @@ -0,0 +1,20 @@ +return { + 'kosayoda/nvim-lightbulb', + config = function() + require('nvim-lightbulb').setup({ + autocmd = { + enabled = true, + updatetime = 50, + }, + action_kinds = { 'quickfix', 'refactor.rewrite' }, + sign = { enabled = false }, + virtual_text = { enabled = true }, + float = { enabled = true }, + ignore = { + ft = { 'neo-tree' }, + actions_without_kind = true, + }, + }) + local test = "" + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lsp-saga.lua b/.config/nvim/lua/custom/plugins/TODO-lsp-saga.lua new file mode 100644 index 0000000..edbe855 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lsp-saga.lua @@ -0,0 +1,51 @@ +return { + 'nvimdev/lspsaga.nvim', + dependencies = { + 'nvim-treesitter/nvim-treesitter', + 'nvim-tree/nvim-web-devicons', + }, + config = function() + require('lspsaga').setup({ + lightbulb = { + enable = false, + sign = false, + virtual_text = true, + }, + implement = { + sign = false, + virtual_text = true, + }, + floaterm = { + height = 0.7, + width = 0.7, + }, + outline = { + layout = 'float', + }, + }) + local diagnostic = require('lspsaga.diagnostic') + + vim.keymap.set('n', 'K', ':Lspsaga hover_doc', { desc = 'Display Docs' }) + vim.keymap.set('n', 'R', ':Lspsaga rename', { desc = '[R]ename' }) + + vim.keymap.set('n', 'os', 'Lspsaga outline', { desc = '[T]erminal' }) + + vim.keymap.set({ 'n', 'i' }, '', 'Lspsaga code_action', { desc = 'Code Actions' }) + vim.keymap.set('n', 'ca', ':Lspsaga code_action', { desc = '[C]ode [A]ctions' }) + + vim.keymap.set('n', 'ge', function() + diagnostic:goto_next({ severity = vim.diagnostic.severity.WARN }) + end, { desc = '[G]oto [E]rror' }) + vim.keymap.set('n', 'gE', function() + diagnostic:goto_prev({ severity = vim.diagnostic.severity.WARN }) + end, { desc = '[G]oto [E]rror (prev)' }) + vim.keymap.set( + 'n', + 'dw', + 'Lspsaga show_workspace_diagnostics ++normal', + { desc = '[D]iagnostics for [W]orkspace' } + ) + + vim.keymap.set({ 'n', 't' }, '', 'Lspsaga term_toggle', { desc = '[T]erminal' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lsp.lua b/.config/nvim/lua/custom/plugins/TODO-lsp.lua new file mode 100644 index 0000000..74b9ed4 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lsp.lua @@ -0,0 +1,48 @@ +return { + { + 'williamboman/mason.nvim', + lazy = false, + config = function() + require('mason').setup() + end, + }, + { + 'williamboman/mason-lspconfig.nvim', + lazy = false, + config = function() + require('mason-lspconfig').setup({ + ensure_installed = { + 'lua_ls', + 'clangd', + 'gradle_ls', + 'jdtls', + 'kotlin_language_server', + 'pyright', + 'rust_analyzer', + 'taplo', + 'bashls', + 'lemminx', + 'yamlls', + }, + }) + end, + }, + { + 'neovim/nvim-lspconfig', + lazy = false, + config = function() + local lspconfig = require('lspconfig') + lspconfig.lua_ls.setup({}) + lspconfig.clangd.setup({}) + lspconfig.gradle_ls.setup({}) + lspconfig.jdtls.setup({}) + lspconfig.kotlin_language_server.setup({}) + lspconfig.pyright.setup({}) + lspconfig.rust_analyzer.setup({}) + lspconfig.taplo.setup({}) + lspconfig.bashls.setup({}) + lspconfig.lemminx.setup({}) + lspconfig.yamlls.setup({}) + end, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lsp_signature.lua b/.config/nvim/lua/custom/plugins/TODO-lsp_signature.lua new file mode 100644 index 0000000..33c2429 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lsp_signature.lua @@ -0,0 +1,20 @@ +return { + -- 'ray-x/lsp_signature.nvim', + -- event = 'VeryLazy', + -- config = function() + -- local lsp_signature = require('lsp_signature') + -- vim.api.nvim_create_autocmd('LspAttach', { + -- callback = function(args) + -- local bufnr = args.buf + -- local client = vim.lsp.get_client_by_id(args.data.client_id) + -- if vim.tbl_contains({ 'null-ls' }, client.name) then + -- return + -- end + -- lsp_signature.on_attach({}, bufnr) + -- end, + -- }) + -- + -- require('lsp_signature').setup({}) + -- vim.keymap.set({ 'i', 'n' }, '', lsp_signature.toggle_float_win, { desc = 'toggle signature' }) + -- end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-lualine.lua b/.config/nvim/lua/custom/plugins/TODO-lualine.lua new file mode 100644 index 0000000..99dd11f --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-lualine.lua @@ -0,0 +1,12 @@ +return { + 'nvim-lualine/lualine.nvim', + config = function() + -- TODO: Configure this to make the status line fully customizable + require('lualine').setup({ + options = { + theme = 'tokyonight', + }, + sections = { lualine_c = { require('auto-session.lib').current_session_name } }, + }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-neoclip.lua b/.config/nvim/lua/custom/plugins/TODO-neoclip.lua new file mode 100644 index 0000000..ef4f15b --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-neoclip.lua @@ -0,0 +1,22 @@ +return { + 'AckslD/nvim-neoclip.lua', + dependencies = { + { 'kkharji/sqlite.lua', module = 'sqlite' }, + { 'nvim-telescope/telescope.nvim' }, + }, + config = function() + require('neoclip').setup({ + enable_persistent_history = true, + keys = { + telescope = { + i = { + paste = '', + paste_behind = '', + }, + }, + } + }) + -- NOTE: Using `plus` to set the plus register to the selected value + vim.keymap.set('n', 'nc', ':Telescope neoclip plus', { desc = '[N]eo[c]lip History' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-neotree.lua b/.config/nvim/lua/custom/plugins/TODO-neotree.lua new file mode 100644 index 0000000..b8a4ee9 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-neotree.lua @@ -0,0 +1,15 @@ +return { + 'nvim-neo-tree/neo-tree.nvim', + branch = 'v3.x', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', + 'MunifTanjim/nui.nvim', + }, + opts = { + open_files_do_not_replace_types = { 'terminal', 'Trouble', 'qf', 'edgy' }, + }, + config = function() + vim.keymap.set('n', 'nt', ':Neotree toggle reveal left', { desc = '[N]eotree [T]oggle' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-noice.lua b/.config/nvim/lua/custom/plugins/TODO-noice.lua new file mode 100644 index 0000000..f4acfe4 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-noice.lua @@ -0,0 +1,204 @@ +return { + --[[ + 'folke/noice.nvim', + dependencies = { + 'MunifTanjim/nui.nvim', + 'rcarriga/nvim-notify', + }, + event = 'VeryLazy', + config = function() + require('noice').setup({ + cmdline = { + enabled = false, -- enables the Noice cmdline UI + view = 'cmdline_popup', -- view for rendering the cmdline. Change to `cmdline` to get a classic cmdline at the bottom + opts = {}, -- global options for the cmdline. See section on views + ---@type table + format = { + -- conceal: (default=true) This will hide the text in the cmdline that matches the pattern. + -- view: (default is cmdline view) + -- opts: any options passed to the view + -- icon_hl_group: optional hl_group for the icon + -- title: set to anything or empty string to hide + cmdline = { pattern = '^:', icon = '', lang = 'vim' }, + search_down = { kind = 'search', pattern = '^/', icon = ' ', lang = 'regex' }, + search_up = { kind = 'search', pattern = '^%?', icon = ' ', lang = 'regex' }, + filter = { pattern = '^:%s*!', icon = '$', lang = 'bash' }, + lua = { pattern = { '^:%s*lua%s+', '^:%s*lua%s*=%s*', '^:%s*=%s*' }, icon = '', lang = 'lua' }, + help = { pattern = '^:%s*he?l?p?%s+', icon = '' }, + input = { view = 'cmdline_input', icon = '󰥻 ' }, -- Used by input() + -- lua = false, -- to disable a format, set to `false` + }, + }, + messages = { + -- NOTE: If you enable messages, then the cmdline is enabled automatically. + -- This is a current Neovim limitation. + enabled = false, -- enables the Noice messages UI + view = 'notify', -- default view for messages + view_error = 'notify', -- view for errors + view_warn = 'notify', -- view for warnings + view_history = 'messages', -- view for :messages + view_search = 'virtualtext', -- view for search count messages. Set to `false` to disable + }, + popupmenu = { + enabled = true, -- enables the Noice popupmenu UI + ---@type 'nui'|'cmp' + backend = 'nui', -- backend to use to show regular cmdline completions + ---@type NoicePopupmenuItemKind|false + -- Icons for completion item kinds (see defaults at noice.config.icons.kinds) + kind_icons = {}, -- set to `false` to disable icons + }, + -- default options for require('noice').redirect + -- see the section on Command Redirection + ---@type NoiceRouteConfig + redirect = { + view = 'popup', + filter = { event = 'msg_show' }, + }, + -- You can add any custom commands below that will be available with `:Noice command` + ---@type table + commands = { + history = { + -- options for the message history that you get with `:Noice` + view = 'split', + opts = { enter = true, format = 'details' }, + filter = { + any = { + { event = 'notify' }, + { error = true }, + { warning = true }, + { event = 'msg_show', kind = { '' } }, + { event = 'lsp', kind = 'message' }, + }, + }, + }, + -- :Noice last + last = { + view = 'popup', + opts = { enter = true, format = 'details' }, + filter = { + any = { + { event = 'notify' }, + { error = true }, + { warning = true }, + { event = 'msg_show', kind = { '' } }, + { event = 'lsp', kind = 'message' }, + }, + }, + filter_opts = { count = 1 }, + }, + -- :Noice errors + errors = { + -- options for the message history that you get with `:Noice` + view = 'popup', + opts = { enter = true, format = 'details' }, + filter = { error = true }, + filter_opts = { reverse = true }, + }, + all = { + -- options for the message history that you get with `:Noice` + view = 'split', + opts = { enter = true, format = 'details' }, + filter = {}, + }, + }, + notify = { + -- Noice can be used as `vim.notify` so you can route any notification like other messages + -- Notification messages have their level and other properties set. + -- event is always "notify" and kind can be any log level as a string + -- The default routes will forward notifications to nvim-notify + -- Benefit of using Noice for this is the routing and consistent history view + enabled = true, + view = 'notify', + }, + lsp = { + progress = { + enabled = true, + -- Lsp Progress is formatted using the builtins for lsp_progress. See config.format.builtin + -- See the section on formatting for more details on how to customize. + --- @type NoiceFormat|string + format = 'lsp_progress', + --- @type NoiceFormat|string + format_done = 'lsp_progress_done', + throttle = 1000 / 30, -- frequency to update lsp progress message + view = 'mini', + }, + override = { + ['vim.lsp.util.convert_input_to_markdown_lines'] = true, + ['vim.lsp.util.stylize_markdown'] = true, + ['cmp.entry.get_documentation'] = true, + }, + hover = { + enabled = true, + silent = false, -- set to true to not show a message if hover is not available + view = nil, -- when nil, use defaults from documentation + ---@type NoiceViewOptions + opts = {}, -- merged with defaults from documentation + }, + signature = { + enabled = true, + auto_open = { + enabled = true, + trigger = true, -- Automatically show signature help when typing a trigger character from the LSP + luasnip = true, -- Will open signature help when jumping to Luasnip insert nodes + throttle = 50, -- Debounce lsp signature help request by 50ms + }, + view = nil, -- when nil, use defaults from documentation + ---@type NoiceViewOptions + opts = {}, -- merged with defaults from documentation + }, + message = { + -- Messages shown by lsp servers + enabled = true, + view = 'notify', + opts = {}, + }, + -- defaults for hover and signature help + documentation = { + view = 'hover', + ---@type NoiceViewOptions + opts = { + lang = 'markdown', + replace = true, + render = 'plain', + format = { '{message}' }, + win_options = { concealcursor = 'n', conceallevel = 3 }, + }, + }, + }, + markdown = { + hover = { + ['|(%S-)|'] = vim.cmd.help, -- vim help links + ['%[.-%]%((%S-)%)'] = require('noice.util').open, -- markdown links + }, + highlights = { + ['|%S-|'] = '@text.reference', + ['@%S+'] = '@parameter', + ['^%s*(Parameters:)'] = '@text.title', + ['^%s*(Return:)'] = '@text.title', + ['^%s*(See also:)'] = '@text.title', + ['{%S-}'] = '@parameter', + }, + }, + health = { + checker = true, -- Disable if you don't want health checks to run + }, + ---@type NoicePresets + presets = { + bottom_search = true, -- use a classic bottom cmdline for search + command_palette = true, -- position the cmdline and popupmenu together + long_message_to_split = true, -- long messages will be sent to a split + inc_rename = false, -- enables an input dialog for inc-rename.nvim + lsp_doc_border = false, -- add a border to hover docs and signature help + }, + throttle = 1000 / 30, -- how frequently does Noice need to check for ui updates? + ---@type NoiceConfigViews + views = {}, ---@see section on views + ---@type NoiceRouteConfig[] + routes = {}, --- @see section on routes + ---@type table + status = {}, --- @see section on statusline components + ---@type NoiceFormatOptions + format = {}, --- @see section on formatting + }) + end,]] +} diff --git a/.config/nvim/lua/custom/plugins/TODO-none-ls.lua b/.config/nvim/lua/custom/plugins/TODO-none-ls.lua new file mode 100644 index 0000000..3a09d95 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-none-ls.lua @@ -0,0 +1,13 @@ +return { + 'nvimtools/none-ls.nvim', + config = function() + local null_ls = require('null-ls') + null_ls.setup({ + sources = { + null_ls.builtins.formatting.stylua, + }, + }) + + vim.keymap.set('n', '=', vim.lsp.buf.format, { desc = 'Format File' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-obsidian.lua b/.config/nvim/lua/custom/plugins/TODO-obsidian.lua new file mode 100644 index 0000000..55a242d --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-obsidian.lua @@ -0,0 +1,15 @@ +return { + 'epwalsh/obsidian.nvim', + version = '*', + lazy = true, + ft = 'markdown', + dependencies = { 'nvim-lua/plenary.nvim', 'hrsh7th/nvim-cmp' }, + opts = { + workspaces = { + { + name = 'personal', + path = '/mnt/c/users/owner/Projects/ObsidianSync', + }, + }, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-overseer.lua b/.config/nvim/lua/custom/plugins/TODO-overseer.lua new file mode 100644 index 0000000..6362f2a --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-overseer.lua @@ -0,0 +1,10 @@ +return { + 'stevearc/overseer.nvim', + opts = {}, + config = function() + require('overseer').setup({ + templates = { 'builtin', 'user.c_build_make' }, + }) + vim.keymap.set('n', 'r', ':OverseerRun', { desc = '[R]un Task' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-surround.lua b/.config/nvim/lua/custom/plugins/TODO-surround.lua new file mode 100644 index 0000000..7f8c88b --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-surround.lua @@ -0,0 +1,21 @@ +return { + 'kylechui/nvim-surround', + version = '*', + event = 'VeryLazy', + config = function() + require('nvim-surround').setup({}) + local opts = {} + vim.keymap.set('v', '(', '(nvim-surround-visual)(', opts) + vim.keymap.set('v', ')', '(nvim-surround-visual))', opts) + vim.keymap.set('v', '{', '(nvim-surround-visual){', opts) + vim.keymap.set('v', '}', '(nvim-surround-visual)}', opts) + -- NOTE: I still want to be able to do < and > for indentation + -- vim.keymap.set('v', '<', '(nvim-surround-visual)<', opts) + -- vim.keymap.set('v', '>', '(nvim-surround-visual)>', opts) + vim.keymap.set('v', '[', '(nvim-surround-visual)[', opts) + vim.keymap.set('v', ']', '(nvim-surround-visual)]', opts) + vim.keymap.set('v', "'", "(nvim-surround-visual)'", opts) + vim.keymap.set('v', '"', '(nvim-surround-visual)"', opts) + vim.keymap.set('v', '`', '(nvim-surround-visual)`', opts) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-time-tracking.lua b/.config/nvim/lua/custom/plugins/TODO-time-tracking.lua new file mode 100644 index 0000000..d63a22b --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-time-tracking.lua @@ -0,0 +1,4 @@ +return { + 'wakatime/vim-wakatime', + lazy = false, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-todo.lua b/.config/nvim/lua/custom/plugins/TODO-todo.lua new file mode 100644 index 0000000..86175a2 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-todo.lua @@ -0,0 +1,105 @@ +-- Showcase +-- TODO: lorem ipsum + +-- FIX: lorem ipsum + +-- OPTIMIZE: lorem ipsum + +-- WARN: lorem ipsum + +-- PERF: lorem ipsum + +-- HACK: lorem ipsum + +-- NOTE: lorem ipsum + +-- TEST: lorem ipsum + +-- UNSAFE: lorem ipsum + +-- NORMAL: lorem ipsum + +return { + 'folke/todo-comments.nvim', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + require('todo-comments').setup({ + signs = true, -- show icons in the signs column + sign_priority = 8, -- sign priority + + keywords = { + -- NOTE: These are "todos" + TODO = { icon = ' ', color = 'info', alt = { 'todo' } }, + FIX = { icon = ' ', color = 'error', alt = { 'FIXME', 'BUG', 'ISSUE' } }, + OPTIMIZE = { icon = ' ', color = 'performance' }, + -- NOTE: These are "notes" + WARN = { icon = ' ', color = 'warning', alt = { 'WARNING' } }, + PERF = { icon = ' ', color = 'performance', alt = { 'PERFORMANCE' } }, + HACK = { icon = ' ', color = 'warning', alt = { 'SMELL', 'CODE SMELL', 'BAD', 'BAD PRACTICE' } }, + NOTE = { icon = ' ', color = 'hint', alt = { 'INFO' } }, + TEST = { icon = '󰙨 ', color = 'test', alt = { 'TESTING', 'PASSED', 'FAILED' } }, + UNSAFE = { icon = '󰍛 ', color = 'error', alt = { 'SAFETY' } }, + }, + + gui_style = { + fg = 'NONE', + bg = 'BOLD', + }, + + merge_keywords = true, -- when true, custom keywords will be merged with the defaults + + -- highlighting of the line containing the todo comment + -- * before: highlights before the keyword (typically comment characters) + -- * keyword: highlights of the keyword + -- * after: highlights after the keyword (todo text) + highlight = { + multiline = true, + multiline_pattern = '^.', -- lua pattern to match the next multiline from the start of the matched keyword + multiline_context = 10, -- extra lines that will be re-evaluated when changing a line + before = '', -- "fg" or "bg" or empty + keyword = 'wide', -- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg, but will also highlight surrounding characters, wide_fg acts accordingly but with fg) + after = 'fg', -- "fg" or "bg" or empty + pattern = { + [[.*<(KEYWORDS)\s*:]], + -- [[.*<(KEYWORDS)\s*]], + -- [[.*<(KEYWORDS)\s*!()]], + }, -- pattern or table of patterns, used for highlighting (vim regex) + comments_only = false, + max_line_len = 400, + exclude = {}, -- list of excluded filetypes + }, + + -- list of named colors where we try to extract the gui fg from the + -- list of highlight groups or use the hex color if hl not found as a fallback + colors = { + default = { 'Identifier', '#7C3AED' }, + error = { 'DiagnosticError', 'ErrorMsg', '#DC2626' }, + warning = { 'DiagnosticWarn', 'WarningMsg', '#FBBF24' }, + info = { 'DiagnosticInfo', '#2563EB' }, + hint = { '#10B981' }, + test = { 'Identifier', '#FF00FF' }, + performance = { '#7C3AED' }, + }, + + search = { + command = 'rg', + args = { + '--color=never', + '--no-heading', + '--with-filename', + '--line-number', + '--column', + -- "--hidden", -- show todos in hidden directories and files + '--follow', -- follow symlinks + }, + + -- regex that will be used to match keywords. + -- don't replace the (KEYWORDS) placeholder + pattern = [[\b(KEYWORDS):]], + -- pattern = [[\b(KEYWORDS)\b]], + }, + }) + vim.keymap.set('n', 'st', ':TodoTelescope keywords=TODO,FIX', { desc = '[S]earch [T]odos' }) + vim.keymap.set('n', 'lt', ':TodoTrouble', { desc = '[L]ist [T]odos' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-trouble.lua b/.config/nvim/lua/custom/plugins/TODO-trouble.lua new file mode 100644 index 0000000..858572e --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-trouble.lua @@ -0,0 +1,37 @@ +return { + 'folke/trouble.nvim', + opts = {}, + cmd = 'Trouble', + keys = { + { + 'xx', + 'Trouble diagnostics toggle', + desc = 'Diagnostics (Trouble)', + }, + { + 'xX', + 'Trouble diagnostics toggle filter.buf=0', + desc = 'Buffer Diagnostics (Trouble)', + }, + { + 'cs', + 'Trouble symbols toggle focus=false', + desc = 'Symbols (Trouble)', + }, + { + 'cl', + 'Trouble lsp toggle focus=false win.position=right', + desc = 'LSP Definitions / references / ... (Trouble)', + }, + { + 'xL', + 'Trouble loclist toggle', + desc = 'Location List (Trouble)', + }, + { + 'xQ', + 'Trouble qflist toggle', + desc = 'Quickfix List (Trouble)', + }, + }, +} diff --git a/.config/nvim/lua/custom/plugins/TODO-vim-tmux-navigator.lua b/.config/nvim/lua/custom/plugins/TODO-vim-tmux-navigator.lua new file mode 100644 index 0000000..4d5c018 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/TODO-vim-tmux-navigator.lua @@ -0,0 +1,7 @@ +return { + 'christoomey/vim-tmux-navigator', + vim.keymap.set('n', 'C-h', ':TmuxNavigatorLeft'), + vim.keymap.set('n', 'C-j', ':TmuxNavigatorDown'), + vim.keymap.set('n', 'C-k', ':TmuxNavigatorUp'), + vim.keymap.set('n', 'C-l', ':TmuxNavigatorRight'), +} diff --git a/.config/nvim/lua/custom/plugins/colorschemes.lua b/.config/nvim/lua/custom/plugins/colorschemes.lua new file mode 100644 index 0000000..8fa17af --- /dev/null +++ b/.config/nvim/lua/custom/plugins/colorschemes.lua @@ -0,0 +1,26 @@ +return { + { + 'folke/tokyonight.nvim', + lazy = false, + priority = 1000, + config = function() + vim.cmd.colorscheme('tokyonight-night') + require('colorschemes.dapui').set() + end, + }, + 'rktjmp/lush.nvim', + 'catppuccin/nvim', + 'marko-cerovac/material.nvim', + 'rebelot/kanagawa.nvim', + 'projekt0n/github-nvim-theme', + 'EdenEast/nightfox.nvim', + 'rose-pine/neovim', + 'rafi/awesome-vim-colorschemes', + 'datsfilipe/min-theme.nvim', + 'nechaev/darkstorm.nvim', + 'briones-gabriel/darcula-solid.nvim', + 'okaihe/okai', + 'uloco/bluloco.nvim', + 'doums/darcula', + 'pineapplegiant/spaceduck', +} diff --git a/.config/nvim/lua/custom/plugins/harpoon.lua b/.config/nvim/lua/custom/plugins/harpoon.lua new file mode 100644 index 0000000..1352444 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/harpoon.lua @@ -0,0 +1,24 @@ +return { + 'ThePrimeagen/harpoon', + branch = 'harpoon2', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + local harpoon = require('harpoon') + harpoon:setup() + + vim.keymap.set('n', 'a', function() + harpoon:list():add() + end) + vim.keymap.set('n', '', function() + harpoon.ui:toggle_quick_menu(harpoon:list()) + end) + + for i = 1, 9 do + local select = function() + harpoon:list():select(i) + end + vim.keymap.set('n', string.format('', i), select) + vim.keymap.set('n', string.format('%d', i), select) + end + end, +} diff --git a/.config/nvim/lua/custom/plugins/oil.lua b/.config/nvim/lua/custom/plugins/oil.lua new file mode 100644 index 0000000..1bf5672 --- /dev/null +++ b/.config/nvim/lua/custom/plugins/oil.lua @@ -0,0 +1,21 @@ +return { + 'stevearc/oil.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + config = function() + local oil = require('oil') + oil.setup({ + keymaps = { + [''] = false, + [''] = false, + [''] = false, + [''] = false, + [''] = 'actions.select_split', + }, + view_options = { + show_hidden = true, + }, + }) + vim.keymap.set('n', 'ob', 'Oil', { desc = '[O]il [B]uffer' }) + vim.keymap.set('n', 'of', oil.toggle_float, { desc = '[O]il [F]loat' }) + end, +} diff --git a/.config/nvim/lua/custom/plugins/telescope.lua b/.config/nvim/lua/custom/plugins/telescope.lua new file mode 100644 index 0000000..263cc1e --- /dev/null +++ b/.config/nvim/lua/custom/plugins/telescope.lua @@ -0,0 +1,14 @@ +return { + { + 'nvim-telescope/telescope.nvim', + tag = '0.1.5', + dependencies = { + 'nvim-lua/plenary.nvim', + { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, + 'nvim-telescope/telescope-ui-select.nvim', + }, + config = function() + require("custom.telescope") + end, + }, +} diff --git a/.config/nvim/lua/custom/plugins/treesitter.lua b/.config/nvim/lua/custom/plugins/treesitter.lua new file mode 100644 index 0000000..d869a5e --- /dev/null +++ b/.config/nvim/lua/custom/plugins/treesitter.lua @@ -0,0 +1,13 @@ +return { + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + config = function() + ---@type userdata + require('nvim-treesitter.configs').setup({ + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + }) + end, +} diff --git a/.config/nvim/lua/custom/telescope.lua b/.config/nvim/lua/custom/telescope.lua new file mode 100644 index 0000000..bb6ec62 --- /dev/null +++ b/.config/nvim/lua/custom/telescope.lua @@ -0,0 +1,50 @@ +local telescope = require('telescope') +telescope.setup({ + pickers = { + find_files = { follow = true }, + grep_string = { additional_args = '--follow' }, + live_grep = { additional_args = '--follow' }, + }, + extensions = { + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = 'smart_case', -- default "smart_case" or "ignore_case" or "respect_case" + }, + ['ui-select'] = { + require('telescope.themes').get_dropdown({}), + }, + }, +}) + +pcall(telescope.load_extension('ui-select')) +pcall(telescope.load_extension('fzf')) + +local builtin = require('telescope.builtin') + +vim.keymap.set('n', 'fs', builtin.find_files, { desc = '[F]ile [S]ystem' }) +vim.keymap.set('n', 'fh', builtin.help_tags, { desc = '[F]ind [H]elp' }) +vim.keymap.set('n', 'fm', builtin.man_pages, { desc = '[F]ind [M]an Pages' }) +-- vim.keymap.set('n', 'fw', builtin.grep_string, { desc = '[F]ind current [W]ord' }) +vim.keymap.set('n', 'lv', builtin.live_grep, { desc = '[L]ive [G]rep' }) +vim.keymap.set('n', 'f.', builtin.oldfiles, { desc = '[F]ind Recent Files' }) +vim.keymap.set('n', 'th', builtin.colorscheme, { desc = 'List [Th]eme' }) +-- vim.keymap.set('n', 'ob', builtin.buffers, { desc = '[O]pen [B]uffers' }) + +vim.keymap.set('n', 'gd', builtin.lsp_definitions, { desc = '[G]oto [D]efinition' }) +vim.keymap.set('n', 'gu', builtin.lsp_references, { desc = '[G]oto [U]sages' }) +vim.keymap.set('n', 'gi', builtin.lsp_implementations, { desc = '[G]oto [I]mplementations' }) +-- vim.keymap.set('n', 'gt', builtin.lsp_type_definitions, { desc = '[G]oto [T]ype Definitions' }) +vim.keymap.set('n', 'gw', builtin.diagnostics, { desc = '[G]oto [W]arnings' }) + +vim.keymap.set('n', 'ds', builtin.lsp_document_symbols, { desc = '[D]ocument [S]symbols' }) +vim.keymap.set('n', 'ps', builtin.lsp_workspace_symbols, { desc = '[P]roject [S]ymbols' }) + +vim.keymap.set('n', 'sb', builtin.git_branches, { desc = '[S]earch [B]ranches' }) +vim.keymap.set('n', 'sc', builtin.git_commits, { desc = '[S]earch [C]ommits' }) +-- TODO: Look into the following +-- builtin.git_commits +-- builtin.git_branches +-- builtin.git_status +-- builtin.git_stash -- cgit v1.3.1