Make the message formats configurable with buffer local variables
This commit is contained in:
parent
0cb8130d0e
commit
597507e519
@ -69,10 +69,12 @@ function! s:EchoImpl() abort
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let l:buffer = bufnr('')
|
||||||
let [l:info, l:loc] = s:FindItemAtCursor()
|
let [l:info, l:loc] = s:FindItemAtCursor()
|
||||||
|
|
||||||
if !empty(l:loc)
|
if !empty(l:loc)
|
||||||
let l:msg = ale#GetLocItemMessage(l:loc, g:ale_echo_msg_format)
|
let l:format = ale#Var(l:buffer, 'echo_msg_format')
|
||||||
|
let l:msg = ale#GetLocItemMessage(l:loc, l:format)
|
||||||
call ale#cursor#TruncatedEcho(l:msg)
|
call ale#cursor#TruncatedEcho(l:msg)
|
||||||
let l:info.echoed = 1
|
let l:info.echoed = 1
|
||||||
elseif get(l:info, 'echoed')
|
elseif get(l:info, 'echoed')
|
||||||
|
@ -37,16 +37,14 @@ function! ale#list#GetCombinedList() abort
|
|||||||
return l:list
|
return l:list
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:FixList(list) abort
|
function! s:FixList(buffer, list) abort
|
||||||
|
let l:format = ale#Var(a:buffer, 'loclist_msg_format')
|
||||||
let l:new_list = []
|
let l:new_list = []
|
||||||
|
|
||||||
for l:item in a:list
|
for l:item in a:list
|
||||||
let l:fixed_item = copy(l:item)
|
let l:fixed_item = copy(l:item)
|
||||||
|
|
||||||
let l:fixed_item.text = ale#GetLocItemMessage(
|
let l:fixed_item.text = ale#GetLocItemMessage(l:item, l:format)
|
||||||
\ l:item,
|
|
||||||
\ g:ale_loclist_msg_format,
|
|
||||||
\)
|
|
||||||
|
|
||||||
if l:item.bufnr == -1
|
if l:item.bufnr == -1
|
||||||
" If the buffer number is invalid, remove it.
|
" If the buffer number is invalid, remove it.
|
||||||
@ -70,22 +68,22 @@ function! s:SetListsImpl(timer_id, buffer, loclist) abort
|
|||||||
let l:quickfix_list = ale#list#GetCombinedList()
|
let l:quickfix_list = ale#list#GetCombinedList()
|
||||||
|
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
call setqflist(s:FixList(l:quickfix_list), ' ', l:title)
|
call setqflist(s:FixList(a:buffer, l:quickfix_list), ' ', l:title)
|
||||||
else
|
else
|
||||||
call setqflist(s:FixList(l:quickfix_list))
|
call setqflist(s:FixList(a:buffer, l:quickfix_list))
|
||||||
call setqflist([], 'r', {'title': l:title})
|
call setqflist([], 'r', {'title': l:title})
|
||||||
endif
|
endif
|
||||||
elseif g:ale_set_loclist
|
elseif g:ale_set_loclist
|
||||||
" If windows support is off, bufwinid() may not exist.
|
" If windows support is off, bufwinid() may not exist.
|
||||||
" We'll set result in the current window, which might not be correct,
|
" We'll set result in the current window, which might not be correct,
|
||||||
" but is better than nothing.
|
" but it's better than nothing.
|
||||||
let l:win_id = s:BufWinId(a:buffer)
|
let l:id = s:BufWinId(a:buffer)
|
||||||
|
|
||||||
if has('nvim')
|
if has('nvim')
|
||||||
call setloclist(l:win_id, s:FixList(a:loclist), ' ', l:title)
|
call setloclist(l:id, s:FixList(a:buffer, a:loclist), ' ', l:title)
|
||||||
else
|
else
|
||||||
call setloclist(l:win_id, s:FixList(a:loclist))
|
call setloclist(l:id, s:FixList(a:buffer, a:loclist))
|
||||||
call setloclist(l:win_id, [], 'r', {'title': l:title})
|
call setloclist(l:id, [], 'r', {'title': l:title})
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -646,6 +646,7 @@ g:ale_echo_msg_error_str *g:ale_echo_msg_error_str*
|
|||||||
|
|
||||||
|
|
||||||
g:ale_echo_msg_format *g:ale_echo_msg_format*
|
g:ale_echo_msg_format *g:ale_echo_msg_format*
|
||||||
|
b:ale_echo_msg_format *b:ale_echo_msg_format*
|
||||||
|
|
||||||
Type: |String|
|
Type: |String|
|
||||||
Default: `'%code: %%s'`
|
Default: `'%code: %%s'`
|
||||||
@ -672,6 +673,10 @@ g:ale_echo_msg_format *g:ale_echo_msg_format*
|
|||||||
|
|
||||||
|g:ale_echo_cursor| needs to be set to 1 for messages to be displayed.
|
|g:ale_echo_cursor| needs to be set to 1 for messages to be displayed.
|
||||||
|
|
||||||
|
The echo message format can also be configured separately for each buffer,
|
||||||
|
so different formats can be used for differnt languages. (Say in ftplugin
|
||||||
|
files.)
|
||||||
|
|
||||||
|
|
||||||
g:ale_echo_msg_info_str *g:ale_echo_msg_info_str*
|
g:ale_echo_msg_info_str *g:ale_echo_msg_info_str*
|
||||||
|
|
||||||
@ -1017,6 +1022,7 @@ g:ale_linters_explicit *g:ale_linters_explicit*
|
|||||||
|
|
||||||
|
|
||||||
g:ale_loclist_msg_format *g:ale_loclist_msg_format*
|
g:ale_loclist_msg_format *g:ale_loclist_msg_format*
|
||||||
|
b:ale_loclist_msg_format *b:ale_loclist_msg_format*
|
||||||
|
|
||||||
Type: |String|
|
Type: |String|
|
||||||
Default: `g:ale_echo_msg_format`
|
Default: `g:ale_echo_msg_format`
|
||||||
|
@ -89,6 +89,7 @@ After:
|
|||||||
let g:ale_buffer_info = {}
|
let g:ale_buffer_info = {}
|
||||||
|
|
||||||
unlet! g:output
|
unlet! g:output
|
||||||
|
unlet! b:ale_loclist_msg_format
|
||||||
|
|
||||||
delfunction GetLastMessage
|
delfunction GetLastMessage
|
||||||
|
|
||||||
@ -212,3 +213,12 @@ Execute(The %code% and %ifcode% should be removed when there's no code):
|
|||||||
call ale#cursor#EchoCursorWarning()
|
call ale#cursor#EchoCursorWarning()
|
||||||
|
|
||||||
AssertEqual 'Some information', GetLastMessage()
|
AssertEqual 'Some information', GetLastMessage()
|
||||||
|
|
||||||
|
Execute(The buffer message format option should take precedence):
|
||||||
|
let g:ale_echo_msg_format = '%(code) %%s'
|
||||||
|
let b:ale_echo_msg_format = 'FOO %s'
|
||||||
|
|
||||||
|
call cursor(1, 14)
|
||||||
|
call ale#cursor#EchoCursorWarning()
|
||||||
|
|
||||||
|
AssertEqual 'FOO Some information', GetLastMessage()
|
||||||
|
@ -28,6 +28,7 @@ After:
|
|||||||
Restore
|
Restore
|
||||||
|
|
||||||
unlet! g:loclist
|
unlet! g:loclist
|
||||||
|
unlet! b:ale_loclist_msg_format
|
||||||
|
|
||||||
delfunction AddItem
|
delfunction AddItem
|
||||||
|
|
||||||
@ -162,3 +163,26 @@ Execute(Formatting with the linter name should work for the quickfix list):
|
|||||||
\ },
|
\ },
|
||||||
\ ],
|
\ ],
|
||||||
\ getqflist()
|
\ getqflist()
|
||||||
|
|
||||||
|
Execute(The buffer loclist format option should take precedence):
|
||||||
|
let g:ale_loclist_msg_format = '(%linter%) %s'
|
||||||
|
let b:ale_loclist_msg_format = 'FOO %s'
|
||||||
|
|
||||||
|
call AddItem({'text': 'whatever'})
|
||||||
|
call ale#list#SetLists(bufnr(''), g:loclist)
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ [
|
||||||
|
\ {
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'bufnr': bufnr(''),
|
||||||
|
\ 'col': 1,
|
||||||
|
\ 'valid': 1,
|
||||||
|
\ 'vcol': 0,
|
||||||
|
\ 'nr': 0,
|
||||||
|
\ 'type': 'E',
|
||||||
|
\ 'pattern': '',
|
||||||
|
\ 'text': 'FOO whatever',
|
||||||
|
\ },
|
||||||
|
\ ],
|
||||||
|
\ getloclist(0)
|
||||||
|
Loading…
Reference in New Issue
Block a user