{
    //Debug logging
    "debug_enable": false,

    // Path to find icons at
    "icon_path": "BracketHighlighter/icons",

    // When only either the left or right bracket can be found
    // this defines if the unmatched bracket should be shown.
    "show_unmatched" : true,

    // Do the opposite of "show_unmatched" for the languages listed below
    "show_unmatched_exceptions": [],

    "high_visibility_enabled_by_default": false,

    // (solid|outline|underline)
    "high_visibility_style": "solid",

    // (scope|__default__|__bracket__)
    "high_visibility_color": "__default__",

    "match_only_adjacent": false,

    "search_threshold": 65536,

    // Ignore threshold
    "ignore_threshold": false,

    // Set mode for string escapes to ignore (regex|string)
    "bracket_string_escape_mode": "string",

    // Set max number of multi-select brackets that will be searched automatically
    "auto_selection_threshold" : 10,

    // Disable gutter icons when doing multi-select
    "no_multi_select_icons": false,

    // Rules that define the finding and matching of brackets
    // that are contained in a common scope.
    // Useful for bracket pairs that are the same but
    // share a common scope.  Brackets are found by
    // Finding the extent of the scope and using regex
    // to look at the beginning and end to identify bracket.
    // Use only if they cannot be targeted with traditional bracket
    // rules.
    "scope_brackets": [
        // Quotes
        {
            "name": "py_single_quote",
            "open": "u?r?((?:'')?')",
            "close": "((?:'')?')",
            "style": "single_quote",
            "scopes": ["string"],
            "language_filter": "whitelist",
            "language_list": ["Python"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        {
            "name": "py_double_quote",
            "open": "u?r?((?:\"\")?\")",
            "close": "((?:\"\")?\")",
            "style": "double_quote",
            "scopes": ["string"],
            "language_filter": "whitelist",
            "language_list": ["Python"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        {
            "name": "single_quote",
            "open": "(')",
            "close": "(')",
            "style": "single_quote",
            "scopes": ["string"],
            "language_filter": "blacklist",
            "language_list": ["Plain text"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        {
            "name": "double_quote",
            "open": "(\")",
            "close": "(\")",
            "style": "double_quote",
            "scopes": ["string"],
            "language_filter": "blacklist",
            "language_list": ["Plain text"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        // Regex for different Languages
        {
            "name": "jsregex",
            "open": " *(/)",
            "close": "(/)[igm]*",
            "style": "regex",
            "scopes": ["string"],
            "language_filter": "whitelist",
            "language_list": ["JavaScript"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        {
            "name": "perlregex",
            "open": "(?:m|s|tr)(.|\n)",
            "close": "(.|\n)(?:[igmos]*)",
            "style": "regex",
            "scopes": ["string.regexp"],
            "language_filter": "whitelist",
            "language_list": ["Perl"],
            "sub_bracket_search": "true",
            "enabled": true
        },
        {
            "name": "rubyregex",
            "open": " *(/)",
            "close": "(/)[imxo]*",
            "style": "regex",
            "scopes": ["string"],
            "language_filter": "whitelist",
            "language_list": ["Ruby", "RSpec"],
            "sub_bracket_search": "true",
            "enabled": true
        }
    ],

    // Rule definitions for finding and matching brackets.
    // Brackets are found by using regex and can use scope
    // qualifiers exclude certain matches.
    // Once all matches are found, the closest pair surrounding
    // the cursor are selected.
    "brackets": [
        // Basic brackets
        {
            "name": "curly",
            "open": "(\\{)",
            "close": "(\\})",
            "style": "curly",
            "scope_exclude": ["string", "comment"],
            "scope_exclude_exceptions": ["text.tex string.other.math"],
            "language_filter": "blacklist",
            "language_list": ["Plain text"],
            "find_in_sub_search": "true",
            "ignore_string_escape": true,
            "enabled": true
        },
        {
            "name": "round",
            "open": "(\\()",
            "close": "(\\))",
            "style": "round",
            "scope_exclude_exceptions": ["text.tex string.other.math"],
            "scope_exclude": ["string", "comment", "punctuation.definition.case-pattern.shell"],
            "language_filter": "blacklist",
            "language_list": ["Plain text"],
            "find_in_sub_search": "true",
            "ignore_string_escape": true,
            "enabled": true
        },
        {
            "name": "square",
            "open": "(\\[)",
            "close": "(\\])",
            "style": "square",
            "scope_exclude": ["string", "comment"],
            "scope_exclude_exceptions": ["text.tex string.other.math"],
            "language_filter": "blacklist",
            "language_list": ["Plain text"],
            "find_in_sub_search": "true",
            "ignore_string_escape": true,
            "enabled": true
        },
        // HTML
        {
            "name": "html",
            "open": "(<)(?=[\\w\\:\\-]+(?:(?:\\s+[\\w\\-:]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]+))?)*)\\s*\\/?>|\\/[\\w\\:\\-]+[^>]*>)",
            "close": "(?<=<)(?:[\\w\\:\\-]+(?:(?:\\s+[\\w\\-:]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]+))?)*)\\s*\\/?|\\/[\\w\\:\\-]+[^>]*)(>)",
            "style": "tag",
            "scope_exclude": ["string", "comment"],
            "language_filter": "whitelist",
            "language_list": ["HTML", "HTML 5", "XML", "PHP"],
            "plugin_library": "bh_modules.tags",
            "find_in_sub_search": "only",
            "enabled": false
        },
        // CFML
        {
            "name": "cfml",
            "open": "(<)(?=[\\w\\:\\-]+(?:(?:\\s+[\\w\\-\\.:]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]+))?)*|(?:(?<=cfif)|(?<=cfelseif))[^>]+)\\s*\\/?>|\\/[\\w\\:\\-]+[^>]*>)",
            "close": "(?<=<)(?:[\\w\\:\\-]+(?:(?:\\s+[\\w\\-\\.:]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]+))?)*|(?:(?<=cfif)|(?<=cfelseif))[^>]+)\\s*\\/?|\\/[\\w\\:\\-]+[^>]*)(>)",
            "style": "tag",
            "scope_exclude": ["string", "comment"],
            "language_filter": "whitelist",
            "language_list": ["HTML+CFML", "ColdFusion", "ColdFusionCFC"],
            "plugin_library": "bh_modules.tags",
            "find_in_sub_search": "only",
            "enabled": false
        },
        // Angle
        {
            "name": "angle",
            "open": "(<)(?!\\?)",
            "close": "(?<!\\?)(>)",
            "style": "angle",
            "scope_exclude": ["string", "comment", "keyword.operator", "source.ruby.rails.embedded.html", "source.ruby.embedded.html"],
            "language_filter": "whitelist",
            "language_list": ["HTML", "HTML 5", "XML", "PHP", "HTML (Rails)", "HTML (Jinja Templates)", "HTML (Twig)", "HTML+CFML", "ColdFusion", "ColdFusionCFC", "laravel-blade"],
            "plugin_library": "bh_modules.tags",
            "enabled": true
        },
        // C/C++ compile switches
        {
            "name": "c_compile_switch",
            "open": "(\\#(?:if|ifdef|ifndef))\\b",
            "close": "(\\#endif)\\b",
            "style": "default",
            "scope_exclude": ["string", "comment"],
            "language_filter": "whitelist",
            "language_list": ["C++", "C", "Objective-C"],
            "enabled": true
        },
        //Bash
        {
            "name": "bash",
            "open": "(?:(?<!\\\\\\n)(?:;|^)\\s*)\\b(if|case|while|select|until|for)\\s",
            "close": "(?:(?<!\\\\\\n)(?:;|^)\\s*)\\b(fi|esac|done)(?:\\s|$)",
            "style": "default",
            "scope_exclude": ["string", "comment"],
            "plugin_library": "bh_modules.bashsupport",
            "language_filter": "whitelist",
            "language_list": ["Shell-Unix-Generic"],
            "enabled": true
        }
    ],

    // Define region highlight styles
    "bracket_styles": {
        // "default" and "unmatched" styles are special
        // styles. If they are not defined here,
        // they will be generated internally with
        // internal defaults.

        // "default" style defines attributes that
        // will be used for any style that does not
        // explicitly define that attribute.  So if
        // a style does not define a color, it will
        // use the color from the "default" style.
        "default": {
            "icon": "dot",
            // BH1's original default color for reference
            // "color": "entity.name.class",
            "color": "brackethighlighter.default",
            "style": "underline"
        },

        // This particular style is used to highlight
        // unmatched bracekt pairs.  It is a special
        // style.
        "unmatched": {
            "icon": "question",
            // "color": "brackethighlighter.unmatched",
            "style": "outline"
        },
        // User defined region styles
        "curly": {
            "icon": "curly_bracket"
            // "color": "brackethighlighter.curly",
            // "style": "underline"
        },
        "round": {
            "icon": "round_bracket"
            // "color": "brackethighlighter.round",
            // "style": "underline"
        },
        "square": {
            "icon": "square_bracket"
            // "color": "brackethighlighter.square",
            // "style": "underline"
        },
        "angle": {
            "icon": "angle_bracket"
            // "color": "brackethighlighter.angle",
            // "style": "underline"
        },
        "tag": {
            "icon": "tag",
            // "color": "brackethighlighter.tag",
            "style": "outline"
        },
        "single_quote": {
            "icon": "single_quote"
            // "color": "brackethighlighter.quote",
            // "style": "underline"
        },
        "double_quote": {
            "icon": "double_quote"
            // "color": "brackethighlighter.quote",
            // "style": "underline"
        },
        "regex": {
            "icon": "regex"
            // "color": "brackethighlighter.quote",
            // "style": "underline"
        }
    },

    /* Plugin settings */

    // Style to use for matched tags
    "tag_style": "tag",

    // Scopes to exclude from tag searches
    "tag_scope_exclude": ["string", "comment"],

    // Determine which style of tag-matching to use in which syntax
    "tag_mode": {
        "xhtml": ["XML"],
        "html": ["HTML", "HTML 5", "PHP", "HTML (Jinja Templates)", "HTML (Rails)", "HTML (Twig)", "laravel-blade"],
        "cfml": ["HTML+CFML", "ColdFusion", "ColdFusionCFC"]
    }
}
