mirror of
https://github.com/jdhao/nvim-config.git
synced 2025-06-08 14:14:33 +02:00
custom command update
1. Add new command `CopyPath` 2. Revise command `JSONFormat`: implemented using the nvim lua interface and fix a few issues. The previous implementation is removed.
This commit is contained in:
parent
d86f599483
commit
8880268140
58
plugin/command.lua
Normal file
58
plugin/command.lua
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
-- Copy file path to clipboard
|
||||||
|
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
|
||||||
|
|
||||||
|
-- get the file path relative to project root
|
||||||
|
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 not find project root")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
file_path = string.gsub(full_path, project_root, "<project-root>")
|
||||||
|
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,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- JSON format part of or the whole file
|
||||||
|
vim.api.nvim_create_user_command("JSONFormat", function(context)
|
||||||
|
local range = context["range"]
|
||||||
|
local line1 = context["line1"]
|
||||||
|
local line2 = context["line2"]
|
||||||
|
|
||||||
|
if range == 0 then
|
||||||
|
-- the command is invoked without range, then we assume whole buffer
|
||||||
|
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
|
||||||
|
vim.fn.execute(cmd_str)
|
||||||
|
elseif range == 2 then
|
||||||
|
-- the command is invoked with some range
|
||||||
|
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
|
||||||
|
vim.fn.execute(cmd_str)
|
||||||
|
else
|
||||||
|
vim.api.nvim_err_write(string.format("unsupported range: %s", range))
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
desc = "Format JSON string",
|
||||||
|
range = "%",
|
||||||
|
})
|
||||||
@ -45,6 +45,3 @@ function! s:md_to_pdf() abort
|
|||||||
echoerr "Error running command"
|
echoerr "Error running command"
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" json format
|
|
||||||
command! -range JSONFormat <line1>,<line2>!python -m json.tool
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user