From 3d45012e8076ac5aecc3167afda55b9945eef943 Mon Sep 17 00:00:00 2001 From: Bryan Date: Thu, 2 Jan 2025 01:17:47 -0600 Subject: [PATCH] Add renaming functionality --- doc/tags | 6 ++++ .../_extensions/resession/.picker.lua.swp | Bin 0 -> 12288 bytes .../_extensions/resession/picker.lua | 29 ++++++++++++++++++ lua/telescope/_extensions/resession/utils.lua | 7 +++++ 4 files changed, 42 insertions(+) create mode 100644 doc/tags create mode 100644 lua/telescope/_extensions/resession/.picker.lua.swp diff --git a/doc/tags b/doc/tags new file mode 100644 index 0000000..b151140 --- /dev/null +++ b/doc/tags @@ -0,0 +1,6 @@ +telescope-resession-links telescope-resession.txt /*telescope-resession-links* +telescope-resession-table-of-contents telescope-resession.txt /*telescope-resession-table-of-contents* +telescope-resession-telescope-resession.nvim telescope-resession.txt /*telescope-resession-telescope-resession.nvim* +telescope-resession-telescope-resession.nvim-customization telescope-resession.txt /*telescope-resession-telescope-resession.nvim-customization* +telescope-resession-telescope-resession.nvim-usage telescope-resession.txt /*telescope-resession-telescope-resession.nvim-usage* +telescope-resession.txt telescope-resession.txt /*telescope-resession.txt* diff --git a/lua/telescope/_extensions/resession/.picker.lua.swp b/lua/telescope/_extensions/resession/.picker.lua.swp new file mode 100644 index 0000000000000000000000000000000000000000..e3f94664992210cdc269c820eab8b1d32884e352 GIT binary patch literal 12288 zcmeI2Pl(+_9LHxxSF5f63JRXaD3~XCd0i{G6t^l>TB!?CwV*{p-pgb+-MmRmCR?}5 zt6ufs$%_c0o>cT8>Os__P|p@UC~7YSsb^8V_?vlr!Us_)|ym)Hvn{)G|Uu=Y2rq8&PUHAFbgs&Z7TokOk{K(!Z zWlkx>US4F!*+7&%zMc%bd0MR`yzB{m1UA~UmEn%Dja9_0`{t4T;`U& z#;}(sgEdz8Fr8AZO|lAD1u7AD7k81p4=wDGV%+E4OLyP-g4M+;U=^?mSOu&CRspMk zRlq7>6}W~J5cwSW1pU3v^!X_6a|V-SZ&m@TfK|XMU=^?mSOu&CRspMkRlq7>6|f3i z$;sfB(zt^lgN^3pjWJ+y#EVm5`sn58yQT7`zGk;2v;x7a{L} z2pj?j!NcGV@b^waeg|KG_rcrXS#US_>J~zV;1GBa%!5B~CgczBEBFO`3*H0kzz6^A zAmlsnI(Q8*@D%WX3myPF!1A;*{)KjD!5Q!)_y~LmJ^%?|AOce3mw>&j0@r{71rt@l=`tn& zj|jzOQuJw^(&y}i8x>g|Whc0YOmplf$Z}D3_QeU0+zwF%N9wP1QD%i;1zj=^rN6>N z5TD!#bcWmUbO~vTYCR$!>dVwGii(jsP2PuL?mFD@sPpK7Zm}N^%YMOlIAnooQ)jDv za+&tE|493faNbE=ivLTsH~x=k_h}YJvm3vyaVSJMSPdXfp750tn#UC%2pqj~15avZ zf+H0iL3eqtF9fqng)CEvB-K$eX|4+I*j&b0MYLeAR7t^Hr#TAd>%7wG$gvWLu%9w_ zlhl>qAlWb%fk;HkP?PlQx6^bTX*LMciO~gX?M7$TgAmDLl?|D0Z=LFHj&%67v8)D$ zQ(D_Pn}*?2A7UG1JWf{71zC{P5~>ka4|qKxFxb1@EuqAA=AG3s2k&RJ!Rn<_3R2FT9QsWxo)a%3SfNK4&-hf@W z4qj%+=#y#{oe?ukC_UDs*cT0;%$yZOX)`^LGDluGvFh_oB=LqTA91oZ$C!6nQFO*_ zFk^nrqe%B?fO#g3t93sv1HJLMSsDd#lB!+EqjLGH-^PAgl{v8AM;+?>%2i!&+e=4g zI?~k?!wV`H*U(OGR)e@o)220U+hj(;iDe|=c_qvWqT1#kFEj2CB_#gTpAGf9-oBgc zB&Ny(U0R}!L$hN1%9B)%39f8M-gx6u1;(w6SR7)XLeI>c9&bx}jX;ir1sPug^f`Sf z+0iB{UJ2rhE?`Si73r|H^^nDNf7*e#h>&d)-9$4^S|gz;Iw57%jcct2zp2d&Da`^q{<4_9SE~X} y#}wD!0@KUuyv9_2eO~0dz+^VY=KFWLW0Tn!n~$2hwH literal 0 HcmV?d00001 diff --git a/lua/telescope/_extensions/resession/picker.lua b/lua/telescope/_extensions/resession/picker.lua index 0e6966e..be289cf 100644 --- a/lua/telescope/_extensions/resession/picker.lua +++ b/lua/telescope/_extensions/resession/picker.lua @@ -7,6 +7,33 @@ local utils = require("telescope._extensions.resession.utils") local M = {} +-- Rename the selected session +--- @param prompt_bufnr number +function M.rename_session(prompt_bufnr) + local opts = require("telescope._extensions.resession.config").opts + local session = action_state.get_selected_entry()[1] + local old_filename = utils.encode_session(session, opts) .. ".json" + old_filename = utils.full_filename(old_filename) + local new_filename = "" + + vim.ui.input({ + prompt = "Rename Session", + default = session, + }, function(input) + if input == "" or input == nil then + return + end + new_filename = utils.encode_session(input, opts) .. ".json" + new_filename = utils.full_filename(new_filename) + vim.notify("old: " .. vim.inspect(old_filename) .. " new: " .. vim.inspect(new_filename)) + local ok, err, _ = vim.uv.fs_rename(old_filename, new_filename) + vim.notify(vim.inspect(err)) + -- Refresh the picker + actions.close(prompt_bufnr) + M.resession_picker() + end) +end + -- Delete the selected session ---@param prompt_bufnr number function M.delete_session(prompt_bufnr) @@ -45,6 +72,8 @@ function M.resession_picker() map("n", "", M.load_session) map("i", "", M.delete_session) map("n", "", M.delete_session) + map("i", "", M.rename_session) + map("n", "", M.rename_session) return true end, diff --git a/lua/telescope/_extensions/resession/utils.lua b/lua/telescope/_extensions/resession/utils.lua index 743f29b..349ecc5 100644 --- a/lua/telescope/_extensions/resession/utils.lua +++ b/lua/telescope/_extensions/resession/utils.lua @@ -4,6 +4,13 @@ M.internal_substitutions = { { find = "/", replace = "_" }, } +--- Convert filename into full path +--- @param filename string The base filename +M.full_filename = function(filename) + local dir = require("resession.util").get_session_dir() + return vim.fs.joinpath(dir, filename) +end + --- Apply a list of substitutions to a path/session string --- @param path string The path/session string to apply the substitutions to --- @param substitutions substitution[]? The list of substitutions to apply