fix: prevent E565 error on <CR> by removing expr=true

main
borja (aider) 2 months ago
parent 1a5ba4378c
commit e7f6d63fde

@ -115,8 +115,8 @@ local function setup_buffer_keymaps()
local function press_enter()
local details, lnum = get_current_line_details()
if not details then
-- Fallback if getting details fails for some reason
return vim.api.nvim_replace_termcodes("<CR>", true, false, true)
-- Getting details failed, do nothing and let Neovim handle Enter.
return
end
-- Check if the line is a TODO item and if it has content after the marker
@ -136,8 +136,8 @@ local function setup_buffer_keymaps()
local cursor_col_bytes = #new_line_content
vim.api.nvim_win_set_cursor(0, { lnum + 1, cursor_col_bytes })
-- Action handled, return empty string because mapping is expr=true
return ""
-- Action handled, do not fall through to default behavior.
-- No return value needed as it's not an expr mapping anymore.
elseif details.is_todo and not has_content then
-- Case 2: Empty TODO line (e.g., "- [ ]") - Implement Outdenting
@ -172,20 +172,25 @@ local function setup_buffer_keymaps()
local cursor_col_bytes = #new_line_content
vim.api.nvim_win_set_cursor(0, { lnum, cursor_col_bytes })
-- Action handled
return ""
-- Action handled, do not fall through.
else
-- Line is not indented, terminate the list
-- Replace the line with an empty string
vim.api.nvim_buf_set_lines(0, lnum - 1, lnum, false, { "" })
-- Let Neovim handle inserting a newline below the now-empty line
return vim.api.nvim_replace_termcodes("<CR>", true, false, true)
-- Now, manually insert a newline below using the API
vim.api.nvim_buf_set_lines(0, lnum, lnum, false, { "" })
-- Move cursor to the new empty line
vim.api.nvim_win_set_cursor(0, { lnum + 1, 0 })
-- Action handled, do not fall through.
end
else
-- Case 3: Not a TODO line
-- Let Neovim handle the Enter key press normally
return vim.api.nvim_replace_termcodes("<CR>", true, false, true)
-- Do nothing. Neovim will automatically handle the Enter key press
-- because this function didn't modify the buffer or explicitly handle it.
return -- Explicitly return nothing to be clear
end
end
@ -243,9 +248,10 @@ local function setup_buffer_keymaps()
-- Set up buffer-local keymaps
-- Use buffer = 0 to target the current buffer
-- Note: Setting expr = true for Tab/S-Tab allows returning keys for default behavior
vim.keymap.set("n", "<leader>t", function() end, { desc = "+TODOs", buffer = 0 }) -- Placeholder
vim.keymap.set("i", "<CR>", press_enter, { desc = "Todoer: Handle Enter", expr = true, buffer = 0 })
-- Removed expr = true from <CR> mapping
vim.keymap.set("i", "<CR>", press_enter, { desc = "Todoer: Handle Enter", buffer = 0 })
-- Keep expr = true for Tab/S-Tab for now, until they are refactored
vim.keymap.set("i", "<TAB>", press_tab, { desc = "Todoer: Handle Tab", expr = true, buffer = 0 })
vim.keymap.set("i", "<S-Tab>", press_shift_tab, { desc = "Todoer: Handle Shift-Tab", expr = true, buffer = 0 })
vim.keymap.set("n", "<leader>tt", toggle_todo, { desc = "Todoer: Toggle TODO", buffer = 0 })

Loading…
Cancel
Save