diff --git a/src/vs/workbench/api/electron-browser/mainThreadComments.ts b/src/vs/workbench/api/electron-browser/mainThreadComments.ts index fd3d2ef1e23..3a7b818a7c2 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadComments.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadComments.ts @@ -5,7 +5,7 @@ 'use strict'; import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle'; -import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; +import { ICodeEditor, IDiffEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService'; import * as modes from 'vs/editor/common/modes'; import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers'; @@ -116,7 +116,17 @@ export class MainThreadComments extends Disposable implements MainThreadComments getFocusedEditor(): ICodeEditor { let editor = this._codeEditorService.getFocusedCodeEditor(); if (!editor) { - return this._editorService.activeTextEditorWidget as ICodeEditor; + /* please note that the type of `this._editorService.activeTextEditorWidget` is `{ IEditor as ICodeEditor } from 'vs/editor/common/editorCommon'` + * It's `IEditor` but renamed to `ICodeEditor`. The `ICodeEditor` in current context is `import { ICodeEditor } from 'vs/editor/browser/editorBrowser'` + * this._editorService.activeTextEditorWidget is + * 1. ICodeEditor extends editorCommon.IEditor + * 2. IDiffEditor extends editorCommon.IEditor + */ + if ((this._editorService.activeTextEditorWidget as ICodeEditor).getContribution) { + return this._editorService.activeTextEditorWidget as ICodeEditor; + } else { + return (this._editorService.activeTextEditorWidget as IDiffEditor).getModifiedEditor(); + } } return editor;