Allow to pass the FileMode options in the vim plugin (#1319)
This commit is contained in:
parent
31a9d8a184
commit
09915f4bd2
@ -7,6 +7,10 @@
|
||||
- Remove dependency on aiohttp-cors (#2500)
|
||||
- Bump required aiohttp version to 3.7.4 (#2509)
|
||||
|
||||
### Integrations
|
||||
|
||||
- Allow to pass `target_version` in the vim plugin (#1319)
|
||||
|
||||
## 21.9b0
|
||||
|
||||
### Packaging
|
||||
|
@ -98,13 +98,47 @@ if _initialize_black_env():
|
||||
import black
|
||||
import time
|
||||
|
||||
def Black():
|
||||
def get_target_version(tv):
|
||||
if isinstance(tv, black.TargetVersion):
|
||||
return tv
|
||||
ret = None
|
||||
try:
|
||||
ret = black.TargetVersion[tv.upper()]
|
||||
except KeyError:
|
||||
print(f"WARNING: Target version {tv!r} not recognized by Black, using default target")
|
||||
return ret
|
||||
|
||||
def Black(**kwargs):
|
||||
"""
|
||||
kwargs allows you to override ``target_versions`` argument of
|
||||
``black.FileMode``.
|
||||
|
||||
``target_version`` needs to be cleaned because ``black.FileMode``
|
||||
expects the ``target_versions`` argument to be a set of TargetVersion enums.
|
||||
|
||||
Allow kwargs["target_version"] to be a string to allow
|
||||
to type it more quickly.
|
||||
|
||||
Using also target_version instead of target_versions to remain
|
||||
consistent to Black's documentation of the structure of pyproject.toml.
|
||||
"""
|
||||
start = time.time()
|
||||
configs = get_configs()
|
||||
|
||||
black_kwargs = {}
|
||||
if "target_version" in kwargs:
|
||||
target_version = kwargs["target_version"]
|
||||
|
||||
if not isinstance(target_version, (list, set)):
|
||||
target_version = [target_version]
|
||||
target_version = set(filter(lambda x: x, map(lambda tv: get_target_version(tv), target_version)))
|
||||
black_kwargs["target_versions"] = target_version
|
||||
|
||||
mode = black.FileMode(
|
||||
line_length=configs["line_length"],
|
||||
string_normalization=not configs["skip_string_normalization"],
|
||||
is_pyi=vim.current.buffer.name.endswith('.pyi'),
|
||||
**black_kwargs,
|
||||
)
|
||||
quiet = configs["quiet"]
|
||||
|
||||
@ -160,8 +194,17 @@ def BlackVersion():
|
||||
|
||||
EndPython3
|
||||
|
||||
function black#Black()
|
||||
:py3 Black()
|
||||
function black#Black(...)
|
||||
let kwargs = {}
|
||||
for arg in a:000
|
||||
let arg_list = split(arg, '=')
|
||||
let kwargs[arg_list[0]] = arg_list[1]
|
||||
endfor
|
||||
python3 << EOF
|
||||
import vim
|
||||
kwargs = vim.eval("kwargs")
|
||||
EOF
|
||||
:py3 Black(**kwargs)
|
||||
endfunction
|
||||
|
||||
function black#BlackUpgrade()
|
||||
|
@ -116,6 +116,8 @@ Wing supports black via the OS Commands tool, as explained in the Wing documenta
|
||||
Commands and shortcuts:
|
||||
|
||||
- `:Black` to format the entire file (ranges not supported);
|
||||
- you can optionally pass `target_version=<version>` with the same values as in the
|
||||
command line.
|
||||
- `:BlackUpgrade` to upgrade _Black_ inside the virtualenv;
|
||||
- `:BlackVersion` to get the current version of _Black_ inside the virtualenv.
|
||||
|
||||
|
@ -53,8 +53,20 @@ endif
|
||||
if !exists("g:black_quiet")
|
||||
let g:black_quiet = 0
|
||||
endif
|
||||
if !exists("g:black_target_version")
|
||||
let g:black_target_version = ""
|
||||
endif
|
||||
|
||||
function BlackComplete(ArgLead, CmdLine, CursorPos)
|
||||
return [
|
||||
\ 'target_version=py27',
|
||||
\ 'target_version=py36',
|
||||
\ 'target_version=py37',
|
||||
\ 'target_version=py38',
|
||||
\ 'target_version=py39',
|
||||
\ ]
|
||||
endfunction
|
||||
|
||||
command! Black :call black#Black()
|
||||
command! -nargs=* -complete=customlist,BlackComplete Black :call black#Black(<f-args>)
|
||||
command! BlackUpgrade :call black#BlackUpgrade()
|
||||
command! BlackVersion :call black#BlackVersion()
|
||||
|
Loading…
Reference in New Issue
Block a user