@@ -209,9 +209,9 @@ defmodule Inspect.Algebra do
209
209
quote do: { :doc_break , unquote ( break ) , unquote ( mode ) }
210
210
end
211
211
212
- @ typep doc_group :: { :doc_group , t }
213
- defmacrop doc_group ( group ) do
214
- quote do: { :doc_group , unquote ( group ) }
212
+ @ typep doc_group :: { :doc_group , t , :inherit | :self }
213
+ defmacrop doc_group ( group , mode ) do
214
+ quote do: { :doc_group , unquote ( group ) , unquote ( mode ) }
215
215
end
216
216
217
217
@ typep doc_fits :: { :doc_fits , t , :enabled | :disabled }
@@ -695,8 +695,8 @@ defmodule Inspect.Algebra do
695
695
696
696
"""
697
697
@ spec group ( t ) :: doc_group
698
- def group ( doc ) when is_doc ( doc ) do
699
- doc_group ( doc )
698
+ def group ( doc , mode \\ :self ) when is_doc ( doc ) do
699
+ doc_group ( doc , mode )
700
700
end
701
701
702
702
@ doc ~S"""
@@ -812,12 +812,12 @@ defmodule Inspect.Algebra do
812
812
defp fits? ( _ , _ , [ ] ) , do: true
813
813
814
814
defp fits? ( w , k , [ { i , _ , doc_fits ( x , :disabled ) } | t ] ) , do: fits? ( w , k , [ { i , :no_fitting , x } | t ] )
815
- defp fits? ( w , k , [ { i , :no_fitting , doc_group ( x ) } | t ] ) , do: fits? ( w , k , [ { i , :no_fitting , x } | t ] )
815
+ defp fits? ( w , k , [ { i , :no_fitting , doc_group ( x , _ ) } | t ] ) , do: fits? ( w , k , [ { i , :no_fitting , x } | t ] )
816
816
defp fits? ( w , k , [ { i , :no_fitting , doc_fits ( x , _ ) } | t ] ) , do: fits? ( w , k , [ { i , :no_fitting , x } | t ] )
817
817
818
818
defp fits? ( w , k , [ { i , _ , doc_fits ( x , :enabled ) } | t ] ) , do: fits? ( w , k , [ { i , :next_fits , x } | t ] )
819
819
defp fits? ( w , k , [ { i , :next_fits , doc_force ( x ) } | t ] ) , do: fits? ( w , k , [ { i , :next_fits , x } | t ] )
820
- defp fits? ( w , k , [ { i , :next_fits , doc_group ( x ) } | t ] ) , do: fits? ( w , k , [ { i , :next_fits , x } | t ] )
820
+ defp fits? ( w , k , [ { i , :next_fits , doc_group ( x , _ ) } | t ] ) , do: fits? ( w , k , [ { i , :next_fits , x } | t ] )
821
821
defp fits? ( _ , _ , [ { _ , :next_fits , doc_break ( _ , _ ) } | _ ] ) , do: true
822
822
defp fits? ( _ , _ , [ { _ , :next_fits , :doc_line } | _ ] ) , do: true
823
823
@@ -828,7 +828,7 @@ defmodule Inspect.Algebra do
828
828
defp fits? ( w , k , [ { i , m , doc_color ( x , _ ) } | t ] ) , do: fits? ( w , k , [ { i , m , x } | t ] )
829
829
defp fits? ( w , k , [ { i , m , doc_nest ( x , _ , :break ) } | t ] ) , do: fits? ( w , k , [ { i , m , x } | t ] )
830
830
defp fits? ( w , k , [ { i , m , doc_nest ( x , j , _ ) } | t ] ) , do: fits? ( w , k , [ { apply_nesting ( i , k , j ) , m , x } | t ] )
831
- defp fits? ( w , k , [ { i , _ , doc_group ( x ) } | t ] ) , do: fits? ( w , k , [ { i , :flat , x } | t ] )
831
+ defp fits? ( w , k , [ { i , _ , doc_group ( x , _ ) } | t ] ) , do: fits? ( w , k , [ { i , :flat , x } | t ] )
832
832
defp fits? ( w , k , [ { _ , _ , doc_string ( _ , l ) } | t ] ) , do: fits? ( w , k + l , t )
833
833
defp fits? ( w , k , [ { _ , _ , s } | t ] ) when is_binary ( s ) , do: fits? ( w , k + byte_size ( s ) , t )
834
834
defp fits? ( _ , _ , [ { _ , _ , doc_force ( _ ) } | _ ] ) , do: false
@@ -877,7 +877,11 @@ defmodule Inspect.Algebra do
877
877
end
878
878
879
879
# Groups must do the fitting decision.
880
- defp format ( w , k , [ { i , _ , doc_group ( x ) } | t ] ) do
880
+ defp format ( w , k , [ { i , :break , doc_group ( x , :inherit ) } | t ] ) do
881
+ format ( w , k , [ { i , :break , x } | t ] )
882
+ end
883
+
884
+ defp format ( w , k , [ { i , _ , doc_group ( x , _ ) } | t ] ) do
881
885
if w == :infinity or fits? ( w , k , [ { i , :flat , x } ] ) do
882
886
format ( w , k , [ { i , :flat , x } | t ] )
883
887
else
0 commit comments