Skip to content

Block with long list of block vars doesn't get split onto multiple lines #433

Open
@dom-binti

Description

@dom-binti

Blocks with a long list of vars doesn't get split. Eg:

query do |long_arg:, longer_arg:, longerest_arg:, longerester_arg:, very_long_long_long_arg:|
  foo
end

isn't changed when run through stree format.

I started by writing my own plugin for BlockVar adding a group and a couple breakable_emptys, which works and produces output that conforms with line length:

query do |
  long_arg:,
  longer_arg:,
  longerest_arg:,
  longerester_arg:,
  very_long_long_long_arg:
|
  foo
end

The plugin has an issue though with blocks passed to methods with their own long list of args. In its current state, syntax_tree formats it like this:

foo(
  argument,
  argument,
  argument,
  argument,
  argument,
  argument,
  argument,
) { |val| bar }

With the plugin I wrote, that ends up being formatted as

foo(argument, argument, argument, argument, argument, argument, argument) do |
  val
|
  bar
end

presumably because the block var groups are the outermost, and therefore get split first.

Is there a way to tell syntax_tree to break the method call before breaking the block vars?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions