diff --git a/nvim/.config/nvim/autoload/husk.vim b/nvim/.config/nvim/autoload/husk.vim new file mode 100644 index 0000000..e8e5cae --- /dev/null +++ b/nvim/.config/nvim/autoload/husk.vim @@ -0,0 +1,39 @@ +function! husk#left() + let line = getcmdline() + let pos = getcmdpos() + let next = 1 + let nextnext = 1 + let i = 2 + while nextnext < pos + let next = nextnext + let nextnext = match(line, '\<\S\|\>\S\|\s\zs\S\|^\|$', 0, i) + 1 + let i += 1 + endwhile + return repeat("\", pos - next) +endfunction + +function! husk#abstract_right(command) + let line = getcmdline() + let pos = getcmdpos() + let next = 1 + let i = 2 + while next <= pos && next > 0 + let next = match(line, '\<\S\|\>\S\|\s\zs\S\|^\|$', 0, i) + 1 + let i += 1 + endwhile + return repeat(a:command, next - pos) +endfunction + +function! husk#right() + return husk#abstract_right("\") +endfunction + +function! husk#del_word() + return husk#abstract_right("\\") +endfunction + +function! husk#clear_line_after_cursor() + let pos = getcmdpos() + let line_len = strlen(getcmdline()) + return repeat("\", line_len - pos + 1) +endfunction diff --git a/nvim/.config/nvim/lua/keymappings.lua b/nvim/.config/nvim/lua/keymappings.lua index b1a27d1..0f3075a 100644 --- a/nvim/.config/nvim/lua/keymappings.lua +++ b/nvim/.config/nvim/lua/keymappings.lua @@ -98,7 +98,13 @@ remap('c', '', 'getcmdtype() =~ \'[?/]\' ? \'\' : feedkeys(\' remap('c', '' , 'pumvisible() ? feedkeys(\'\', \'int\')[1] : \'\'' , expr_opts) remap('c', '', 'pumvisible() ? feedkeys(\'\' , \'int\')[1] : \'\'', expr_opts) -remap('n', '', ':TSHighlightCapturesUnderCursor', opts) +-- Husk mappings +remap('c', '', '' , opts ) +remap('c', '', '' , opts ) +remap('c', '', 'husk#left()' , expr_opts) +remap('c', '', 'husk#right()' , expr_opts) +remap('c', '', 'husk#del_word()' , expr_opts) +remap('c', '', 'husk#clear_line_after_cursor()', expr_opts) -- After shifting a visual block, select it again remap('v', '<', '