summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fixers/prettier.vim10
-rw-r--r--test/fixers/test_prettier_fixer_callback.vader28
2 files changed, 37 insertions, 1 deletions
diff --git a/autoload/ale/fixers/prettier.vim b/autoload/ale/fixers/prettier.vim
index 58dea159..95932474 100644
--- a/autoload/ale/fixers/prettier.vim
+++ b/autoload/ale/fixers/prettier.vim
@@ -47,6 +47,15 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version_output) abort
" Append the --parser flag depending on the current filetype (unless it's
" already set in g:javascript_prettier_options).
if empty(expand('#' . a:buffer . ':e')) && match(l:options, '--parser') == -1
+ " Mimic Prettier's defaults. In cases without a file extension or
+ " filetype (scratch buffer), Prettier needs `parser` set to know how
+ " to process the buffer.
+ if ale#semver#GTE(l:version, [1, 16, 0])
+ let l:parser = 'babel'
+ else
+ let l:parser = 'babylon'
+ endif
+
let l:prettier_parsers = {
\ 'typescript': 'typescript',
\ 'css': 'css',
@@ -60,7 +69,6 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version_output) abort
\ 'yaml': 'yaml',
\ 'html': 'html',
\}
- let l:parser = ''
for l:filetype in split(getbufvar(a:buffer, '&filetype'), '\.')
if has_key(l:prettier_parsers, l:filetype)
diff --git a/test/fixers/test_prettier_fixer_callback.vader b/test/fixers/test_prettier_fixer_callback.vader
index 7f25471b..05ed421e 100644
--- a/test/fixers/test_prettier_fixer_callback.vader
+++ b/test/fixers/test_prettier_fixer_callback.vader
@@ -96,6 +96,34 @@ Execute(The version number should be cached):
\ },
\ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), [])
+Execute(Should set --parser to `babylon` by default, < 1.16.0):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=javascript
+
+ AssertEqual
+ \ {
+ \ 'command': ale#path#CdString(expand('%:p:h'))
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser babylon'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])
+
+Execute(Should set --parser to `babel` by default, >= 1.16.0):
+ call ale#test#SetFilename('../prettier-test-files/testfile')
+
+ set filetype=javascript
+
+ AssertEqual
+ \ {
+ \ 'command': ale#path#CdString(expand('%:p:h'))
+ \ . ale#Escape(g:ale_javascript_prettier_executable)
+ \ . ' --parser babel'
+ \ . ' --stdin-filepath %s --stdin',
+ \ },
+ \ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.16.0'])
+
Execute(Should set --parser based on filetype, TypeScript):
call ale#test#SetFilename('../prettier-test-files/testfile')