Add nvim-dap, custom commands pickers

This commit is contained in:
Loïc Gremaud 2024-07-25 16:41:48 +02:00
parent 3f08c78c13
commit 0066e28c8f
Signed by: Legrems
GPG Key ID: D4620E6DF3E0121D
4 changed files with 125 additions and 2 deletions

View File

@ -56,8 +56,25 @@ M.general = {
-- ["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move up", opts = { expr = true } },
-- ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["<leader>y"] = {"<cmd> :w! /tmp/vimtmp<CR>", "Save into a global tmp file"},
["<leader>p"] = {"<cmd> :r! cat /tmp/vimtmp<CR>", "Restore from the global tmp file"},
-- ["<leader>y"] = {"<cmd> :w! /tmp/vimtmp<CR>", "Save into a global tmp file"},
-- ["<leader>p"] = {"<cmd> :r! cat /tmp/vimtmp<CR>", "Restore from the global tmp file"},
["<leader>dgg"] = {":lua require('dap').continue() <CR>", "Continue debu[g]ging"},
["<leader>dg<CR>"] = {":lua require('dapui').toggle() <CR>", "Toggle DAP ui"},
["<leader>dgw"] = {":lua require('dapui').eval() <CR>", "Open floating windows about current [w]ord"},
["<leader>dgb"] = {":lua require('dap').toggle_breakpoint() <CR>", "Toggle [b]reakpoint"},
["<leader>dgf"] = {":lua require('dap-python').test_method() <CR>", "Debug [f]unction"},
["<leader>dgo"] = {":lua require('dap').step_over() <CR>", "DAP step [o]ver method"},
["<leader>dgt"] = {":lua require('dap').step_into() <CR>", "DAP step in[t]o method"},
["<leader>dgp"] = {":lua require('dap').step_back() <CR>", "DAP step back ([p]revious)"},
["<leader>dgs"] = {
function()
local widgets = require("dap.ui.widgets")
local sidebar = widgets.sidebar(widgets.scopes)
sidebar.open({widgth = '50%'})
end,
"DAP Show debugged [s]copes",
},
-- new buffer
-- ["<leader>b"] = { "<cmd> enew <CR>", "New buffer" },
@ -80,6 +97,9 @@ M.general = {
-- ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move down", opts = { expr = true } },
["<"] = { "<gv", "Indent line" },
[">"] = { ">gv", "Indent line" },
["<leader>dgd"] = {":lua require('dap-python').debug_selection()", "DAP debug selection"},
["<leader>dgw"] = {":lua require('dap-python').eval()", "DAP eval selection"},
},
x = {
@ -437,6 +457,7 @@ M.telescope = {
["<leader>wl"] = { "<cmd> Telescope workspaces <CR>", "Find workspaces" },
["<leader>gm"] = { "<cmd> lua require('custom.telescope').cpickers()<CR>", "Commonly used commands" },
-- git
--- Commits
["<leader>gc"] = { "<cmd> lua require('custom.telescope').my_git_commits()<CR>", "Custom Git commits" },
@ -641,4 +662,16 @@ M.gitsigns = {
},
}
local all_modes = {
-- Override all delete/yank/paste to use the registers M by default
["y"] = { "\"my", "Yank", { remap=false } },
["p"] = { "\"mp", "Paste", { remap=false } },
["d"] = { "\"md", "Delete", { remap=false } },
["<leader>y"] = { "\"+y", "Yank into system register", { remap=false } },
["<leader>p"] = { "\"+p", "Paste from system register", { remap=false } },
}
M.general[{"n", "v"}] = all_modes
return M

5
lua/custom/commands.lua Normal file
View File

@ -0,0 +1,5 @@
local C = {
{ "Replace {{X}} with {{ X }} in jinja template", "%s/{{\\(.[^ ]*\\)}}/{{ \\1 }}/g" },
}
return C

View File

@ -2,6 +2,11 @@
local previewers = require('telescope.previewers')
local builtin = require('telescope.builtin')
local pickers = require("telescope.pickers")
local finders = require("telescope.finders")
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local conf = require("telescope.config").values
local E = {}
@ -59,4 +64,44 @@ E.project_files = function()
end
end
local custom_commands = require("custom.commands")
E.cpickers = function(opts)
opts = opts or {}
pickers.new(opts, {
prompt_title = "Commands",
finder = finders.new_table {
results = custom_commands,
entry_maker = function(entry)
return {
value = entry,
display = entry[1],
ordinal = entry[2],
}
end
},
previewer = previewers.new_buffer_previewer {
title = "Custom commands preview",
define_preview = function (self, entry, _)
vim.api.nvim_buf_set_lines(self.state.bufnr, 0, -1, false, {
entry['ordinal'],
})
end
},
attach_mappings = function(prompt_bufnr, _)
actions.select_default:replace(function()
actions.close(prompt_bufnr)
local selection = action_state.get_selected_entry()
vim.cmd(selection.ordinal)
end)
return true
end,
sorter = conf.generic_sorter(opts),
}):find()
end
return E

View File

@ -20,6 +20,46 @@ local default_plugins = {
{"preservim/tagbar", lazy=false},
{"ludovicchabant/vim-gutentags", lazy=false},
{"emaniacs/vim-rest-console", lazy=false},
{"git@github.com:mfussenegger/nvim-dap.git", lazy=false},
{
"git@github.com:rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio"
},
lazy=false,
},
{
"git@github.com:mfussenegger/nvim-dap-python.git",
dependencies = {
"mfussenegger/nvim-dap",
"rcarriga/nvim-dap-ui",
},
lazy=false,
init = function()
require("dap-python").setup("python")
-- Setup nvim-dap-ui also
require("dapui").setup()
end,
config = function(_, opts)
local dap = require('dap')
vim.api.nvim_set_hl(0, "dark-orange", { bg="#402c16"})
vim.fn.sign_define('DapBreakpoint', {text='🛑', texthl='', linehl='', numhl=''})
vim.fn.sign_define('DapStopped', {text='', texthl='', linehl='dark-orange', numhl=''})
dap.defaults.fallback.terminal_win_cmd = 'tabnew'
dap.defaults.fallback.focus_terminal = true
end,
},
{
"Weissle/persistent-breakpoints.nvim",
lazy=false,
config = function(_, opts)
require('persistent-breakpoints').setup{
load_breakpoints_event = { "BufReadPost" }
}
end,
},
{"nvim-telescope/telescope-dap.nvim", lazy=false},
{"harrisoncramer/gitlab.nvim",
dependencies = {
"MunifTanjim/nui.nvim",