diff --git a/plugin/command.lua b/plugin/command.lua new file mode 100644 index 0000000..b8b744c --- /dev/null +++ b/plugin/command.lua @@ -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, "") + 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 = "%", +}) diff --git a/plugin/command.vim b/plugin/command.vim index 68b11f4..5ed7b73 100644 --- a/plugin/command.vim +++ b/plugin/command.vim @@ -45,6 +45,3 @@ function! s:md_to_pdf() abort echoerr "Error running command" endif endfunction - -" json format -command! -range JSONFormat ,!python -m json.tool