Index: Source/devtools/front_end/sources/UISourceCodeFrame.js |
diff --git a/Source/devtools/front_end/sources/UISourceCodeFrame.js b/Source/devtools/front_end/sources/UISourceCodeFrame.js |
index a6cdd620ad306077d3b56b422677a36ddb58f370..ca03401acbccefde2fe3f61cb897eba31d6d8ac1 100644 |
--- a/Source/devtools/front_end/sources/UISourceCodeFrame.js |
+++ b/Source/devtools/front_end/sources/UISourceCodeFrame.js |
@@ -114,6 +114,11 @@ WebInspector.UISourceCodeFrame.prototype = { |
this._uiSourceCode.resetWorkingCopy(); |
else |
this._uiSourceCode.setWorkingCopyGetter(this._textEditor.text.bind(this._textEditor)); |
+ WebInspector.workspace.dispatchEventToListeners(WebInspector.Workspace.Events.UISourceCodeEdited, { |
+ range: oldRange, |
+ replacement: this._textEditor.copyRange(newRange), |
+ uiSourceCode: this._uiSourceCode |
+ }); |
delete this._muteSourceCodeEvents; |
}, |
@@ -168,12 +173,39 @@ WebInspector.UISourceCodeFrame.prototype = { |
delete this._isSettingContent; |
}, |
+ /** |
+ * @override |
+ * @return {!Promise} |
+ */ |
populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) |
{ |
- WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber, columnNumber); |
- contextMenu.appendApplicableItems(this._uiSourceCode); |
- contextMenu.appendApplicableItems(new WebInspector.UILocation(this._uiSourceCode, lineNumber, columnNumber)); |
- contextMenu.appendSeparator(); |
+ /** |
+ * @this {WebInspector.UISourceCodeFrame} |
+ */ |
+ function appendItems() { |
+ contextMenu.appendApplicableItems(this._uiSourceCode); |
+ contextMenu.appendApplicableItems(new WebInspector.UILocation(this._uiSourceCode, lineNumber, columnNumber)); |
+ contextMenu.appendSeparator(); |
+ } |
+ |
+ return WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber, columnNumber).then((function(){ |
+ var mimeType = WebInspector.ResourceType.mimeFromUrl(this._uiSourceCode.contentURL()); |
+ if (!mimeType) { |
+ return; |
+ } |
+ if (!WebInspector.languageService.handles.populateContextMenu(mimeType)) { |
+ return; |
+ } |
+ return WebInspector.languageService.populateContextMenu(mimeType, { |
+ source: this._uiSourceCode.contentURL(), |
+ line: lineNumber, |
+ column: columnNumber |
+ }).then(function(items) { |
+ items.forEach(function(elem) { |
+ contextMenu.appendItem(elem.text, elem.callback); |
+ }); |
+ }); |
+ }).bind(this)).then(appendItems.bind(this), appendItems.bind(this)); //Ignore failure in language service handler |
}, |
/** |