未验证 提交 db43b401 编写于 作者: A Alex Dima

Fixes #82961: Render brackets in the overview ruler only when the cursor is sitting next to them

上级 a99e510a
...@@ -94,10 +94,12 @@ type Brackets = [Range, Range]; ...@@ -94,10 +94,12 @@ type Brackets = [Range, Range];
class BracketsData { class BracketsData {
public readonly position: Position; public readonly position: Position;
public readonly brackets: Brackets | null; public readonly brackets: Brackets | null;
public readonly options: ModelDecorationOptions;
constructor(position: Position, brackets: Brackets | null) { constructor(position: Position, brackets: Brackets | null, options: ModelDecorationOptions) {
this.position = position; this.position = position;
this.brackets = brackets; this.brackets = brackets;
this.options = options;
} }
} }
...@@ -245,8 +247,7 @@ export class BracketMatchingController extends Disposable implements editorCommo ...@@ -245,8 +247,7 @@ export class BracketMatchingController extends Disposable implements editorCommo
} }
} }
private static readonly _DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({
private static readonly _DECORATION_OPTIONS = ModelDecorationOptions.register({
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges, stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: 'bracket-match', className: 'bracket-match',
overviewRuler: { overviewRuler: {
...@@ -255,6 +256,11 @@ export class BracketMatchingController extends Disposable implements editorCommo ...@@ -255,6 +256,11 @@ export class BracketMatchingController extends Disposable implements editorCommo
} }
}); });
private static readonly _DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({
stickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,
className: 'bracket-match'
});
private _updateBrackets(): void { private _updateBrackets(): void {
if (!this._matchBrackets) { if (!this._matchBrackets) {
return; return;
...@@ -262,11 +268,11 @@ export class BracketMatchingController extends Disposable implements editorCommo ...@@ -262,11 +268,11 @@ export class BracketMatchingController extends Disposable implements editorCommo
this._recomputeBrackets(); this._recomputeBrackets();
let newDecorations: IModelDeltaDecoration[] = [], newDecorationsLen = 0; let newDecorations: IModelDeltaDecoration[] = [], newDecorationsLen = 0;
for (let i = 0, len = this._lastBracketsData.length; i < len; i++) { for (const bracketData of this._lastBracketsData) {
let brackets = this._lastBracketsData[i].brackets; let brackets = bracketData.brackets;
if (brackets) { if (brackets) {
newDecorations[newDecorationsLen++] = { range: brackets[0], options: BracketMatchingController._DECORATION_OPTIONS }; newDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };
newDecorations[newDecorationsLen++] = { range: brackets[1], options: BracketMatchingController._DECORATION_OPTIONS }; newDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };
} }
} }
...@@ -325,10 +331,12 @@ export class BracketMatchingController extends Disposable implements editorCommo ...@@ -325,10 +331,12 @@ export class BracketMatchingController extends Disposable implements editorCommo
newData[newDataLen++] = previousData[previousIndex]; newData[newDataLen++] = previousData[previousIndex];
} else { } else {
let brackets = model.matchBracket(position); let brackets = model.matchBracket(position);
let options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;
if (!brackets) { if (!brackets) {
brackets = model.findEnclosingBrackets(position); brackets = model.findEnclosingBrackets(position);
options = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;
} }
newData[newDataLen++] = new BracketsData(position, brackets); newData[newDataLen++] = new BracketsData(position, brackets, options);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册