@@ -57,66 +57,83 @@ function M.setup_keymaps(keymaps, commands_enabled, file_types)
57
57
end ,
58
58
desc = " Header" ,
59
59
},
60
- -- Removed insert_list_item keymap
61
60
{
62
61
command_key = " insert_code_block" ,
63
- mode = { " n" , " v " },
62
+ mode = " n" , -- Normal mode only
64
63
key = keymaps .insert_code_block ,
65
64
cmd = function ()
66
- local mode = vim .fn .mode (1 )
67
- local opts = {}
68
- if mode :match (" ^[vV\022 ]" ) then
69
- opts .range = 2
70
- vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
71
- end
72
- require (" markdown-shortcuts.commands" ).insert_code_block (opts )
65
+ require (" markdown-shortcuts.commands" ).insert_code_block ({ range = 0 })
66
+ end ,
67
+ desc = " Code block (Normal)" ,
68
+ },
69
+ {
70
+ command_key = " insert_code_block" ,
71
+ mode = " v" , -- Visual mode only
72
+ key = keymaps .insert_code_block ,
73
+ cmd = function ()
74
+ -- Still need Lua for prompt, exit visual first
75
+ vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
76
+ require (" markdown-shortcuts.commands" ).insert_code_block ({ range = 2 })
73
77
end ,
74
- desc = " Code block" ,
78
+ desc = " Code block (Visual) " ,
75
79
},
76
80
{
77
81
command_key = " insert_bold" ,
78
- mode = { " n" , " v " },
82
+ mode = " n" , -- Normal mode only
79
83
key = keymaps .insert_bold ,
80
84
cmd = function ()
81
- local mode = vim .fn .mode (1 )
82
- local opts = {}
83
- if mode :match (" ^[vV\022 ]" ) then
84
- opts .range = 2
85
- vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
86
- end
87
- require (" markdown-shortcuts.commands" ).insert_bold (opts )
85
+ -- Call command function (prompts for input in normal mode)
86
+ require (" markdown-shortcuts.commands" ).insert_bold ({ range = 0 }) -- Explicitly pass range 0
88
87
end ,
89
- desc = " Bold text" ,
88
+ desc = " Bold text (Normal)" ,
89
+ },
90
+ {
91
+ command_key = " insert_bold" ,
92
+ mode = " v" , -- Visual mode only
93
+ key = keymaps .insert_bold ,
94
+ -- Use Vim command sequence for visual wrapping
95
+ cmd = ' s**<C-r>"**<Esc>' ,
96
+ desc = " Bold text (Visual)" ,
97
+ opts = { remap = true } -- Allow remapping <C-r>
90
98
},
91
99
{
92
100
command_key = " insert_italic" ,
93
- mode = { " n" , " v " },
101
+ mode = " n" , -- Normal mode only
94
102
key = keymaps .insert_italic ,
95
103
cmd = function ()
96
- local mode = vim .fn .mode (1 )
97
- local opts = {}
98
- if mode :match (" ^[vV\022 ]" ) then
99
- opts .range = 2
100
- vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
101
- end
102
- require (" markdown-shortcuts.commands" ).insert_italic (opts )
104
+ -- Call command function (prompts for input in normal mode)
105
+ require (" markdown-shortcuts.commands" ).insert_italic ({ range = 0 }) -- Explicitly pass range 0
103
106
end ,
104
- desc = " Italic text" ,
107
+ desc = " Italic text (Normal)" ,
108
+ },
109
+ {
110
+ command_key = " insert_italic" ,
111
+ mode = " v" , -- Visual mode only
112
+ key = keymaps .insert_italic ,
113
+ -- Use Vim command sequence for visual wrapping
114
+ cmd = ' s*<C-r>"*<Esc>' ,
115
+ desc = " Italic text (Visual)" ,
116
+ opts = { remap = true } -- Allow remapping <C-r>
105
117
},
106
118
{
107
119
command_key = " insert_link" ,
108
- mode = { " n" , " v " },
120
+ mode = " n" , -- Normal mode only
109
121
key = keymaps .insert_link ,
110
122
cmd = function ()
111
- local mode = vim .fn .mode (1 )
112
- local opts = {}
113
- if mode :match (" ^[vV\022 ]" ) then
114
- opts .range = 2
115
- vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
116
- end
117
- require (" markdown-shortcuts.commands" ).insert_link (opts )
123
+ require (" markdown-shortcuts.commands" ).insert_link ({ range = 0 })
124
+ end ,
125
+ desc = " Link (Normal)" ,
126
+ },
127
+ {
128
+ command_key = " insert_link" ,
129
+ mode = " v" , -- Visual mode only
130
+ key = keymaps .insert_link ,
131
+ cmd = function ()
132
+ -- Still need Lua for prompt, exit visual first
133
+ vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
134
+ require (" markdown-shortcuts.commands" ).insert_link ({ range = 2 })
118
135
end ,
119
- desc = " Link" ,
136
+ desc = " Link (Visual) " ,
120
137
},
121
138
{
122
139
command_key = " insert_table" ,
@@ -126,19 +143,22 @@ function M.setup_keymaps(keymaps, commands_enabled, file_types)
126
143
desc = " Insert table" ,
127
144
},
128
145
{
129
- command_key = " insert_checkbox" , -- Renamed key
130
- mode = { " n" , " v " },
131
- key = keymaps .insert_checkbox , -- Renamed key
146
+ command_key = " insert_checkbox" ,
147
+ mode = " n" , -- Normal mode only
148
+ key = keymaps .insert_checkbox ,
132
149
cmd = function ()
133
- local mode = vim .fn .mode (1 )
134
- local opts = {}
135
- if mode :match (" ^[vV\022 ]" ) then
136
- opts .range = 2
137
- vim .api .nvim_feedkeys (vim .api .nvim_replace_termcodes (' <Esc>' , true , false , true ), ' n' , false )
138
- end
139
- require (" markdown-shortcuts.commands" ).insert_checkbox (opts )
150
+ require (" markdown-shortcuts.commands" ).insert_checkbox ({ range = 0 })
140
151
end ,
141
- desc = " Checkbox" , -- Updated description
152
+ desc = " Checkbox (Normal)" ,
153
+ },
154
+ {
155
+ command_key = " insert_checkbox" ,
156
+ mode = " v" , -- Visual mode only
157
+ key = keymaps .insert_checkbox ,
158
+ -- Use Vim command sequence for visual wrapping
159
+ cmd = ' s- [ ] <C-r>"<Esc>' ,
160
+ desc = " Checkbox (Visual)" ,
161
+ opts = { remap = true } -- Allow remapping <C-r>
142
162
},
143
163
{
144
164
command_key = " toggle_checkbox" , -- Renamed key
@@ -160,16 +180,12 @@ function M.setup_keymaps(keymaps, commands_enabled, file_types)
160
180
for _ , config in ipairs (keymap_configs ) do
161
181
-- Only set keymap if the command is enabled
162
182
if commands_enabled [config .command_key ] then
163
- local opts = config .expr and { expr = config .expr } or {}
183
+ -- Combine base opts with config-specific opts
184
+ local base_opts = { desc = config .desc , buffer = true }
185
+ local final_opts = vim .tbl_extend (" force" , base_opts , config .opts or {})
164
186
165
- local modes = config .mode
166
- if type (modes ) == " string" then
167
- setup_keymap (modes , config .key , config .cmd , config .desc , opts )
168
- else
169
- for _ , mode in ipairs (modes ) do
170
- setup_keymap (mode , config .key , config .cmd , config .desc , opts )
171
- end
172
- end
187
+ -- Use setup_keymap helper
188
+ setup_keymap (config .mode , config .key , config .cmd , config .desc , final_opts )
173
189
end
174
190
end
175
191
0 commit comments