return { { 'Civitasv/cmake-tools.nvim', lazy = true, config = function () local osys = require("cmake-tools.osys") require("cmake-tools").setup { cmake_command = "cmake", -- this is used to specify cmake command path ctest_command = "ctest", -- this is used to specify ctest command path cmake_use_preset = true, cmake_regenerate_on_save = true, -- auto generate when save CMakeLists.txt cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" }, -- this will be passed when invoke `CMakeGenerate` cmake_build_options = {}, -- this will be passed when invoke `CMakeBuild` -- support macro expansion: -- ${kit} -- ${kitGenerator} -- ${variant:xx} cmake_build_directory = function() if osys.iswin32 then return "out\\${variant:buildType}" end return "out/${variant:buildType}" end, -- this is used to specify generate directory for cmake, allows macro expansion, can be a string or a function returning the string, relative to cwd. cmake_soft_link_compile_commands = true, -- this will automatically make a soft link from compile commands file to project root dir cmake_compile_commands_from_lsp = false, -- this will automatically set compile commands file location using lsp, to use it, please set `cmake_soft_link_compile_commands` to false cmake_kits_path = nil, -- this is used to specify global cmake kits path, see CMakeKits for detailed usage cmake_variants_message = { short = { show = true }, -- whether to show short message long = { show = true, max_length = 40 }, -- whether to show long message }, cmake_dap_configuration = { -- debug settings for cmake name = "cpp", type = "codelldb", request = "launch", stopOnEntry = false, runInTerminal = true, console = "integratedTerminal", }, cmake_executor = { -- executor to use name = "quickfix", -- name of the executor opts = {}, -- the options the executor will get, possible values depend on the executor type. See `default_opts` for possible values. default_opts = { -- a list of default and possible values for executors quickfix = { show = "always", -- "always", "only_on_error" position = "belowright", -- "vertical", "horizontal", "leftabove", "aboveleft", "rightbelow", "belowright", "topleft", "botright", use `:h vertical` for example to see help on them size = 10, encoding = "utf-8", -- if encoding is not "utf-8", it will be converted to "utf-8" using `vim.fn.iconv` auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful. }, toggleterm = { direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float' close_on_exit = false, -- whether close the terminal when exit auto_scroll = true, -- whether auto scroll to the bottom singleton = true, -- single instance, autocloses the opened one, if present }, overseer = { new_task_opts = { strategy = { "toggleterm", direction = "horizontal", autos_croll = true, quit_on_exit = "success" } }, -- options to pass into the `overseer.new_task` command on_new_task = function(task) require("overseer").open( { enter = false, direction = "right" } ) end, -- a function that gets overseer.Task when it is created, before calling `task:start` }, terminal = { name = "Main Terminal", prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name split_direction = "horizontal", -- "horizontal", "vertical" split_size = 11, -- Window handling single_terminal_per_instance = true, -- Single viewport, multiple windows single_terminal_per_tab = true, -- Single viewport per tab keep_terminal_static_location = true, -- Static location of the viewport if avialable auto_resize = true, -- Resize the terminal if it already exists -- Running Tasks start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun focus = false, -- Focus on terminal when cmake task is launched. do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter. }, -- terminal executor uses the values in cmake_terminal }, }, cmake_runner = { -- runner to use name = "terminal", -- name of the runner opts = {}, -- the options the runner will get, possible values depend on the runner type. See `default_opts` for possible values. default_opts = { -- a list of default and possible values for runners quickfix = { show = "always", -- "always", "only_on_error" position = "belowright", -- "bottom", "top" size = 10, encoding = "utf-8", auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful. }, toggleterm = { direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float' close_on_exit = false, -- whether close the terminal when exit auto_scroll = true, -- whether auto scroll to the bottom singleton = true, -- single instance, autocloses the opened one, if present }, overseer = { new_task_opts = { strategy = { "toggleterm", direction = "horizontal", autos_croll = true, quit_on_exit = "success" } }, -- options to pass into the `overseer.new_task` command on_new_task = function(task) end, -- a function that gets overseer.Task when it is created, before calling `task:start` }, terminal = { name = "Main Terminal", prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name split_direction = "horizontal", -- "horizontal", "vertical" split_size = 11, -- Window handling single_terminal_per_instance = true, -- Single viewport, multiple windows single_terminal_per_tab = true, -- Single viewport per tab keep_terminal_static_location = true, -- Static location of the viewport if avialable auto_resize = true, -- Resize the terminal if it already exists -- Running Tasks start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun focus = false, -- Focus on terminal when cmake task is launched. do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter. }, }, }, cmake_notifications = { runner = { enabled = true }, executor = { enabled = true }, spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }, -- icons used for progress display refresh_rate_ms = 100, -- how often to iterate icons }, cmake_virtual_text_support = true, -- Show the target related to current file using virtual text (at right corner) } end, }, { 'mistweaverco/kulala.nvim', ft = {"http", "rest"}, }, { "HakonHarnes/img-clip.nvim", event = "VeryLazy", opts = { -- add options here -- or leave it empty to use the default settings }, keys = { -- suggested keymap { "kp", "PasteImage", desc = "Paste image from system clipboard" }, }, }, { "uhs-robert/sshfs.nvim", opts = { mounts = { base_dir = vim.fn.expand("$HOME") .. "/Public", -- where remote mounts are created }, -- Refer to the configuration section below -- or leave empty for defaults }, }, { "esmuellert/codediff.nvim", dependencies = { "MunifTanjim/nui.nvim" }, cmd = "CodeDiff", }, { "ejrichards/mise.nvim", keys = { { "xm", "Lazy reload mise.nvim", desc = "Reload mise environment" } }, opts = { unset_vars = true, load_on_setup = true, force_run = true, } }, { 'NeogitOrg/neogit', dependencies = { 'nvim-lua/plenary.nvim', -- required 'sindrets/diffview.nvim', }, lazy = true, keys = { { 'gn', "Neogit kind=auto", desc = 'Neogit'}, { 'gN', "Neogit kind=floating", desc = 'Neogit'} }, opts = { -- disable_context_highlighting = true, disable_commit_confirmation = true, disable_insert_on_commit = false, disable_signs = true, integrations = { diffview = true, fz_lua = false }, auto_refresh = false, console_timeout = 5000, auto_show_console = false, sections = { stashes = { folded = false, }, recent = { folded = false }, }, } }, { 'stevearc/overseer.nvim', keys = { { "xo", "OverseerOpen", desc = "Open Overseer" }, { "to", "OverseerToggle", desc = "Overseer Toggle" }, { "", "OverseerRun", desc = "Run Overseer" }, { "", "OverseerToggle", desc = "Overseer Toggle" }, }, config = function() require("overseer").setup({ templates = { "builtin", "user" }, component_aliases = { default = { { 'display_duration', detail_level = 2 }, 'on_output_summarize', 'on_exit_set_status', 'on_result_diagnostics_quickfix', 'on_complete_notify', { "on_complete_dispose", require_view = { "SUCCESS", "FAILURE" } }, }, default_vscode = { 'default', 'on_result_diagnostics', 'on_result_diagnostics_quickfix', 'on_complete_notify', }, } }) -- local pm = require("overseer.template.vscode.problem_matcher") -- pm.register_problem_matcher("$rustc", { -- fileLocation = { "autoDetect", "${cwd}" }, -- pattern = { -- --regexp = "^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$", -- -- vim_regexp = "\\v^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$", -- regexp = "^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$", -- vim_regexp = "\\v^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$", -- file = 1, -- line = 2, -- column = 3, -- } -- }) end, }, { 'stevearc/quicker.nvim', event = "FileType qf", ---@module "quicker" ---@type quicker.SetupOptions opts = {}, }, { "saxon1964/neovim-tips", version = "*", -- Only update on tagged releases lazy = false, -- Load on startup (recommended for daily tip feature) dependencies = { "MunifTanjim/nui.nvim", -- OPTIONAL: Choose your preferred markdown renderer (or omit for raw markdown) "MeanderingProgrammer/render-markdown.nvim", -- Clean rendering -- OR: "OXY2DEV/markview.nvim", -- Rich rendering with advanced features }, opts = { -- OPTIONAL: Location of user defined tips (default value shown below) user_file = vim.fn.stdpath("config") .. "/neovim_tips/user_tips.md", -- OPTIONAL: Prefix for user tips to avoid conflicts (default: "[User] ") user_tip_prefix = "[User] ", -- OPTIONAL: Show warnings when user tips conflict with builtin (default: true) warn_on_conflicts = true, -- OPTIONAL: Daily tip mode (default: 1) -- 0 = off, 1 = once per day, 2 = every startup daily_tip = 1, -- OPTIONAL: Bookmark symbol (default: "🌟 ") bookmark_symbol = "🌟 ", }, }, { "nvim-pack/nvim-spectre", lazy = true, cmd = { "Spectre" }, keys = { { "sr", function() require("spectre").open() end, desc = "Replace in files (Spectre)" }, }, opts = { open_cmd = "noswapfile vnew", highlight = { search = "SpectreSearch", replace = "SpectreReplace", }, mapping = { ["send_to_qf"] = { map = "", cmd = "lua require('spectre.actions').send_to_qf()", desc = "send all items to quickfix", }, }, } }, { "thunder-coding/zincoxide", opts = { -- name of zoxide binary in your "$PATH" or path to the binary -- the command is executed using vim.fn.system() -- eg. "zoxide" or "/usr/bin/zoxide" zincoxide_cmd = "zoxide", -- Kinda experimental as of now complete = true, -- Available options { "tabs", "window", "global" } behaviour = "tabs", }, cmd = { "Z", "Zg", "Zt", "Zw" }, }, { "folke/persistence.nvim", event = "BufReadPre", opts = { options = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp" } }, -- stylua: ignore keys = { { "xr", function() require("persistence").load() end, desc = "Restore Session" }, { "xs", function() require("persistence").save() end, desc = "Save Session" }, { "xl", function() require("persistence").load({ last = true }) end, desc = "Restore Last Session" }, { "xd", function() require("persistence").stop() end, desc = "Don't Save Current Session" }, }, }, }