]>
git.madduck.net Git - etc/vim.git/blobdiff - plugin/black.vim
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
" - restore cursor/window position after formatting
if v:version < 700 || !has('python3')
" - restore cursor/window position after formatting
if v:version < 700 || !has('python3')
- echo "The black.vim plugin requires vim7.0+ with Python 3.6 support."
+ func! __BLACK_MISSING()
+ echo "The black.vim plugin requires vim7.0+ with Python 3.6 support."
+ endfunc
+ command! Black :call __BLACK_MISSING()
+ command! BlackUpgrade :call __BLACK_MISSING()
+ command! BlackVersion :call __BLACK_MISSING()
if !exists("g:black_linelength")
let g:black_linelength = 88
endif
if !exists("g:black_linelength")
let g:black_linelength = 88
endif
-if !exists("g:black_skip_string_normalization")
- let g:black_skip_string_normalization = 0
+if !exists("g:black_string_normalization")
+ if exists("g:black_skip_string_normalization")
+ let g:black_string_normalization = !g:black_skip_string_normalization
+ else
+ let g:black_string_normalization = 1
+ endif
+endif
+if !exists("g:black_quiet")
+ let g:black_quiet = 0
import collections
import os
import sys
import vim
import collections
import os
import sys
import vim
+from distutils.util import strtobool
class Flag(collections.namedtuple("FlagBase", "name, cast")):
class Flag(collections.namedtuple("FlagBase", "name, cast")):
name = self.var_name
if name == "line_length":
name = name.replace("_", "")
name = self.var_name
if name == "line_length":
name = name.replace("_", "")
- if name == "string_normalization":
- name = "skip_" + name
return "g:black_" + name
FLAGS = [
Flag(name="line_length", cast=int),
return "g:black_" + name
FLAGS = [
Flag(name="line_length", cast=int),
- Flag(name="fast", cast=bool),
- Flag(name="string_normalization", cast=bool),
+ Flag(name="fast", cast=strtobool),
+ Flag(name="string_normalization", cast=strtobool),
+ Flag(name="quiet", cast=strtobool),
return venv_path / 'lib' / f'python{pyver[0]}.{pyver[1]}' / 'site-packages'
def _initialize_black_env(upgrade=False):
return venv_path / 'lib' / f'python{pyver[0]}.{pyver[1]}' / 'site-packages'
def _initialize_black_env(upgrade=False):
- pyver = sys.version_info[:2 ]
- if pyver < (3, 6):
- print("Sorry, Black requires Python 3.6+ to run.")
+ pyver = sys.version_info[:3 ]
+ if pyver < (3, 6, 2 ):
+ print("Sorry, Black requires Python 3.6.2 + to run.")
return False
from pathlib import Path
return False
from pathlib import Path
if not virtualenv_path.is_dir():
print('Please wait, one time setup for Black.')
_executable = sys.executable
if not virtualenv_path.is_dir():
print('Please wait, one time setup for Black.')
_executable = sys.executable
+ _base_executable = getattr(sys, "_base_executable", _executable)
- sys.executable = str(_get_python_binary(Path(sys.exec_prefix)))
+ executable = str(_get_python_binary(Path(sys.exec_prefix)))
+ sys.executable = executable
+ sys._base_executable = executable
print(f'Creating a virtualenv in {virtualenv_path}...')
print('(this path can be customized in .vimrc by setting g:black_virtualenv)')
venv.create(virtualenv_path, with_pip=True)
print(f'Creating a virtualenv in {virtualenv_path}...')
print('(this path can be customized in .vimrc by setting g:black_virtualenv)')
venv.create(virtualenv_path, with_pip=True)
+ except Exception:
+ print('Encountered exception while creating virtualenv (see traceback below).')
+ print(f'Removing {virtualenv_path}...')
+ import shutil
+ shutil.rmtree(virtualenv_path)
+ raise
finally:
sys.executable = _executable
finally:
sys.executable = _executable
+ sys._base_executable = _base_executable
first_install = True
if first_install:
print('Installing Black with pip...')
first_install = True
if first_install:
print('Installing Black with pip...')
if first_install:
print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n')
if virtualenv_site_packages not in sys.path:
if first_install:
print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n')
if virtualenv_site_packages not in sys.path:
- sys.path.append( virtualenv_site_packages)
+ sys.path.insert(0, virtualenv_site_packages)
return True
if _initialize_black_env():
return True
if _initialize_black_env():
string_normalization=configs["string_normalization"],
is_pyi=vim.current.buffer.name.endswith('.pyi'),
)
string_normalization=configs["string_normalization"],
is_pyi=vim.current.buffer.name.endswith('.pyi'),
)
+ quiet = configs["quiet"]
buffer_str = '\n'.join(vim.current.buffer) + '\n'
try:
buffer_str = '\n'.join(vim.current.buffer) + '\n'
try:
mode=mode,
)
except black.NothingChanged:
mode=mode,
)
except black.NothingChanged:
- print(f'Already well formatted, good job. (took {time.time() - start:.4f}s)')
+ if not quiet:
+ print(f'Already well formatted, good job. (took {time.time() - start:.4f}s)')
except Exception as exc:
print(exc)
else:
except Exception as exc:
print(exc)
else:
window.cursor = cursor
except vim.error:
window.cursor = (len(window.buffer), 0)
window.cursor = cursor
except vim.error:
window.cursor = (len(window.buffer), 0)
- print(f'Reformatted in {time.time() - start:.4f}s.')
+ if not quiet:
+ print(f'Reformatted in {time.time() - start:.4f}s.')
def get_configs():
path_pyproject_toml = black.find_pyproject_toml(vim.eval("fnamemodify(getcwd(), ':t')"))
def get_configs():
path_pyproject_toml = black.find_pyproject_toml(vim.eval("fnamemodify(getcwd(), ':t')"))
toml_config = {}
return {
toml_config = {}
return {
- flag.var_name: toml_config.get(flag.name, flag.cast( vim.eval(flag.vim_rc_name)))
+ flag.var_name: flag.cast(toml_config.get(flag.name, vim.eval(flag.vim_rc_name)))
def BlackVersion():
print(f'Black, version {black.__version__} on Python {sys.version}.')
def BlackVersion():
print(f'Black, version {black.__version__} on Python {sys.version}.')
command! Black :py3 Black()
command! BlackUpgrade :py3 BlackUpgrade()
command! Black :py3 Black()
command! BlackUpgrade :py3 BlackUpgrade()