Skip to content

Commit 48430c7

Browse files
committed
Configure keymaps when new language API is added
1 parent 55cdf13 commit 48430c7

File tree

2 files changed

+30
-23
lines changed

2 files changed

+30
-23
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ require("nvim-paredit").setup({
160160
Or by calling the `add_language_extension` API directly before the setup. This would be the recommended approach for extension plugin authors.
161161

162162
```lua
163-
require("nvim-paredit.lang").add_language_extension("commonlisp", { ... }).
163+
require("nvim-paredit").extension.add_language_extension("commonlisp", { ... }).
164164
```
165165

166166
---

lua/nvim-paredit/init.lua

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,48 @@ local defaults = require("nvim-paredit.defaults")
44
local config = require("nvim-paredit.config")
55
local lang = require("nvim-paredit.lang")
66

7-
local M = {
8-
api = require("nvim-paredit.api"),
9-
wrap = require("nvim-paredit.api.wrap"),
10-
cursor = require("nvim-paredit.api.cursor"),
11-
}
12-
137
local function setup_keybingings(filetype, buf)
14-
local filetypes = config.config.filetypes
8+
local whitelist = config.config.filetypes
159
local keys = config.config.keys
1610

17-
if common.included_in_table(filetypes, filetype) then
18-
keybindings.setup_keybindings({
19-
keys = keys,
20-
buf = buf,
21-
})
11+
if whitelist and not common.included_in_table(whitelist, filetype) then
12+
return
2213
end
14+
15+
if not common.included_in_table(lang.filetypes(), filetype) then
16+
return
17+
end
18+
19+
keybindings.setup_keybindings({
20+
keys = keys,
21+
buf = buf,
22+
})
2323
end
2424

25+
local function add_language_extension(ft, api)
26+
lang.add_language_extension(ft, api)
27+
28+
if vim.bo.filetype == ft then
29+
setup_keybingings(ft, vim.api.nvim_get_current_buf())
30+
end
31+
end
32+
33+
local M = {
34+
api = require("nvim-paredit.api"),
35+
wrap = require("nvim-paredit.api.wrap"),
36+
cursor = require("nvim-paredit.api.cursor"),
37+
extension = {
38+
add_language_extension = add_language_extension,
39+
},
40+
}
41+
2542
function M.setup(opts)
2643
opts = opts or {}
2744

2845
for filetype, api in pairs(opts.extensions or {}) do
2946
lang.add_language_extension(filetype, api)
3047
end
3148

32-
local filetypes
33-
if type(opts.filetypes) == "table" then
34-
-- substract langs form opts.filetypes to avoid
35-
-- binding keymaps to unsupported buffers
36-
filetypes = common.intersection(opts.filetypes, lang.filetypes())
37-
else
38-
filetypes = lang.filetypes()
39-
end
40-
4149
local keys = opts.keys or {}
4250

4351
if type(opts.use_default_keys) ~= "boolean" or opts.use_default_keys then
@@ -46,7 +54,6 @@ function M.setup(opts)
4654

4755
config.update_config(defaults.defaults)
4856
config.update_config(common.merge(opts, {
49-
filetypes = filetypes,
5057
keys = keys,
5158
}))
5259

0 commit comments

Comments
 (0)