From d4a19d74aa9c048f5e1f48ebb4f35a51a4cc5a2d Mon Sep 17 00:00:00 2001 From: Roberto Castagnola Date: Sun, 23 Jul 2023 10:19:20 +0200 Subject: [PATCH] Expand tabs used to define block structure in markdown parser --- autoload/lsp/markdown.vim | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/autoload/lsp/markdown.vim b/autoload/lsp/markdown.vim index e6aa670..756c7a7 100644 --- a/autoload/lsp/markdown.vim +++ b/autoload/lsp/markdown.vim @@ -545,12 +545,28 @@ def CloseBlocks(document: dict>, blocks: list>, start: numbe 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 -- 2.48.1