From 7d6b313065d49d82a7c66a11ecbd4a4d1b1e0147 Mon Sep 17 00:00:00 2001 From: Jon Parise Date: Fri, 10 Mar 2017 08:23:46 -0800 Subject: [PATCH 1/2] Write erlc output files to the temporary directory In particular, if we're working with a leex (.xrl) or yecc (.yrl) source file, erlc would otherwise generate the corresponding .erl file in the current directory (often the project root), which is generally not what we want. Unconditionally writing erlc output to a temporary directory also matches Flycheck's behavior. --- ale_linters/erlang/erlc.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ale_linters/erlang/erlc.vim b/ale_linters/erlang/erlc.vim index 8433d9a1..52bb1d16 100644 --- a/ale_linters/erlang/erlc.vim +++ b/ale_linters/erlang/erlc.vim @@ -3,7 +3,8 @@ let g:ale_erlang_erlc_options = get(g:, 'ale_erlang_erlc_options', '') function! ale_linters#erlang#erlc#GetCommand(buffer) abort - return 'erlc ' . g:ale_erlang_erlc_options . ' %t' + let l:temp_dir = has('win32') ? $TMP : $TMPDIR + return 'erlc -o ' . l:temp_dir . ' ' . g:ale_erlang_erlc_options . ' %t' endfunction function! ale_linters#erlang#erlc#Handle(buffer, lines) abort From f3eab445eeed9ef501df460fad3041df21342825 Mon Sep 17 00:00:00 2001 From: Jon Parise Date: Sat, 11 Mar 2017 19:33:32 -0800 Subject: [PATCH 2/2] Use tempname() to create the temporary output file Also, "manage" this filename so ALE can clean it up. --- ale_linters/erlang/erlc.vim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ale_linters/erlang/erlc.vim b/ale_linters/erlang/erlc.vim index 52bb1d16..871d4c88 100644 --- a/ale_linters/erlang/erlc.vim +++ b/ale_linters/erlang/erlc.vim @@ -3,8 +3,9 @@ let g:ale_erlang_erlc_options = get(g:, 'ale_erlang_erlc_options', '') function! ale_linters#erlang#erlc#GetCommand(buffer) abort - let l:temp_dir = has('win32') ? $TMP : $TMPDIR - return 'erlc -o ' . l:temp_dir . ' ' . g:ale_erlang_erlc_options . ' %t' + let l:output_file = tempname() + call ale#engine#ManageFile(a:buffer, l:output_file) + return 'erlc -o ' . fnameescape(l:output_file) . ' ' . g:ale_erlang_erlc_options . ' %t' endfunction function! ale_linters#erlang#erlc#Handle(buffer, lines) abort