Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js b/third_party/WebKit/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js |
| index 8b6730246bfd24ec7e530708cf48f232c02e88e4..d7aaa794dba7ad4c5024745bb792bfa6195b661c 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/source_frame/CodeMirrorTextEditor.js |
| @@ -39,6 +39,8 @@ WebInspector.CodeMirrorTextEditor = function(url, delegate) |
| WebInspector.VBox.call(this); |
| this._delegate = delegate; |
| this._url = url; |
| + /** @type {!Map<string, !Set<number>>}} */ |
| + this._decoratedGutterLines = new Map(); |
| this.registerRequiredCSS("cm/codemirror.css"); |
| this.registerRequiredCSS("source_frame/cmdevtools.css"); |
| @@ -1118,6 +1120,58 @@ WebInspector.CodeMirrorTextEditor.prototype = { |
| /** |
| * @param {number} lineNumber |
| + * @param {string} type |
| + * @param {!Element} element |
| + */ |
| + setGutterDecoration: function(lineNumber, type, element) |
| + { |
| + var lines = this._decoratedGutterLines.get(type); |
| + if (!lines) { |
| + lines = new Set(); |
| + this._decoratedGutterLines.set(type, lines); |
| + var gutters = this._codeMirror.getOption("gutters"); |
| + var gutterType = "CodeMirror-gutter-" + type; |
| + if (gutters.indexOf(gutterType) === -1) { |
| + gutters = gutters.concat([gutterType]); |
| + this._codeMirror.setOption("gutters", gutters); |
| + this._codeMirror.refresh(); |
| + } |
| + } |
| + lines.add(lineNumber); |
| + this._batchOperation(() => this._codeMirror.setGutterMarker(lineNumber, "CodeMirror-gutter-" + type, element)); |
| + }, |
| + |
| + /** |
| + * @param {string} type |
| + */ |
| + resetGutterDecorations: function(type) |
| + { |
| + this._decoratedGutterLines.delete(type); |
| + var gutters = this._codeMirror.getOption("gutters").slice(); |
| + if (!gutters.remove("CodeMirror-gutter-" + type)) |
| + return; |
| + this._codeMirror.setOption("gutters", gutters); |
| + this._codeMirror.refresh(); |
| + }, |
| + |
| + /** |
| + * @param {function()} action |
| + */ |
| + _batchOperation: function(action) |
|
pfeldman
2016/03/09 23:52:56
This is not necessary.
alph
2016/03/09 23:58:22
Done.
|
| + { |
| + if (this._actionsBatch) { |
| + this._actionsBatch.push(action); |
| + return; |
| + } |
| + this._actionsBatch = [action]; |
| + setImmediate(this.operation.bind(this, () => { |
| + this._actionsBatch.forEach(action => action()); |
| + this._actionsBatch = null; |
| + })); |
| + }, |
| + |
| + /** |
| + * @param {number} lineNumber |
| * @param {number} columnNumber |
| */ |
| setExecutionLocation: function(lineNumber, columnNumber) |