Skip to content

Commit c30be92

Browse files
author
jghauser
committed
fix(keymaps): create buffer local keymaps for all matching buffers
before, only the first buffer of a given filetype would create keymaps. now they are created for all buffers of configured filetypes
1 parent 684d6d2 commit c30be92

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

lua/papis/init.lua

+6-5
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,6 @@ function M.start()
7979
return nil
8080
end
8181

82-
-- setup commands
83-
require("papis.commands").setup()
84-
-- setup keymaps
85-
require("papis.keymaps"):setup()
86-
8782
-- setup enabled modules
8883
for module_name, _ in pairs(config.enable_modules) do
8984
log.trace(module_name .. " is enabled")
@@ -95,6 +90,12 @@ function M.start()
9590
end
9691
end
9792

93+
-- setup commands
94+
require("papis.commands").setup()
95+
-- setup keymaps
96+
require("papis.keymaps"):setup()
97+
98+
9899
-- check if other neovim instances has file watchers
99100
local does_pid_exist = require("papis.utils").does_pid_exist
100101
if not does_pid_exist(db.state:get_fw_running()) then

lua/papis/keymaps.lua

+29-8
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,50 @@
55
-- Sets up default keymaps.
66
--
77

8+
local api = vim.api
89
local config = require("papis.config")
910

1011
local M = {}
1112

1213
---@class PapisKeymaps
1314
---@type table<string, table>
14-
local keymaps = {}
15+
local keymaps_tbl = {}
16+
17+
local function create_keymaps()
18+
for _, module_keymaps in pairs(keymaps_tbl) do
19+
for _, keymap in pairs(module_keymaps) do
20+
local opts = vim.deepcopy(keymap.opts)
21+
opts.silent = true
22+
opts.buffer = true
23+
vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs, opts)
24+
end
25+
end
26+
end
27+
28+
---Creates the `autocmd` that starts papis.nvim when configured conditions are fulfilled
29+
local function make_keymap_autocmd()
30+
local create_papis_keymap = api.nvim_create_augroup("createPapisKeymap", { clear = true })
31+
api.nvim_create_autocmd("FileType", {
32+
pattern = config.init_filetypes,
33+
callback = create_keymaps,
34+
group = create_papis_keymap,
35+
desc = "Set Papis keymap",
36+
})
37+
end
1538

1639
---Sets up the keymaps for all enabled modules
1740
function M:setup()
18-
self:add_keymaps(keymaps)
41+
-- create keymaps for the buffer when papis is first started
42+
create_keymaps()
43+
-- creates keymaps for all subsequent buffers
44+
make_keymap_autocmd()
1945
end
2046

2147
--- Recursively merges the provided table with the keymaps table.
2248
---@param module_keymaps table #A table with a module's keymaps
2349
function M:add_keymaps(module_keymaps)
2450
if config.enable_keymaps then
25-
for _, keymap in pairs(module_keymaps) do
26-
local opts = vim.deepcopy(keymap.opts)
27-
opts.silent = true
28-
opts.buffer = true
29-
vim.keymap.set(keymap.mode, keymap.lhs, keymap.rhs, opts)
30-
end
51+
table.insert(keymaps_tbl, module_keymaps)
3152
end
3253
end
3354

0 commit comments

Comments
 (0)