Example #1
0
class DisassemblyLexer(Lexer):
    def __init__(self, window):
        self.window = window
        self.lexer = PygmentsLexer(CObjdumpLexer, sync_from_start=False)

    def lex_document(self, document):
        lexer_lex_line = self.lexer.lex_document(document)
        def fixup(t):
            return t.replace('/', '$').replace('^', '#')
        def lex_line(lineno):
            parts = lexer_lex_line(lineno)
            parts = [(s, fixup(t)) for (s,t) in parts]
            return parts
        return lex_line
Example #2
0
File: lexer.py Project: pg83/zm
class PtpythonLexer(Lexer):
    """
    Lexer for ptpython input.

    If the input starts with an exclamation mark, use a Bash lexer, otherwise,
    use a Python 3 lexer.
    """
    def __init__(self, python_lexer: Optional[Lexer] = None) -> None:
        self.python_lexer = python_lexer or PygmentsLexer(PythonLexer)
        self.system_lexer = PygmentsLexer(BashLexer)

    def lex_document(
            self, document: Document) -> Callable[[int], StyleAndTextTuples]:
        if document.text.startswith("!"):
            return self.system_lexer.lex_document(document)

        return self.python_lexer.lex_document(document)
Example #3
0
class LineItemsLexer(Lexer):
    def __init__(self, window):
        self.window = window
        self.lexer = PygmentsLexer(CLexer, sync_from_start=False)
        super(LineItemsLexer, self).__init__()

    def lex_document(self, document):
        lexer_lex_line = self.lexer.lex_document(document)

        def lex_line(lineno):
            parts = lexer_lex_line(lineno)
            changed = self.window.changed
            if lineno < len(changed) and changed[lineno]:
                parts = [('bold fg:Olive', t) for (s, t) in parts]
            return parts

        return lex_line
Example #4
0
class CallstackLexer(Lexer):
    def __init__(self):
        super(CallstackLexer, self).__init__()
        self.lexer = PygmentsLexer(CLexer, sync_from_start=False)

    def lex_document(self, document):
        lexer_lex_line = self.lexer.lex_document(document)

        def lex_line(lineno):
            if lineno % 2 == 0:
                parts = lexer_lex_line(lineno)
                if len(parts) > 0:
                    parts[-1] = ('bold fg:Olive', parts[-1][1])
                return parts
            else:
                return [('italic fg:DarkOliveGreen', document.lines[lineno])]

        return lex_line
Example #5
0
class ThreadsLexer(Lexer):
    def __init__(self):
        super(ThreadsLexer, self).__init__()
        self.lexer = PygmentsLexer(CLexer, sync_from_start=False)

    def lex_document(self, document):
        lexer_lex_line = self.lexer.lex_document(document)

        def lex_line(lineno):
            line = document.lines[lineno]
            if len(document.lines) > 1 and len(line) > 1 and line[1] != ' ':
                parts = lexer_lex_line(lineno)
                if len(parts) > 0:
                    parts[-1] = ('bold fg:Olive', parts[-1][1])
                if line[0] == '*':
                    idx = 0 if lineno == 0 else 1
                    parts[idx] = ('reverse ' + parts[idx][0], parts[idx][1])

                return parts
            else:
                return [('bold italic fg:DarkOliveGreen',
                         document.lines[lineno])]

        return lex_line
Example #6
0
class BreakpointsLexer(Lexer):
    def __init__(self):
        super(BreakpointsLexer, self).__init__()
        self.lexer = PygmentsLexer(CLexer, sync_from_start=False)

    def lex_document(self, document):
        lexer_lex_line = self.lexer.lex_document(document)

        def lex_line(lineno):
            line = document.lines[lineno]
            if line.strip().startswith('at'):
                return [('bold italic fg:DarkOliveGreen',
                         document.lines[lineno])]
            parts = lexer_lex_line(lineno)
            for i in range(0, len(parts)):
                if parts[i][1] == '*':
                    parts[i] = (parts[i][0] + ' reverse ', parts[i][1])
                elif parts[i][1] == 'in':
                    parts[i + 2] = ('bold fg:Olive', parts[i + 2][1])
                elif parts[i][1] == 'hit':
                    parts[i + 2] = ('bold ' + parts[i + 2][0], parts[i + 2][1])
            return parts

        return lex_line