]> git.madduck.net Git - etc/vim.git/commitdiff

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:

wrap atoms in invisible parens to split adjacent strings (#463)
authorJelle Zijlstra <jelle.zijlstra@gmail.com>
Wed, 22 Aug 2018 04:10:59 +0000 (21:10 -0700)
committerGitHub <noreply@github.com>
Wed, 22 Aug 2018 04:10:59 +0000 (21:10 -0700)
README.md
black.py
tests/data/cantfit.py

index 9cb4f18c901e60c29e387c189d8e7bdeb6f81797..e9937f1296c97e2f569f6d5b39e0d8e8d6966213 100644 (file)
--- a/README.md
+++ b/README.md
@@ -849,6 +849,8 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
 
 ### 18.8b0
 
+* adjacent string literals are now correctly split into multiple lines (#463)
+
 * code with `_` in numeric literals is recognized as Python 3.6+ (#461)
 
 * numeric literals are now normalized to include `_` separators on Python 3.6+ code
index 5550b23102025e4e11dc1a4bfe4fda2b7a1c3d83..85cb45bded5cd7794d6d69bc2f4adea22aa10dda 100644 (file)
--- a/black.py
+++ b/black.py
@@ -2587,7 +2587,11 @@ def normalize_invisible_parens(node: Node, parens_after: Set[str]) -> None:
     for index, child in enumerate(list(node.children)):
         if check_lpar:
             if child.type == syms.atom:
-                maybe_make_parens_invisible_in_atom(child)
+                if maybe_make_parens_invisible_in_atom(child):
+                    lpar = Leaf(token.LPAR, "")
+                    rpar = Leaf(token.RPAR, "")
+                    index = child.remove() or 0
+                    node.insert_child(index, Node(syms.atom, [lpar, child, rpar]))
             elif is_one_tuple(child):
                 # wrap child in visible parentheses
                 lpar = Leaf(token.LPAR, "(")
@@ -2695,7 +2699,11 @@ def generate_ignored_nodes(leaf: Leaf) -> Iterator[LN]:
 
 
 def maybe_make_parens_invisible_in_atom(node: LN) -> bool:
-    """If it's safe, make the parens in the atom `node` invisible, recursively."""
+    """If it's safe, make the parens in the atom `node` invisible, recursively.
+
+    Returns whether the node should itself be wrapped in invisible parentheses.
+
+    """
     if (
         node.type != syms.atom
         or is_empty_tuple(node)
@@ -2713,9 +2721,9 @@ def maybe_make_parens_invisible_in_atom(node: LN) -> bool:
         last.value = ""  # type: ignore
         if len(node.children) > 1:
             maybe_make_parens_invisible_in_atom(node.children[1])
-        return True
+        return False
 
-    return False
+    return True
 
 
 def is_empty_tuple(node: LN) -> bool:
index e15e69cf94e22018779d54ecc8335ef42720c169..2a7cde348840ef7b1244b4924066b79680fdf1e2 100644 (file)
@@ -35,6 +35,7 @@ for key in """
 """.split():
     if key in self.connect_kwargs:
         raise ValueError(err.format(key))
+concatenated_strings = "some strings that are" "concatenated implicitly, so if you put them on separate" "lines it will fit"
 
 
 # output
@@ -85,3 +86,8 @@ for key in """
 """.split():
     if key in self.connect_kwargs:
         raise ValueError(err.format(key))
+concatenated_strings = (
+    "some strings that are"
+    "concatenated implicitly, so if you put them on separate"
+    "lines it will fit"
+)