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"
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" json format
|
||||
command! -range JSONFormat <line1>,<line2>!python -m json.tool
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user