       unquote(doc) in [:doc_nil, :doc_line] or
       (is_tuple(unquote(doc)) and
        elem(unquote(doc), 0) in [:doc_string, :doc_cons, :doc_nest, :doc_break, :doc_group,
-                                 :doc_color, :doc_force_break, :doc_cancel_break])
+                                 :doc_color, :doc_force, :doc_cancel])
     end
   end
 

  defp format(w, k, [{i, m, doc_color(x, c)} | t]),     do: [ansi(c) | format(w, k, [{i, m, x} | t])]
  defp format(w, k, [{_, _, doc_string(s, l)} | t]),    do: [s | format(w, k + l, t)]
  defp format(w, k, [{_, _, s} | t]) when is_binary(s), do: [s | format(w, k + byte_size(s), t)]
  defp format(w, k, [{i, m, doc_force_break(x)} | t]),  do: format(w, k, [{i, m, x} | t])
  defp format(w, k, [{i, m, doc_cancel_break(x)} | t]), do: format(w, k, [{i, m, x} | t])

  # Flex breaks are not conditional to the mode
  defp format(w, k, [{i, _, doc_break(s, :flex)} | t]) do

  @tail_separator " |"
  @newline "\n"
  @break :flex
  @cancel_break :enabled

  # Functional interface to "doc" records

