{
  "autoClosingPairs": [
    { "open": "{", "close": "}" },
    { "open": "[", "close": "]" },
    { "open": "(", "close": ")" },
    { "open": "\"", "close": "\"", "notIn": ["string"] },
    { "open": "(*", "close": "*", "notIn": ["string"] },
    { "open": "[|", "close": "|", "notIn": ["string"] },
    { "open": "{|", "close": "|", "notIn": ["string"] }
  ],
  "brackets": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"],
    ["[|", "|]"],
    ["{|", "|}"]
  ],
  "comments": {
    "blockComment": ["(*", "*)"]
  },
  "surroundingPairs": [
    ["{", "}"],
    ["[", "]"],
    ["(", ")"],
    ["'", "'"],
    ["\"", "\""]
  ],
  "indentationRules": {
    "decreaseIndentPattern": "^\\s*(end|done|with|in|else)\\b|^\\s*;;",
    "increaseIndentPattern": "\\b(begin|object)\\s*$|\\b(let|and)([$&*+\\-/=>@^|<][!?$&*+\\-/=>@^|%:]*)? [a-zA-Z0-9'_-]+( [^ ]+)* =\\s*$|method!?[ \\t]+.*=[ \\t]*$|->[ \\t]*$|\\b(for|while)(_lwt)?[ \\t]+.*[ \\t]+do[ \\t]*$|(\\btry(_lwt)?$|\\bif\\s+.*\\sthen$|\\belse|[:=]\\s*sig|=\\s*struct)\\s*$",
    "indentNextLinePattern": "(?!\\bif.*then.*(else.*|(;|[ \\t]in)[ \\t]*$))\\bif|\\bthen[ \\t]*$|\\belse[ \\t]*$$"
  },
  "onEnterRules": [
    {
      "beforeText": "\\(\\*\\*",
      "afterText": "\\*\\)",
      "action": {
        "indent": "none",
        "appendText": "    "
      }
    },
    {
      "beforeText": "\\(\\*",
      "afterText": "\\*\\)",
      "action": {
        "indent": "none",
        "appendText": "   "
      }
    }
  ]
}
