mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-16 01:07:06 +08:00
Close #4401 - Use subtle defaults for virtual-text
Default virtual-text to the Comment highlight group and prefix virtual-text messages with comment text for each language by default. Messages can now be formatted with `%type%` to print the error type. The Vim 9.0 version has been updated in the Docker image to add test coverage for virtual-text.
This commit is contained in:
@@ -129,7 +129,7 @@ After:
|
||||
Given javascript(A Javscript file with warnings/errors):
|
||||
var x = 3 + 12345678
|
||||
var x = 5*2 + parseInt("10");
|
||||
// comment
|
||||
//" comment
|
||||
|
||||
Execute(Messages should be shown for the correct lines):
|
||||
call cursor(1, 1)
|
||||
@@ -219,6 +219,26 @@ Execute(The severity should be formatted into the message correctly):
|
||||
|
||||
AssertEqual 'Info: Some information', g:last_message
|
||||
|
||||
Execute(The type should be formatted into the message correctly):
|
||||
let g:ale_echo_msg_format = '%type%: %s'
|
||||
|
||||
call cursor(2, 9)
|
||||
call ale#cursor#EchoCursorWarning()
|
||||
|
||||
AssertEqual
|
||||
\ 'W: Infix operators must be spaced.',
|
||||
\ g:last_message
|
||||
|
||||
call cursor(1, 10)
|
||||
call ale#cursor#EchoCursorWarning()
|
||||
|
||||
AssertEqual 'E: Missing semicolon.', g:last_message
|
||||
|
||||
call cursor(1, 14)
|
||||
call ale#cursor#EchoCursorWarning()
|
||||
|
||||
AssertEqual 'I: Some information', g:last_message
|
||||
|
||||
Execute(The %code% and %ifcode% should show the code and some text):
|
||||
let g:ale_echo_msg_format = '%(code) %%s'
|
||||
|
||||
|
||||
179
test/test_virtualtext.vader
Normal file
179
test/test_virtualtext.vader
Normal file
@@ -0,0 +1,179 @@
|
||||
Before:
|
||||
Save g:ale_buffer_info
|
||||
Save g:ale_virtualtext_cursor
|
||||
Save g:ale_virtualtext_delay
|
||||
Save g:ale_virtualtext_prefix
|
||||
Save b:ale_virtualtext_prefix
|
||||
|
||||
call ale#virtualtext#ResetDataForTests()
|
||||
|
||||
let g:setting = ''
|
||||
let g:ale_virtualtext_delay = 0
|
||||
let g:ale_buffer_info = {
|
||||
\ bufnr(''): {
|
||||
\ 'loclist': [
|
||||
\ {
|
||||
\ 'bufnr': bufnr(''),
|
||||
\ 'type': 'E',
|
||||
\ 'lnum': 1,
|
||||
\ 'col': 5,
|
||||
\ 'text': 'Line 1 error',
|
||||
\ },
|
||||
\ {
|
||||
\ 'bufnr': bufnr(''),
|
||||
\ 'type': 'W',
|
||||
\ 'lnum': 2,
|
||||
\ 'col': 1,
|
||||
\ 'text': 'Line 2 warning 1',
|
||||
\ },
|
||||
\ {
|
||||
\ 'bufnr': bufnr(''),
|
||||
\ 'type': 'W',
|
||||
\ 'lnum': 2,
|
||||
\ 'col': 5,
|
||||
\ 'text': 'Line 2 warning 2',
|
||||
\ },
|
||||
\ ],
|
||||
\ },
|
||||
\}
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
unlet! g:setting
|
||||
unlet! g:ns_id
|
||||
|
||||
Execute(The correct highlight groups should be loaded for virtual-text):
|
||||
AssertEqual 'ALEVirtualTextError', ale#virtualtext#GetGroup({})
|
||||
AssertEqual 'ALEVirtualTextError', ale#virtualtext#GetGroup({'type': 'E'})
|
||||
AssertEqual 'ALEVirtualTextStyleError',
|
||||
\ ale#virtualtext#GetGroup({'type': 'E', 'sub_type': 'style'})
|
||||
AssertEqual 'ALEVirtualTextWarning', ale#virtualtext#GetGroup({'type': 'W'})
|
||||
AssertEqual 'ALEVirtualTextStyleWarning',
|
||||
\ ale#virtualtext#GetGroup({'type': 'W', 'sub_type': 'style'})
|
||||
AssertEqual 'ALEVirtualTextInfo', ale#virtualtext#GetGroup({'type': 'I'})
|
||||
|
||||
Given python (An empty Python file):
|
||||
Execute(Comment text should be detected correctly for Python files):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
AssertEqual '#', ale#virtualtext#GetComment(bufnr(''))
|
||||
endif
|
||||
|
||||
Given java (An empty Java file):
|
||||
Execute(Comment text should be detected correctly for Java files):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
AssertEqual '//', ale#virtualtext#GetComment(bufnr(''))
|
||||
endif
|
||||
|
||||
Given html (An empty HTML file):
|
||||
Execute(Comment text should be detected correctly for HTML files):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
AssertEqual "\<!--", ale#virtualtext#GetComment(bufnr(''))
|
||||
endif
|
||||
|
||||
Given python(An example Python file):
|
||||
# line 1
|
||||
# line 2
|
||||
|
||||
Execute(We should not show virtualtext when disabled):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
for g:setting in ['disabled', '0', 0]
|
||||
call ale#virtualtext#ResetDataForTests()
|
||||
|
||||
let g:ale_virtualtext_cursor = g:setting
|
||||
call cursor(1, 1)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual '', ale#virtualtext#GetLastMessageForTests()
|
||||
endfor
|
||||
endif
|
||||
|
||||
Execute(We should find a virtualtext error on line 1):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
for g:setting in ['current', '1', 1]
|
||||
call ale#virtualtext#ResetDataForTests()
|
||||
|
||||
let g:ale_virtualtext_cursor = 'current'
|
||||
call cursor(1, 1)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual '# E: Line 1 error', ale#virtualtext#GetLastMessageForTests()
|
||||
|
||||
if has('patch-9.0.0297')
|
||||
AssertEqual ['ALEVirtualTextError'], map(prop_list(1), {_, v -> v.type})
|
||||
AssertEqual [], prop_list(2)
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
Execute(We should find a virtualtext error on line 2):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
let g:ale_virtualtext_cursor = 'current'
|
||||
call cursor(2, 5)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual '# W: Line 2 warning 2', ale#virtualtext#GetLastMessageForTests()
|
||||
|
||||
if has('patch-9.0.0297')
|
||||
AssertEqual [], prop_list(1)
|
||||
AssertEqual ['ALEVirtualTextWarning'], map(prop_list(2), {_, v -> v.type})
|
||||
endif
|
||||
endif
|
||||
|
||||
Execute(We should be able to change the virtualtext prefix globally):
|
||||
let g:ale_virtualtext_prefix = '> '
|
||||
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
let g:ale_virtualtext_cursor = 'current'
|
||||
call cursor(1, 1)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual '> Line 1 error', ale#virtualtext#GetLastMessageForTests()
|
||||
endif
|
||||
|
||||
Execute(We should be able to change the virtualtext prefix per-buffer):
|
||||
let b:ale_virtualtext_prefix = 'B> '
|
||||
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
let g:ale_virtualtext_cursor = 'current'
|
||||
call cursor(1, 1)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual 'B> Line 1 error', ale#virtualtext#GetLastMessageForTests()
|
||||
endif
|
||||
|
||||
Execute(We should be format in other data from the loclist items):
|
||||
let g:ale_virtualtext_prefix = '%severity%: '
|
||||
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
let g:ale_virtualtext_cursor = 'current'
|
||||
call cursor(1, 1)
|
||||
call ale#virtualtext#ShowCursorWarningWithDelay()
|
||||
" Tick the timer.
|
||||
sleep 1ms
|
||||
|
||||
AssertEqual 'Error: Line 1 error', ale#virtualtext#GetLastMessageForTests()
|
||||
endif
|
||||
|
||||
Execute(We should set errors across all lines):
|
||||
if has('patch-9.0.0297') || has('nvim-0.8.0')
|
||||
call ale#virtualtext#SetTexts(bufnr(''), g:ale_buffer_info[bufnr('')].loclist)
|
||||
|
||||
AssertEqual '# W: Line 2 warning 2', ale#virtualtext#GetLastMessageForTests()
|
||||
|
||||
if has('patch-9.0.0297')
|
||||
AssertEqual ['ALEVirtualTextError'], map(prop_list(1), {_, v -> v.type})
|
||||
AssertEqual ['ALEVirtualTextWarning', 'ALEVirtualTextWarning'],
|
||||
\ map(prop_list(2), {_, v -> v.type})
|
||||
endif
|
||||
endif
|
||||
Reference in New Issue
Block a user