From 0f7c192acee8a07eaf8f7702586eaac9066d9577 Mon Sep 17 00:00:00 2001 From: matchbox1014 Date: Sun, 5 May 2024 11:03:42 -0500 Subject: [PATCH 1/4] Implement toggle_break() --- autoload/vimtex.vim | 1 + autoload/vimtex/cmd.vim | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/autoload/vimtex.vim b/autoload/vimtex.vim index 636b7e7986..45fca4cbdc 100644 --- a/autoload/vimtex.vim +++ b/autoload/vimtex.vim @@ -178,6 +178,7 @@ function! s:init_default_mappings() abort " {{{1 call s:map(0, 'n', 'tsc', '(vimtex-cmd-toggle-star)') call s:map(0, 'n', 'tsf', '(vimtex-cmd-toggle-frac)') call s:map(0, 'x', 'tsf', '(vimtex-cmd-toggle-frac)') + call s:map(0, 'n', 'tsb', '(vimtex-cmd-toggle-break)') call s:map(0, 'i', '', '(vimtex-cmd-create)') call s:map(0, 'n', '', '(vimtex-cmd-create)') call s:map(0, 'x', '', '(vimtex-cmd-create)') diff --git a/autoload/vimtex/cmd.vim b/autoload/vimtex/cmd.vim index 7bd0cda55f..70c02d4a99 100644 --- a/autoload/vimtex/cmd.vim +++ b/autoload/vimtex/cmd.vim @@ -28,6 +28,9 @@ function! vimtex#cmd#init_buffer() abort " {{{1 xnoremap (vimtex-cmd-toggle-frac) \ :call vimtex#cmd#toggle_frac_visual() + + nnoremap (vimtex-cmd-toggle-break) + \ :call operator_setup('toggle_break')normal! g@l endfunction " }}}1 @@ -267,6 +270,25 @@ function! vimtex#cmd#toggle_frac_visual() abort " {{{1 call setreg('a', l:save_reg) endfunction +" }}}1 +function! vimtex#cmd#toggle_break() abort " {{{1 + let l:lnum = line('.') + let l:line = getline(l:lnum) + let l:len = col('$') - 1 + + if l:len >= 3 && strpart(l:line, l:len - 3) == ' \\' + call setline(l:lnum, + \ strpart(l:line, 0, l:len - 3)) + elseif l:len >= 2 && strpart(l:line, l:len - 2) == '\\' + call setline(l:lnum, + \ strpart(l:line, 0, l:len - 2)) + else + call setline(l:lnum, + \ l:line + \ . ' \\') + endif +endfunction + " }}}1 function! vimtex#cmd#parser_separator_check(separator_string) abort " {{{1 @@ -609,6 +631,7 @@ function! s:operator_function(_) abort " {{{1 \ 'delete': 'delete()', \ 'toggle_star': 'toggle_star()', \ 'toggle_frac': 'toggle_frac()', + \ 'toggle_break': 'toggle_break()', \ }[s:operator] endfunction From 567683d64abd58003bb59d0a8ab04bec2f4f0c19 Mon Sep 17 00:00:00 2001 From: matchbox1014 Date: Sun, 12 May 2024 16:38:10 -0500 Subject: [PATCH 2/4] Simplify by RegEx --- autoload/vimtex/cmd.vim | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/autoload/vimtex/cmd.vim b/autoload/vimtex/cmd.vim index 70c02d4a99..2fdb5eab8a 100644 --- a/autoload/vimtex/cmd.vim +++ b/autoload/vimtex/cmd.vim @@ -274,19 +274,12 @@ endfunction function! vimtex#cmd#toggle_break() abort " {{{1 let l:lnum = line('.') let l:line = getline(l:lnum) - let l:len = col('$') - 1 - - if l:len >= 3 && strpart(l:line, l:len - 3) == ' \\' - call setline(l:lnum, - \ strpart(l:line, 0, l:len - 3)) - elseif l:len >= 2 && strpart(l:line, l:len - 2) == '\\' - call setline(l:lnum, - \ strpart(l:line, 0, l:len - 2)) - else - call setline(l:lnum, - \ l:line - \ . ' \\') - endif + + let l:replace = l:line =~# '\s*\\\\\s*$' + \ ? substitute(l:line, '\s*\\\\\s*$', '', '') + \ : substitute(l:line, '\s*$', ' \\\\', '') + + call setline(l:lnum, l:replace) endfunction " }}}1 From 7477758186da80e466f815f0d7401c726ad8fdd2 Mon Sep 17 00:00:00 2001 From: matchbox1014 Date: Sun, 12 May 2024 16:48:54 -0500 Subject: [PATCH 3/4] Add four tests --- test/test-commands/test-toggle-break.vim | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/test-commands/test-toggle-break.vim diff --git a/test/test-commands/test-toggle-break.vim b/test/test-commands/test-toggle-break.vim new file mode 100644 index 0000000000..595d0c783d --- /dev/null +++ b/test/test-commands/test-toggle-break.vim @@ -0,0 +1,16 @@ +set nocompatible +set runtimepath^=../.. +filetype plugin on + + +" tsb / Toggle line break +for [s:in, s:out] in [ + \ ['abc', 'abc \\'], + \ [' a + b = c', ' a + b = c \\'], + \ ['abc \\', 'abc'], + \ ['abc\\', 'abc'], + \] + call vimtex#test#keys('tsb', s:in, s:out) +endfor + +call vimtex#test#finished() From 76061486331f9e5dfea585bd5adb487903773b2e Mon Sep 17 00:00:00 2001 From: matchbox1014 Date: Sun, 12 May 2024 17:00:53 -0500 Subject: [PATCH 4/4] Modify docs --- README.md | 1 + doc/vimtex.txt | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 8d8ca0cf1e..b01f6a619d 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,7 @@ by default and must be manually enabled. - Toggle inline and displaymath with `ts$` - Toggle between e.g. `()` and `\left(\right)` with `tsd` - Toggle (inline) fractions with `tsf` + - Toggle line end `\\` with `tsb` - Close the current environment/delimiter in insert mode with `]]` - Add `\left ... \right)` modifiers to surrounding delimiters with `` - Insert new command with `` diff --git a/doc/vimtex.txt b/doc/vimtex.txt index fc60df47c5..77e43b8cea 100644 --- a/doc/vimtex.txt +++ b/doc/vimtex.txt @@ -197,6 +197,7 @@ FEATURE OVERVIEW *vimtex-features* - Toggle inline and displaymath with `ts$` - Toggle between e.g. `()` and `\left(\right)` with `tsd`/`tsD` - Toggle (inline) fractions with `tsf` + - Toggle line end `\\` with `tsb` - Close the current environment/delimiter in insert mode with `]]` - Add `\left ... \right)` modifiers to surrounding delimiters with `` - Insert new command with `` @@ -870,6 +871,7 @@ This feature is explained in more detail later, see |vimtex-imaps|. tsc |(vimtex-cmd-toggle-star)| `n` tse |(vimtex-env-toggle-star)| `n` ts$ |(vimtex-env-toggle-math)| `n` + tsb |(vimtex-env-toggle-break)| `n` |(vimtex-env-surround-line)| `n` |(vimtex-env-surround-operator)| `n` |(vimtex-env-surround-visual)| `x` @@ -3740,6 +3742,9 @@ MAP DEFINITIONS *vimtex-mappings* < One may change the toggle sequence with |g:vimtex_env_toggle_math_map|. +*(vimtex-cmd-toggle-break)* + Toggle the line break command `\\` at the end of current line. + *(vimtex-env-surround-line)* *(vimtex-env-surround-operator)* *(vimtex-env-surround-visual)*