From 8694a10a01357e11e91838de70ca7d985be29493 Mon Sep 17 00:00:00 2001 From: Russell Wright Helder Date: Wed, 27 Nov 2024 16:42:49 -0800 Subject: [PATCH 1/2] Check for numbers after markers when setting fold level --- autoload/vimtex/fold/markers.vim | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/autoload/vimtex/fold/markers.vim b/autoload/vimtex/fold/markers.vim index ecef7347b41..afd831eb390 100644 --- a/autoload/vimtex/fold/markers.vim +++ b/autoload/vimtex/fold/markers.vim @@ -34,12 +34,22 @@ endfunction " }}}1 function! s:folder.level(line, lnum) abort dict " {{{1 - if a:line =~# self.re.start + let l:start = matchlist(a:line, self.re.start . '\(\d\{0,2}\)') + let l:end = matchlist(a:line, self.re.end . '\(\d\{0,2}\)') + if !empty(l:start) + if !empty(l:start[1]) + return '>' . l:start[1] + else + return 'a1' + endif let self.opened = 1 - return 'a1' - elseif a:line =~# self.re.end + elseif !empty(l:end) + if !empty(l:end[1]) + return '<' . l:end[1] + else + return 's1' + endif let self.opened = 0 - return 's1' endif endfunction From 1412748bfc232519c4610388af7e26bf9a9cd321 Mon Sep 17 00:00:00 2001 From: Russell Wright Helder Date: Sun, 8 Dec 2024 07:54:36 -0800 Subject: [PATCH 2/2] Incorporate recommended changes * Use ternary operator in return value * Only allow one digit after marker * Use '..' rather than '.' for concatenation --- autoload/vimtex/fold/markers.vim | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/autoload/vimtex/fold/markers.vim b/autoload/vimtex/fold/markers.vim index afd831eb390..0ea255f392f 100644 --- a/autoload/vimtex/fold/markers.vim +++ b/autoload/vimtex/fold/markers.vim @@ -34,21 +34,17 @@ endfunction " }}}1 function! s:folder.level(line, lnum) abort dict " {{{1 - let l:start = matchlist(a:line, self.re.start . '\(\d\{0,2}\)') - let l:end = matchlist(a:line, self.re.end . '\(\d\{0,2}\)') + let l:start = matchlist(a:line, self.re.start .. '\(\d\?\)') + let l:end = matchlist(a:line, self.re.end .. '\(\d\?\)') if !empty(l:start) - if !empty(l:start[1]) - return '>' . l:start[1] - else - return 'a1' - endif + return empty(l:start[1]) + \ ? 'a1' + \ : '>' .. l:start[1] let self.opened = 1 elseif !empty(l:end) - if !empty(l:end[1]) - return '<' . l:end[1] - else - return 's1' - endif + return empty(l:end[1]) + \ ? 's1' + \ : '<' .. l:end[1] let self.opened = 0 endif endfunction