Files
dotfiles/config/nvim/lua/plugins/tools.lua
T

336 lines
16 KiB
Lua

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,
},
{
"al1-ce/just.nvim",
dependencies = {
'nvim-lua/plenary.nvim', -- async jobs
'j-hui/fidget.nvim', -- task progress (optional)
},
config = true
},
{
'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
{ "<leader>kp", "<cmd>PasteImage<cr>", 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 = {
{ "<leader>xm", "<cmd>Lazy reload mise.nvim<cr>", 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 = {
{ '<leader>gn', "<cmd>Neogit kind=auto<cr>", desc = 'Neogit'},
{ '<leader>gN', "<cmd>Neogit kind=floating<cr>", 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 = {
{ "<leader>xo", "<cmd>OverseerOpen<CR>", desc = "Open Overseer" },
{ "<leader>to", "<cmd>OverseerToggle<CR>", desc = "Overseer Toggle" },
{ "<F5>", "<cmd>OverseerRun<CR>", desc = "Run Overseer" },
{ "<F6>", "<cmd>OverseerToggle<CR>", 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,
},
{
"otavioschwanck/arrow.nvim",
dependencies = {
{
"nvim-tree/nvim-web-devicons"
},
-- or if using `mini.icons`
-- { "echasnovski/mini.icons" },
},
opts = {
show_icons = true,
leader_key = ';', -- Recommended to be a single key
buffer_leader_key = '<leader>;', -- Per Buffer Mappings
}
},
{
"nvim-pack/nvim-spectre",
lazy = true,
cmd = { "Spectre" },
keys = {
{ "<leader>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 = "<C-q>",
cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
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 = {
{ "<leader>xr", function() require("persistence").load() end, desc = "Restore Session" },
{ "<leader>xs", function() require("persistence").save() end, desc = "Save Session" },
{ "<leader>xl", function() require("persistence").load({ last = true }) end, desc = "Restore Last Session" },
{ "<leader>xd", function() require("persistence").stop() end, desc = "Don't Save Current Session" },
},
},
}