All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
2 " NOTE: lines between '" ___vital___' is generated by :Vitalize.
3 " Do not modify the code nor insert new lines before '" ___vital___'
4 function! s:_SID() abort
5 return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
7 execute join(['function! vital#_lsp#VS#LSP#MarkupContent#import() abort', printf("return map({'_vital_depends': '', 'normalize': '', '_vital_loaded': ''}, \"vital#_lsp#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
13 function! s:_vital_loaded(V) abort
14 let s:Text = a:V.import('VS.LSP.Text')
20 function! s:_vital_depends() abort
21 return ['VS.LSP.Text']
27 function! s:normalize(markup_content, ...) abort
28 let l:option = get(a:000, 0, {})
29 let l:option.compact = get(l:option, 'compact', v:true)
32 if type(a:markup_content) == type('')
33 let l:normalized = a:markup_content
34 elseif type(a:markup_content) == type([])
35 let l:normalized = join(a:markup_content, "\n")
36 elseif type(a:markup_content) == type({})
37 let l:normalized = a:markup_content.value
38 if has_key(a:markup_content, 'language')
39 let l:normalized = join([
40 \ '```' . a:markup_content.language,
46 let l:normalized = s:Text.normalize_eol(l:normalized)
47 let l:normalized = s:_format(l:normalized, l:option.compact)
54 function! s:_format(string, compact) abort
55 let l:string = a:string
57 let l:string = substitute(l:string, "\\%(\\s\\|\n\\)*```\\s*\\(\\w\\+\\)\\%(\\s\\|\n\\)\\+", "\n\n```\\1 ", 'g')
58 let l:string = substitute(l:string, "\\%(\\s\\|\n\\)\\+```\\%(\\s*\\%(\\%$\\|\n\\)\\)\\+", " ```\n\n", 'g')
60 let l:string = substitute(l:string, "```\n\\zs\\%(\\s\\|\n\\)\\+", "", 'g')
62 let l:string = substitute(l:string, "\\%^\\%(\\s\\|\n\\)*", '', 'g')
63 let l:string = substitute(l:string, "\\%(\\s\\|\n\\)*\\%$", '', 'g')