39f393ef07
* Add nvim floating window hover support * Add configuration for float to replace preview * preview#ShowFloating: qualify local variables * Configure floating preview usecases individually Also: * Extract floating preview to its own file. * Ignore 'stay_here' option. Moving into the floating preview window seems confusing at best. * Re-use existing floating preview window if it's still up. * Flush out floating preview documentation. * Watch cursor position changes per window Floating previews open a new window, so when that window is written to, it moves briefly there at a different position than the original window. This makes repeated positions detected when positions are tracked at a s: level. Instead, we change the variable to window scoped, which only fires a message if the cursor has changed from the last position in *that window*. * g:ale_floating_preview cleanup * floating_preview: add ALEDetail tests * Fix fecs test missing runtime call * Add ALEHover floating preview tests Co-authored-by: Jan-Grimo Sobez <jan-grimo.sobez@phys.chem.ethz.ch>
92 lines
2.1 KiB
Text
92 lines
2.1 KiB
Text
Before:
|
|
let g:ale_floating_preview = 0
|
|
let g:ale_hover_to_floating_preview = 0
|
|
let g:ale_detail_to_floating_preview = 0
|
|
|
|
runtime autoload/ale/floating_preview.vim
|
|
|
|
let g:floated_lines = []
|
|
let g:floating_preview_show_called = 0
|
|
|
|
" Stub out so we can track the call
|
|
function! ale#floating_preview#Show(lines, ...) abort
|
|
let g:floating_preview_show_called = 1
|
|
let g:floated_lines = a:lines
|
|
endfunction
|
|
|
|
let g:ale_buffer_info = {
|
|
\ bufnr('%'): {
|
|
\ 'loclist': [
|
|
\ {
|
|
\ 'lnum': 1,
|
|
\ 'col': 10,
|
|
\ 'bufnr': bufnr('%'),
|
|
\ 'vcol': 0,
|
|
\ 'linter_name': 'notalinter',
|
|
\ 'nr': -1,
|
|
\ 'type': 'E',
|
|
\ 'code': 'semi',
|
|
\ 'text': "Missing semicolon.\r",
|
|
\ 'detail': "Every statement should end with a semicolon\nsecond line",
|
|
\ },
|
|
\ ],
|
|
\ }
|
|
\}
|
|
|
|
call ale#linter#Reset()
|
|
call ale#linter#PreventLoading('javascript')
|
|
|
|
After:
|
|
Restore
|
|
|
|
let g:ale_floating_preview = 0
|
|
let g:ale_hover_to_floating_preview = 0
|
|
let g:ale_detail_to_floating_preview = 0
|
|
|
|
call cursor(1, 1)
|
|
|
|
let g:ale_buffer_info = {}
|
|
|
|
" Close the preview window if it's open.
|
|
if &filetype is# 'ale-preview'
|
|
noautocmd :q!
|
|
endif
|
|
|
|
call ale#linter#Reset()
|
|
|
|
|
|
Given javascript(A file with warnings/errors):
|
|
var x = 3 + 12345678
|
|
var x = 5*2 + parseInt("10");
|
|
// comment
|
|
|
|
Execute(Floating preview is used with ALEDetail when g:ale_floating_preview set):
|
|
let g:ale_floating_preview = 1
|
|
|
|
call cursor(1, 10)
|
|
|
|
ALEDetail
|
|
|
|
let expected = ["Every statement should end with a semicolon", "second line"]
|
|
|
|
AssertEqual 1, g:floating_preview_show_called
|
|
AssertEqual expected, g:floated_lines
|
|
|
|
Execute(Floating preview is used with ALEDetail when g:ale_detail_to_floating_preview set):
|
|
let g:ale_detail_to_floating_preview = 1
|
|
|
|
call cursor(1, 10)
|
|
|
|
ALEDetail
|
|
|
|
let expected = ["Every statement should end with a semicolon", "second line"]
|
|
|
|
AssertEqual 1, g:floating_preview_show_called
|
|
AssertEqual expected, g:floated_lines
|
|
|
|
Execute(Floating preview is not used with ALEDetail by default):
|
|
call cursor(1, 10)
|
|
|
|
ALEDetail
|
|
|
|
AssertEqual 0, g:floating_preview_show_called
|