diff options
Diffstat (limited to 'nvim')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins.lua | 3 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap.lua | 273 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap/adapters.lua | 23 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap/configs.lua | 73 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap/events.lua | 54 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dap/hover.lua | 59 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua | 2 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua | 11 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua | 80 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/fs.lua | 26 |
10 files changed, 334 insertions, 270 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins.lua b/nvim/.config/nvim/lua/tobyvin/plugins.lua index cdff850..5a6b290 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins.lua @@ -194,6 +194,7 @@ M.plugins = function(use) "simrat39/rust-tools.nvim", requires = { "neovim/nvim-lspconfig", + "nvim-lua/plenary.nvim", }, config = function() require("tobyvin.plugins.rust-tools").setup() @@ -381,6 +382,8 @@ M.plugins = function(use) use({ "mfussenegger/nvim-dap", requires = { + "nvim-telescope/telescope-dap.nvim", + "mfussenegger/nvim-dap-python", "leoluz/nvim-dap-go", }, config = function() diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua index 42c8a88..7a870af 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap.lua @@ -1,7 +1,12 @@ local utils = require("tobyvin.utils") -local M = {} - -M.set_custom_breakpoint = function() +local M = { + configs = require("tobyvin.plugins.dap.configs"), + adapters = require("tobyvin.plugins.dap.adapters"), + events = require("tobyvin.plugins.dap.events"), + hover = require("tobyvin.plugins.dap.hover"), +} + +local set_custom_breakpoint = function() vim.ui.input({ prompt = "Condition: " }, function(condition) vim.ui.input({ prompt = "Hit condition: " }, function(hit_condition) vim.ui.input({ prompt = "Log point message: " }, function(log_message) @@ -11,63 +16,38 @@ M.set_custom_breakpoint = function() end) end -M.progress_start = function(session, body) - local notif_data = utils.debug.get_notif_data("dap", body.progressId) - - local message = utils.debug.format_message(body.message, body.percentage) - notif_data.notification = vim.notify(message, vim.log.levels.INFO, { - title = utils.debug.format_title(body.title, session.config.type), - icon = utils.status.signs.spinner.text[1], - timeout = false, - hide_from_history = false, - }) - - ---@diagnostic disable-next-line: redundant-value - notif_data.notification.spinner = 1, utils.status.update_spinner("dap", body.progressId) -end - -M.progress_update = function(_, body) - local notif_data = utils.debug.get_notif_data("dap", body.progressId) - notif_data.notification = - vim.notify(utils.debug.format_message(body.message, body.percentage), vim.log.levels.INFO, { - replace = notif_data.notification, - hide_from_history = false, - }) -end - -M.progress_end = function(_, body) - local notif_data = utils.debug.notifs["dap"][body.progressId] - notif_data.notification = - vim.notify(body.message and utils.debug.format_message(body.message) or "Complete", vim.log.levels.INFO, { - icon = utils.status.signs.complete.text, - replace = notif_data.notification, - timeout = 3000, - }) - notif_data.spinner = nil +---@param config table +---@return function +local with_eval = function(config) + return function() + local evaluated = {} + for key, value in pairs(config) do + if type(value) == "function" then + evaluated[key] = value() + end + end + return vim.tbl_extend("keep", evaluated, config) + end end -M.hover_available = function() - local session = require("dap").session() - if not session then - return false - end - local frame = session.current_frame or {} - ---@diagnostic disable-next-line: missing-parameter - local expression = vim.fn.expand("<cexpr>") - local variable - local scopes = frame.scopes or {} - for _, s in pairs(scopes) do - variable = s.variables and s.variables[expression] - if variable then +---@param config table +---@return boolean +local contains_func = function(config) + for _, value in pairs(config) do + if type(value) == "function" then return true end end - return session:evaluate(expression, function(err) - if not err then - return true - end - return false - end) + return false +end + +---@param config table +---@return table|function +local make_config = function(config) + if contains_func(config) then + return with_eval(config) + end + return config end M.setup = function() @@ -77,155 +57,72 @@ M.setup = function() return end - -- TODO: Break these configs out into seperate module, similar to my LSP configs - -- Debugpy - dap.adapters.python = { - type = "executable", - command = "python", - args = { "-m", "debugpy.adapter" }, - } - - dap.configurations.python = { - { - type = "python", - request = "launch", - name = "Launch file", - program = "${file}", - pythonPath = function() - local venv_path = vim.fn.getenv("VIRTUAL_ENVIRONMENT") - if venv_path ~= vim.NIL and venv_path ~= "" then - return venv_path .. "/bin/python" - else - return "/usr/bin/python" - end - end, - }, - } - - -- Neovim Lua - dap.adapters.nlua = function(callback, config) - callback({ type = "server", host = config.host, port = config.port }) - end + dap.defaults.fallback.focus_terminal = true + dap.defaults.fallback.terminal_win_cmd = "15split new" + dap.set_exception_breakpoints("default") - dap.configurations.lua = function() - vim.ui.input({ prompt = "Host: ", default = "127.0.0.1" }, function(host) - vim.ui.input({ prompt = "Port: ", default = "7777" }, function(port) - dap.configurations.lua = { - { - type = "nlua", - request = "attach", - name = "Attach to running Neovim instance", - host = host, - port = tonumber(port), - }, - } - end) - end) - end + M.events.setup() + M.hover.setup() - -- lldb - dap.adapters.lldb = { - type = "executable", - command = "/usr/bin/lldb-vscode", - name = "lldb", - } - - dap.configurations.cpp = function() - utils.fs.select_executable(function(bin) - dap.configurations.cpp = { - { - name = "Launch", - type = "lldb", - request = "launch", - program = bin, - cwd = "${workspaceFolder}", - stopOnEntry = false, - args = {}, - runInTerminal = false, - }, - } - end) - end - - dap.configurations.c = function() - utils.fs.select_executable(function(bin) - dap.configurations.c = { - { - name = "Launch", - type = "lldb", - request = "launch", - program = bin, - cwd = "${workspaceFolder}", - stopOnEntry = false, - args = {}, - runInTerminal = false, - }, - } - end) + for name, config in pairs(M.configs) do + if dap.configurations[name] == nil then + dap.configurations[name] = make_config(config) + end end - -- Language specific plugins + require("dap-python").setup() require("dap-go").setup() + require("nvim-dap-virtual-text").setup({ + -- only_first_definition = false, + -- all_references = true, + virt_text_pos = "right_align", + }) + + require("telescope").load_extension("dap") + local telescope = require("telescope").extensions.dap + + utils.keymap.group("n", "<leader>d", { desc = "debug" }) + vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { desc = "toggle breakpoint" }) + vim.keymap.set("n", "<leader>dB", set_custom_breakpoint, { desc = "custom breakpoint" }) + vim.keymap.set("n", "<leader>dC", telescope.commands, { desc = "commands" }) + vim.keymap.set("n", "<leader>dd", telescope.configurations, { desc = "configurations" }) + vim.keymap.set("n", "<leader>dl", telescope.list_breakpoints, { desc = "list breakpoints" }) + vim.api.nvim_create_autocmd("User", { pattern = "DapAttach", - callback = function(args) - vim.keymap.set("n", "<leader>dc", dap.continue, { desc = "continue", buffer = args.buf }) - vim.keymap.set("n", "<leader>da", dap.step_over, { desc = "step over", buffer = args.buf }) - vim.keymap.set("n", "<leader>di", dap.step_into, { desc = "step into", buffer = args.buf }) - vim.keymap.set("n", "<leader>do", dap.step_out, { desc = "step out", buffer = args.buf }) - vim.keymap.set("n", "<leader>dq", dap.terminate, { desc = "terminate", buffer = args.buf }) - vim.keymap.set("n", "<F5>", dap.continue, { desc = "continue", buffer = args.buf }) - vim.keymap.set("n", "<F10>", dap.step_over, { desc = "step over", buffer = args.buf }) - vim.keymap.set("n", "<F11>", dap.step_into, { desc = "step into", buffer = args.buf }) - vim.keymap.set("n", "<F12>", dap.step_out, { desc = "step out", buffer = args.buf }) - - local dap_ui_widgets = require("dap.ui.widgets") - - vim.b[args.buf].dap_hover_id = utils.hover.register(dap_ui_widgets.hover, { - enabled = M.hover_available, - desc = "dap", - buffer = args.buf, - priority = 20, - }) + callback = function() + vim.keymap.set("n", "<F5>", dap.continue, { desc = "continue" }) + vim.keymap.set("n", "<F10>", dap.step_over, { desc = "step over" }) + vim.keymap.set("n", "<F11>", dap.step_into, { desc = "step into" }) + vim.keymap.set("n", "<F12>", dap.step_out, { desc = "step out" }) + vim.keymap.set("n", "<leader>dc", dap.continue, { desc = "continue" }) + vim.keymap.set("n", "<leader>da", dap.step_over, { desc = "step over" }) + vim.keymap.set("n", "<leader>di", dap.step_into, { desc = "step into" }) + vim.keymap.set("n", "<leader>do", dap.step_out, { desc = "step out" }) + vim.keymap.set("n", "<leader>dq", dap.terminate, { desc = "terminate" }) + vim.keymap.set("n", "<leader>dv", telescope.variables, { desc = "variables" }) + vim.keymap.set("n", "<leader>df", telescope.frames, { desc = "frames" }) end, }) vim.api.nvim_create_autocmd("User", { pattern = "DapDetach", - callback = function(args) - vim.keymap.del("n", "<leader>dc", { buffer = args.buf }) - vim.keymap.del("n", "<leader>da", { buffer = args.buf }) - vim.keymap.del("n", "<leader>di", { buffer = args.buf }) - vim.keymap.del("n", "<leader>do", { buffer = args.buf }) - vim.keymap.del("n", "<leader>dq", { buffer = args.buf }) - vim.keymap.del("n", "<F5>", { buffer = args.buf }) - vim.keymap.del("n", "<F10>", { buffer = args.buf }) - vim.keymap.del("n", "<F11>", { buffer = args.buf }) - vim.keymap.del("n", "<F12>", { buffer = args.buf }) - - utils.hover.unregister(vim.b[args.buf].dap_hover_id) + callback = function() + vim.keymap.del("n", "<leader>dv") + vim.keymap.del("n", "<leader>df") + vim.keymap.del("n", "<leader>dc") + vim.keymap.del("n", "<leader>da") + vim.keymap.del("n", "<leader>di") + vim.keymap.del("n", "<leader>do") + vim.keymap.del("n", "<leader>dq") + vim.keymap.del("n", "<F5>") + vim.keymap.del("n", "<F10>") + vim.keymap.del("n", "<F11>") + vim.keymap.del("n", "<F12>") end, }) - dap.listeners.after.event_initialized["User"] = function() - vim.api.nvim_exec_autocmds("User", { pattern = "DapAttach" }) - end - dap.listeners.before.event_terminated["User"] = function() - vim.api.nvim_exec_autocmds("User", { pattern = "DapDetach" }) - end - - dap.listeners.before.event_progressStart["progress-notifications"] = M.progress_start - dap.listeners.before.event_progressUpdate["progress-notifications"] = M.progress_update - dap.listeners.before.event_progressEnd["progress-notifications"] = M.progress_end - dap.listeners.before.event_terminated["close_repl"] = dap.repl.close - dap.listeners.before.event_exited["close_repl"] = dap.repl.close - - utils.keymap.group("n", "<leader>d", { desc = "debug" }) - vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { desc = "toggle breakpoint" }) - vim.keymap.set("n", "<leader>dB", M.set_custom_breakpoint, { desc = "custom breakpoint" }) - - -- Signs vim.fn.sign_define("DapBreakpoint", utils.debug.signs.breakpoint) vim.fn.sign_define("DapBreakpointCondition", utils.debug.signs.condition) vim.fn.sign_define("DapBreakpointRejected", utils.debug.signs.rejected) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap/adapters.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap/adapters.lua new file mode 100644 index 0000000..6654637 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap/adapters.lua @@ -0,0 +1,23 @@ +local M = {} + +M.nlua = function(callback, config) + callback({ type = "server", host = config.host, port = config.port }) +end + +M.lldb = { + type = "executable", + command = "/usr/bin/lldb-vscode", + name = "lldb", +} + +M.codelldb = { + type = "server", + port = "${port}", + host = "127.0.0.1", + executable = { + command = "/usr/lib/codelldb/adapter/codelldb", + args = { "--liblldb", "/usr/lib/codelldb/lldb/lib/liblldb.so", "--port", "${port}" }, + }, +} + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap/configs.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap/configs.lua new file mode 100644 index 0000000..ba38b54 --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap/configs.lua @@ -0,0 +1,73 @@ +local Job = require("plenary").job +local M = {} + +local select_executable = function(cwd) + cwd = vim.fn.expand(vim.F.if_nil(cwd, vim.fn.getcwd())) + + local finders = { + fd = { "--type", "x", "--hidden" }, + fdfind = { "--type", "x", "--hidden" }, + find = { ".", "-type", "f", "--executable" }, + } + + local command, args + for finder, finder_args in pairs(finders) do + if vim.fn.executable("fdfind") == 1 then + command = finder + args = finder_args + end + end + + if command == nil then + vim.notify("Failed to locate finder tool", vim.log.levels.ERROR, { title = "[dap.configs] select_executable" }) + end + + local items = Job:new({ + command = command, + args = args, + cwd = cwd, + enable_recording = true, + }):sync() + + local result + vim.ui.select(items, { kind = "executables" }, function(input) + result = input + end) + return result +end + +M.lua = { + name = "Attach to running Neovim instance", + type = "nlua", + request = "attach", + host = function() + local host + vim.ui.input({ prompt = "Host: ", default = "127.0.0.1" }, function(input) + host = input + end) + return host + end, + port = function() + local host + vim.ui.input({ prompt = "Port: ", default = "7777" }, function(input) + host = input + end) + return host + end, +} + +M.c = { + name = "Launch file", + type = "codelldb", + request = "launch", + program = select_executable, + cwd = "${workspaceFolder}", + stopOnEntry = false, + runInTerminal = false, +} + +M.cpp = M.c + +M.rust = M.c + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap/events.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap/events.lua new file mode 100644 index 0000000..6a9cd0a --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap/events.lua @@ -0,0 +1,54 @@ +local utils = require("tobyvin.utils") +local M = {} + +local progress_start = function(session, body) + local notif_data = utils.debug.get_notif_data("dap", body.progressId) + + local message = utils.debug.format_message(body.message, body.percentage) + notif_data.notification = vim.notify(message, vim.log.levels.INFO, { + title = utils.debug.format_title(body.title, session.config.type), + icon = utils.status.signs.spinner.text[1], + timeout = false, + hide_from_history = false, + }) + + ---@diagnostic disable-next-line: redundant-value + notif_data.notification.spinner = 1, utils.status.update_spinner("dap", body.progressId) +end + +local progress_update = function(_, body) + local notif_data = utils.debug.get_notif_data("dap", body.progressId) + notif_data.notification = + vim.notify(utils.debug.format_message(body.message, body.percentage), vim.log.levels.INFO, { + replace = notif_data.notification, + hide_from_history = false, + }) +end + +local progress_end = function(_, body) + local notif_data = utils.debug.notifs["dap"][body.progressId] + notif_data.notification = + vim.notify(body.message and utils.debug.format_message(body.message) or "Complete", vim.log.levels.INFO, { + icon = utils.status.signs.complete.text, + replace = notif_data.notification, + timeout = 3000, + }) + notif_data.spinner = nil +end + +M.setup = function() + local dap = require("dap") + + dap.listeners.after.event_initialized["User"] = function() + vim.api.nvim_exec_autocmds("User", { pattern = "DapAttach" }) + end + dap.listeners.before.event_terminated["User"] = function() + vim.api.nvim_exec_autocmds("User", { pattern = "DapDetach" }) + dap.repl.close() + end + dap.listeners.before.event_progressStart["progress-notifications"] = progress_start + dap.listeners.before.event_progressUpdate["progress-notifications"] = progress_update + dap.listeners.before.event_progressEnd["progress-notifications"] = progress_end +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dap/hover.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dap/hover.lua new file mode 100644 index 0000000..214bcdd --- /dev/null +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dap/hover.lua @@ -0,0 +1,59 @@ +local utils = require("tobyvin.utils") +local M = {} + +M.hover = function() + local widgets = require("dap.ui.widgets") + if M.hover_available() then + widgets.hover() + else + utils.hover.open() + end +end + +M.hover_available = function() + local session = require("dap").session() + if not session then + return false + end + local frame = session.current_frame or {} + ---@diagnostic disable-next-line: missing-parameter + local scopes = frame.scopes or {} + local expression = vim.fn.expand("<cexpr>") + for _, s in pairs(scopes) do + local variable = s.variables and s.variables[expression] + if variable then + return true + end + end + return session:evaluate(expression, function(err) + if not err then + return true + end + return false + end) +end + +M.setup = function() + vim.api.nvim_create_autocmd("User", { + pattern = "DapAttach", + callback = function() + -- TODO: figure out why calling dap.ui.widgets.hover from util.hover is causing error + -- vim.g.dap_hover_id = utils.hover.register(M.hover, { + -- enabled = M.hover_available, + -- desc = "dap", + -- priority = 20, + -- }) + vim.keymap.set("n", "K", M.hover, { desc = "hover" }) + end, + }) + + vim.api.nvim_create_autocmd("User", { + pattern = "DapDetach", + callback = function() + -- utils.hover.unregister(vim.g.dap_hover_id) + vim.keymap.set("n", "K", utils.hover.open, { desc = "hover" }) + end, + }) +end + +return M diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua b/nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua index 0eb1875..59ce5f5 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua @@ -1,4 +1,3 @@ -local utils = require("tobyvin.utils") local M = { dapui_win = nil, dapui_tab = nil, @@ -62,7 +61,6 @@ M.setup = function() vim.keymap.set("n", "<leader>de", M.eval, { desc = "eval" }) vim.keymap.set("n", "<leader>du", dapui.open, { desc = "dapui" }) - -- Attach DAP UI to DAP events vim.api.nvim_set_hl(0, "DapUIVariable", { link = "TSVariable" }) vim.api.nvim_set_hl(0, "DapUIScope", { link = "TSNamespace" }) vim.api.nvim_set_hl(0, "DapUIType", { link = "Type" }) diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua index 27674f9..51602f5 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua @@ -1,10 +1,7 @@ local utils = require("tobyvin.utils") local lsp = require("tobyvin.lsp") -local M = { - codelldb = "/usr/lib/codelldb/adapter/codelldb", - liblldb = "/usr/lib/codelldb/lldb/lib/liblldb.so", - popup_id = "", -} +local dap = require("tobyvin.plugins.dap") +local M = {} M.setup = function() local status_ok, rust_tools = pcall(require, "rust-tools") @@ -87,9 +84,7 @@ M.setup = function() }, }, server = lsp.configs.rust_analyzer, - dap = { - adapter = require("rust-tools.dap").get_codelldb_adapter(M.codelldb, M.liblldb), - }, + dap = { adapter = dap.adapters.codelldb }, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua index bbbcc09..eb1aac5 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua @@ -91,61 +91,46 @@ M.setup = function() -- Extensions telescope.load_extension("fzf") - telescope.load_extension("dap") telescope.load_extension("file_browser") telescope.load_extension("live_grep_args") - local pickers = setmetatable(require("telescope.builtin"), { - __index = function(_, k) - for _, extension in pairs(telescope.extensions) do - if extension[k] then - return extension[k] - end - end - vim.notify(string.format("[Telescope] extension not found: &s", k), vim.log.levels.WARN) - return function() end - end, - }) + local builtins = require("telescope.builtin") + local extensions = telescope.extensions utils.keymap.group("n", "<leader>f", { desc = "find" }) - vim.keymap.set("n", "<leader>fa", pickers.autocommands, { desc = "autocommands" }) - vim.keymap.set("n", "<leader>fb", pickers.buffers, { desc = "buffers" }) - vim.keymap.set("n", "<leader>fc", pickers.commands, { desc = "commands" }) - vim.keymap.set("n", "<leader>fC", pickers.command_history, { desc = "command history" }) - vim.keymap.set("n", "<leader>fd", pickers.file_browser, { desc = "file browser" }) - vim.keymap.set("n", "<leader>ff", pickers.find_files, { desc = "find files" }) - vim.keymap.set("n", "<leader>fF", pickers.filetypes, { desc = "filetypes" }) - vim.keymap.set("n", "<leader>fg", pickers.live_grep_args, { desc = "live grep" }) - vim.keymap.set("n", "<leader>fh", pickers.help_tags, { desc = "help" }) - vim.keymap.set("n", "<leader>fH", pickers.highlights, { desc = "highlights" }) - vim.keymap.set("n", "<leader>fj", pickers.jumplist, { desc = "jumplist" }) - vim.keymap.set("n", "<leader>fk", pickers.keymaps, { desc = "keymaps" }) - vim.keymap.set("n", "<leader>fl", pickers.loclist, { desc = "loclist" }) - vim.keymap.set("n", "<leader>fm", pickers.marks, { desc = "marks" }) - vim.keymap.set("n", "<leader>fM", pickers.man_pages, { desc = "man pages" }) - vim.keymap.set("n", "<leader>fo", pickers.oldfiles, { desc = "old files" }) - vim.keymap.set("n", "<leader>fp", pickers.pickers, { desc = "pickers" }) - vim.keymap.set("n", "<leader>fr", pickers.resume, { desc = "resume" }) - vim.keymap.set("n", "<leader>fR", pickers.reloader, { desc = "reloader" }) - vim.keymap.set("n", "<leader>fs", pickers.spell_suggest, { desc = "spell suggest" }) - vim.keymap.set("n", "<leader>fS", pickers.search_history, { desc = "search history" }) - vim.keymap.set("n", "<leader>ft", pickers.tags, { desc = "tags" }) - vim.keymap.set("n", "<leader>ft", pickers.colorscheme, { desc = "colorscheme" }) - vim.keymap.set("n", "<leader>fv", pickers.vim_options, { desc = "vim options" }) - vim.keymap.set("n", "<leader>f'", pickers.registers, { desc = "registers" }) - vim.keymap.set("n", "<leader>dd", pickers.configurations, { desc = "configurations" }) - vim.keymap.set("n", "<leader>dC", pickers.commands, { desc = "commands" }) - vim.keymap.set("n", "<leader>dl", pickers.list_breakpoints, { desc = "list breakpoints" }) - vim.keymap.set("n", "<leader>dv", pickers.variables, { desc = "variables" }) - vim.keymap.set("n", "<leader>df", pickers.frames, { desc = "frames" }) + vim.keymap.set("n", "<leader>fa", builtins.autocommands, { desc = "autocommands" }) + vim.keymap.set("n", "<leader>fb", builtins.buffers, { desc = "buffers" }) + vim.keymap.set("n", "<leader>fc", builtins.commands, { desc = "commands" }) + vim.keymap.set("n", "<leader>fC", builtins.command_history, { desc = "command history" }) + vim.keymap.set("n", "<leader>fd", extensions.file_browser.file_browser, { desc = "file browser" }) + vim.keymap.set("n", "<leader>ff", builtins.find_files, { desc = "find files" }) + vim.keymap.set("n", "<leader>fF", builtins.filetypes, { desc = "filetypes" }) + vim.keymap.set("n", "<leader>fg", extensions.live_grep_args.live_grep_args, { desc = "live grep" }) + vim.keymap.set("n", "<leader>fh", builtins.help_tags, { desc = "help" }) + vim.keymap.set("n", "<leader>fH", builtins.highlights, { desc = "highlights" }) + vim.keymap.set("n", "<leader>fj", builtins.jumplist, { desc = "jumplist" }) + vim.keymap.set("n", "<leader>fk", builtins.keymaps, { desc = "keymaps" }) + vim.keymap.set("n", "<leader>fl", builtins.loclist, { desc = "loclist" }) + vim.keymap.set("n", "<leader>fm", builtins.marks, { desc = "marks" }) + vim.keymap.set("n", "<leader>fM", builtins.man_pages, { desc = "man pages" }) + vim.keymap.set("n", "<leader>fo", builtins.oldfiles, { desc = "old files" }) + vim.keymap.set("n", "<leader>fp", builtins.pickers, { desc = "pickers" }) + vim.keymap.set("n", "<leader>fr", builtins.resume, { desc = "resume" }) + vim.keymap.set("n", "<leader>fR", builtins.reloader, { desc = "reloader" }) + vim.keymap.set("n", "<leader>fs", builtins.spell_suggest, { desc = "spell suggest" }) + vim.keymap.set("n", "<leader>fS", builtins.search_history, { desc = "search history" }) + vim.keymap.set("n", "<leader>ft", builtins.tags, { desc = "tags" }) + vim.keymap.set("n", "<leader>ft", builtins.colorscheme, { desc = "colorscheme" }) + vim.keymap.set("n", "<leader>fv", builtins.vim_options, { desc = "vim options" }) + vim.keymap.set("n", "<leader>f'", builtins.registers, { desc = "registers" }) vim.api.nvim_create_autocmd("User", { group = vim.api.nvim_create_augroup("tobyvin_telescope_lsp", { clear = true }), pattern = "LspAttach", desc = "Setup telescope lsp keymaps", callback = function(args) - vim.keymap.set("n", "<leader>fe", pickers.diagnostics, { desc = "diagnostics", buffer = args.buf }) + vim.keymap.set("n", "<leader>fe", builtins.diagnostics, { desc = "diagnostics", buffer = args.buf }) end, }) @@ -155,9 +140,12 @@ M.setup = function() desc = "Setup telescope git keymaps", callback = function(args) local bufnr = vim.F.if_nil(args.data.buf, args.buf) - vim.keymap.set("n", "<leader>gb", pickers.git_branches, { desc = "branches", buffer = bufnr }) - vim.keymap.set("n", "<leader>gc", pickers.git_commits, { desc = "commits", buffer = bufnr }) - vim.keymap.set("n", "<leader>gd", pickers.git_status, { desc = "status", buffer = bufnr }) + vim.keymap.set("n", "<leader>gb", builtins.git_branches, { desc = "branches", buffer = bufnr }) + vim.keymap.set("n", "<leader>gc", builtins.git_bcommits, { desc = "bcommits", buffer = bufnr }) + vim.keymap.set("n", "<leader>gC", builtins.git_commits, { desc = "commits", buffer = bufnr }) + vim.keymap.set("n", "<leader>gf", builtins.git_files, { desc = "files", buffer = bufnr }) + vim.keymap.set("n", "<leader>gt", builtins.git_status, { desc = "status", buffer = bufnr }) + vim.keymap.set("n", "<leader>gT", builtins.git_stash, { desc = "stash", buffer = bufnr }) end, }) end diff --git a/nvim/.config/nvim/lua/tobyvin/utils/fs.lua b/nvim/.config/nvim/lua/tobyvin/utils/fs.lua index f2c2f05..b757ab5 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils/fs.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils/fs.lua @@ -1,4 +1,3 @@ -local Job = require("plenary").job local Path = require("plenary").path local Reload = require("plenary").reload local M = {} @@ -32,31 +31,6 @@ M.reload = function(module_name, starts_with_only) return package.loaded[module_name] end -M.select_exe = function(cwd, callback) - cwd = vim.fn.expand(vim.F.if_nil(cwd, vim.fn.getcwd())) - - local command_list = (function() - if 1 == vim.fn.executable("fd") then - return { "fd", "--type", "x", "--hidden" } - elseif 1 == vim.fn.executable("fdfind") then - return { "fdfind", "--type", "x", "--hidden" } - elseif 1 == vim.fn.executable("find") and vim.fn.has("win32") == 0 then - return { "find", ".", "-type", "f", "--executable" } - end - end)() - - local command = table.remove(command_list, 1) - - local items = Job:new({ - command = command, - args = command_list, - cwd = cwd, - enable_recording = true, - }):sync() - - vim.ui.select(items, { kind = "executables" }, callback) -end - M.shorten_path = function(filename, len) local path = Path:new(filename) local short_len = 0 |