|
48 | 48 | " For each level, contains the regexp that matches at that level only. |
49 | 49 | " |
50 | 50 | let s:levelRegexpDict = { |
51 | | - \ 1: '\v^(#[^#]@=|.+\n\=+$)', |
52 | | - \ 2: '\v^(##[^#]@=|.+\n-+$)', |
53 | | - \ 3: '\v^###[^#]@=', |
54 | | - \ 4: '\v^####[^#]@=', |
55 | | - \ 5: '\v^#####[^#]@=', |
56 | | - \ 6: '\v^######[^#]@=' |
| 51 | + \ 1: '\v^(#[^#]@=\s+|.+\n\=+$)', |
| 52 | + \ 2: '\v^(##[^#]@=\s+|.+\n-+$)', |
| 53 | + \ 3: '\v^###[^#]@=\s+', |
| 54 | + \ 4: '\v^####[^#]@=\s+', |
| 55 | + \ 5: '\v^#####[^#]@=\s+', |
| 56 | + \ 6: '\v^######[^#]@=\s+' |
57 | 57 | \ } |
58 | 58 |
|
59 | 59 | " Maches any header level of any type. |
60 | 60 | " |
61 | 61 | " This could be deduced from `s:levelRegexpDict`, but it is more |
62 | 62 | " efficient to have a single regexp for this. |
63 | 63 | " |
64 | | -let s:headersRegexp = '\v^(#|.+\n(\=+|-+)$)' |
| 64 | +let s:headersRegexp = '\v^(#{1,6}\s+|.+\n(\=+|-+)$)' |
65 | 65 |
|
66 | 66 | " Returns the line number of the first header before `line`, called the |
67 | 67 | " current header. |
@@ -526,7 +526,7 @@ function! s:HeaderDecrease(line1, line2, ...) |
526 | 526 | let l:numSubstitutions = s:SetexToAtx(a:line1, a:line2) |
527 | 527 | let l:flags = (&gdefault ? '' : 'g') |
528 | 528 | for l:level in range(replaceLevels[0], replaceLevels[1], -l:levelDelta) |
529 | | - execute 'silent! ' . a:line1 . ',' . (a:line2 - l:numSubstitutions) . 'substitute/' . s:levelRegexpDict[l:level] . '/' . repeat('#', l:level + l:levelDelta) . '/' . l:flags |
| 529 | + execute 'silent! ' . a:line1 . ',' . (a:line2 - l:numSubstitutions) . 'substitute/' . s:levelRegexpDict[l:level] . '/' . repeat('#', l:level + l:levelDelta) . ' /' . l:flags |
530 | 530 | endfor |
531 | 531 | endfunction |
532 | 532 |
|
|
0 commit comments