--- /dev/null
+" ___vital___
+" NOTE: lines between '" ___vital___' is generated by :Vitalize.
+" Do not modify the code nor insert new lines before '" ___vital___'
+function! s:_SID() abort
+ return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze__SID$')
+endfunction
+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")
+delfunction s:_SID
+" ___vital___
+"
+" _vital_loaded
+"
+function! s:_vital_loaded(V) abort
+ let s:Text = a:V.import('VS.LSP.Text')
+endfunction
+
+"
+" _vital_depends
+"
+function! s:_vital_depends() abort
+ return ['VS.LSP.Text']
+endfunction
+
+"
+" normalize
+"
+function! s:normalize(markup_content, ...) abort
+ let l:option = get(a:000, 0, {})
+ let l:option.compact = get(l:option, 'compact', v:true)
+
+ let l:normalized = ''
+ if type(a:markup_content) == type('')
+ let l:normalized = a:markup_content
+ elseif type(a:markup_content) == type([])
+ let l:normalized = join(a:markup_content, "\n")
+ elseif type(a:markup_content) == type({})
+ let l:normalized = a:markup_content.value
+ if has_key(a:markup_content, 'language')
+ let l:normalized = join([
+ \ '```' . a:markup_content.language,
+ \ l:normalized,
+ \ '```'
+ \ ], "\n")
+ endif
+ endif
+ let l:normalized = s:Text.normalize_eol(l:normalized)
+ let l:normalized = s:_format(l:normalized, l:option.compact)
+ return l:normalized
+endfunction
+
+"
+" _format
+"
+function! s:_format(string, compact) abort
+ let l:string = a:string
+ if a:compact
+ let l:string = substitute(l:string, "\\%(\\s\\|\n\\)*```\\s*\\(\\w\\+\\)\\%(\\s\\|\n\\)\\+", "\n\n```\\1 ", 'g')
+ let l:string = substitute(l:string, "\\%(\\s\\|\n\\)\\+```\\%(\\s*\\%(\\%$\\|\n\\)\\)\\+", " ```\n\n", 'g')
+ else
+ let l:string = substitute(l:string, "```\n\\zs\\%(\\s\\|\n\\)\\+", "", 'g')
+ endif
+ let l:string = substitute(l:string, "\\%^\\%(\\s\\|\n\\)*", '', 'g')
+ let l:string = substitute(l:string, "\\%(\\s\\|\n\\)*\\%$", '', 'g')
+ return l:string
+endfunction
+