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:
" Author: Łukasz Langa
" Created: Mon Mar 26 23:27:53 2018 -0700
" Requires: Vim Ver7.0+
" Author: Łukasz Langa
" Created: Mon Mar 26 23:27:53 2018 -0700
" Requires: Vim Ver7.0+
"
" Documentation:
" This plugin formats Python files.
"
" Documentation:
" This plugin formats Python files.
" History:
" 1.0:
" - initial version
" History:
" 1.0:
" - initial version
+" 1.1:
+" - restore cursor/window position after formatting
if v:version < 700 || !has('python3')
echo "This script requires vim7.0+ with Python 3.6 support."
if v:version < 700 || !has('python3')
echo "This script requires vim7.0+ with Python 3.6 support."
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
+endif
python3 << endpython3
import sys
python3 << endpython3
import sys
if upgrade:
print('Upgrading Black with pip...')
if first_install or upgrade:
if upgrade:
print('Upgrading Black with pip...')
if first_install or upgrade:
- subprocess.run([str(_get_pip(virtualenv_path)), 'install', '-U', 'black'])
+ subprocess.run([str(_get_pip(virtualenv_path)), 'install', '-U', 'black'], stdout=subprocess.PIPE)
print('DONE! You are all set, thanks for waiting ✨ 🍰 ✨')
if first_install:
print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n')
print('DONE! You are all set, thanks for waiting ✨ 🍰 ✨')
if first_install:
print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n')
start = time.time()
fast = bool(int(vim.eval("g:black_fast")))
line_length = int(vim.eval("g:black_linelength"))
start = time.time()
fast = bool(int(vim.eval("g:black_fast")))
line_length = int(vim.eval("g:black_linelength"))
+ mode = black.FileMode.AUTO_DETECT
+ if bool(int(vim.eval("g:black_skip_string_normalization"))):
+ mode |= black.FileMode.NO_STRING_NORMALIZATION
+ if vim.current.buffer.name.endswith('.pyi'):
+ mode |= black.FileMode.PYI
buffer_str = '\n'.join(vim.current.buffer) + '\n'
try:
buffer_str = '\n'.join(vim.current.buffer) + '\n'
try:
- new_buffer_str = black.format_file_contents(buffer_str, line_length=line_length, fast=fast)
+ new_buffer_str = black.format_file_contents(buffer_str, line_length=line_length, fast=fast, mode=mode)
except black.NothingChanged:
print(f'Already well formatted, good job. (took {time.time() - start:.4f}s)')
except Exception as exc:
print(exc)
else:
except black.NothingChanged:
print(f'Already well formatted, good job. (took {time.time() - start:.4f}s)')
except Exception as exc:
print(exc)
else:
+ cursor = vim.current.window.cursor
vim.current.buffer[:] = new_buffer_str.split('\n')[:-1]
vim.current.buffer[:] = new_buffer_str.split('\n')[:-1]
+ vim.current.window.cursor = cursor
print(f'Reformatted in {time.time() - start:.4f}s.')
def BlackUpgrade():
print(f'Reformatted in {time.time() - start:.4f}s.')
def BlackUpgrade():
command! Black :py3 Black()
command! BlackUpgrade :py3 BlackUpgrade()
command! BlackVersion :py3 BlackVersion()
command! Black :py3 Black()
command! BlackUpgrade :py3 BlackUpgrade()
command! BlackVersion :py3 BlackVersion()
-
-nmap ,= :Black<CR>
-vmap ,= :Black<CR>