diff --git a/README.md b/README.md index 574479e..c05f467 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,16 @@ By default this plugin will not generate an entry for top level headers (`#` or let g:mdtoc_starting_header_level = 1 ``` +You can turn off the numbering of headings +```vimscript +let g:mdtoc_number_headers = 0 +``` + +And customize the indentation characters, e.g. to use spaces instead of the default tab +```vimscript +let g:mdtoc_indent = " " +``` + ## Example ```markdown diff --git a/plugin/markdown-toc.vim b/plugin/markdown-toc.vim index 73920f4..047d139 100644 --- a/plugin/markdown-toc.vim +++ b/plugin/markdown-toc.vim @@ -1,6 +1,12 @@ if !exists("g:mdtoc_starting_header_level") let g:mdtoc_starting_header_level = 2 endif +if !exists("g:mdtoc_number_headers") + let g:mdtoc_number_headers = 1 +endif +if !exists("g:mdtoc_indent") + let g:mdtoc_indent = "\t" +endif function! s:HeaderSearchRegex() if(g:mdtoc_starting_header_level == 1) @@ -34,7 +40,7 @@ function! s:FindHeaders() endfunction function! s:HeadingLevel(header) - let l:delim = split(a:header, " ")[0] + let l:delim = split(a:header, " ")[0] if(l:delim[0] == "=") return 1 elseif(l:delim[0] == "-") @@ -62,8 +68,18 @@ function! s:GenerateMarkdownTOC() let l:num = l:levelsStack[-1] let l:levelsStack[-1] = l:num + 1 let l:previousLevel = l:headingLevel + if(g:mdtoc_number_headers == 1) + let l:bullet = l:num . ". " + else + let l:bullet = "- " + endif + + if(l:headingLevel == 1) + let l:formattedLine = repeat("", l:headingLevel - g:mdtoc_starting_header_level) . l:bullet . "[" . sectionName . "](#" . sectionId . ")" + else + let l:formattedLine = repeat(g:mdtoc_indent, l:headingLevel - g:mdtoc_starting_header_level) . l:bullet . "[" . sectionName . "](#" . sectionId . ")" + endif - let l:formattedLine = repeat("\t", l:headingLevel - g:mdtoc_starting_header_level) . l:num . ". [" . sectionName . "](#" . sectionId . ")" put =l:formattedLine endfor endfunction