From b9fb62a4cd302486914403e41676e78b4cfdf0e3 Mon Sep 17 00:00:00 2001 From: Andrey Popp <8mayday@gmail.com> Date: Sun, 4 Nov 2018 20:10:36 +0300 Subject: Make ocamlformat work without temporary files Problem: ocamlformat is configured to format files in-place and thus go via creating a temporary file for that. Because temporary file resides in a different directory ocamlformat can't find `.ocamlformat` configuration files in an original location of source files. Solution: ocamlformat since version 0.8 can read sources on stdin and spur result on stdout. We reconfigure ocamlformat to use a simpler interface. --- autoload/ale/fixers/ocamlformat.vim | 6 +++--- test/fixers/test_ocamlformat_fixer_callback.vader | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/autoload/ale/fixers/ocamlformat.vim b/autoload/ale/fixers/ocamlformat.vim index fac142aa..9b7c3e12 100644 --- a/autoload/ale/fixers/ocamlformat.vim +++ b/autoload/ale/fixers/ocamlformat.vim @@ -5,14 +5,14 @@ call ale#Set('ocaml_ocamlformat_executable', 'ocamlformat') call ale#Set('ocaml_ocamlformat_options', '') function! ale#fixers#ocamlformat#Fix(buffer) abort + let l:filename = expand('#' . a:buffer . ':p') let l:executable = ale#Var(a:buffer, 'ocaml_ocamlformat_executable') let l:options = ale#Var(a:buffer, 'ocaml_ocamlformat_options') return { \ 'command': ale#Escape(l:executable) \ . (empty(l:options) ? '' : ' ' . l:options) - \ . ' --inplace' - \ . ' %t', - \ 'read_temporary_file': 1, + \ . ' --name=' . ale#Escape(l:filename) + \ . ' -' \} endfunction diff --git a/test/fixers/test_ocamlformat_fixer_callback.vader b/test/fixers/test_ocamlformat_fixer_callback.vader index d2aee066..f0c36ed7 100644 --- a/test/fixers/test_ocamlformat_fixer_callback.vader +++ b/test/fixers/test_ocamlformat_fixer_callback.vader @@ -18,10 +18,9 @@ Execute(The ocamlformat callback should return the correct default values): AssertEqual \ { - \ 'read_temporary_file': 1, \ 'command': ale#Escape('xxxinvalid') - \ . ' --inplace' - \ . ' %t', + \ . ' --name=' . ale#Escape(bufname(bufnr(''))) + \ . ' -', \ }, \ ale#fixers#ocamlformat#Fix(bufnr('')) @@ -31,10 +30,9 @@ Execute(The ocamlformat callback should include custom ocamlformat options): AssertEqual \ { - \ 'read_temporary_file': 1, \ 'command': ale#Escape('xxxinvalid') \ . ' ' . g:ale_ocaml_ocamlformat_options - \ . ' --inplace' - \ . ' %t', + \ . ' --name=' . ale#Escape(bufname(bufnr(''))) + \ . ' -', \ }, \ ale#fixers#ocamlformat#Fix(bufnr('')) -- cgit v1.2.3