Merge branch 'jpmv27-add_formatters_formatdef_overrides'
This commit is contained in:
commit
f6fabad46f
16
README.md
16
README.md
@ -107,7 +107,7 @@ To print the currently selected formatter use `:CurrentFormatter`.
|
|||||||
These latter commands are mostly useful for debugging purposes.
|
These latter commands are mostly useful for debugging purposes.
|
||||||
If you have a composite filetype with dots (like `django.python` or `php.wordpress`),
|
If you have a composite filetype with dots (like `django.python` or `php.wordpress`),
|
||||||
vim-autoformat first tries to detect and use formatters for the exact original filetype, and
|
vim-autoformat first tries to detect and use formatters for the exact original filetype, and
|
||||||
then tries the same for all supertypes occuring from left to right in the original filetype
|
then tries the same for all supertypes occurring from left to right in the original filetype
|
||||||
separated by dots (`.`).
|
separated by dots (`.`).
|
||||||
|
|
||||||
## Default formatprograms
|
## Default formatprograms
|
||||||
@ -118,7 +118,7 @@ Here is a list of formatprograms that are supported by default, and thus will be
|
|||||||
Clang-format is a product of LLVM source builds.
|
Clang-format is a product of LLVM source builds.
|
||||||
If you `brew install llvm`, clang-format can be found in /usr/local/Cellar/llvm/bin/.
|
If you `brew install llvm`, clang-format can be found in /usr/local/Cellar/llvm/bin/.
|
||||||
Vim-autoformat checks whether there exists a `.clang-format` or a `_clang-format` file up in
|
Vim-autoformat checks whether there exists a `.clang-format` or a `_clang-format` file up in
|
||||||
the current directory's ancestry. Based on that it eithers uses that file or tries to match
|
the current directory's ancestry. Based on that it either uses that file or tries to match
|
||||||
vim options as much as possible.
|
vim options as much as possible.
|
||||||
Details: http://clang.llvm.org/docs/ClangFormat.html.
|
Details: http://clang.llvm.org/docs/ClangFormat.html.
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ If you need a formatter that is not among the defaults, or if you are not satisf
|
|||||||
#### Basic definitions
|
#### Basic definitions
|
||||||
|
|
||||||
The formatprograms that available for a certain `<filetype>` are defined in `g:formatters_<filetype>`.
|
The formatprograms that available for a certain `<filetype>` are defined in `g:formatters_<filetype>`.
|
||||||
This is a list containing string indentifiers, which point to corresponding formatter definitions.
|
This is a list containing string identifiers, which point to corresponding formatter definitions.
|
||||||
The formatter definitions themselves are defined in `g:formatdef_<identifier>` as a string
|
The formatter definitions themselves are defined in `g:formatdef_<identifier>` as a string
|
||||||
expression.
|
expression.
|
||||||
Defining any of these variable manually in your .vimrc, will override the default value, if existing.
|
Defining any of these variable manually in your .vimrc, will override the default value, if existing.
|
||||||
@ -265,6 +265,16 @@ If you have a composite filetype with dots (like `django.python` or `php.wordpre
|
|||||||
vim-autoformat internally replaces the dots with underscores so you can specify formatters
|
vim-autoformat internally replaces the dots with underscores so you can specify formatters
|
||||||
through `g:formatters_django_python` and so on.
|
through `g:formatters_django_python` and so on.
|
||||||
|
|
||||||
|
To override these options for a local buffer, use the buffer local variants:
|
||||||
|
`b:formatters_<filetype>` and `b:formatdef_<identifier>`. This can be useful, for example, when
|
||||||
|
working with different projects with conflicting formatting rules, with each project having settings
|
||||||
|
in its own vimrc or exrc file:
|
||||||
|
|
||||||
|
```vim
|
||||||
|
let b:formatdef_custom_c='"astyle --mode=c --suffix=none --options=/home/user/special_project/astylerc"'
|
||||||
|
let b:formatters_c = ['custom_c']
|
||||||
|
```
|
||||||
|
|
||||||
#### Ranged definitions
|
#### Ranged definitions
|
||||||
|
|
||||||
If your format program supports formatting specific ranges, you can provide a format
|
If your format program supports formatting specific ranges, you can provide a format
|
||||||
|
@ -33,7 +33,10 @@ function! s:find_formatters(...)
|
|||||||
" Detect configuration for all possible ftypes
|
" Detect configuration for all possible ftypes
|
||||||
let b:formatters = []
|
let b:formatters = []
|
||||||
for supertype in ftypes
|
for supertype in ftypes
|
||||||
let formatters_var = "g:formatters_".supertype
|
let formatters_var = "b:formatters_".supertype
|
||||||
|
if !exists(formatters_var)
|
||||||
|
let formatters_var = "g:formatters_".supertype
|
||||||
|
endif
|
||||||
if !exists(formatters_var)
|
if !exists(formatters_var)
|
||||||
" No formatters defined
|
" No formatters defined
|
||||||
if verbose
|
if verbose
|
||||||
@ -42,7 +45,7 @@ function! s:find_formatters(...)
|
|||||||
else
|
else
|
||||||
let formatters = eval(formatters_var)
|
let formatters = eval(formatters_var)
|
||||||
if type(formatters) != type([])
|
if type(formatters) != type([])
|
||||||
echoerr formatter_var." is not a list"
|
echoerr formatters_var." is not a list"
|
||||||
else
|
else
|
||||||
let b:formatters = b:formatters + formatters
|
let b:formatters = b:formatters + formatters
|
||||||
endif
|
endif
|
||||||
@ -88,8 +91,11 @@ function! s:TryAllFormatters(...) range
|
|||||||
let s:index = b:current_formatter_index
|
let s:index = b:current_formatter_index
|
||||||
|
|
||||||
while 1
|
while 1
|
||||||
let formatdef_var = 'g:formatdef_'.b:formatters[s:index]
|
|
||||||
" Formatter definition must be existent
|
" Formatter definition must be existent
|
||||||
|
let formatdef_var = 'b:formatdef_'.b:formatters[s:index]
|
||||||
|
if !exists(formatdef_var)
|
||||||
|
let formatdef_var = 'g:formatdef_'.b:formatters[s:index]
|
||||||
|
endif
|
||||||
if !exists(formatdef_var)
|
if !exists(formatdef_var)
|
||||||
echoerr "No format definition found in '".formatdef_var."'."
|
echoerr "No format definition found in '".formatdef_var."'."
|
||||||
return 0
|
return 0
|
||||||
|
Loading…
Reference in New Issue
Block a user