*vim-prettier.txt*        A prettier plugin for vim.

           -------------------------------------------------------
                 vim-prettier: plugin wrapper for prettier
           -------------------------------------------------------

Author: Mitermayer Reis <mitermayer.reis@gmail.com>
WebSite: https://prettier.io/
Repository: https://github.com/prettier/vim-prettier
License: MIT style license
Version: 1.0.0

==============================================================================
CONTENTS                                                *vim-prettier-contents*

Introduction                                       |vim-prettier-introduction|
Install                                            |vim-prettier-install|
Usage                                              |vim-prettier-usage|
Configuration                                      |vim-prettier-configuration|
Requirements                                       |vim-prettier-requirements|

==============================================================================
INTRODUCTION                                        *vim-prettier-introduction*

A vim plugin wrapper for prettier, pre-configured with 
custom default prettier settings.

By default it will auto format javascript, typescript, less, scss, css,
json, and graphql files that have '@format' annotation in the header of the file.

When installed via vim-plug, a default prettier executable is installed inside
 vim-prettier.

vim-prettier executable resolution:

1. Look for user defined prettier cli path from vim configuration file
2. Traverse parents and search for Prettier installation inside `node_modules`
3. Look for a global prettier installation
4. Use locally installed vim-prettier prettier executable

==============================================================================
INSTALL                                                  *vim-prettier-install*

Install with [vim-plug](https://github.com/junegunn/vim-plug), assumes 
node and yarn|npm installed globally.
>
  Plug 'prettier/vim-prettier', {
	\ 'do': 'yarn install',
	\ 'for': ['javascript', 'typescript', 'css',
	\         'less', 'scss', 'json', 'graphql', 'markdown', 'vue', 'svelte', 'yaml',
	'html'] }
<
or simply enable for all formats by:
>
  Plug 'prettier/vim-prettier', { 'do': 'yarn install' }
<

If using other vim plugin managers or doing manual setup make sure to have 
`prettier` installed globally or go to your vim-prettier directory and 
either do `npm install` or `yarn install` 

==============================================================================
USAGE                                                      *vim-prettier-usage*

Prettier by default will run on auto save but can also 
be manually triggered by:
>
  <Leader>p
<
or
>
  :Prettier
<
If your are on vim 8+ you can also trigger async formatting by:
>
  :PrettierAsync
<
You can check what is the `vim-prettier` plugin version by: 
>
  :PrettierVersion
<
You can send commands to the resolved `prettier` cli by:
>
  :PrettierCli <q-args>
<
You can check what is the resolved `prettier` cli path by:
>
  :PrettierCliPath
<
You can check what is the resolved `prettier` cli version by: 
>
  :PrettierCliVersion

You can send to prettier your entire buffer but ensure that it
formats only your selection.

**note:** differs from `:PrettierFragment` by sending the entire buffer
to prettier, allowing identation level to be preserved, but it requires
the whole file to be valid.
>
  :PrettierPartial

You can send to prettier your current selection as a fragment of same type as
the file being edited.

**note:** differs from `:PrettierPartial` by sending only the current selection
to prettier, this allows for faster formatting but wont preserve indentation.
>
  :PrettierFragment

==============================================================================
CONFIGURATION                                       *vim-prettier-configuration*

Enable auto formatting of files that have "@format" or "@prettier" tag
>
  let g:prettier#autoformat = 1

Enable auto formatting of files based on whether a Prettier configuration file has been
found in the project directory or any parent directories.
>
  let g:prettier#autoformat_config_present = 1

Configuration file names to search for when attempting to find an appropriate
Prettier configuration file for the current project.
>
  let g:prettier#autoformat_config_files = [...]
<
Set the prettier CLI executable path
>
  let g:prettier#exec_cmd_path = "~/path/to/cli/prettier"
<
The command `:Prettier` by default is synchronous but can also be forced async
>
  let g:prettier#exec_cmd_async = 1
<
By default parsing errors will open the quickfix but can also be disabled
>
  let g:prettier#quickfix_enabled  = 1
<
By default we auto focus on the quickfix when there are errors but can also be disabled
>
  let g:prettier#quickfix_auto_focus = 0
<
To enable vim-prettier to auto run in files without requiring the "@format" or "@prettier" doc tag.
First ensure that `g:prettier#autoformat` is not enabled on your `vimrc` (it should be disabled by default), then update to your own custom behaviour

Running before saving sync:
>
  autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.svelte,*.yaml,*.html Prettier
<
Running before saving async (vim 8+):
>
  autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.svelte,*.yaml,*.html PrettierAsync
<
Running before saving, changing text or leaving insert mode: 
>
  " when running at every change you may want to disable quickfix
  let g:prettier#quickfix_enabled = 0
  autocmd BufWritePre,TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.svelte,*.yaml,*.html PrettierAsync
<
Buffer-level custom commands

To use an alternative command, like `prettier-stylelint`, set this at the
buffer level with `b:prettier_exec_cmd`, e.g.:
>
  au FileType css,scss let b:prettier_exec_cmd = "prettier-stylelint"
<
vim-prettier will look for the executable in the same places it looks for
`prettier`, and will fall back to `prettier` if it can't find
`b:prettier_exec_cmd`

Overwrite default prettier configuration

**Note:** vim-prettier default settings differ from prettier intentionally. 
However they can be configured by:
>
  " Max line length that prettier will wrap on: a number or 'auto' (use
  " textwidth).
  " default: 'auto'
  let g:prettier#config#print_width = 'auto'

  " number of spaces per indentation level: a number or 'auto' (use
  " softtabstop)
  " default: 'auto'
  let g:prettier#config#tab_width = 'auto'

  " use tabs instead of spaces: true, false, or auto (use the expandtab setting).
  " default: 'auto'
  let g:prettier#config#use_tabs = 'auto'

  " flow|babylon|typescript|css|less|scss|json|graphql|markdown or empty string
  " (let prettier choose).
  " default: ''
  let g:prettier#config#parser = ''

  " cli-override|file-override|prefer-file
  " default: 'file-override'
  let g:prettier#config#config_precedence = 'file-override'

  " always|never|preserve
  " default: 'preserve'
  let g:prettier#config#prose_wrap = 'preserve'

  " css|strict|ignore
  let g:prettier#config#html_whitespace_sensitivity = 'css'

  " false|true
  " default: 'false'
  " let g:prettier#config#require_pragma = 'false'

  " Define the flavor of line endings
  " lf|crlf|cr|all
  " defaut: 'lf' 
  let g:prettier#config#end_of_line = get(g:, 'prettier#config#end_of_line', 'lf')

==============================================================================
REQUIREMENT(S)                                      *vim-prettier-requirements*

If prettier is not installed locally, globally or inside vim-prettier project 
no code formatting will happen

==============================================================================
vim:tw=78:ts=4:ft=help:norl:noet:fen:noet:
