Skip to content

Commit 569039b

Browse files
Configure mappings (#73)
* feat: allow for action keymaps to be configured
1 parent e4f1a3e commit 569039b

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ Install `nvim-possession` with your favourite plugin manager (`fzf-lua` is requi
4747

4848
Exposed interfaces
4949

50-
| function | description | interaction |
50+
| function | description | interaction |
5151
| :------------------ | :-------------------------------------------------------------------------- | :------------------------------------------------------------------ |
52-
| possession.list() | list all the existing sessions with fzf-lua; preview shows files in session | `<CR>` load selected session<br>`<Ctrl-x>` delete selection session |
53-
| possession.new() | prompt for name to create new session | session folder must alredy exist, return a message error otherwise |
54-
| possession.update() | update current session (if new buffers are open) | do nothing if no session is loaded |
55-
| possession.delete() | delete current session (without prompt) | do nothing if no session is loaded |
52+
| possession.list() | list all the existing sessions with fzf-lua; preview shows files in session | `<CR>` load selected session<br>`<Ctrl-x>` delete selection session<br>`<Ctrl-r>` rename selected session<br>`<Ctrl-n>` create new session |
53+
| possession.new() | prompt for name to create new session | session folder must alredy exist, return a message error otherwise |
54+
| possession.update() | update current session (if new buffers are open) | do nothing if no session is loaded |
55+
| possession.delete() | delete current session (without prompt) | do nothing if no session is loaded |
5656

5757
## 🛠 Usage and advanced configuration
5858

@@ -101,6 +101,12 @@ require("nvim-possession").setup({
101101
vertical = "right:30%"
102102
}
103103
}
104+
---@type possession.Mapopts
105+
mappings = { -- configure action keymaps on possession.list() picker
106+
action_delete = "ctrl-x",
107+
action_rename = "ctrl-r",
108+
action_new = "ctrl-n",
109+
}
104110
sort = require("nvim-possession.sorting").alpha_sort -- callback, sorting function to list sessions
105111
-- require("nvim-possession.sorting").time_sort
106112
-- to sort by last updated instead

doc/possession.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*possession.txt* For Neovim >= 0.8.0 Last change: 2025 September 03
1+
*possession.txt* For Neovim >= 0.8.0 Last change: 2025 September 04
22

33
==============================================================================
44
Table of Contents *possession-table-of-contents*
@@ -60,7 +60,10 @@ Exposed interfaces
6060
--------------------- --------------------------------- -----------------------------
6161
possession.list() list all the existing sessions <CR> load selected
6262
with fzf-lua; preview shows files session<Ctrl-x> delete
63-
in session selection session
63+
in session selection session<Ctrl-r>
64+
rename selected
65+
session<Ctrl-n> create new
66+
session
6467

6568
possession.new() prompt for name to create new session folder must alredy
6669
session exist, return a message error
@@ -130,6 +133,12 @@ however if you really want to do so:
130133
vertical = "right:30%"
131134
}
132135
}
136+
---@type possession.Mapopts
137+
mappings = { -- configure action keymaps on possession.list() picker
138+
action_delete = "ctrl-x",
139+
action_rename = "ctrl-r",
140+
action_new = "ctrl-n",
141+
}
133142
sort = require("nvim-possession.sorting").alpha_sort -- callback, sorting function to list sessions
134143
-- require("nvim-possession.sorting").time_sort
135144
-- to sort by last updated instead

lua/nvim-possession/config.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@ M.fzf_winopts = {
5454
},
5555
}
5656

57+
---@class possession.Mapopts
58+
---@field delete? string
59+
---@field rename? string
60+
---@field new? string
61+
M.mappings = {
62+
action_delete = "ctrl-x",
63+
action_rename = "ctrl-r",
64+
action_new = "ctrl-n",
65+
}
66+
5767
---@type function
5868
M.sort = sort.alpha_sort
5969

lua/nvim-possession/init.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,21 +172,21 @@ M.setup = function(user_opts)
172172
cwd = user_config.sessions.sessions_path,
173173
actions = {
174174
["enter"] = M.load,
175-
["ctrl-x"] = {
175+
[user_config.mappings.action_delete] = {
176176
fn = function(selected)
177177
M.delete_selected(selected)
178178
M.list()
179179
end,
180180
header = "delete session",
181181
},
182-
["ctrl-r"] = {
182+
[user_config.mappings.action_rename] = {
183183
fn = function(selected)
184184
M.rename_selected(selected)
185185
M.list()
186186
end,
187187
header = "rename session",
188188
},
189-
["ctrl-n"] = { fn = M.new, header = "new session" },
189+
[user_config.mappings.action_new] = { fn = M.new, header = "new session" },
190190
},
191191
}
192192
opts = require("fzf-lua.config").normalize_opts(opts, {})

0 commit comments

Comments
 (0)