51 lines
1.4 KiB
Lua
51 lines
1.4 KiB
Lua
vim.api.nvim_create_user_command("CopyPath", function(context)
|
|
local full_path = vim.fn.glob("%:p")
|
|
local file_path = nil
|
|
if context["args"] == "nameonly" then
|
|
file_path = vim.fn.fnamemodify(full_path, ":t")
|
|
end
|
|
|
|
if context["args"] == "relative" then
|
|
local project_marker = { ".git", "pyproject.toml" }
|
|
local project_root = vim.fs.root(0, project_marker)
|
|
if project_root == nil then
|
|
vim.print("can't find project root")
|
|
return
|
|
end
|
|
|
|
file_path = vim.fn.substitute(full_path, project_root, "<project-root>", "g")
|
|
end
|
|
|
|
if context["args"] == "absolute" then
|
|
file_path = full_path
|
|
end
|
|
|
|
vim.fn.setreg("+", file_path)
|
|
vim.print("Filepath copied to clipboard!")
|
|
end, {
|
|
bang = false,
|
|
nargs = 1,
|
|
force = true,
|
|
desc = "Copy current file path to clipboard",
|
|
complete = function()
|
|
return { "nameonly", "relative", "absolute" }
|
|
end,
|
|
})
|
|
|
|
vim.api.nvim_create_user_command("JSONFormat", function(context)
|
|
local range = context["range"]
|
|
local line1 = context["line1"]
|
|
local line2 = context["line2"]
|
|
|
|
if range == 0 or range == 2 then
|
|
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
|
|
vim.fn.execute(cmd_str)
|
|
else
|
|
local msg = string.format("unsupported range: %s", range)
|
|
vim.api.nvim_echo({ { msg } }, true, { err = true })
|
|
end
|
|
end, {
|
|
desc = "Format JSON",
|
|
range = "%",
|
|
})
|