#!/usr/bin/env python # encoding: utf-8 """Convenience methods that help with debugging. They should never be used in production code.""" import sys from UltiSnips.compatibility import as_unicode DUMP_FILENAME = "/tmp/file.txt" if not sys.platform.lower().startswith("win") \ else "C:/windows/temp/ultisnips.txt" with open(DUMP_FILENAME, "w"): pass # clears the file def echo_to_hierarchy(text_object): """Outputs the given 'text_object' and its children hierarchically.""" # pylint:disable=protected-access parent = text_object while parent._parent: parent = parent._parent def _do_print(text_object, indent=""): """prints recursively.""" debug(indent + as_unicode(text_object)) try: for child in text_object._children: _do_print(child, indent=indent + " ") except AttributeError: pass _do_print(parent) def debug(msg): """Dumb 'msg' into the debug file.""" msg = as_unicode(msg) with open(DUMP_FILENAME, "ab") as dump_file: dump_file.write((msg + '\n').encode("utf-8")) def print_stack(): """Dump a stack trace into the debug file.""" import traceback with open(DUMP_FILENAME, "ab") as dump_file: traceback.print_stack(file=dump_file)