function getAutoCompleteType()

in public/src/autocomplete.js [242:311]


  function getAutoCompleteType(pos) {
    // return "method", "path" or "body" to determine auto complete type.

    var rowMode = editor.parser.getRowParseMode(pos.row);

    //noinspection JSBitwiseOperatorUsage
    if (rowMode & editor.parser.MODE.IN_REQUEST) {
      return "body";
    }
    //noinspection JSBitwiseOperatorUsage
    if (rowMode & editor.parser.MODE.REQUEST_START) {
      // on url path, url params or method.
      var tokenIter = editor.iterForPosition(pos.row, pos.column);
      var t = tokenIter.getCurrentToken();

      while (t.type == "url.comma") {
        t = tokenIter.stepBackward();
      }
      switch (t.type) {
        case "method":
          return "method";
        case "whitespace":
          t = editor.parser.prevNonEmptyToken(tokenIter);

          switch ((t || {}).type) {
            case "method":
              // we moved one back
              return "path";
              break;
            default:
              if (isUrlPathToken(t)) {
                return "path";
              }
              if (isUrlParamsToken(t)) {
                return "url_params";
              }
              return null;
          }
          break;
        default:
          if (isUrlPathToken(t)) {
            return "path";
          }
          if (isUrlParamsToken(t)) {
            return "url_params";
          }
          return null;
      }
    }

    // after start to avoid single line url only requests
    //noinspection JSBitwiseOperatorUsage
    if (rowMode & editor.parser.MODE.REQUEST_END) {
      return "body"
    }

    // in between request on an empty
    if ((editor.getSession().getLine(pos.row) || "").trim() === "") {
      // check if the previous line is a single line begging of a new request
      rowMode = editor.parser.getRowParseMode(pos.row - 1);
      //noinspection JSBitwiseOperatorUsage
      if ((rowMode & editor.parser.MODE.REQUEST_START) && (rowMode & editor.parser.MODE.REQUEST_END)) {
        return "body";
      }
      //o.w suggest a method
      return "method";
    }

    return null;
  }