diff --git a/lua/pika/plugins/alpha.lua b/lua/pika/plugins/alpha.lua new file mode 100644 index 0000000..33ce78e --- /dev/null +++ b/lua/pika/plugins/alpha.lua @@ -0,0 +1,36 @@ +return { + "goolord/alpha-nvim", + event = "VimEnter", + config = function() + local alpha = require("alpha") + local dashboard = require("alpha.themes.dashboard") + + -- Set header + dashboard.section.header.val = { + " ", + " ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ", + " ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ", + " ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ", + " ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ", + " ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ", + " ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ", + " ", + } + + -- Set menu + dashboard.section.buttons.val = { + dashboard.button("e", " > New File", "ene"), + dashboard.button("SPC ee", " > Toggle file explorer", "NvimTreeToggle"), + dashboard.button("SPC ff", "󰱼 > Find File", "Telescope find_files"), + dashboard.button("SPC fs", " > Find Word", "Telescope live_grep"), + dashboard.button("SPC wr", "󰁯 > Restore Session For Current Directory", "SessionRestore"), + dashboard.button("q", " > Quit NVIM", "qa"), + } + + -- Send config to alpha + alpha.setup(dashboard.opts) + + -- Disable folding on alpha buffer + vim.cmd([[autocmd FileType alpha setlocal nofoldenable]]) + end, +} diff --git a/lua/pika/plugins/auto-session.lua b/lua/pika/plugins/auto-session.lua new file mode 100644 index 0000000..adeff79 --- /dev/null +++ b/lua/pika/plugins/auto-session.lua @@ -0,0 +1,16 @@ +return { + "rmagatti/auto-session", + config = function() + local auto_session = require("auto-session") + + auto_session.setup({ + auto_restore_enabled = false, + auto_session_suppress_dirs = { "~/", "~/Dev/", "~/Downloads", "~/Documents", "~/Desktop/" }, + }) + + local keymap = vim.keymap + + keymap.set("n", "wr", "SessionRestore", { desc = "Restore session for cwd" }) -- restore last workspace session for current directory + keymap.set("n", "ws", "SessionSave", { desc = "Save session for auto session root dir" }) -- save workspace session for current working directory + end, +} diff --git a/lua/pika/plugins/colorscheme.lua b/lua/pika/plugins/colorscheme.lua index 75f2fe5..9fb5a7f 100644 --- a/lua/pika/plugins/colorscheme.lua +++ b/lua/pika/plugins/colorscheme.lua @@ -3,12 +3,11 @@ return { lazy = false, priority = 1000, -- Make sure to load this before all the other start plugins. config = function() - require("bamboo.").setup({ + require("bamboo").setup({ -- ────────────────────────────< optional configuration here >───────────────────────── - style = "multiplex", code_style = { comments = { italic = false, bold = true }, - conditionals = { italic = false }, + conditionals = { italic = true }, keywords = { bold = true }, functions = {}, namespaces = { italic = true }, diff --git a/lua/pika/plugins/gitsigns.lua b/lua/pika/plugins/gitsigns.lua new file mode 100644 index 0000000..7daca01 --- /dev/null +++ b/lua/pika/plugins/gitsigns.lua @@ -0,0 +1,47 @@ +return { + "lewis6991/gitsigns.nvim", + event = { "BufReadPre", "BufNewFile" }, + opts = { + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, desc) + vim.keymap.set(mode, l, r, { buffer = bufnr, desc = desc }) + end + + -- Navigation + map("n", "]h", gs.next_hunk, "Next Hunk") + map("n", "[h", gs.prev_hunk, "Prev Hunk") + + -- Actions + map("n", "hs", gs.stage_hunk, "Stage hunk") + map("n", "hr", gs.reset_hunk, "Reset hunk") + map("v", "hs", function() + gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "Stage hunk") + map("v", "hr", function() + gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) + end, "Reset hunk") + + map("n", "hS", gs.stage_buffer, "Stage buffer") + map("n", "hR", gs.reset_buffer, "Reset buffer") + + map("n", "hu", gs.undo_stage_hunk, "Undo stage hunk") + + map("n", "hp", gs.preview_hunk, "Preview hunk") + + map("n", "hb", function() + gs.blame_line({ full = true }) + end, "Blame line") + map("n", "hB", gs.toggle_current_line_blame, "Toggle line blame") + + map("n", "hd", gs.diffthis, "Diff this") + map("n", "hD", function() + gs.diffthis("~") + end, "Diff this ~") + + -- Text object + map({ "o", "x" }, "ih", ":Gitsigns select_hunk", "Gitsigns select hunk") + end, + }, +} diff --git a/lua/pika/plugins/lazygit.lua b/lua/pika/plugins/lazygit.lua new file mode 100644 index 0000000..5d3f334 --- /dev/null +++ b/lua/pika/plugins/lazygit.lua @@ -0,0 +1,19 @@ +return { + "kdheepak/lazygit.nvim", + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "lg", "LazyGit", desc = "Open lazy git" }, + }, +} diff --git a/lua/pika/plugins/lsp/lspconfig.lua b/lua/pika/plugins/lsp/lspconfig.lua index a33d9c1..cf60201 100644 --- a/lua/pika/plugins/lsp/lspconfig.lua +++ b/lua/pika/plugins/lsp/lspconfig.lua @@ -91,6 +91,8 @@ return { capabilities = capabilities, filetypes = { "html", + "typescriptreact", + "javascriptreact", "css", "sass", "scss", diff --git a/lua/pika/plugins/lsp/mason.lua b/lua/pika/plugins/lsp/mason.lua index 2be7b22..e15e489 100644 --- a/lua/pika/plugins/lsp/mason.lua +++ b/lua/pika/plugins/lsp/mason.lua @@ -27,11 +27,16 @@ return { mason_lspconfig.setup({ -- list of servers for mason to install ensure_installed = { + "tsserver", "html", "cssls", "tailwindcss", "svelte", "lua_ls", + "graphql", + "emmet_ls", + "prismals", + "pyright", }, }) @@ -39,6 +44,10 @@ return { ensure_installed = { "prettier", -- prettier formatter "stylua", -- lua formatter + -- "isort", -- python formatter + -- "black", -- python formatter + "pylint", + "eslint_d", }, }) end, diff --git a/lua/pika/plugins/nvim-cmp.lua b/lua/pika/plugins/nvim-cmp.lua index 0f8d341..aff5b5a 100644 --- a/lua/pika/plugins/nvim-cmp.lua +++ b/lua/pika/plugins/nvim-cmp.lua @@ -63,7 +63,7 @@ return { formatting = { format = lspkind.cmp_format({ mode = "symbol_text", -- show symbol text with icons - maxwidth = 90, + maxwidth = 130, ellipsis_char = "...", }), }, diff --git a/lua/pika/plugins/nvim-treesitter-text-objects.lua b/lua/pika/plugins/nvim-treesitter-text-objects.lua index 4391e7c..68d5164 100644 --- a/lua/pika/plugins/nvim-treesitter-text-objects.lua +++ b/lua/pika/plugins/nvim-treesitter-text-objects.lua @@ -1,110 +1,110 @@ return { - "nvim-treesitter/nvim-treesitter-textobjects", - lazy = true, - config = function() - require("nvim-treesitter.configs").setup({ - textobjects = { - select = { - enable = true, + "nvim-treesitter/nvim-treesitter-textobjects", + lazy = true, + config = function() + require("nvim-treesitter.configs").setup({ + textobjects = { + select = { + enable = true, - -- Automatically jump forward to textobj, similar to targets.vim - lookahead = true, + -- Automatically jump forward to textobj, similar to targets.vim + lookahead = true, - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" }, - ["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" }, - ["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" }, - ["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" }, + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment" }, + ["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment" }, + ["l="] = { query = "@assignment.lhs", desc = "Select left hand side of an assignment" }, + ["r="] = { query = "@assignment.rhs", desc = "Select right hand side of an assignment" }, - -- works for javascript/typescript files (custom capture I created in after/queries/ecma/textobjects.scm) - ["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" }, - ["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" }, - ["l:"] = { query = "@property.lhs", desc = "Select left part of an object property" }, - ["r:"] = { query = "@property.rhs", desc = "Select right part of an object property" }, + -- works for javascript/typescript files (custom capture I created in after/queries/ecma/textobjects.scm) + ["a:"] = { query = "@property.outer", desc = "Select outer part of an object property" }, + ["i:"] = { query = "@property.inner", desc = "Select inner part of an object property" }, + ["l:"] = { query = "@property.lhs", desc = "Select left part of an object property" }, + ["r:"] = { query = "@property.rhs", desc = "Select right part of an object property" }, - ["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" }, - ["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" }, + ["aa"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/argument" }, + ["ia"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/argument" }, - ["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" }, - ["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" }, + ["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional" }, + ["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional" }, - ["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" }, - ["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" }, + ["al"] = { query = "@loop.outer", desc = "Select outer part of a loop" }, + ["il"] = { query = "@loop.inner", desc = "Select inner part of a loop" }, - ["af"] = { query = "@call.outer", desc = "Select outer part of a function call" }, - ["if"] = { query = "@call.inner", desc = "Select inner part of a function call" }, + ["af"] = { query = "@call.outer", desc = "Select outer part of a function call" }, + ["if"] = { query = "@call.inner", desc = "Select inner part of a function call" }, - ["am"] = { - query = "@function.outer", - desc = "Select outer part of a method/function definition", - }, - ["im"] = { - query = "@function.inner", - desc = "Select inner part of a method/function definition", - }, + ["am"] = { query = "@function.outer", desc = "Select outer part of a method/function definition" }, + ["im"] = { query = "@function.inner", desc = "Select inner part of a method/function definition" }, - ["ac"] = { query = "@class.outer", desc = "Select outer part of a class" }, - ["ic"] = { query = "@class.inner", desc = "Select inner part of a class" }, - }, - }, - swap = { - enable = true, - swap_next = { - ["na"] = "@parameter.inner", -- swap parameters/argument with next - ["n:"] = "@property.outer", -- swap object property with next - ["nm"] = "@function.outer", -- swap function with next - }, - swap_previous = { - ["pa"] = "@parameter.inner", -- swap parameters/argument with prev - ["p:"] = "@property.outer", -- swap object property with prev - ["pm"] = "@function.outer", -- swap function with previous - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_next_start = { - ["]f"] = { query = "@call.outer", desc = "Next function call start" }, - ["]m"] = { query = "@function.outer", desc = "Next method/function def start" }, - ["]c"] = { query = "@class.outer", desc = "Next class start" }, - ["]i"] = { query = "@conditional.outer", desc = "Next conditional start" }, - ["]l"] = { query = "@loop.outer", desc = "Next loop start" }, + ["ac"] = { query = "@class.outer", desc = "Select outer part of a class" }, + ["ic"] = { query = "@class.inner", desc = "Select inner part of a class" }, + }, + }, + swap = { + enable = true, + swap_next = { + ["na"] = "@parameter.inner", -- swap parameters/argument with next + ["n:"] = "@property.outer", -- swap object property with next + ["nm"] = "@function.outer", -- swap function with next + }, + swap_previous = { + ["pa"] = "@parameter.inner", -- swap parameters/argument with prev + ["p:"] = "@property.outer", -- swap object property with prev + ["pm"] = "@function.outer", -- swap function with previous + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + ["]f"] = { query = "@call.outer", desc = "Next function call start" }, + ["]m"] = { query = "@function.outer", desc = "Next method/function def start" }, + ["]c"] = { query = "@class.outer", desc = "Next class start" }, + ["]i"] = { query = "@conditional.outer", desc = "Next conditional start" }, + ["]l"] = { query = "@loop.outer", desc = "Next loop start" }, - -- You can pass a query group to use query from `queries//.scm file in your runtime path. - -- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm. - ["]s"] = { query = "@scope", query_group = "locals", desc = "Next scope" }, - ["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" }, - }, - goto_next_end = { - ["]F"] = { query = "@call.outer", desc = "Next function call end" }, - ["]M"] = { query = "@function.outer", desc = "Next method/function def end" }, - ["]C"] = { query = "@class.outer", desc = "Next class end" }, - ["]I"] = { query = "@conditional.outer", desc = "Next conditional end" }, - ["]L"] = { query = "@loop.outer", desc = "Next loop end" }, - }, - goto_previous_start = { - ["[f"] = { query = "@call.outer", desc = "Prev function call start" }, - ["[m"] = { query = "@function.outer", desc = "Prev method/function def start" }, - ["[c"] = { query = "@class.outer", desc = "Prev class start" }, - ["[i"] = { query = "@conditional.outer", desc = "Prev conditional start" }, - ["[l"] = { query = "@loop.outer", desc = "Prev loop start" }, - }, - goto_previous_end = { - ["[F"] = { query = "@call.outer", desc = "Prev function call end" }, - ["[M"] = { query = "@function.outer", desc = "Prev method/function def end" }, - ["[C"] = { query = "@class.outer", desc = "Prev class end" }, - ["[I"] = { query = "@conditional.outer", desc = "Prev conditional end" }, - ["[L"] = { query = "@loop.outer", desc = "Prev loop end" }, - }, - }, - }, - }) + -- You can pass a query group to use query from `queries//.scm file in your runtime path. + -- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm. + ["]s"] = { query = "@scope", query_group = "locals", desc = "Next scope" }, + ["]z"] = { query = "@fold", query_group = "folds", desc = "Next fold" }, + }, + goto_next_end = { + ["]F"] = { query = "@call.outer", desc = "Next function call end" }, + ["]M"] = { query = "@function.outer", desc = "Next method/function def end" }, + ["]C"] = { query = "@class.outer", desc = "Next class end" }, + ["]I"] = { query = "@conditional.outer", desc = "Next conditional end" }, + ["]L"] = { query = "@loop.outer", desc = "Next loop end" }, + }, + goto_previous_start = { + ["[f"] = { query = "@call.outer", desc = "Prev function call start" }, + ["[m"] = { query = "@function.outer", desc = "Prev method/function def start" }, + ["[c"] = { query = "@class.outer", desc = "Prev class start" }, + ["[i"] = { query = "@conditional.outer", desc = "Prev conditional start" }, + ["[l"] = { query = "@loop.outer", desc = "Prev loop start" }, + }, + goto_previous_end = { + ["[F"] = { query = "@call.outer", desc = "Prev function call end" }, + ["[M"] = { query = "@function.outer", desc = "Prev method/function def end" }, + ["[C"] = { query = "@class.outer", desc = "Prev class end" }, + ["[I"] = { query = "@conditional.outer", desc = "Prev conditional end" }, + ["[L"] = { query = "@loop.outer", desc = "Prev loop end" }, + }, + }, + }, + }) - local ts_repeat_move = require("nvim-treesitter.textobjects.repeatable_move") + local ts_repeat_move = require("nvim-treesitter.textobjects.repeatable_move") - -- vim way: ; goes to the direction you were moving. - vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move) - vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite) - end, + -- vim way: ; goes to the direction you were moving. + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move) + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite) + + -- Optionally, make builtin f, F, t, T also repeatable with ; and , + vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f) + vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F) + vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t) + vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T) + end, } diff --git a/lua/pika/plugins/telescope.lua b/lua/pika/plugins/telescope.lua index 70a8895..60b4f9e 100644 --- a/lua/pika/plugins/telescope.lua +++ b/lua/pika/plugins/telescope.lua @@ -1,60 +1,74 @@ return { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { - "nvim-lua/plenary.nvim", - { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, - "nvim-tree/nvim-web-devicons", - "folke/todo-comments.nvim", - }, - config = function() - local telescope = require("telescope") - local actions = require("telescope.actions") - local transform_mod = require("telescope.actions.mt").transform_mod + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + dependencies = { + 'nvim-lua/plenary.nvim', + { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, + 'nvim-tree/nvim-web-devicons', + 'folke/todo-comments.nvim', + }, + config = function() + local telescope = require 'telescope' + local actions = require 'telescope.actions' + local transform_mod = require('telescope.actions.mt').transform_mod - telescope.setup({ - defaults = { - path_display = { "smart" }, - mappings = { - i = { - [""] = actions.move_selection_previous, -- move to prev result - [""] = actions.move_selection_next, -- move to next result - }, - }, - }, - }) + local trouble = require 'trouble' + local trouble_telescope = require 'trouble.providers.telescope' - telescope.load_extension("fzf") + -- or create your custom action + local custom_actions = transform_mod { + open_trouble_qflist = function(prompt_bufnr) + trouble.toggle 'quickfix' + end, + } - -- set keymaps - local map = vim.keymap.set -- for conciseness + local trouble_telescope = require 'trouble.sources.telescope' - -- Telescope mappings - map("n", "sf", "Telescope find_files", { noremap = true, silent = true, desc = "Find Files" }) - map("n", "sw", "Telescope live_grep", { noremap = true, silent = true, desc = "Search Word" }) - map("n", "sn", "Telescope neovim", { noremap = true, silent = true, desc = "Neovim Files" }) - map("n", "", "Telescope buffers", { noremap = true, silent = true, desc = "Buffers" }) - local builtin = require("telescope.builtin") + telescope.setup { + defaults = { + path_display = { 'smart' }, + mappings = { + i = { + [''] = actions.move_selection_previous, -- move to prev result + [''] = actions.move_selection_next, -- move to next result + [''] = actions.send_selected_to_qflist + custom_actions.open_trouble_qflist, + [''] = trouble_telescope.open, -- Updated line + }, + }, + }, + } - map("n", "sn", function() - builtin.find_files({ cwd = vim.fn.stdpath("config") }) - end, { desc = "[S]earch [N]eovim files" }) - map("n", "ff", builtin.find_files, { desc = "[S]earch [F]iles" }) - map("n", "sh", builtin.help_tags, { desc = "[S]earch [H]elp" }) - map("n", "sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" }) - map("n", "sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) - map("n", "sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) - map("n", "sr", builtin.resume, { desc = "[S]earch [R]esume" }) - map("n", "s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - map("n", "", builtin.buffers, { desc = "[ ] Find existing buffers" }) - map("n", "q", vim.cmd.q) + telescope.load_extension 'fzf' - -- Additional custom mappings - map("n", "/", function() - builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown()) - end, { desc = "[/] Fuzzily search in current buffer" }) - map("n", "s/", function() - builtin.live_grep({ grep_open_files = true, prompt_title = "Live Grep in Open Files" }) - end, { desc = "[S]earch [/] in Open Files" }) - end, + -- set keymaps + local map = vim.keymap.set -- for conciseness + + -- Telescope mappings + map('n', 'sf', 'Telescope find_files', { noremap = true, silent = true, desc = 'Find Files' }) + map('n', 'sw', 'Telescope live_grep', { noremap = true, silent = true, desc = 'Search Word' }) + map('n', 'sn', 'Telescope neovim', { noremap = true, silent = true, desc = 'Neovim Files' }) + map('n', '', 'Telescope buffers', { noremap = true, silent = true, desc = 'Buffers' }) + local builtin = require 'telescope.builtin' + + map('n', 'sn', function() + builtin.find_files { cwd = vim.fn.stdpath 'config' } + end, { desc = '[S]earch [N]eovim files' }) + map('n', 'ff', builtin.find_files, { desc = '[S]earch [F]iles' }) + map('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) + map('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) + map('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) + map('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) + map('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) + map('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) + map('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) + map('n', 'q', vim.cmd.q) + + -- Additional custom mappings + map('n', '/', function() + builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown()) + end, { desc = '[/] Fuzzily search in current buffer' }) + map('n', 's/', function() + builtin.live_grep { grep_open_files = true, prompt_title = 'Live Grep in Open Files' } + end, { desc = '[S]earch [/] in Open Files' }) + end, } diff --git a/lua/pika/plugins/todo-comments.lua b/lua/pika/plugins/todo-comments.lua new file mode 100644 index 0000000..f74baa9 --- /dev/null +++ b/lua/pika/plugins/todo-comments.lua @@ -0,0 +1,21 @@ +return { + "folke/todo-comments.nvim", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + local todo_comments = require("todo-comments") + + -- set keymaps + local keymap = vim.keymap -- for conciseness + + keymap.set("n", "]t", function() + todo_comments.jump_next() + end, { desc = "Next todo comment" }) + + keymap.set("n", "[t", function() + todo_comments.jump_prev() + end, { desc = "Previous todo comment" }) + + todo_comments.setup() + end, +} diff --git a/lua/pika/plugins/trouble.lua b/lua/pika/plugins/trouble.lua new file mode 100644 index 0000000..9418960 --- /dev/null +++ b/lua/pika/plugins/trouble.lua @@ -0,0 +1,12 @@ +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons", "folke/todo-comments.nvim" }, + keys = { + { "xx", "TroubleToggle", desc = "Open/close trouble list" }, + { "xw", "TroubleToggle workspace_diagnostics", desc = "Open trouble workspace diagnostics" }, + { "xd", "TroubleToggle document_diagnostics", desc = "Open trouble document diagnostics" }, + { "xq", "TroubleToggle quickfix", desc = "Open trouble quickfix list" }, + { "xl", "TroubleToggle loclist", desc = "Open trouble location list" }, + { "xt", "TodoTrouble", desc = "Open todos in trouble" }, + }, +} diff --git a/lua/pika/plugins/which-key.lua b/lua/pika/plugins/which-key.lua index 809447f..a7c1456 100644 --- a/lua/pika/plugins/which-key.lua +++ b/lua/pika/plugins/which-key.lua @@ -1,13 +1,13 @@ return { - "folke/which-key.nvim", - event = "VeryLazy", - init = function() - vim.o.timeout = true - vim.o.timeoutlen = 350 - end, - opts = { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - }, + 'folke/which-key.nvim', + event = 'VeryLazy', + init = function() + vim.o.timeout = true + vim.o.timeoutlen = 300 + end, + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }, }