summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-12-26 18:15:51 +0000
committerw0rp <devw0rp@gmail.com>2017-12-26 18:15:59 +0000
commitc165c7c5d11eb827a3be6bab691f20eeb6f6e487 (patch)
treef4ccc2a397183ecca239e32e585c2f9cf7478a79
parent48cae6afc473173fd0ad6764f96dc01cbdc09544 (diff)
downloadale-c165c7c5d11eb827a3be6bab691f20eeb6f6e487.zip
Fix #1251 - Handle an empty list in the line callback when NeoVim crashes
-rw-r--r--autoload/ale/job.vim2
-rw-r--r--test/test_line_join.vader6
2 files changed, 7 insertions, 1 deletions
diff --git a/autoload/ale/job.vim b/autoload/ale/job.vim
index 2e0b8ca2..9cebcf5b 100644
--- a/autoload/ale/job.vim
+++ b/autoload/ale/job.vim
@@ -36,7 +36,7 @@ function! ale#job#JoinNeovimOutput(job, last_line, data, mode, callback) abort
let l:lines[0] = a:last_line . l:lines[0]
let l:new_last_line = a:data[-1]
else
- let l:new_last_line = a:last_line . a:data[0]
+ let l:new_last_line = a:last_line . get(a:data, 0, '')
endif
for l:line in l:lines
diff --git a/test/test_line_join.vader b/test/test_line_join.vader
index c93b192f..25cefbcf 100644
--- a/test/test_line_join.vader
+++ b/test/test_line_join.vader
@@ -17,6 +17,12 @@ After:
delfunction LineCallback
delfunction RawCallback
+Execute (ALE should handle empty Lists for the lines):
+ let g:last_line = ale#job#JoinNeovimOutput(1, '', [], 'nl', function('LineCallback'))
+
+ AssertEqual [], g:lines
+ AssertEqual '', g:last_line
+
Execute (ALE should pass on full lines for NeoVim):
let g:last_line = ale#job#JoinNeovimOutput(1, '', ['x', 'y', ''], 'nl', function('LineCallback'))