From 76df2d393b6b79f1f0d3095589e7f3ac90de2b40 Mon Sep 17 00:00:00 2001 From: w0rp Date: Sat, 4 Mar 2017 23:55:12 +0000 Subject: [PATCH] Fix detailed messages with newline characters --- autoload/ale/cursor.vim | 9 ++++++--- test/test_cursor_warnings.vader | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/autoload/ale/cursor.vim b/autoload/ale/cursor.vim index cd9593c..ad580b9 100644 --- a/autoload/ale/cursor.vim +++ b/autoload/ale/cursor.vim @@ -23,16 +23,19 @@ function! s:EchoWithShortMess(setting, message) abort let l:shortmess_options = getbufvar('%', '&shortmess') try - " Turn shormess on or off. + " Turn shortmess on or off. if a:setting ==# 'on' setlocal shortmess+=T + " echomsg is neede for the message to get truncated and appear in + " the message history. + exec "norm! :echomsg a:message\n" elseif a:setting ==# 'off' setlocal shortmess-=T + " Regular echo is needed for printing newline characters. + echo a:message else throw 'Invalid setting: ' . string(a:setting) endif - - exec "norm! :echomsg a:message\n" finally call setbufvar('%', '&shortmess', l:shortmess_options) endtry diff --git a/test/test_cursor_warnings.vader b/test/test_cursor_warnings.vader index 5e37036..09081b1 100644 --- a/test/test_cursor_warnings.vader +++ b/test/test_cursor_warnings.vader @@ -11,7 +11,7 @@ Before: \ 'nr': -1, \ 'type': 'E', \ 'text': 'Missing semicolon. (semi)', - \ 'detail': 'Every statement should end with a semicolon' + \ 'detail': "Every statement should end with a semicolon\nsecond line" \ }, \ { \ 'lnum': 2, @@ -61,6 +61,8 @@ After: let g:ale_buffer_info = {} + unlet! g:output + delfunction GetLastMessage mess clear @@ -104,12 +106,18 @@ Execute(The message at the cursor should be shown on InsertLeave): Execute(ALEDetail should print 'detail' attributes): call cursor(1, 1) - ALEDetail - AssertEqual "Every statement should end with a semicolon", GetLastMessage() + redir => g:output + ALEDetail + redir END + + AssertEqual "\nEvery statement should end with a semicolon\nsecond line", g:output Execute(ALEDetail should print regular 'text' attributes): call cursor(2, 10) - ALEDetail - AssertEqual "Infix operators must be spaced. (space-infix-ops)", GetLastMessage() + redir => g:output + ALEDetail + redir END + + AssertEqual "\nInfix operators must be spaced. (space-infix-ops)", g:output