forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.js
More file actions
1 lines (1 loc) · 3.77 KB
/
Copy pathmain.js
File metadata and controls
1 lines (1 loc) · 3.77 KB
1
define(function(require,exports,module){var MultiRangeInlineEditor=brackets.getModule("editor/MultiRangeInlineEditor").MultiRangeInlineEditor,EditorManager=brackets.getModule("editor/EditorManager"),JSUtils=brackets.getModule("language/JSUtils"),LanguageManager=brackets.getModule("language/LanguageManager"),PerfUtils=brackets.getModule("utils/PerfUtils"),ProjectManager=brackets.getModule("project/ProjectManager"),Strings=brackets.getModule("strings"),Metrics=brackets.getModule("utils/Metrics");function _getFunctionName(hostEditor,pos){var token=hostEditor._codeMirror.getTokenAt(pos,!0);return/\S/.test(token.string)&&"."!==token.string||(token=hostEditor._codeMirror.getTokenAt({line:pos.line,ch:pos.ch+1},!0)),"variable"!==token.type&&"variable-2"!==token.type&&"property"!==token.type?{functionName:null,reason:Strings.ERROR_JSQUICKEDIT_FUNCTIONNOTFOUND}:{functionName:token.string,reason:null}}function _findInProject(functionName){var result=new $.Deferred;function _nonBinaryFileFilter(file){return!LanguageManager.getLanguageForPath(file.fullPath).isBinary()}return PerfUtils.markStart(PerfUtils.JAVASCRIPT_FIND_FUNCTION),ProjectManager.getAllFiles(_nonBinaryFileFilter).done(function(files){JSUtils.findMatchingFunctions(functionName,files).done(function(functions){PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_FIND_FUNCTION),result.resolve(functions)}).fail(function(){PerfUtils.finalizeMeasurement(PerfUtils.JAVASCRIPT_FIND_FUNCTION),result.reject()})}).fail(function(){result.reject()}),result.promise()}function _createInlineEditor(hostEditor,functionName){var helper=brackets._jsCodeHintsHelper;if(null===helper)return null;var result=new $.Deferred;PerfUtils.markStart(PerfUtils.JAVASCRIPT_INLINE_CREATE);var response=helper();return response.hasOwnProperty("promise")&&response.promise.done(function(jumpResp){var resolvedPath=jumpResp.fullPath;if(resolvedPath){var fileInfos=[];fileInfos.push({name:jumpResp.resultFile,fullPath:resolvedPath}),JSUtils.findMatchingFunctions(functionName,fileInfos,!0).done(function(functions){if(functions&&functions.length>0){var jsInlineEditor=new MultiRangeInlineEditor(functions);jsInlineEditor.load(hostEditor),PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.resolve(jsInlineEditor)}else PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.reject()}).fail(function(){PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.reject()})}else _findInProject(functionName).done(function(functions){if(functions&&functions.length>0){var jsInlineEditor=new MultiRangeInlineEditor(functions);jsInlineEditor.load(hostEditor),PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.resolve(jsInlineEditor)}else PerfUtils.addMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.reject()}).fail(function(){PerfUtils.finalizeMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.reject()})}).fail(function(){PerfUtils.finalizeMeasurement(PerfUtils.JAVASCRIPT_INLINE_CREATE),result.reject()}),result.promise()}function javaScriptFunctionProvider(hostEditor,pos){if("javascript"!==hostEditor.getModeForSelection())return null;Metrics.countEvent(Metrics.EVENT_TYPE.EDITOR,"JsQuickEdit","open");var sel=hostEditor.getSelection();if(sel.start.line!==sel.end.line)return null;var functionResult=_getFunctionName(hostEditor,sel.start);return functionResult.functionName?_createInlineEditor(hostEditor,functionResult.functionName):functionResult.reason||null}EditorManager.registerInlineEditProvider(javaScriptFunctionProvider),PerfUtils.createPerfMeasurement("JAVASCRIPT_INLINE_CREATE","JavaScript Inline Editor Creation"),PerfUtils.createPerfMeasurement("JAVASCRIPT_FIND_FUNCTION","JavaScript Find Function"),exports.javaScriptFunctionProvider=javaScriptFunctionProvider,exports._createInlineEditor=_createInlineEditor,exports._findInProject=_findInProject});