   @spaced [?_, ?*]
 
   # Clauses for handling spaces
-  defp handle_inline(<<?*, ?*, ?\s, rest :: binary>>, nil, buffer, acc) do
-    handle_inline(rest, nil, [?\s, ?*, ?*|buffer], acc)
-  end
-
-  defp handle_inline(<<mark, ?\s, rest :: binary>>, nil, buffer, acc) when mark in @spaced do
-    handle_inline(rest, nil, [?\s, mark|buffer], acc)
-  end
-
-  defp handle_inline(<<?\s, ?*, ?*, rest :: binary>>, limit, buffer, acc) do
-    handle_inline(rest, limit, [?*, ?*, ?\s|buffer], acc)
-  end
-
-  defp handle_inline(<<?\s, mark, rest :: binary>>, limit, buffer, acc) when mark in @spaced do
-    handle_inline(rest, limit, [mark, ?\s|buffer], acc)
+  defp handle_inline(<<?*, ?*, ?\s, rest :: binary>>, nil, buffer, acc, colors) do
+    handle_inline(rest, nil, [?\s, ?*, ?*|buffer], acc, colors)
+  end
+
+  defp handle_inline(<<mark, ?\s, rest :: binary>>, nil, buffer, acc, colors) when mark in @spaced do
+    handle_inline(rest, nil, [?\s, mark|buffer], acc, colors)
+  end
+
+  defp handle_inline(<<?\s, ?*, ?*, rest :: binary>>, limit, buffer, acc, colors) do
+    handle_inline(rest, limit, [?*, ?*, ?\s|buffer], acc, colors)
+  end
+
+  defp handle_inline(<<?\s, mark, rest :: binary>>, limit, buffer, acc, colors) when mark in @spaced do
+    handle_inline(rest, limit, [mark, ?\s|buffer], acc, colors)
   end
 
   # Clauses for handling escape
-  defp handle_inline(<<?\\, ?\\, rest :: binary>>, limit, buffer, acc) do
-    handle_inline(rest, limit, [?\\|buffer], acc)
-  end
-
-  defp handle_inline(<<?\\, ?*, ?*, rest :: binary>>, limit, buffer, acc) do
-    handle_inline(rest, limit, [?*, ?*|buffer], acc)
+  defp handle_inline(<<?\\, ?\\, rest :: binary>>, limit, buffer, acc, colors) do
+    handle_inline(rest, limit, [?\\|buffer], acc, colors)
+  end
+
+  defp handle_inline(<<?\\, ?*, ?*, rest :: binary>>, limit, buffer, acc, colors) do
+    handle_inline(rest, limit, [?*, ?*|buffer], acc, colors)
   end
 
   # A escape is not valid inside `
-  defp handle_inline(<<?\\, mark, rest :: binary>>, limit, buffer, acc)
+  defp handle_inline(<<?\\, mark, rest :: binary>>, limit, buffer, acc, colors)
       when mark in [?_, ?*, ?`] and not(mark == limit and mark == ?`) do
-    handle_inline(rest, limit, [mark|buffer], acc)
+    handle_inline(rest, limit, [mark|buffer], acc, colors)
   end
 
   # Inline start
-  defp handle_inline(<<?*, ?*, rest :: binary>>, nil, buffer, acc) when rest != "" do
-    handle_inline(rest, ?d, ["**"], [Enum.reverse(buffer)|acc])
-  end
-
-  defp handle_inline(<<mark, rest :: binary>>, nil, buffer, acc) when rest != "" and mark in @single do
-    handle_inline(rest, mark, [<<mark>>], [Enum.reverse(buffer)|acc])
+  defp handle_inline(<<?*, ?*, rest :: binary>>, nil, buffer, acc, colors) when rest != "" do
+    handle_inline(rest, ?d, ["**"], [Enum.reverse(buffer)|acc], colors)
+  end
+
+  defp handle_inline(<<mark, rest :: binary>>, nil, buffer, acc, colors) when rest != "" and mark in @single do
+    handle_inline(rest, mark, [<<mark>>], [Enum.reverse(buffer)|acc], colors)
   end
 
   # Inline end
-  defp handle_inline(<<?*, ?*, rest :: binary>>, ?d, buffer, acc) do
-    handle_inline(rest, nil, [], [inline_buffer(buffer)|acc])
-  end
-
-  defp handle_inline(<<mark, rest :: binary>>, mark, buffer, acc) when mark in @single do
-    handle_inline(rest, nil, [], [inline_buffer(buffer)|acc])
-  end
-
-  defp handle_inline(<<char, rest :: binary>>, mark, buffer, acc) do
-    handle_inline(rest, mark, [char|buffer], acc)
-  end
-
-  defp handle_inline(<<>>, _mark, buffer, acc) do
+  defp handle_inline(<<?*, ?*, rest :: binary>>, ?d, buffer, acc, colors) do
+    handle_inline(rest, nil, [], [inline_buffer(buffer, colors)|acc], colors)
+  end
+
+  defp handle_inline(<<mark, rest :: binary>>, mark, buffer, acc, colors) when mark in @single do
+    handle_inline(rest, nil, [], [inline_buffer(buffer, colors)|acc], colors)
+  end
+
+  defp handle_inline(<<char, rest :: binary>>, mark, buffer, acc, colors) do
+    handle_inline(rest, mark, [char|buffer], acc, colors)
+  end
+
+  defp handle_inline(<<>>, _mark, buffer, acc, _colors) do
     iolist_to_binary Enum.reverse([Enum.reverse(buffer)|acc])
   end
 
-  defp inline_buffer(buffer) do
+  defp inline_buffer(buffer, _colors) do
     [h|t] = Enum.reverse([IO.ANSI.reset|buffer])
     [color_for(h)|t]
   end


  ## Helpers

  defp write(style, string, colors // IEx.Options.get(:colors)) do
    color =  colors[style]
    enabled = colors[:enabled]
    seq_color = IO.ANSI.escape_fragment("%{#{color}}", enabled)

    process_text(rest, [line | para], indent, from_list, colors)
  end

  defp write_text(lines, indent, from_list, colors) do
    lines
    |> Enum.join(" ")
    |> handle_links
    |> handle_inline(nil, [], [], colors)
    |> String.split(%r{\s})
    |> write_with_wrap(column_width() - size(indent), indent, from_list)

