import sets, sys

import color, mode, lex, lex_c, method, tab_c

class C(mode.Fundamental):
    def __init__(self, w):
        mode.Fundamental.__init__(self, w)

        self.tag_matching = True
        self.grammar      = lex_c.CGrammar()
        self.lexer        = lex.Lexer(self.grammar)

        self.add_bindings('close-paren', (')',))
        self.add_bindings('close-brace', ('}',))
        self.add_bindings('close-bracket', (']',))

        self.default_color = color.build('default', 'default')
        self.colors = {
            'control':       color.build('blue', 'default', 'bold'),
            'keyword':       color.build('cyan', 'default', 'bold'),
            'macro1':        color.build('blue', 'default', 'bold'),
            'macro2':        color.build('blue', 'default', 'bold'),
            'constant':      color.build('magenta', 'default', 'bold'),
            'header':        color.build('green', 'default', 'bold'),
            'label':         color.build('magenta', 'default', 'bold'),
            'char':          color.build('green', 'default'),
            'builtin':       color.build('magenta', 'default', 'bold'),
            'string1':       color.build('green', 'default'),
            'c comment':     color.build('red', 'default'),
            'c++ comment':   color.build('red', 'default'),
            'macro comment': color.build('red', 'default'),
            'function name': color.build('blue', 'default'),
            'integer':       color.build('green', 'default'),
            'float':         color.build('green', 'default'),
            'bizzaro':       color.build('magenta', 'green'),
        }

        self.tabber = tab_c.CTabber(self)

    def name(self):
        return "C"