From 5bc85b9ce603bfc52808164da7264b5b0ad29bc9 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Wed, 6 Nov 2024 23:18:40 +0800 Subject: Update --- vim/init/config.vim | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/vim/init/config.vim b/vim/init/config.vim index ce81f8a..8be42b4 100644 --- a/vim/init/config.vim +++ b/vim/init/config.vim @@ -159,6 +159,7 @@ augroup InitFileTypes nnoremap \fl :let markdown_apply_heading_level = !markdown_apply_heading_levelzX let b:in_frontmatter = 0 + let b:insideCodeBlock = 0 setlocal foldexpr=MarkdownLevel() foldmethod=expr setlocal foldtext=MarkdownFoldTextHeading() @@ -173,13 +174,15 @@ augroup InitFileTypes endfunc function! MarkdownLevel() + let line = getline(v:lnum) + " For frontmatter if v:lnum == 1 && getline(1) =~ '^---' let b:in_frontmatter = 1 return '>1' endif if b:in_frontmatter - if getline(v:lnum) =~ '^---' + if line =~ '^---' let b:in_frontmatter = 0 return '<1' else @@ -187,13 +190,21 @@ augroup InitFileTypes endif endif + " Codeblock Switching + if line =~ '^```' + let b:insideCodeBlock = b:insideCodeBlock == 1 ? 0 : 1 + endif + if b:insideCodeBlock == 1 + return '=' + endif + " Fold for heading and the following contents - let hash_num = matchstr(getline(v:lnum), '^\zs#\+\ze\s') + let hash_num = matchstr(line, '^\zs#\+\ze\s') if !empty(hash_num) let foldlevel = g:markdown_apply_heading_level ? len(hash_num) - 1 : 1 " HEADING return len(hash_num) == 1 ? 0 : '>'.foldlevel - elseif match(getline(v:lnum), '^----') != -1 + elseif match(line, '^----') != -1 return "<" else " Contents -- cgit v1.2.3-70-g09d2