code: function _recordJumpDef(event, selectionObj) {
          // Don't capture frames if we are navigating or document text is being refreshed(fileSync in progress)
          if (jumpInProgress || (event.target && event.target.document._refreshInProgress)) {
              return;
          }
          // Reset forward navigation stack if we are capturing a new event
          jumpForwardStack = [];
          if (captureTimer) {
              window.clearTimeout(captureTimer);
              captureTimer = null;
          }
          
          // Ensure cursor activity has not happened because of arrow keys or edit
          if (selectionObj.origin !== "+move" && (!window.event || window.event.type !== "input")) {
              captureTimer = window.setTimeout(function () {
                  // Check if we have reached MAX_NAV_FRAMES_COUNT
                  // If yes, control overflow
                  if (jumpBackwardStack.length === MAX_NAV_FRAMES_COUNT) {
                      var navFrame = jumpBackwardStack.shift();
                      navFrame._clearMarkers();
                  }
  
                  currentEditPos = new NavigationFrame(event.target, selectionObj);
                  jumpBackwardStack.push(currentEditPos);
                  _validateNavigationCmds();
                  activePosNotSynced = false;
              }, NAV_FRAME_CAPTURE_LATENCY);
          } else {
              activePosNotSynced = true;
          }
      }
docs: Function to capture a non-zero set of selections as a navigation frame.
  The assumptions behind capturing a frame as a navigation frame are :
  
  -> If it's set by user explicitly (using mouse click or jump to definition)
  -> By clicking on search results
  -> Change of cursor by keyboard navigation keys or actual edits are not captured.
  
  @private