docs: def format_traceback(extracted_tb,
                       exc_type,
                       exc_value,
                       cwd='',
                       term=None,
                       function_color=12,
                       dim_color=8,
                       editor='vi',
                       template=DEFAULT_EDITOR_SHORTCUT_TEMPLATE):
      """Return an iterable of formatted Unicode traceback frames.
  
      Also include a pseudo-frame at the end representing the exception itself.
  
      Format things more compactly than the stock formatter, and make every
      frame an editor shortcut.
  
      """
      def format_shortcut(editor,
                          path,
                          line_number,
                          function=None):
          """Return a pretty-printed editor shortcut."""
          return template.format(editor=editor,
                                 line_number=line_number or 0,
                                 path=path,
                                 function=function or u'',
                                 hash_if_function=u'  # ' if function else u'',
                                 function_format=term.color(function_color),
                                 # Underline is also nice and doesn't make us
                                 # worry about appearance on different background
                                 # colors.
                                 normal=term.normal,
                                 dim_format=term.color(dim_color) + term.bold,
                                 line_number_max_width=line_number_max_width,
                                 term=term)
  
      template += '\n'  # Newlines are awkward to express on the command line.
      extracted_tb = _unicode_decode_extracted_tb(extracted_tb)
      if not term:
          term = Terminal()
  
      if extracted_tb:
          # Shorten file paths:
          for i, (file, line_number, function, text) in enumerate(extracted_tb):
              extracted_tb[i] = human_path(src(file), cwd), line_number, function, text
  
          line_number_max_width = len(unicode(max(the_line for _, the_line, _, _ in extracted_tb)))
  
          # Stack frames:
          for i, (path, line_number, function, text) in enumerate(extracted_tb):
              text = (text and text.strip()) or u''
  
              yield (format_shortcut(editor, path, line_number, function) +
                     (u'    %s\n' % text))
  
      # Exception:
      if exc_type is SyntaxError:
          # Format a SyntaxError to look like our other traceback lines.
          # SyntaxErrors have a format different from other errors and include a
          # file path which looks out of place in our newly highlit, editor-
          # shortcutted world.
          if hasattr(exc_value, 'filename') and hasattr(exc_value, 'lineno'):
              exc_lines = [format_shortcut(editor, exc_value.filename, exc_value.lineno)]
              formatted_exception = format_exception_only(SyntaxError, exc_value)[1:]
          else:
              # The logcapture plugin may format exceptions as strings,
              # stripping them of the full filename and lineno
              exc_lines = []
              formatted_exception = format_exception_only(SyntaxError, exc_value)
              formatted_exception.append(u'(Try --nologcapture for a more detailed traceback)\n')
      else:
          exc_lines = []
          formatted_exception = format_exception_only(exc_type, exc_value)
      exc_lines.extend([_decode(f) for f in formatted_exception])
      yield u''.join(exc_lines)