forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathJumpToDefManager.js
More file actions
1 lines (1 loc) · 2.53 KB
/
JumpToDefManager.js
File metadata and controls
1 lines (1 loc) · 2.53 KB
1
define(function(require,exports,module){const Commands=require("command/Commands"),Strings=require("strings"),AppInit=require("utils/AppInit"),CommandManager=require("command/CommandManager"),EditorManager=require("editor/EditorManager"),Editor=require("editor/Editor").Editor,ProviderRegistrationHandler=require("features/PriorityBasedRegistration").RegistrationHandler,JUMP_TO_DEF_MARKER="jumpMarker";let _providerRegistrationHandler=new ProviderRegistrationHandler,registerJumpToDefProvider=_providerRegistrationHandler.registerProvider.bind(_providerRegistrationHandler),removeJumpToDefProvider=_providerRegistrationHandler.removeProvider.bind(_providerRegistrationHandler);function _getJumpToDefProvider(editor,position=null){let jumpToDefProvider=null,language=editor.getLanguageForSelection(),enabledProviders;return _providerRegistrationHandler.getProvidersForLanguageId(language.getId()).some(function(item,index){if(!item.provider.canJumpToDef||item.provider.canJumpToDef(editor,position))return jumpToDefProvider=item.provider,!0}),jumpToDefProvider}function _doJumpToDef(){let request=null,result=new $.Deferred,editor=EditorManager.getActiveEditor();if(!editor)return result.reject(),result.promise();let jumpToDefProvider=_getJumpToDefProvider(editor);return jumpToDefProvider&&(request=jumpToDefProvider.doJumpToDef(editor))?(request.done(function(){result.resolve()}).fail(function(){result.reject()}),result.promise()):(result.reject(),result.promise())}function _clearHoverMarkers(editor){editor&&editor.hoverMarksPresent&&(editor.clearAllMarks(JUMP_TO_DEF_MARKER),editor.hoverMarksPresent=!1)}function _drawHoverMarkers(editor,pos){if(editor){let jumpToDefProvider;_clearHoverMarkers(editor),_getJumpToDefProvider(editor,pos)&&(editor.markToken(JUMP_TO_DEF_MARKER,pos,Editor.getMarkOptionHyperlinkText()),editor.hoverMarksPresent=!0)}}function _hoverMarkersOnMouseMove(evt){let editor=EditorManager.getHoveredEditor(evt);if(_clearHoverMarkers(editor),editor&&(evt.ctrlKey||evt.metaKey)){let pos=editor.coordsChar({left:evt.clientX,top:evt.clientY});if(pos.ch>=editor.document.getLine(pos.line).length)return;_drawHoverMarkers(editor,pos)}}AppInit.appReady(function(){let editorHolder=$("#editor-holder")[0];editorHolder.addEventListener("mousemove",_hoverMarkersOnMouseMove,!0),editorHolder.addEventListener("keyup",_hoverMarkersOnMouseMove,!0)}),CommandManager.register(Strings.CMD_JUMPTO_DEFINITION,Commands.NAVIGATE_JUMPTO_DEFINITION,_doJumpToDef),exports.registerJumpToDefProvider=registerJumpToDefProvider,exports.removeJumpToDefProvider=removeJumpToDefProvider});