code: function popUpHint(editor, explicit, onCursorActivity) {
          var request = null;
          var $deferredPopUp = $.Deferred();
          var sessionProvider = null;
  
          dismissHint(editor);
          // Find a suitable provider, if any
          var language = editor.getLanguageForSelection(),
              enabledProviders = _providerRegistrationHandler.getProvidersForLanguageId(language.getId());
  
          enabledProviders.some(function (item, index) {
              if (item.provider.hasParameterHints(editor, lastChar)) {
                  sessionProvider = item.provider;
                  return true;
              }
          });
  
          if (sessionProvider) {
              request = sessionProvider.getParameterHints(explicit, onCursorActivity);
          }
  
          if (request) {
              request.done(function (parameterHint) {
                  var cm = editor._codeMirror,
                      pos = parameterHint.functionCallPos || editor.getCursorPos();
  
                  pos = cm.charCoords(pos);
                  formatHint(parameterHint);
  
                  $hintContainer.show();
                  positionHint(pos.left, pos.top, pos.bottom);
                  hintState.visible = true;
  
                  sessionEditor = editor;
                  editor.on("cursorActivity.ParameterHinting", handleCursorActivity);
                  $deferredPopUp.resolveWith(null);
              }).fail(function () {
                  hintState = {};
              });
          }
  
          return $deferredPopUp;
      }
docs: Pop up a function hint on the line above the caret position.
  
  @param {object=} editor - current Active Editor
  @param {boolean} True if hints are invoked through cursor activity.
  @return {jQuery.Promise} - The promise will not complete until the
  hint has completed. Returns null, if the function hint is already
  displayed or there is no function hint at the cursor.