Skip to content

Commit 882376c

Browse files
apply markdown for output (#1100)
1 parent 337d834 commit 882376c

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

autoload/lsp/ui/vim/output.vim

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ let s:use_vim_popup = has('patch-8.1.1517') && g:lsp_preview_float && !has('nvim
22
let s:use_nvim_float = exists('*nvim_open_win') && g:lsp_preview_float && has('nvim')
33
let s:use_preview = !s:use_vim_popup && !s:use_nvim_float
44

5+
function! s:import_modules() abort
6+
if exists('s:Markdown') | return | endif
7+
let s:Markdown = vital#lsp#import('VS.Vim.Syntax.Markdown')
8+
let s:MarkupContent = vital#lsp#import('VS.LSP.MarkupContent')
9+
let s:Window = vital#lsp#import('VS.Vim.Window')
10+
let s:Text = vital#lsp#import('VS.LSP.Text')
11+
endfunction
12+
513
let s:winid = v:false
614
let s:prevwin = v:false
715
let s:preview_data = v:false
@@ -386,6 +394,11 @@ function! lsp#ui#vim#output#preview(server, data, options) abort
386394
doautocmd <nomodeline> User lsp_float_opened
387395
endif
388396

397+
if l:ft ==? 'markdown'
398+
call s:import_modules()
399+
call s:Window.do(s:winid, {->s:Markdown.apply()})
400+
endif
401+
389402
if !g:lsp_preview_keep_focus
390403
" set the focus to the preview window
391404
call win_gotoid(s:winid)
@@ -406,7 +419,6 @@ function! lsp#ui#vim#output#append(data, lines, syntax_lines) abort
406419
return 'markdown'
407420
elseif type(a:data) ==# type('')
408421
call extend(a:lines, split(s:escape_string_for_display(a:data), "\n", v:true))
409-
410422
return 'markdown'
411423
elseif type(a:data) ==# type({}) && has_key(a:data, 'language')
412424
let l:new_lines = split(s:escape_string_for_display(a:data.value), '\n')
@@ -418,11 +430,15 @@ function! lsp#ui#vim#output#append(data, lines, syntax_lines) abort
418430
endwhile
419431

420432
call extend(a:lines, l:new_lines)
421-
422433
return 'markdown'
423434
elseif type(a:data) ==# type({}) && has_key(a:data, 'kind')
424-
call extend(a:lines, split(s:escape_string_for_display(a:data.value), '\n', v:true))
425-
435+
if a:data.kind ==? 'markdown'
436+
call s:import_modules()
437+
let l:detail = s:MarkupContent.normalize(a:data.value)
438+
call extend(a:lines, s:Text.split_by_eol(l:detail))
439+
else
440+
call extend(a:lines, split(s:escape_string_for_display(a:data.value), '\n', v:true))
441+
endif
426442
return a:data.kind ==? 'plaintext' ? 'text' : a:data.kind
427443
endif
428444
endfunction

0 commit comments

Comments
 (0)