Skip to content

Commit 07d412e

Browse files
fix: Find both local and global <CR> mapping for fallback
1 parent 5ac150c commit 07d412e

File tree

4 files changed

+21
-15
lines changed

4 files changed

+21
-15
lines changed

lua/orgmode/config/init.lua

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ function Config:new(opts)
1515
opts = vim.tbl_deep_extend('force', defaults, opts or {}),
1616
todo_keywords = nil,
1717
ts_hl_enabled = nil,
18-
old_cr_mapping = nil,
1918
}
2019
setmetatable(data, self)
2120
return data
@@ -261,12 +260,12 @@ function Config:get_todo_keywords()
261260
end
262261

263262
--- Setup mappings for a given category and buffer
264-
---@param category string Mapping category name (e.g. `agenda`, `capture`, `node`)
263+
---@param category string Mapping category name (e.g. `agenda`, `capture`, `org`)
265264
---@param buffer number? Buffer id
266265
---@see orgmode.config.mappings
267266
function Config:setup_mappings(category, buffer)
268-
if not self.old_cr_mapping then
269-
self.old_cr_mapping = utils.get_keymap({
267+
if category == 'org' and vim.bo.filetype == 'org' and not vim.b.org_old_cr_mapping then
268+
vim.b.org_old_cr_mapping = utils.get_keymap({
270269
mode = 'i',
271270
lhs = '<CR>',
272271
buffer = buffer,

lua/orgmode/config/mappings/map_entry.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ function MapEntry.action(handler, opts)
2121
opts.args = nil
2222
end
2323

24-
action = ('<cmd>lua require("orgmode").action(%s)<CR>'):format(table.concat(action, ','))
24+
local formatted_action = ('<cmd>lua require("orgmode").action(%s)<CR>'):format(table.concat(action, ','))
2525

26-
return MapEntry:new(action, opts)
26+
return MapEntry:new(formatted_action, opts)
2727
end
2828

2929
function MapEntry.text_object(handler)

lua/orgmode/org/mappings.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,7 @@ function OrgMappings:org_return()
505505
end
506506
end
507507

508-
local old_mapping = config.old_cr_mapping
508+
local old_mapping = vim.b.org_old_cr_mapping
509509

510510
-- No other mapping for <CR>, just reproduce it.
511511
if not old_mapping or vim.tbl_isempty(old_mapping) then

lua/orgmode/utils/init.lua

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,18 +175,25 @@ end
175175
---@param data KeymapData
176176
---@return table? map Mapping definition
177177
function utils.get_keymap(data)
178-
local keymaps
178+
local find_keymap = function(list)
179+
for _, map in ipairs(list) do
180+
if map.lhs == data.lhs then
181+
return map
182+
end
183+
end
184+
end
185+
186+
local keymap = nil
187+
179188
if data.buffer then
180-
keymaps = vim.api.nvim_buf_get_keymap(data.buffer, data.mode)
181-
else
182-
keymaps = vim.api.nvim_get_keymap(data.mode)
189+
keymap = find_keymap(vim.api.nvim_buf_get_keymap(data.buffer, data.mode))
183190
end
184191

185-
for _, map in ipairs(keymaps) do
186-
if map.lhs == data.lhs then
187-
return map
188-
end
192+
if not keymap then
193+
keymap = find_keymap(vim.api.nvim_get_keymap(data.mode))
189194
end
195+
196+
return keymap
190197
end
191198

192199
function utils.esc(cmd)

0 commit comments

Comments
 (0)