X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/e196180a0dec49549565850239831d4420464623..d4f05217546dd98f81ca472aa00e68d978c900f4:/plugin/black.vim?ds=sidebyside

diff --git a/plugin/black.vim b/plugin/black.vim
index c5c663c..0a26aa0 100644
--- a/plugin/black.vim
+++ b/plugin/black.vim
@@ -2,7 +2,7 @@
 " Author: Łukasz Langa
 " Created: Mon Mar 26 23:27:53 2018 -0700
 " Requires: Vim Ver7.0+
-" Version:  1.0
+" Version:  1.1
 "
 " Documentation:
 "   This plugin formats Python files.
@@ -10,6 +10,8 @@
 " 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."
@@ -30,6 +32,9 @@ 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
@@ -94,15 +99,20 @@ def Black():
   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
   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:
+    cursor = vim.current.window.cursor
     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():
@@ -116,6 +126,3 @@ endpython3
 command! Black :py3 Black()
 command! BlackUpgrade :py3 BlackUpgrade()
 command! BlackVersion :py3 BlackVersion()
-
-nmap ,= :Black<CR>
-vmap ,= :Black<CR>