summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/custom
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-07-06 20:07:41 +0300
committerKyren223 <ulmliad223@gmail.com>2024-07-06 20:07:41 +0300
commit39d19909525940cc16695ad3e7fcdb5812f744ac (patch)
tree8d5ff9c51113eb02333597be8ec240fd150cf83a /.config/nvim/lua/custom
parent7166c238e8160fbffc219744b0fc96b96e889bd7 (diff)
Neovim: started rework on the conifg, changed a bunch of stuff
Diffstat (limited to '.config/nvim/lua/custom')
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-alpha.lua68
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-auto-session.lua12
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-autopair.lua5
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-color.lua13
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-comment.lua27
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-completions.lua50
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-debug.lua27
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-edgy.lua37
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-ftFT.lua8
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-git.lua28
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-illuminate.lua6
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-indent-blankline.lua8
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lazydev.lua15
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-leap.lua16
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lightbulb.lua20
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lsp-saga.lua51
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lsp.lua48
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lsp_signature.lua20
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-lualine.lua12
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-neoclip.lua22
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-neotree.lua15
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-noice.lua204
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-none-ls.lua13
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-obsidian.lua15
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-overseer.lua10
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-surround.lua21
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-time-tracking.lua4
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-todo.lua105
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-trouble.lua37
-rw-r--r--.config/nvim/lua/custom/plugins/TODO-vim-tmux-navigator.lua7
-rw-r--r--.config/nvim/lua/custom/plugins/colorschemes.lua26
-rw-r--r--.config/nvim/lua/custom/plugins/harpoon.lua24
-rw-r--r--.config/nvim/lua/custom/plugins/oil.lua21
-rw-r--r--.config/nvim/lua/custom/plugins/telescope.lua14
-rw-r--r--.config/nvim/lua/custom/plugins/treesitter.lua13
-rw-r--r--.config/nvim/lua/custom/telescope.lua50
36 files changed, 1072 insertions, 0 deletions
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', '<cmd>ene <BAR> startinsert<cr>'),
+ dashboard.button('w', ' > Find file', '<cmd>cd ' .. find_file_path .. ' | Telescope find_files<cr>'),
+ dashboard.button('r', ' > Recent', '<cmd>Telescope oldfiles<cr>'),
+ dashboard.button('c', ' > Configuration', '<cmd>e $MYVIMRC<cr> | <cmd>cd %:p:h<cr>'),
+ dashboard.button(
+ 's',
+ '󱎠 > Last Session',
+ '<cmd>lua require("auto-session.session-lens.actions").alternate_session()<cr>'
+ ),
+ dashboard.button('q', '󰈆 > Quit NVIM', '<cmd>qa<cr>'),
+ }
+
+ 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', '<C-s>', 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', '<leader>cp', ':CccPick<cr>', { desc = '[C]olor [P]icker' })
+ vim.keymap.set('n', '<leader>ct', ':CccHighlighterToggle<cr>', { 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('<ESC>', 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', '<C-_>', api.toggle.linewise.current, { noremap = true, silent = true })
+ vim.keymap.set('v', '<C-_>', 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({
+ ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-k>'] = cmp.mapping.abort(),
+ ['<CR>'] = 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', '<leader>bp', dap.toggle_breakpoint, { desc = 'Set [B]reak[p]oint (toggle)' })
+ vim.keymap.set('n', '<leader>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', '<leader>gp', ':Gitsigns preview_hunk<cr>', { desc = '[G]it [P]review' })
+ vim.keymap.set('n', '<leader>gb', ':Gitsigns toggle_current_line_blame<cr>', { 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', '@', '@<C-x><C-o>', { silent = true, buffer = true })
+ vim.keymap.set('i', '#', '#<C-x><C-o>', { silent = true, buffer = true })
+ end,
+ })
+ vim.keymap.set('n', '<leader>gi', ':Octo issue search<cr>', { 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', '<leader>it', ':IlluminateToggle<cr>', { 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', '<Plug>(leap-forward)')
+ vim.keymap.set({ 'n', 'x', 'o' }, 'S', '<Plug>(leap-backward)')
+ vim.keymap.set({ 'n', 'x', 'o' }, 'gs', '<Plug>(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<cr>', { desc = 'Display Docs' })
+ vim.keymap.set('n', 'R', ':Lspsaga rename<cr>', { desc = '[R]ename' })
+
+ vim.keymap.set('n', '<leader>os', '<cmd>Lspsaga outline<cr>', { desc = '[T]erminal' })
+
+ vim.keymap.set({ 'n', 'i' }, '<M-Enter>', '<cmd>Lspsaga code_action<cr><Esc>', { desc = 'Code Actions' })
+ vim.keymap.set('n', '<leader>ca', ':Lspsaga code_action<cr><Esc>', { 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',
+ '<leader>dw',
+ '<cmd>Lspsaga show_workspace_diagnostics ++normal<cr>',
+ { desc = '[D]iagnostics for [W]orkspace' }
+ )
+
+ vim.keymap.set({ 'n', 't' }, '<A-t>', '<cmd>Lspsaga term_toggle<cr>', { 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' }, '<C-p>', 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 = '<C-y>',
+ paste_behind = '<C-S-Y>',
+ },
+ },
+ }
+ })
+ -- NOTE: Using `plus` to set the plus register to the selected value
+ vim.keymap.set('n', '<leader>nc', ':Telescope neoclip plus<cr>', { 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', '<leader>nt', ':Neotree toggle reveal left<cr>', { 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<string, CmdlineFormat>
+ 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<string, NoiceCommand>
+ 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<string, NoiceFilter>
+ 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', '<leader>r', ':OverseerRun<cr>', { 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', '(', '<Plug>(nvim-surround-visual)(', opts)
+ vim.keymap.set('v', ')', '<Plug>(nvim-surround-visual))', opts)
+ vim.keymap.set('v', '{', '<Plug>(nvim-surround-visual){', opts)
+ vim.keymap.set('v', '}', '<Plug>(nvim-surround-visual)}', opts)
+ -- NOTE: I still want to be able to do < and > for indentation
+ -- vim.keymap.set('v', '<', '<Plug>(nvim-surround-visual)<', opts)
+ -- vim.keymap.set('v', '>', '<Plug>(nvim-surround-visual)>', opts)
+ vim.keymap.set('v', '[', '<Plug>(nvim-surround-visual)[', opts)
+ vim.keymap.set('v', ']', '<Plug>(nvim-surround-visual)]', opts)
+ vim.keymap.set('v', "'", "<Plug>(nvim-surround-visual)'", opts)
+ vim.keymap.set('v', '"', '<Plug>(nvim-surround-visual)"', opts)
+ vim.keymap.set('v', '`', '<Plug>(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', '<leader>st', ':TodoTelescope keywords=TODO,FIX<cr>', { desc = '[S]earch [T]odos' })
+ vim.keymap.set('n', '<leader>lt', ':TodoTrouble<cr>', { 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 = {
+ {
+ '<leader>xx',
+ '<cmd>Trouble diagnostics toggle<cr>',
+ desc = 'Diagnostics (Trouble)',
+ },
+ {
+ '<leader>xX',
+ '<cmd>Trouble diagnostics toggle filter.buf=0<cr>',
+ desc = 'Buffer Diagnostics (Trouble)',
+ },
+ {
+ '<leader>cs',
+ '<cmd>Trouble symbols toggle focus=false<cr>',
+ desc = 'Symbols (Trouble)',
+ },
+ {
+ '<leader>cl',
+ '<cmd>Trouble lsp toggle focus=false win.position=right<cr>',
+ desc = 'LSP Definitions / references / ... (Trouble)',
+ },
+ {
+ '<leader>xL',
+ '<cmd>Trouble loclist toggle<cr>',
+ desc = 'Location List (Trouble)',
+ },
+ {
+ '<leader>xQ',
+ '<cmd>Trouble qflist toggle<cr>',
+ 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<CR>'),
+ vim.keymap.set('n', 'C-j', ':TmuxNavigatorDown<CR>'),
+ vim.keymap.set('n', 'C-k', ':TmuxNavigatorUp<CR>'),
+ vim.keymap.set('n', 'C-l', ':TmuxNavigatorRight<CR>'),
+}
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', '<leader>a', function()
+ harpoon:list():add()
+ end)
+ vim.keymap.set('n', '<C-e>', 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('<C-F%d>', i), select)
+ vim.keymap.set('n', string.format('<leader>%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 = {
+ ['<C-h>'] = false,
+ ['<C-l>'] = false,
+ ['<C-k>'] = false,
+ ['<C-j>'] = false,
+ ['<M-h>'] = 'actions.select_split',
+ },
+ view_options = {
+ show_hidden = true,
+ },
+ })
+ vim.keymap.set('n', '<leader>ob', '<cmd>Oil<cr>', { desc = '[O]il [B]uffer' })
+ vim.keymap.set('n', '<leader>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', '<leader>fs', builtin.find_files, { desc = '[F]ile [S]ystem' })
+vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = '[F]ind [H]elp' })
+vim.keymap.set('n', '<leader>fm', builtin.man_pages, { desc = '[F]ind [M]an Pages' })
+-- vim.keymap.set('n', '<leader>fw', builtin.grep_string, { desc = '[F]ind current [W]ord' })
+vim.keymap.set('n', '<leader>lv', builtin.live_grep, { desc = '[L]ive [G]rep' })
+vim.keymap.set('n', '<leader>f.', builtin.oldfiles, { desc = '[F]ind Recent Files' })
+vim.keymap.set('n', '<leader>th', builtin.colorscheme, { desc = 'List [Th]eme' })
+-- vim.keymap.set('n', '<leader>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', '<leader>ds', builtin.lsp_document_symbols, { desc = '[D]ocument [S]symbols' })
+vim.keymap.set('n', '<leader>ps', builtin.lsp_workspace_symbols, { desc = '[P]roject [S]ymbols' })
+
+vim.keymap.set('n', '<leader>sb', builtin.git_branches, { desc = '[S]earch [B]ranches' })
+vim.keymap.set('n', '<leader>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