X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/ea5293b0360b6e2e56c004d1e27cbe33c87dcb94..df50fee7fd85018f8db462774512a83031f00322:/docs/the_black_code_style/future_style.md diff --git a/docs/the_black_code_style/future_style.md b/docs/the_black_code_style/future_style.md index b2cdca2..861bb64 100644 --- a/docs/the_black_code_style/future_style.md +++ b/docs/the_black_code_style/future_style.md @@ -47,11 +47,13 @@ with contextlib.ExitStack() as exit_stack: ... ``` +(labels/preview-style)= + ## Preview style Experimental, potentially disruptive style changes are gathered under the `--preview` CLI flag. At the end of each year, these changes may be adopted into the default style, -as described in [The Black Code Style](./index.rst). Because the functionality is +as described in [The Black Code Style](index.md). Because the functionality is experimental, feedback and issue reports are highly encouraged! ### Improved string processing @@ -93,7 +95,6 @@ parentheses are now removed. For example: ```python my_dict = { - my_dict = { "a key in my dict": a_very_long_variable * and_a_very_long_function_call() / 100000.0, @@ -111,3 +112,51 @@ my_dict = { "another key": short_value, } ``` + +### Improved multiline string handling + +_Black_ is smarter when formatting multiline strings, especially in function arguments, +to avoid introducing extra line breaks. Previously, it would always consider multiline +strings as not fitting on a single line. With this new feature, _Black_ looks at the +context around the multiline string to decide if it should be inlined or split to a +separate line. For example, when a multiline string is passed to a function, _Black_ +will only split the multiline string if a line is too long or if multiple arguments are +being passed. + +For example, _Black_ will reformat + +```python +textwrap.dedent( + """\ + This is a + multiline string +""" +) +``` + +to: + +```python +textwrap.dedent("""\ + This is a + multiline string +""") +``` + +And: + +```python +MULTILINE = """ +foobar +""".replace( + "\n", "" +) +``` + +to: + +```python +MULTILINE = """ +foobar +""".replace("\n", "") +```