You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
11 years ago
|
#!/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)
|