aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2022-11-16 19:43:25 -0600
committerToby Vincent <tobyv13@gmail.com>2022-11-16 20:06:06 -0600
commitb2c21b4cc8f687820e05d37448d47118eee1a938 (patch)
treed7adc520b75d66fc6ebea9a492bc99d46d750453
parent0ebd0e4c76d43848b06eecebfa92eb59030fbe63 (diff)
refactor(nvim): improve and reorganize dap configs
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins.lua3
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap.lua273
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap/adapters.lua23
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap/configs.lua73
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap/events.lua54
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dap/hover.lua59
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/dapui.lua2
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua11
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua80
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/fs.lua26
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