mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-03-30 16:50:30 -04:00
Merge from master
This commit is contained in:
@@ -3,8 +3,6 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import 'vs/css!./folding';
|
||||
import * as nls from 'vs/nls';
|
||||
import * as types from 'vs/base/common/types';
|
||||
@@ -12,14 +10,13 @@ import { escapeRegExpCharacters } from 'vs/base/common/strings';
|
||||
import { RunOnceScheduler, Delayer, CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
|
||||
import { KeyCode, KeyMod, KeyChord } from 'vs/base/common/keyCodes';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { ScrollType, IEditorContribution } from 'vs/editor/common/editorCommon';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
import { registerEditorAction, registerEditorContribution, ServicesAccessor, EditorAction, registerInstantiatedEditorAction } from 'vs/editor/browser/editorExtensions';
|
||||
import { ICodeEditor, IEditorMouseEvent, MouseTargetType } from 'vs/editor/browser/editorBrowser';
|
||||
import { FoldingModel, setCollapseStateAtLevel, CollapseMemento, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateForMatchingLines, setCollapseStateForType } from 'vs/editor/contrib/folding/foldingModel';
|
||||
import { FoldingDecorationProvider } from './foldingDecorations';
|
||||
import { FoldingRegions } from './foldingRanges';
|
||||
import { FoldingRegions, FoldingRegion } from './foldingRanges';
|
||||
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
|
||||
import { IConfigurationChangedEvent } from 'vs/editor/common/config/editorOptions';
|
||||
import { IMarginData, IEmptyContentData } from 'vs/editor/browser/controller/mouseTarget';
|
||||
@@ -39,7 +36,7 @@ export const ID = 'editor.contrib.folding';
|
||||
|
||||
export interface RangeProvider {
|
||||
readonly id: string;
|
||||
compute(cancelationToken: CancellationToken): Thenable<FoldingRegions>;
|
||||
compute(cancelationToken: CancellationToken): Thenable<FoldingRegions | null>;
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
@@ -65,20 +62,20 @@ export class FoldingController implements IEditorContribution {
|
||||
|
||||
private foldingDecorationProvider: FoldingDecorationProvider;
|
||||
|
||||
private foldingModel: FoldingModel;
|
||||
private hiddenRangeModel: HiddenRangeModel;
|
||||
private foldingModel: FoldingModel | null;
|
||||
private hiddenRangeModel: HiddenRangeModel | null;
|
||||
|
||||
private rangeProvider: RangeProvider;
|
||||
private foldingRegionPromise: CancelablePromise<FoldingRegions>;
|
||||
private rangeProvider: RangeProvider | null;
|
||||
private foldingRegionPromise: CancelablePromise<FoldingRegions | null> | null;
|
||||
|
||||
private foldingStateMemento: FoldingStateMemento;
|
||||
private foldingStateMemento: FoldingStateMemento | null;
|
||||
|
||||
private foldingModelPromise: TPromise<FoldingModel>;
|
||||
private updateScheduler: Delayer<FoldingModel>;
|
||||
private foldingModelPromise: Thenable<FoldingModel | null> | null;
|
||||
private updateScheduler: Delayer<FoldingModel | null> | null;
|
||||
|
||||
private globalToDispose: IDisposable[];
|
||||
|
||||
private cursorChangedScheduler: RunOnceScheduler;
|
||||
private cursorChangedScheduler: RunOnceScheduler | null;
|
||||
|
||||
private localToDispose: IDisposable[];
|
||||
|
||||
@@ -132,13 +129,13 @@ export class FoldingController implements IEditorContribution {
|
||||
/**
|
||||
* Store view state.
|
||||
*/
|
||||
public saveViewState(): FoldingStateMemento {
|
||||
public saveViewState(): FoldingStateMemento | undefined {
|
||||
let model = this.editor.getModel();
|
||||
if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {
|
||||
return {};
|
||||
}
|
||||
if (this.foldingModel) { // disposed ?
|
||||
let collapsedRegions = this.foldingModel.isInitialized ? this.foldingModel.getMemento() : this.hiddenRangeModel.getMemento();
|
||||
let collapsedRegions = this.foldingModel.isInitialized ? this.foldingModel.getMemento() : this.hiddenRangeModel!.getMemento();
|
||||
let provider = this.rangeProvider ? this.rangeProvider.id : void 0;
|
||||
return { collapsedRegions, lineCount: model.getLineCount(), provider };
|
||||
}
|
||||
@@ -150,7 +147,7 @@ export class FoldingController implements IEditorContribution {
|
||||
*/
|
||||
public restoreViewState(state: FoldingStateMemento): void {
|
||||
let model = this.editor.getModel();
|
||||
if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {
|
||||
if (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {
|
||||
return;
|
||||
}
|
||||
if (!state || !state.collapsedRegions || state.lineCount !== model.getLineCount()) {
|
||||
@@ -161,13 +158,18 @@ export class FoldingController implements IEditorContribution {
|
||||
this.foldingStateMemento = state;
|
||||
}
|
||||
|
||||
const collapsedRegions = state.collapsedRegions;
|
||||
|
||||
// set the hidden ranges right away, before waiting for the folding model.
|
||||
if (this.hiddenRangeModel.applyMemento(state.collapsedRegions)) {
|
||||
this.getFoldingModel().then(foldingModel => {
|
||||
if (foldingModel) {
|
||||
foldingModel.applyMemento(state.collapsedRegions);
|
||||
}
|
||||
}).done(undefined, onUnexpectedError);
|
||||
if (this.hiddenRangeModel.applyMemento(collapsedRegions)) {
|
||||
const foldingModel = this.getFoldingModel();
|
||||
if (foldingModel) {
|
||||
foldingModel.then(foldingModel => {
|
||||
if (foldingModel) {
|
||||
foldingModel.applyMemento(collapsedRegions);
|
||||
}
|
||||
}).then(undefined, onUnexpectedError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,9 +193,9 @@ export class FoldingController implements IEditorContribution {
|
||||
|
||||
this.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);
|
||||
this.localToDispose.push(this.cursorChangedScheduler);
|
||||
this.localToDispose.push(this.editor.onDidChangeModelLanguageConfiguration(e => this.onModelContentChanged())); // covers model language changes as well
|
||||
this.localToDispose.push(this.editor.onDidChangeModelContent(e => this.onModelContentChanged()));
|
||||
this.localToDispose.push(this.editor.onDidChangeCursorPosition(e => this.onCursorPositionChanged()));
|
||||
this.localToDispose.push(this.editor.onDidChangeModelLanguageConfiguration(() => this.onModelContentChanged())); // covers model language changes as well
|
||||
this.localToDispose.push(this.editor.onDidChangeModelContent(() => this.onModelContentChanged()));
|
||||
this.localToDispose.push(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));
|
||||
this.localToDispose.push(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));
|
||||
this.localToDispose.push(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));
|
||||
this.localToDispose.push({
|
||||
@@ -202,7 +204,9 @@ export class FoldingController implements IEditorContribution {
|
||||
this.foldingRegionPromise.cancel();
|
||||
this.foldingRegionPromise = null;
|
||||
}
|
||||
this.updateScheduler.cancel();
|
||||
if (this.updateScheduler) {
|
||||
this.updateScheduler.cancel();
|
||||
}
|
||||
this.updateScheduler = null;
|
||||
this.foldingModel = null;
|
||||
this.foldingModelPromise = null;
|
||||
@@ -232,15 +236,16 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
this.rangeProvider = new IndentRangeProvider(editorModel); // fallback
|
||||
|
||||
if (this._useFoldingProviders) {
|
||||
|
||||
if (this._useFoldingProviders && this.foldingModel) {
|
||||
let foldingProviders = FoldingRangeProviderRegistry.ordered(this.foldingModel.textModel);
|
||||
if (foldingProviders.length === 0 && this.foldingStateMemento) {
|
||||
this.rangeProvider = new InitializingRangeProvider(editorModel, this.foldingStateMemento.collapsedRegions, () => {
|
||||
if (foldingProviders.length === 0 && this.foldingStateMemento && this.foldingStateMemento.collapsedRegions) {
|
||||
const rangeProvider = this.rangeProvider = new InitializingRangeProvider(editorModel, this.foldingStateMemento.collapsedRegions, () => {
|
||||
// if after 30 the InitializingRangeProvider is still not replaced, force a refresh
|
||||
this.foldingStateMemento = null;
|
||||
this.onFoldingStrategyChanged();
|
||||
}, 30000);
|
||||
return this.rangeProvider; // keep memento in case there are still no foldingProviders on the next request.
|
||||
return rangeProvider; // keep memento in case there are still no foldingProviders on the next request.
|
||||
} else if (foldingProviders.length > 0) {
|
||||
this.rangeProvider = new SyntaxRangeProvider(editorModel, foldingProviders);
|
||||
}
|
||||
@@ -260,25 +265,26 @@ export class FoldingController implements IEditorContribution {
|
||||
this.foldingRegionPromise = null;
|
||||
}
|
||||
this.foldingModelPromise = this.updateScheduler.trigger(() => {
|
||||
if (!this.foldingModel) { // null if editor has been disposed, or folding turned off
|
||||
const foldingModel = this.foldingModel;
|
||||
if (!foldingModel) { // null if editor has been disposed, or folding turned off
|
||||
return null;
|
||||
}
|
||||
let foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => this.getRangeProvider(this.foldingModel.textModel).compute(token));
|
||||
return TPromise.wrap(foldingRegionPromise.then(foldingRanges => {
|
||||
let foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => this.getRangeProvider(foldingModel.textModel).compute(token));
|
||||
return foldingRegionPromise.then(foldingRanges => {
|
||||
if (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?
|
||||
// some cursors might have moved into hidden regions, make sure they are in expanded regions
|
||||
let selections = this.editor.getSelections();
|
||||
let selectionLineNumbers = selections ? selections.map(s => s.startLineNumber) : [];
|
||||
this.foldingModel.update(foldingRanges, selectionLineNumbers);
|
||||
foldingModel.update(foldingRanges, selectionLineNumbers);
|
||||
}
|
||||
return this.foldingModel;
|
||||
}));
|
||||
return foldingModel;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private onHiddenRangesChanges(hiddenRanges: IRange[]) {
|
||||
if (hiddenRanges.length) {
|
||||
if (this.hiddenRangeModel && hiddenRanges.length) {
|
||||
let selections = this.editor.getSelections();
|
||||
if (selections) {
|
||||
if (this.hiddenRangeModel.adjustSelections(selections)) {
|
||||
@@ -290,20 +296,24 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
|
||||
private onCursorPositionChanged() {
|
||||
if (this.hiddenRangeModel.hasRanges()) {
|
||||
this.cursorChangedScheduler.schedule();
|
||||
if (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {
|
||||
this.cursorChangedScheduler!.schedule();
|
||||
}
|
||||
}
|
||||
|
||||
private revealCursor() {
|
||||
this.getFoldingModel().then(foldingModel => { // null is returned if folding got disabled in the meantime
|
||||
const foldingModel = this.getFoldingModel();
|
||||
if (!foldingModel) {
|
||||
return;
|
||||
}
|
||||
foldingModel.then(foldingModel => { // null is returned if folding got disabled in the meantime
|
||||
if (foldingModel) {
|
||||
let selections = this.editor.getSelections();
|
||||
if (selections && selections.length > 0) {
|
||||
let toToggle = [];
|
||||
let toToggle: FoldingRegion[] = [];
|
||||
for (let selection of selections) {
|
||||
let lineNumber = selection.selectionStartLineNumber;
|
||||
if (this.hiddenRangeModel.isHidden(lineNumber)) {
|
||||
if (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {
|
||||
toToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));
|
||||
}
|
||||
}
|
||||
@@ -313,30 +323,34 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
}
|
||||
}
|
||||
}).done(undefined, onUnexpectedError);
|
||||
}).then(undefined, onUnexpectedError);
|
||||
|
||||
}
|
||||
|
||||
private mouseDownInfo: { lineNumber: number, iconClicked: boolean };
|
||||
private mouseDownInfo: { lineNumber: number, iconClicked: boolean } | null;
|
||||
|
||||
private onEditorMouseDown(e: IEditorMouseEvent): void {
|
||||
this.mouseDownInfo = null;
|
||||
|
||||
let range = e.target.range;
|
||||
if (!this.hiddenRangeModel || !range) {
|
||||
|
||||
if (!this.hiddenRangeModel || !e.target || !e.target.range) {
|
||||
return;
|
||||
}
|
||||
if (!e.event.leftButton && !e.event.middleButton) {
|
||||
return;
|
||||
}
|
||||
const range = e.target.range;
|
||||
let iconClicked = false;
|
||||
switch (e.target.type) {
|
||||
case MouseTargetType.GUTTER_LINE_DECORATIONS:
|
||||
const data = e.target.detail as IMarginData;
|
||||
const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;
|
||||
const offsetLeftInGutter = (e.target.element as HTMLElement).offsetLeft;
|
||||
const gutterOffsetX = data.offsetX - offsetLeftInGutter;
|
||||
|
||||
// const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;
|
||||
|
||||
// TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff
|
||||
if (gutterOffsetX <= 10) {
|
||||
if (gutterOffsetX < 5) { // the whitespace between the border and the real folding icon border is 5px
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -368,7 +382,8 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
|
||||
private onEditorMouseUp(e: IEditorMouseEvent): void {
|
||||
if (!this.mouseDownInfo) {
|
||||
const foldingModel = this.getFoldingModel();
|
||||
if (!foldingModel || !this.mouseDownInfo || !e.target) {
|
||||
return;
|
||||
}
|
||||
let lineNumber = this.mouseDownInfo.lineNumber;
|
||||
@@ -385,12 +400,12 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
} else {
|
||||
let model = this.editor.getModel();
|
||||
if (range.startColumn !== model.getLineMaxColumn(lineNumber)) {
|
||||
if (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this.getFoldingModel().then(foldingModel => {
|
||||
foldingModel.then(foldingModel => {
|
||||
if (foldingModel) {
|
||||
let region = foldingModel.getRegionAtLine(lineNumber);
|
||||
if (region && region.startLineNumber === lineNumber) {
|
||||
@@ -405,7 +420,7 @@ export class FoldingController implements IEditorContribution {
|
||||
}
|
||||
}
|
||||
}
|
||||
}).done(undefined, onUnexpectedError);
|
||||
}).then(undefined, onUnexpectedError);
|
||||
}
|
||||
|
||||
public reveal(position: IPosition): void {
|
||||
@@ -417,7 +432,7 @@ abstract class FoldingAction<T> extends EditorAction {
|
||||
|
||||
abstract invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: T): void;
|
||||
|
||||
public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: T): void | TPromise<void> {
|
||||
public runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: T): void | Thenable<void> {
|
||||
let foldingController = FoldingController.get(editor);
|
||||
if (!foldingController) {
|
||||
return;
|
||||
@@ -428,7 +443,10 @@ abstract class FoldingAction<T> extends EditorAction {
|
||||
return foldingModelPromise.then(foldingModel => {
|
||||
if (foldingModel) {
|
||||
this.invoke(foldingController, foldingModel, editor, args);
|
||||
foldingController.reveal(editor.getSelection().getStartPosition());
|
||||
const selection = editor.getSelection();
|
||||
if (selection) {
|
||||
foldingController.reveal(selection.getStartPosition());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -446,7 +464,7 @@ abstract class FoldingAction<T> extends EditorAction {
|
||||
return this.getSelectedLines(editor);
|
||||
}
|
||||
|
||||
public run(accessor: ServicesAccessor, editor: ICodeEditor): void {
|
||||
public run(_accessor: ServicesAccessor, _editor: ICodeEditor): void {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -508,7 +526,7 @@ class UnfoldAction extends FoldingAction<FoldingArguments> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {
|
||||
let levels = args && args.levels || 1;
|
||||
let lineNumbers = this.getLineNumbers(args, editor);
|
||||
if (args && args.direction === 'up') {
|
||||
@@ -535,7 +553,7 @@ class UnFoldRecursivelyAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: any): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, _args: any): void {
|
||||
setCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));
|
||||
}
|
||||
}
|
||||
@@ -573,7 +591,7 @@ class FoldAction extends FoldingAction<FoldingArguments> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {
|
||||
let levels = args && args.levels || 1;
|
||||
let lineNumbers = this.getLineNumbers(args, editor);
|
||||
if (args && args.direction === 'up') {
|
||||
@@ -600,7 +618,7 @@ class FoldRecursivelyAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
let selectedLines = this.getSelectedLines(editor);
|
||||
setCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);
|
||||
}
|
||||
@@ -622,11 +640,15 @@ class FoldAllBlockCommentsAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
if (foldingModel.regions.hasTypes()) {
|
||||
setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);
|
||||
} else {
|
||||
let comments = LanguageConfigurationRegistry.getComments(editor.getModel().getLanguageIdentifier().id);
|
||||
const editorModel = editor.getModel();
|
||||
if (!editorModel) {
|
||||
return;
|
||||
}
|
||||
let comments = LanguageConfigurationRegistry.getComments(editorModel.getLanguageIdentifier().id);
|
||||
if (comments && comments.blockCommentStartToken) {
|
||||
let regExp = new RegExp('^\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));
|
||||
setCollapseStateForMatchingLines(foldingModel, regExp, true);
|
||||
@@ -651,11 +673,15 @@ class FoldAllRegionsAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
if (foldingModel.regions.hasTypes()) {
|
||||
setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);
|
||||
} else {
|
||||
let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editor.getModel().getLanguageIdentifier().id);
|
||||
const editorModel = editor.getModel();
|
||||
if (!editorModel) {
|
||||
return;
|
||||
}
|
||||
let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);
|
||||
if (foldingRules && foldingRules.markers && foldingRules.markers.start) {
|
||||
let regExp = new RegExp(foldingRules.markers.start);
|
||||
setCollapseStateForMatchingLines(foldingModel, regExp, true);
|
||||
@@ -680,11 +706,15 @@ class UnfoldAllRegionsAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
if (foldingModel.regions.hasTypes()) {
|
||||
setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);
|
||||
} else {
|
||||
let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editor.getModel().getLanguageIdentifier().id);
|
||||
const editorModel = editor.getModel();
|
||||
if (!editorModel) {
|
||||
return;
|
||||
}
|
||||
let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);
|
||||
if (foldingRules && foldingRules.markers && foldingRules.markers.start) {
|
||||
let regExp = new RegExp(foldingRules.markers.start);
|
||||
setCollapseStateForMatchingLines(foldingModel, regExp, false);
|
||||
@@ -709,7 +739,7 @@ class FoldAllAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {
|
||||
setCollapseStateLevelsDown(foldingModel, true);
|
||||
}
|
||||
}
|
||||
@@ -730,7 +760,7 @@ class UnfoldAllAction extends FoldingAction<void> {
|
||||
});
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {
|
||||
setCollapseStateLevelsDown(foldingModel, false);
|
||||
}
|
||||
}
|
||||
@@ -743,7 +773,7 @@ class FoldLevelAction extends FoldingAction<void> {
|
||||
return parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));
|
||||
}
|
||||
|
||||
invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
invoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {
|
||||
setCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user