changeset c35c8b4bfcb7 in /home/hg/repos/gajim-plugins
author: Denis Fomin fominde@gmail.com branches: details:gajim-plugins?cmd=changeset;node=c35c8b4bfcb7 description: Colored traceback plugin. with wrong manifest.ui(for devs)
diffstat:
colored_traceback/__init__.py | 1 + colored_traceback/colored_traceback.png | Bin colored_traceback/colored_traceback.py | 57 ++++++++++++++++++++++++++++++++ colored_traceback/manifest.ini | 8 ++++ 4 файлов изменено, 66 вставок(+), 0 удалений(-)
различия (80 строк):
diff -r 71b93ac2c414 -r c35c8b4bfcb7 colored_traceback/__init__.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/colored_traceback/__init__.py Wed Sep 25 11:00:02 2013 +0400 @@ -0,0 +1,1 @@ +from .colored_traceback import ColoredTracebackPlugin diff -r 71b93ac2c414 -r c35c8b4bfcb7 colored_traceback/colored_traceback.png Binary file colored_traceback/colored_traceback.png has changed diff -r 71b93ac2c414 -r c35c8b4bfcb7 colored_traceback/colored_traceback.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/colored_traceback/colored_traceback.py Wed Sep 25 11:00:02 2013 +0400 @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +## + +from common import gajim +from plugins import GajimPlugin +from plugins.helpers import log_calls +import sys +import os +import traceback +import threading +from cStringIO import StringIO + +have_pygments = True +try: + from pygments import highlight + from pygments.lexers import PythonConsoleLexer + from pygments.formatters import TerminalFormatter + test = PythonConsoleLexer.name + +except ImportError: + have_pygments = False +import catcher + +class ColoredTracebackPlugin(GajimPlugin): + + @log_calls('ColoredTracebackPlugin') + def init(self): + self.config_dialog = None # ColoredTracebackPluginConfigDialog(self) + if not have_pygments: + self.available_text = _('Pygments are not available. ' + 'Install python-pygments.') + self.activatable = False + + @log_calls('ColoredTracebackPlugin') + def activate(self): + # gdb/kdm etc if we use startx this is not True + if os.name == 'nt' or sys.stderr.isatty(): + self._exception_in_progress = threading.Lock() + self._excepthook_save = sys.excepthook + sys.excepthook = self._info + + @log_calls('ColoredTracebackPlugin') + def deactivate(self): + sys.excepthook = self._excepthook_save + + def _info(self, type_, value, tb): + if not self._exception_in_progress.acquire(False): + # Exceptions have piled up, so we use the default exception + # handler for such exceptions + self._excepthook_save(type_, value, tb) + return + trace = StringIO() + traceback.print_exception(type_, value, tb, None, trace) + + print highlight(trace.getvalue(), PythonConsoleLexer(), + TerminalFormatter()) + self._exception_in_progress.release() diff -r 71b93ac2c414 -r c35c8b4bfcb7 colored_traceback/manifest.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/colored_traceback/manifest.ini Wed Sep 25 11:00:02 2013 +0400 @@ -0,0 +1,8 @@ +[info] +name: Colored traceback +short_name: colored_traceback +#version: 0.0.0 +description: colored text for traceback in console +authors: Denis Fomin fominde@gmail.com +homepage: http://trac-plugins.gajim.org/wiki/ +max_gajim_version: 0.16.9