whole_func_string: function(type, content, textAfter, state) {
                    if (this.jsonMode) {
                      return /^[\[,{]$/.test(content) || /^}/.test(textAfter);
                    } else {
                      if (content == ";" && state.lexical && state.lexical.type == ")") return false;
                      return /^[;{}]$/.test(content) && !/^;/.test(textAfter);
                    }
                  }
func_code_string: function(type, content, textAfter, state) {
                    if (this.jsonMode) {
                      return /^[\[,{]$/.test(content) || /^}/.test(textAfter);
                    } else {
                      if (content == ";" && state.lexical && state.lexical.type == ")") return false;
                      return /^[;{}]$/.test(content) && !/^;/.test(textAfter);
                    }
                  }
func_documentation_string: FIXME semicolons inside of for