autoload/lsp/markdown.vim | 18 +++++++++++++++++- diff --git a/autoload/lsp/markdown.vim b/autoload/lsp/markdown.vim index e6aa670dd65b05531c8e8d4862f0e6cdaf434a7a..756c7a7af4de46df515471d0d88c5e4c6b550c79 100644 --- a/autoload/lsp/markdown.vim +++ b/autoload/lsp/markdown.vim @@ -545,12 +545,28 @@ endif endfor enddef +def ExpandTabs(line: string): string + var block_marker = line->matchstrpos($'^ \{{,3}}>[ \t]\+\|^[ \t]*\%({list_marker}\)\=[ \t]*') + if block_marker[0]->match('\t') < 0 + return line + endif + var begin: string = "" + for char in block_marker[0] + if char == ' ' + begin ..= ' '->repeat(4 - (begin->strlen() % 4)) + else + begin ..= char + endif + endfor + return begin .. line[block_marker[2] :] +enddef + export def ParseMarkdown(data: list, width: number = 80): dict> var document: dict> = {content: [], syntax: []} var open_blocks: list> = [] for l in data - var line: string = l + var line: string = ExpandTabs(l) var cur = 0 # for each open block check if current line continue it