diff options
Diffstat (limited to 'plugin')
-rw-r--r-- | plugin/ale/aaflags.vim | 9 | ||||
-rw-r--r-- | plugin/ale/cursor.vim | 21 | ||||
-rw-r--r-- | plugin/ale/zmain.vim | 5 |
3 files changed, 34 insertions, 1 deletions
diff --git a/plugin/ale/aaflags.vim b/plugin/ale/aaflags.vim index 10d82128..f18dcc43 100644 --- a/plugin/ale/aaflags.vim +++ b/plugin/ale/aaflags.vim @@ -48,3 +48,12 @@ let g:ale_sign_column_always = get(g:, 'ale_sign_column_always', 0) let g:ale_statusline_format = get(g:, 'ale_statusline_format', \ ['%d error(s)', '%d warning(s)', 'OK'] \) + +" String format for the echoed message +" A %s is mandatory +" It can contain 2 handlers: %linter%, %severity% +let g:ale_echo_msg_format = get(g:, 'ale_echo_msg_format', '%s') + +" Strings used for severity in the echoed message +let g:ale_echo_msg_error_str = get(g:, 'ale_echo_msg_error_str', 'Error') +let g:ale_echo_msg_warning_str = get(g:, 'ale_echo_msg_warning_str', 'Warning') diff --git a/plugin/ale/cursor.vim b/plugin/ale/cursor.vim index e0751a8c..24f1f183 100644 --- a/plugin/ale/cursor.vim +++ b/plugin/ale/cursor.vim @@ -7,6 +7,23 @@ endif let g:loaded_ale_cursor = 1 +" Return a formatted message according to g:ale_echo_msg_format variable +function! s:GetMessage(linter, type, text) abort + let msg = g:ale_echo_msg_format + let type = a:type ==# 'E' + \ ? g:ale_echo_msg_error_str + \ : g:ale_echo_msg_warning_str + " Capitalize the 1st character + let text = toupper(a:text[0]) . a:text[1:-1] + + " Replace handlers if they exist + for [k, v] in items({'linter': a:linter, 'severity': type}) + let msg = substitute(msg, '\V%' . k . '%', v, '') + endfor + + return printf(msg, text) +endfunction + " This function will perform a binary search to find a message from the " loclist to echo when the cursor moves. function! s:BinarySearch(loclist, line, column) @@ -81,7 +98,9 @@ function! ale#cursor#EchoCursorWarning(...) let index = s:BinarySearch(loclist, pos[1], pos[2]) if index >= 0 - call ale#cursor#TruncatedEcho(loclist[index]['text']) + let l = loclist[index] + let msg = s:GetMessage(l.linter_name, l.type, l.text) + call ale#cursor#TruncatedEcho(msg) else echo endif diff --git a/plugin/ale/zmain.vim b/plugin/ale/zmain.vim index 96d20491..a918f663 100644 --- a/plugin/ale/zmain.vim +++ b/plugin/ale/zmain.vim @@ -137,6 +137,11 @@ function! s:HandleExit(job) " Make some adjustments to the loclists to fix common problems. call s:FixLoclist(buffer, linter_loclist) + " Remember which linter returned these items for later use. + for obj in linter_loclist + let obj.linter_name = linter.name + endfor + if g:ale_buffer_should_reset_map[buffer] let g:ale_buffer_should_reset_map[buffer] = 0 let g:ale_buffer_loclist_map[buffer] = [] |