Change:
Testing Just another feature request. It would be useful to see how many debug console items are filtered out. Especially if I see this number going up, then I know I am missing new messages.
Yeah great idea. I think this could be shown in the filter area. This could be a shared experience also in the Problems view I am opening this up for PRs. Code pointer
FYI, problems view already show this like below <img width="458" alt="image" src="https://user-"
Great! Then we should just copy what Problems is doing Assigning to September so I tackle then if no PR's arrive
Hi I can take a look into this if no one else is assigned.
sounds great. We should just have the exact same functionality as the Problems view, so checking how it is done there is a good start.
friendly ping regarding this, since if you are not looking into it I might take a look next week...
Hi sorry, I didn't have time last week. I've just started looking into the issue. I hope to have something ready for next week if it's ok with you. I'll keep you updated. Thanks.
great thanks. Since you are already on this I will remove the label
Thanks to we now have this. Adding verification needed so we get this verified: Start debugging and verify when using the debug filter that the filter shows what is the number of hidden items

Discussion:
} .panel > .title .monaco-action-bar .action-item.repl-panel-filter-container { <del> min-width: 200px; </del> <ins> min-width: 300px; </ins> margin-right: 10px; } <ins> .repl-panel-filter-container .repl-panel-filter-controls { position: absolute; top: 0px; bottom: 0; right: 0px; display: flex; align-items: center; } .repl-panel-filter-container .repl-panel-filter-controls > .repl-panel-filter-badge { margin: 4px; padding: 0px 8px; border-radius: 2px; } .repl-panel-filter-container .repl-panel-filter-controls > .repl-panel-filter-badge.hidden { display: none; } </ins>

})); } <ins> private computeFilterStats(): { total: number, filtered: number } { let filtered = 0; let total = 0; if (this.tree) { total = this.tree.getNode().children.length; for (const child of this.tree.getNode().children) { if (child.visible) { ++filtered; } } } return { total, filtered }; } </ins> get isReadonly(): boolean { // Do not allow to edit inactive sessions const session = this.tree.getInput();

} lastSelectedString = selection ? selection.toString() : ''; })); <ins> this._register(this.tree.onDidChangeContentHeight(() => this.refreshReplElements(false))); </ins> // Make sure to select the session if debugging is already active this.selectSession(); this.styleElement = dom.createStyleSheet(this.container);

} this.refreshScheduler.schedule(noDelay ? 0 : undefined); <ins> this.filterState.filterStats = this.computeFilterStats(); </ins> } }

import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; import { ContextScopedHistoryInputBox } from 'vs/platform/browser/contextScopedHistoryWidget'; <del> import { attachInputBoxStyler } from 'vs/platform/theme/common/styler'; </del> <ins> import { attachInputBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler'; </ins> import { IThemeService } from 'vs/platform/theme/common/themeService'; <ins> import { badgeBackground, badgeForeground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; </ins> import { ReplEvaluationResult, ReplEvaluationInput } from 'vs/workbench/contrib/debug/common/replModel'; <ins> import { localize } from 'vs/nls'; </ins> type ParsedQuery = {

return this._onDidChange.event; } <ins> private readonly _onDidStatsChange: Emitter<void> = new Emitter<void>(); get onDidStatsChange(): Event<void> { return this._onDidStatsChange.event; } </ins> private _filterText = ''; <ins> private _stats = { total: 0, filtered: 0 }; </ins> get filterText(): string { return this._filterText; } <ins> get filterStats(): { total: number, filtered: number } { return this._stats; } set filterStats(stats: { total: number, filtered: number }) { const { total, filtered } = stats; if (this._stats.total !== total || this._stats.filtered !== filtered) { this._stats = { total, filtered }; this._onDidStatsChange.fire(); } } </ins> set filterText(filterText: string) { if (this._filterText !== filterText) { this._filterText = filterText;

private delayedFilterUpdate: Delayer<void>; private container!: HTMLElement; <ins> private filterBadge: HTMLElement | null = null; </ins> private filterInputBox!: HistoryInputBox; constructor(

this.element = DOM.append(this.container, DOM.$('')); this.element.className = this.class; this.createInput(this.element); <ins> this.createBadge(this.element); </ins> this.updateClass(); }

} } <ins> private createBadge(container: HTMLElement): void { const controlsContainer = DOM.append(container, DOM.$('.repl-panel-filter-controls')); const filterBadge = this.filterBadge = DOM.append(controlsContainer, DOM.$('.repl-panel-filter-badge')); this._register(attachStylerCallback(this.themeService, { badgeBackground, badgeForeground, contrastBorder }, colors => { const background = colors.badgeBackground ? colors.badgeBackground.toString() : ''; const foreground = colors.badgeForeground ? colors.badgeForeground.toString() : ''; const border = colors.contrastBorder ? colors.contrastBorder.toString() : ''; filterBadge.style.backgroundColor = background; filterBadge.style.borderWidth = border ? '1px' : ''; filterBadge.style.borderStyle = border ? 'solid' : ''; filterBadge.style.borderColor = border; filterBadge.style.color = foreground; })); this.updateBadge(); this._register(this.filters.onDidStatsChange(() => this.updateBadge())); } private updateBadge(): void { if (this.filterBadge) { const { total, filtered } = this.filters.filterStats; const filterBadgeHidden = total === filtered || total === 0; this.filterBadge.classList.toggle('hidden', filterBadgeHidden); this.filterBadge.textContent = localize('showing filtered repl lines', "Showing {0} of {1}", filtered, total); this.filterInputBox.inputElement.style.paddingRight = filterBadgeHidden ? '4px' : '150px'; } } </ins> protected get class(): string { return 'panel-action-tree-filter'; }

private updateBadge(): void { if (this.filterBadge) { const { total, filtered } = this.filterController.getFilterStats(); <del> this.filterBadge.classList.toggle('hidden', total === filtered || filtered === 0); </del> <ins> this.filterBadge.classList.toggle('hidden', total === filtered || total === 0); </ins> this.filterBadge.textContent = localize('showing filtered problems', "Showing {0} of {1}", filtered, total); this.adjustInputBox(); }