提交 9ebf2c20 编写于 作者: S Sandeep Somavarapu

Range decorations:

Take code editor as argument instead of workbench editor
Option to decorate whole line or not
上级 5b4cf98b
......@@ -7,12 +7,12 @@ import { IDisposable } from 'vs/base/common/lifecycle';
import URI from 'vs/base/common/uri';
import * as editorCommon from 'vs/editor/common/editorCommon';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IEditor } from 'vs/platform/editor/common/editor';
import { asFileEditorInput } from 'vs/workbench/common/editor';
export interface IRangeHighlightDecoration {
resource: URI;
range: editorCommon.IRange;
isWholeLine?: boolean;
}
export class RangeHighlightDecorations implements IDisposable {
......@@ -31,26 +31,26 @@ export class RangeHighlightDecorations implements IDisposable {
this.rangeHighlightDecorationId = null;
}
public highlightRange(range: IRangeHighlightDecoration, editor?: IEditor) {
public highlightRange(range: IRangeHighlightDecoration, editor?: editorCommon.ICommonCodeEditor) {
editor = editor ? editor : this.getEditor(range);
if (editor) {
this.doHighlightRange(<editorCommon.ICommonCodeEditor>editor.getControl(), range);
this.doHighlightRange(editor, range);
}
}
private doHighlightRange(editor: editorCommon.ICommonCodeEditor, selectionRange: IRangeHighlightDecoration) {
this.removeHighlightRange();
editor.changeDecorations((changeAccessor: editorCommon.IModelDecorationsChangeAccessor) => {
this.rangeHighlightDecorationId = changeAccessor.addDecoration(selectionRange.range, this.createRangeHighlightDecoration());
this.rangeHighlightDecorationId = changeAccessor.addDecoration(selectionRange.range, this.createRangeHighlightDecoration(selectionRange.isWholeLine));
});
this.setEditor(editor);
}
private getEditor(resourceRange: IRangeHighlightDecoration): IEditor {
private getEditor(resourceRange: IRangeHighlightDecoration): editorCommon.ICommonCodeEditor {
const editorInput = asFileEditorInput(this.editorService.getActiveEditorInput());
if (editorInput) {
if (editorInput.getResource().fsPath === resourceRange.resource.fsPath) {
return this.editorService.getActiveEditor();
return <editorCommon.ICommonCodeEditor>this.editorService.getActiveEditor().getControl();
}
}
return null;
......@@ -86,11 +86,11 @@ export class RangeHighlightDecorations implements IDisposable {
model.deltaDecorations([rangeHighlightDecorationId], []);
}
private createRangeHighlightDecoration(): editorCommon.IModelDecorationOptions {
private createRangeHighlightDecoration(isWholeLine: boolean = true): editorCommon.IModelDecorationOptions {
return {
stickiness: editorCommon.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: 'rangeHighlight',
isWholeLine: true
isWholeLine
};
}
......
......@@ -22,6 +22,7 @@ import { Keybinding } from 'vs/base/common/keyCodes';
import { IActionProvider } from 'vs/base/parts/tree/browser/actionsRenderer';
import { ActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { ICommonCodeEditor } from 'vs/editor/common/editorCommon';
export class Controller extends treedefaults.DefaultController {
......@@ -124,7 +125,7 @@ export class Controller extends treedefaults.DefaultController {
},
}, sideByside).done((editor) => {
if (preserveFocus) {
this.rangeHighlightDecorations.highlightRange(marker, editor);
this.rangeHighlightDecorations.highlightRange(marker, <ICommonCodeEditor>editor.getControl());
} else {
this.rangeHighlightDecorations.removeHighlightRange();
}
......
......@@ -8,7 +8,7 @@
import 'vs/css!./media/searchviewlet';
import nls = require('vs/nls');
import { TPromise } from 'vs/base/common/winjs.base';
import { EditorType } from 'vs/editor/common/editorCommon';
import { EditorType, ICommonCodeEditor } from 'vs/editor/common/editorCommon';
import lifecycle = require('vs/base/common/lifecycle');
import errors = require('vs/base/common/errors');
import aria = require('vs/base/browser/ui/aria/aria');
......@@ -992,7 +992,7 @@ export class SearchViewlet extends Viewlet {
this.viewModel.searchResult.rangeHighlightDecorations.highlightRange({
resource,
range: element.range()
}, editor);
}, <ICommonCodeEditor>editor.getControl());
} else {
this.viewModel.searchResult.rangeHighlightDecorations.removeHighlightRange();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册