Question:
When creating a breakpoint in an active debug session and this breakpoint cannot be verified, the resulting icon is almost invisible: ! The problem is that the icon's stroke is too thin. In previous versions the icon had a thicker stroke: ! I suggest that we restore the previous icon.
Agree that it is a bit too light. I do not just want to take the previous icon since the color and style are different. Thus it would be great if could tackle this Also fyi
Not quite as strong as in the 'before' above, but stronger. Marking verified. !

<del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M12.632,8A4.632,4.632,0,1,1,8,3.368,4.638,4.638,0,0,1,12.632,8Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.211A3.789,3.789,0,1,0,11.789,8,3.788,3.788,0,0,0,8,4.211ZM8,10.79A2.79,2.79,0,1,1,10.79,8,2.794,2.794,0,0,1,8,10.79Z"/></g></svg> </del>  No newline at end of file <ins> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M12.632,8A4.632,4.632,0,1,1,8,3.368,4.638,4.638,0,0,1,12.632,8Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.211A3.789,3.789,0,1,0,11.79,8,3.788,3.788,0,0,0,8,4.211ZM8,10.29A2.29,2.29,0,1,1,10.29,8,2.292,2.292,0,0,1,8,10.29Z"/></g></svg> </ins>  No newline at end of file


Question: Issue Type: <bBug</bNavigate to any reccomended extension with a screen reader. The reader will read the extension name, followed by "[object Object]", rather than showing that the extension has been reccomended and why. VS Code version: Code 1.24.0 (, 2018-06-06T17:35:40.560Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --

const extRecommendations = this.extensionTipsService.getAllRecommendationsWithReason(); if (extRecommendations[extension.id.toLowerCase()]) { <del> data.root.setAttribute('aria-label', extension.displayName + '. ' + extRecommendations[extension.id]); </del> <ins> data.root.setAttribute('aria-label', extension.displayName + '. ' + extRecommendations[extension.id.toLowerCase()].reasonText); </ins> addClass(data.root, 'recommended'); data.root.title = extRecommendations[extension.id.toLowerCase()].reasonText; }


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

"command": "git.stashPopLatest", "title": "%command.stashPopLatest%", "category": "Git" <ins> }, { "command": "git.stashApply", "title": "%command.stashApply%", "category": "Git" }, { "command": "git.stashApplyLatest", "title": "%command.stashApplyLatest%", "category": "Git" </ins> } ], "menus": {


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

{ "command": "git.stashPopLatest", "when": "config.git.enabled && gitOpenRepositoryCount != 0" <ins> }, { "command": "git.stashApply", "when": "config.git.enabled && gitOpenRepositoryCount != 0" }, { "command": "git.stashApplyLatest", "when": "config.git.enabled && gitOpenRepositoryCount != 0" </ins> } ], "scm/title": [


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

"when": "scmProvider == git" }, { <ins> "command": "git.stashApply", "group": "5_stash", "when": "scmProvider == git" }, { "command": "git.stashApplyLatest", "group": "5_stash", "when": "scmProvider == git" }, { </ins> "command": "git.showOutput", "group": "7_repository", "when": "scmProvider == git"


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

"command.stash": "Stash", "command.stashPop": "Pop Stash...", "command.stashPopLatest": "Pop Latest Stash", <ins> "command.stashApply": "Apply Stash...", "command.stashApplyLatest": "Apply Latest Stash", </ins> "config.enabled": "Whether git is enabled", "config.path": "Path to the git executable", "config.autoRepositoryDetection": "Configures when repositories should be automatically detected.",


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

'use strict'; import { Uri, commands, Disposable, window, workspace, QuickPickItem, OutputChannel, Range, WorkspaceEdit, Position, LineChange, SourceControlResourceState, TextDocumentShowOptions, ViewColumn, ProgressLocation, TextEditor, MessageOptions } from 'vscode'; <del> import { Ref, RefType, Git, GitErrorCodes, Branch } from './git'; </del> <ins> import { Ref, RefType, Git, GitErrorCodes, Branch, Stash } from './git'; </ins> import { Repository, Resource, Status, CommitOptions, ResourceGroupType } from './repository'; import { Model } from './model'; import { toGitUri, fromGitUri } from './uri';


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

@command('git.stashPop', { repository: true }) async stashPop(repository: Repository): Promise<void> { <ins> const placeHolder = localize('pick stash to pop', "Pick a stash to pop"); const choice = await this.pickStash(repository, placeHolder); if (!choice) { return; } await repository.popStash(choice.id); } @command('git.stashPopLatest', { repository: true }) async stashPopLatest(repository: Repository): Promise<void> { </ins> const stashes = await repository.getStashes(); <del> if (stashes.length === 0) { window.showInformationMessage(localize('no stashes', "There are no stashes to restore.")); </del> <ins> if (!this.anyStashesAvailableToRestore(stashes)) { </ins> return; } <del> const picks = stashes.map(r => ({ label: `#${r.index}:  ${r.description}`, description: '', details: '', id: r.index })); const placeHolder = localize('pick stash to pop', "Pick a stash to pop"); const choice = await window.showQuickPick(picks, { placeHolder }); </del> <ins> await repository.popStash(); } @command('git.stashApply', { repository: true }) async stashApply(repository: Repository): Promise<void> { const placeHolder = localize('pick stash to apply', "Pick a stash to apply"); const choice = await this.pickStash(repository, placeHolder); </ins> if (!choice) { return; } <del> await repository.popStash(choice.id); </del> <ins> await repository.applyStash(choice.id); </ins> } <del> @command('git.stashPopLatest', { repository: true }) async stashPopLatest(repository: Repository): Promise<void> { </del> <ins> @command('git.stashApplyLatest', { repository: true }) async stashApplyLatest(repository: Repository): Promise<void> { </ins> const stashes = await repository.getStashes(); <del> if (stashes.length === 0) { </del> <ins> if (!this.anyStashesAvailableToRestore(stashes)) { return; } await repository.applyStash(); } private anyStashesAvailableToRestore(stashes: Stash[]): boolean { const stashesAvailable = stashes.length > 0; if (!stashesAvailable) { </ins> window.showInformationMessage(localize('no stashes', "There are no stashes to restore.")); <ins> } return stashesAvailable; } private async pickStash(repository: Repository, placeHolder: string) { const stashes = await repository.getStashes(); if (!this.anyStashesAvailableToRestore(stashes)) { </ins> return; } <del> await repository.popStash(); </del> <ins> const picks = stashes.map(r => ({ label: `#${r.index}:  ${r.description}`, description: '', details: '', id: r.index })); return await window.showQuickPick(picks, { placeHolder }); </ins> } private createCommand(id: string, key: string, method: Function, options: CommandOptions): (...args: any[]) => any { const result = (...args: any[]) => { let result: Promise<any>;


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

} async popStash(index?: number): Promise<void> { <del> try { const args = ['stash', 'pop']; </del> <ins> const args = ['stash', 'pop']; this.popOrApplyStash(args, index); } async applyStash(index?: number): Promise<void> { const args = ['stash', 'apply']; this.popOrApplyStash(args, index); } private async popOrApplyStash(args: string[], index?: number): Promise<void> { try { </ins> if (typeof index === 'number') { args.push(`stash@{${index}}`); }


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

} } getStatus(limit = 5000): Promise<{ status: IFileStatus[]; didHitLimit: boolean; }> { return new Promise<{ status: IFileStatus[]; didHitLimit: boolean; }>((c, e) => { const parser = new GitStatusParser();


Question:
I've attempted to find any other requests for this but didn't seem to see any. At the moment the CVS context menu shows: ! Only "Pop latest stash" and "Pop stash..." are visible. Is it possible to change the default stash behaviour to "apply" rather than "pop"? Additionally, is it possible to add two lines under "Pop stash..." for the same actions, just using apply: Apply latest stash Apply stash... I just lost a few hours and considerable amount of hair when a popped stash was deleted. I then had to sift through doing on each . Having "Apply stash..." easily accessible might be nicer.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.676 --<!-- potentialduplicatescomment --
I suggest to simply add and commands.
is anyone working on this, if not, I'll like to pick it up as a
looks like it might already be done in
yeah, just confirmed, Thanks. If I may ask, is there any rule around tagging an issue that is being worked on as it would be multiple efforts if I happen to have started it without anyone's knowledge. I've been scouting for an issue with no assignee to work on :-( Thanks for the catch tho!

return await this.run(Operation.Stash, () => this.repository.popStash(index)); } <ins> async applyStash(index?: number): Promise<void> { return await this.run(Operation.Stash, () => this.repository.applyStash(index)); } </ins> async getCommitTemplate(): Promise<string> { return await this.run(Operation.GetCommitTemplate, async () => this.repository.getCommitTemplate()); }


Question:
Issue Type: <bBug</bI haven't been able to reliably reproduce this, but it happens decently often. To repo: -click on a line in an editor (seems to happen more often if it is not the active line) of the time the context menu will open, but sometimes it just flashes in and disappears My guess is that it feels like some sort of conflict between showing a hover vs the context menu. And I'm not sure if GitLens plays a roll here or not (though it never happens with the native menus). Another observation, it seems to be more likely to happen right after you've switched to a editor as well (either that or just becomes less likely after the menu has been shown already or something). VS Code version: Code - Insiders 1.26.0-insider (, 2018-07-18T05:19:07.488Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </details<!-- generated by issue reporter --
I think vscodebot is drunk This should be tagged and likely assigned to
it just loves to classify things as terminal :sob:
Looks like this happens when the contributor codelens info gets to the editor which may trigger scroll which dismisses context menus. /cc
possibly related
I saw this issue while testing today.
was the behavior unique to the latest insiders or could you reproduce with stable
I tested only on latest insiders did not try on stable
/confirm still repro on 1.30.0 stable version
/confirm
Sorry, I still this one from time to time. Not fixed, but also no steps. can we add logging when programmatically(?) closing a menu, esp. withing 1sec of opening
do you know if yours is the case that a menu item is triggered immediately (because the menu was drawn under the cursor and mouseup triggers the item) or that it is actually dismissed?
That - unless the command is a no op. I think this happens when I open the context menu but not immediately interact with it. Can it be that while the menu is open and context-key events comes in, causing the menu (native. macOS) to hide?
oh, native case, alright, i'll dig into it
This is now reproducing with the custom context menus as well. The scrollTop change does not appear to work anymore(fully?). Something to note is that in VS Code, with the custom titlebar enabled or using a mac, it is not possible to scroll the editor with the conext menu open. Thus, dismissing due to a scroll event is now wrong (I think). Dismissal due to scrolling seems like it was for the benefit of monaco more than vs code. See Do you think we could switch to event? This way, I believe, monaco's behavior should be preserved and vs code would not have this event triggered because of the blocking div when a context menu is open.
:+1: That could work well.

this._toDispose.push(this._editor.onContextMenu((e: IEditorMouseEvent) => this._onContextMenu(e))); this._toDispose.push(this._editor.onDidScrollChange((e: IScrollEvent) => { <del> if (this._contextMenuIsBeingShownCount > 0) { </del> <ins> if (this._contextMenuIsBeingShownCount > 0 && e.scrollTopChanged) { </ins> this._contextViewService.hideContextView(); } }));


Question:
Issue Type: <bBug</bI have a file named F1000-v117.au3. When copying/pasting the file, it creates a file named F1001-v117.au3. This is not the expected result. F1000 is the name of the file and not a version number that should be incremented. Changing the regex within the incrementFileName function fixes the issue. Basically, make sure the first section of the file name is numeric only. to VS Code version: Code 1.25.1 (, 2018-07-11T15:43:11.471Z) OS version: WindowsNT ia32 6.1.7601 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
PR for this is welcome It would be great if the PR contains a unit test fyi
I'll take a look tomorrow.
is the expected result right?
Actually it seems like other cases are broken now. Have a file , copy and paste it The new file is , in 1.26 it was
Thanks for finding that Due to that I had to revert the original fix. So now copying gives However this issue is now not fixed, but it was like that in previous stable so nothing urgent -removing mielstone let me know if you want to fix your fix and provide a working PR. Thanks
Hey guys, I took a crack at fixing this regex have some questions on how the naming / number schema works and I want to make sure I have an understanding of the naming schema. We have our cases here: suffix: prefix: single number: no number: ends with number: mixed (new case / why the above PR broke): prefixed with number: The issue is that mixing letters and numbers triggers the prefix regex which incorrectly increments the number. But all the different variations of prefix / suffix and single number / mixed with letters make this particularly tricky. It seems like edits need to be made to existing regexes to ensure that they are matching digit only groups. However, the above PR regex edits and the edits I've made consistently break other regexes. Any ideas or considerations here?
This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details . If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider. If you wonder what we are up to, please see our and guidelines. Thanks for your understanding and happy coding!

} // 1.file.txt=>2.file.txt <del> let prefixFileRegex = RegExp('(d+)(' + separators + '.*)(..*)$'); </del> <ins> let prefixFileRegex = RegExp('^(d+)(' + separators + '.*)(..*)$'); </ins> if (!isFolder && name.match(prefixFileRegex)) { return name.replace(prefixFileRegex, (match, g1?, g2?, g3?) => { let number = parseInt(g1);


Question:
Issue Type: <bBug</bI have a file named F1000-v117.au3. When copying/pasting the file, it creates a file named F1001-v117.au3. This is not the expected result. F1000 is the name of the file and not a version number that should be incremented. Changing the regex within the incrementFileName function fixes the issue. Basically, make sure the first section of the file name is numeric only. to VS Code version: Code 1.25.1 (, 2018-07-11T15:43:11.471Z) OS version: WindowsNT ia32 6.1.7601 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
PR for this is welcome It would be great if the PR contains a unit test fyi
I'll take a look tomorrow.
is the expected result right?
Actually it seems like other cases are broken now. Have a file , copy and paste it The new file is , in 1.26 it was
Thanks for finding that Due to that I had to revert the original fix. So now copying gives However this issue is now not fixed, but it was like that in previous stable so nothing urgent -removing mielstone let me know if you want to fix your fix and provide a working PR. Thanks
Hey guys, I took a crack at fixing this regex have some questions on how the naming / number schema works and I want to make sure I have an understanding of the naming schema. We have our cases here: suffix: prefix: single number: no number: ends with number: mixed (new case / why the above PR broke): prefixed with number: The issue is that mixing letters and numbers triggers the prefix regex which incorrectly increments the number. But all the different variations of prefix / suffix and single number / mixed with letters make this particularly tricky. It seems like edits need to be made to existing regexes to ensure that they are matching digit only groups. However, the above PR regex edits and the edits I've made consistently break other regexes. Any ideas or considerations here?
This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details . If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider. If you wonder what we are up to, please see our and guidelines. Thanks for your understanding and happy coding!

} // 1.txt=>2.txt <del> let prefixFileNoNameRegex = RegExp('(d+)(..*)$'); </del> <ins> let prefixFileNoNameRegex = RegExp('^(d+)(..*)$'); </ins> if (!isFolder && name.match(prefixFileNoNameRegex)) { return name.replace(prefixFileNoNameRegex, (match, g1?, g2?) => { let number = parseInt(g1);


Question:
Issue Type: <bBug</bI have a file named F1000-v117.au3. When copying/pasting the file, it creates a file named F1001-v117.au3. This is not the expected result. F1000 is the name of the file and not a version number that should be incremented. Changing the regex within the incrementFileName function fixes the issue. Basically, make sure the first section of the file name is numeric only. to VS Code version: Code 1.25.1 (, 2018-07-11T15:43:11.471Z) OS version: WindowsNT ia32 6.1.7601 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
PR for this is welcome It would be great if the PR contains a unit test fyi
I'll take a look tomorrow.
is the expected result right?
Actually it seems like other cases are broken now. Have a file , copy and paste it The new file is , in 1.26 it was
Thanks for finding that Due to that I had to revert the original fix. So now copying gives However this issue is now not fixed, but it was like that in previous stable so nothing urgent -removing mielstone let me know if you want to fix your fix and provide a working PR. Thanks
Hey guys, I took a crack at fixing this regex have some questions on how the naming / number schema works and I want to make sure I have an understanding of the naming schema. We have our cases here: suffix: prefix: single number: no number: ends with number: mixed (new case / why the above PR broke): prefixed with number: The issue is that mixing letters and numbers triggers the prefix regex which incorrectly increments the number. But all the different variations of prefix / suffix and single number / mixed with letters make this particularly tricky. It seems like edits need to be made to existing regexes to ensure that they are matching digit only groups. However, the above PR regex edits and the edits I've made consistently break other regexes. Any ideas or considerations here?
This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details . If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider. If you wonder what we are up to, please see our and guidelines. Thanks for your understanding and happy coding!

assert.strictEqual(result, '2.test.js'); }); <ins> test('Increment file name with prefix version - check if starting from digit', function () { const name = 'F1.test.js'; const result = incrementFileName(name, false); assert.strictEqual(result, 'F1.test.1.js'); }); </ins> test('Increment file name with just version in name', function () { const name = '1.js'; const result = incrementFileName(name, false); assert.strictEqual(result, '2.js'); }); <ins> test('Increment file name with just version in name - check if starting from digit', function () { const name = 'F1.js'; const result = incrementFileName(name, false); assert.strictEqual(result, 'F1.1.js'); }); </ins> test('Increment file name with just version in name, too big number', function () { const name = '9007199254740992.js'; const result = incrementFileName(name, false);


Question: Testing When using the '...' menu to add sort filter options, the option becomes disabled in the menu, preventing it from being twice from that UI. I think it would be nice if the suggestions behaved similarly, not suggesting filters that are already present in the input. ! VS Code version: Code - Insiders 1.26.0-insider (, 2018-07-31T05:18:06.861Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --

this.value = value.trim(); } <del> static autocompletions(): string[] { </del> <ins> static autocompletions(query: string): string[] { </ins> const commands = ['installed', 'outdated', 'enabled', 'disabled', 'builtin', 'recommended', 'sort', 'category', 'tag', 'ext']; const subcommands = { 'sort': ['installs', 'rating', 'name'],


Question: Testing When using the '...' menu to add sort filter options, the option becomes disabled in the menu, preventing it from being twice from that UI. I think it would be nice if the suggestions behaved similarly, not suggesting filters that are already present in the input. ! VS Code version: Code - Insiders 1.26.0-insider (, 2018-07-31T05:18:06.861Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --

'ext': [''] }; <ins> let queryContains = (substr: string) => query.indexOf(substr) > -1; let hasSort = subcommands.sort.some(subcommand => queryContains(`@sort:${subcommand}`)); let hasCategory = subcommands.category.some(subcommand => queryContains(`@category:${subcommand}`)); </ins> return flatten( <del> commands.map(command => subcommands[command] ? subcommands[command].map(subcommand => `@${command}:${subcommand}${subcommand === '' ? '' : ' '}`) : [`@${command} `])); </del> <ins> commands.map(command => { if (hasSort && command === 'sort' || hasCategory && command === 'category') { return []; } if (subcommands[command]) { return subcommands[command].map(subcommand => `@${command}:${subcommand}${subcommand === '' ? '' : ' '}`); } else { return [`@${command} `]; } })); </ins> } static parse(value: string): Query {


Question: Testing When using the '...' menu to add sort filter options, the option becomes disabled in the menu, preventing it from being twice from that UI. I think it would be nice if the suggestions behaved similarly, not suggesting filters that are already present in the input. ! VS Code version: Code - Insiders 1.26.0-insider (, 2018-07-31T05:18:06.861Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --

// dont show autosuggestions if the user has typed something, but hasn't used the trigger character if (alreadyTypedCount > 0 && query[wordStart] !== '@') { return []; } <del> return Query.autocompletions().map(replacement => ({ fullText: replacement, overwrite: alreadyTypedCount })); </del> <ins> return Query.autocompletions(query).map(replacement => ({ fullText: replacement, overwrite: alreadyTypedCount })); </ins> } private count(): number {


Question: Testing When using the '...' menu to add sort filter options, the option becomes disabled in the menu, preventing it from being twice from that UI. I think it would be nice if the suggestions behaved similarly, not suggesting filters that are already present in the input. ! VS Code version: Code - Insiders 1.26.0-insider (, 2018-07-31T05:18:06.861Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --

query2 = new Query('hello', 'installs', ''); assert(!query1.equals(query2)); }); <ins> test('autocomplete', () => { Query.autocompletions('@sort:in').some(x => x === '@sort:installs '); Query.autocompletions('@sort:installs').every(x => x !== '@sort:rating '); Query.autocompletions('@category:blah').some(x => x === '@category:"extension packs" '); Query.autocompletions('@category:"extension packs"').every(x => x !== '@category:formatters '); }); </ins> });  No newline at end of file


Question: Tested in Windows with Insiders for 8/1 Add a couple of spaces in the extension search box Move focus to any of the open editors Come back to the extension search box and enter a letter !

config.wordWrap = 'off'; config.scrollbar.vertical = 'hidden'; config.ariaLabel = ariaLabel || ''; <ins> config.renderIndentGuides = false; </ins> config.cursorWidth = 1; config.snippetSuggestions = 'none'; config.suggest = { filterGraceful: false };


Question:
: Check whether it's ok to map to : Add 'null' or "None" item to enum : =- : ?? I don't see this in vscode's core settings Also, . Example:
These are the settings explicitly that I could find with a simple search. Of these, the HTML ones are the only concern. For most of them we should probably just get rid of accepting null, as it doesn't make a ton of sense to have just mean either default or some secondary default. But has very different behavior between and so we'll have to decide on something to do there.
[ ] : fix requires API discussion over adding an additional schema parameter [x] : fixes [x] : fixed [ ] : Probably wont fix? Would require some new components and UI/UX discussion. [x] : fixes
can you add some steps for how to verify?
Here are some settings with compound types - Test that they work as you'd expect. I can't remember which extension has the nullable enum but you can test it with a contribution like
seems to work for the first one, but not second. e.g. here I cannot type "null": ! I can only type numbers (I am on Windows).
For the null|number type, an empty input box will correspond to in the json

this.overriddenScopeList = overriddenScopeList; this.description = this.setting.description.join('n'); <del> if (this.setting.enum && (this.setting.type === 'string' || !this.setting.type)) { </del> <ins> if (this.setting.enum && (!this.setting.type || settingTypeEnumRenderable(this.setting.type))) { </ins> this.valueType = 'enum'; } else if (this.setting.type === 'string') { this.valueType = 'string';


Question:
: Check whether it's ok to map to : Add 'null' or "None" item to enum : =- : ?? I don't see this in vscode's core settings Also, . Example:
These are the settings explicitly that I could find with a simple search. Of these, the HTML ones are the only concern. For most of them we should probably just get rid of accepting null, as it doesn't make a ton of sense to have just mean either default or some secondary default. But has very different behavior between and so we'll have to decide on something to do there.
[ ] : fix requires API discussion over adding an additional schema parameter [x] : fixes [x] : fixed [ ] : Probably wont fix? Would require some new components and UI/UX discussion. [x] : fixes
can you add some steps for how to verify?
Here are some settings with compound types - Test that they work as you'd expect. I can't remember which extension has the nullable enum but you can test it with a contribution like
seems to work for the first one, but not second. e.g. here I cannot type "null": ! I can only type numbers (I am on Windows).
For the null|number type, an empty input box will correspond to in the json

setting.key === 'search.exclude'; } <ins> function settingTypeEnumRenderable(_type: string | string[]) { const enumRenderableSettingTypes = ['string', 'boolean', 'null', 'integer', 'number']; let type = isArray(_type) ? _type : [_type]; return type.every(type => enumRenderableSettingTypes.indexOf(type) > -1); } </ins> export enum SearchResultIdx { Local = 0, Remote = 1,


Question: <!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: master commit OS Version: macOS 10.13.6 Steps to Reproduce: clone vscode ouput: how to fix: update typescript version from to will fix it.

"rimraf": "^2.6.1", "strip-json-comments": "^2.0.1", "tmp": "0.0.33", <del> "typescript": "2.5.2", </del> <ins> "typescript": "2.9.2", </ins> "watch": "^1.0.2" } }


Question: <!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: master commit OS Version: macOS 10.13.6 Steps to Reproduce: clone vscode ouput: how to fix: update typescript version from to will fix it.

version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" <del> typescript@2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.2.tgz#038a95f7d9bbb420b1bf35ba31d4c5c1dd3ffe34" </del> <ins> typescript@2.9.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" </ins> uid-number@^0.0.6: version "0.0.6"


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

import { isWindows } from 'vs/base/common/platform'; import URI from 'vs/base/common/uri'; import { ltrim } from 'vs/base/common/strings'; <ins> import { RunOnceScheduler } from 'vs/base/common/async'; import { memoize } from 'vs/base/common/decorators'; </ins> const SMART = true;


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

private treeContainer: HTMLElement; private loadedScriptsItemType: IContextKey<string>; private settings: any; <ins> private shouldRefreshRecursive; </ins> constructor( options: IViewletViewOptions,


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

this.loadedScriptsItemType = CONTEXT_LOADED_SCRIPTS_ITEM_TYPE.bindTo(contextKeyService); } <ins> @memoize private get treeRefreshScheduler(): RunOnceScheduler { return new RunOnceScheduler(() => { if (this.tree) { this.tree.refresh(undefined, this.shouldRefreshRecursive); this.shouldRefreshRecursive = false; } }, 300); } </ins> protected renderBody(container: HTMLElement): void { dom.addClass(container, 'debug-loaded-scripts');


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

const root = new RootTreeItem(this.debugService.getModel(), this.environmentService, this.contextService); this.tree.setInput(root); <del> let timeout: number; </del> const registerLoadedSourceListener = (session: ISession) => { this.disposables.push(session.onDidLoadedSource(event => { const sessionRoot = root.add(session); sessionRoot.addPath(event.source); <del> clearTimeout(timeout); timeout = setTimeout(() => { if (this.tree) { this.tree.refresh(root, true); } }, 300); </del> <ins> this.shouldRefreshRecursive = true; this.treeRefreshScheduler.schedule(); </ins> })); };


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

this.debugService.getModel().getSessions().forEach(registerLoadedSourceListener); this.disposables.push(this.debugService.onDidEndSession(session => { <del> clearTimeout(timeout); </del> root.remove(session.getId()); <del> if (this.tree) { this.tree.refresh(root, false); } </del> <ins> this.treeRefreshScheduler.schedule(); </ins> })); }


Question:
debugging the loaded scripts view open debugging, notice exception in the console can not reproduce with Stable so it might be that my listener refactoring caused this If you pause on exception you will see that caused it.
did you have a chance to look into this? Or would you like me to investigate? I suspect this is breaking the loaded scripts view and is the root cause for
no, please investigate since this and was working before, and I haven't touched this code for two weeks.
end session events are not arriving in As a consequence the tree for the session is not properly removed.
I see something differnetly, the end sessions are arriving however when the last session end arrives view starts refreshing the tree and while that is in progress the view gets disposed which throws an exception. Looking into a fix...
I have created a PR which address this issue

this.settings[LoadedScriptsView.MEMENTO] = !this.isExpanded(); super.shutdown(); } <ins> dispose(): void { super.dispose(); this.tree = undefined; } </ins> } // A good example of data source, renderers, action providers and accessibilty providers can be found in the callStackView.ts


Question:
<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.28.0 (1.28.0) OS Version: macOS High Sierra 10.13.6 (17G65) Steps to Reproduce: a markdown file preview to the side ! <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.721 --- <!-- score: 0.717 --- <!-- score: 0.672 --- <!-- score: 0.651 --- <!-- score: 0.645 --<!-- potentialduplicatescomment --

} .hljs-addition { <del> background-color: #144212; </del> <ins> background-color: var(--vscode-diffEditor-insertedTextBackground, rgba(155, 185, 85, 0.2)); color: rgb(155, 185, 85); </ins> display: inline-block; width: 100%; } .hljs-deletion { <del> background-color: #600; </del> <ins> background: var(--vscode-diffEditor-removedTextBackground, rgba(255, 0, 0, 0.2)); color: rgb(255, 0, 0); </ins> display: inline-block; width: 100%; }


Question:
<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.28.0 (1.28.0) OS Version: macOS High Sierra 10.13.6 (17G65) Steps to Reproduce: a markdown file preview to the side ! <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.721 --- <!-- score: 0.717 --- <!-- score: 0.672 --- <!-- score: 0.651 --- <!-- score: 0.645 --<!-- potentialduplicatescomment --

.vscode-light .hljs-literal, .vscode-light .hljs-template-tag, .vscode-light .hljs-template-variable, <del> .vscode-light .hljs-type, .vscode-light .hljs-addition { </del> <ins> .vscode-light .hljs-type { </ins> color: #a31515; } <del> .vscode-light .hljs-deletion, </del> .vscode-light .hljs-selector-attr, .vscode-light .hljs-selector-pseudo, .vscode-light .hljs-meta {


Question:
Voiceover does not read new option details because of describedby issue. May require the new ARIA combo box model.
Any problem with me creating new tags for NVDA and voiceover like there is already a tag for jaws? Accessibility-NVDA Accessibility-Voiceover I will also volunteer to do triage on accessibility issues if I can identify them.

white-space: nowrap; } <del> .monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-text-description { display: none; </del> <ins> /* Accepted CSS hiding technique for accessibility reader text  */ /* https://webaim.org/techniques/css/invisiblecontent/ */ .monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .visually-hidden { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; </ins> } .monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control {


Question:
Voiceover does not read new option details because of describedby issue. May require the new ARIA combo box model.
Any problem with me creating new tags for NVDA and voiceover like there is already a tag for jaws? Accessibility-NVDA Accessibility-Voiceover I will also volunteer to do triage on accessibility issues if I can identify them.

import 'vs/css!./selectBoxCustom'; <del> import * as nls from 'vs/nls'; </del> import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Event, Emitter, chain } from 'vs/base/common/event'; import { KeyCode, KeyCodeUtils } from 'vs/base/common/keyCodes';


Question:
Voiceover does not read new option details because of describedby issue. May require the new ARIA combo box model.
Any problem with me creating new tags for NVDA and voiceover like there is already a tag for jaws? Accessibility-NVDA Accessibility-Voiceover I will also volunteer to do triage on accessibility issues if I can identify them.

data.root = container; data.optionText = dom.append(container, $('.option-text')); data.optionDescriptionText = dom.append(container, $('.option-text-description')); <ins> dom.addClass(data.optionDescriptionText, 'visually-hidden'); </ins> return data; }


Question:
Voiceover does not read new option details because of describedby issue. May require the new ARIA combo box model.
Any problem with me creating new tags for NVDA and voiceover like there is already a tag for jaws? Accessibility-NVDA Accessibility-Voiceover I will also volunteer to do triage on accessibility issues if I can identify them.

const optionDisabled = (<ISelectOptionItem>element).optionDisabled; data.optionText.textContent = optionText; <del> data.root.setAttribute('aria-label', nls.localize('selectAriaOption', "{0}", optionText) + ',.'); </del> if (typeof element.optionDescriptionText === 'string') { const optionDescriptionId = (optionText.replace(/ /g, '_').toLowerCase() + '_description_' + data.root.id); <del> data.root.setAttribute('aria-describedby', optionDescriptionId); </del> <ins> data.optionText.setAttribute('aria-describedby', optionDescriptionId); </ins> data.optionDescriptionText.id = optionDescriptionId; <del> data.optionDescriptionText.setAttribute('aria-label', element.optionDescriptionText); </del> <ins> data.optionDescriptionText.innerText = element.optionDescriptionText; </ins> } <del> // Workaround for list labels data.root.setAttribute('aria-selected', 'true'); </del> // pseudo-select disabled option if (optionDisabled) { dom.addClass((<HTMLElement>data.root), 'option-disabled');


Question:
It's clear that the usual set of icons is a minimal case, and that you want the default set to stay minimal. But I think the option to differentiate between start with or without debugging is a feature that every developer could use. Maybe an option in the config to switch the current command to would already be enough. Yes, a plugin could add an extra button. But I don't think this belongs within a plugin, as it's an extension of the existing button. I'm willing to do the work required. But before that: what are your preferences?
this is a fair feature request. I would keep it open and wait if it generastes more user traction. For us to add it to the touch bar we would also need a new icon which would be easily distinguihsable from the current start icon (green play). I would also check what icon Visual Studio is using. The icon design is the actual work, adding is just adding a one liner here
Visual Studio uses a same filled play icon for the default start action. It differentiates with an outline version of that same icon for starting without debugging. Seems reasonable?
Makes somewhat sense. Can you design that icon froum our start icon? fyi
Wait, shouldn't it be the one from ? Anyhow, I made a mockup based on the old designs found in Visual Studio: ! The stripes indicate that it's faster than full debug. While the hollow arrow indicates that it's not as complete as debugging. SVG: Alternatively it could look like this: ! But, in my opinion, it does not convey the faster execution as well.
Not sure if the three lines fit the rest of our icons, I'd go with just the outline. Thanks for creating this!
I like how you explained the icons and I agree with your point of view. However let's listen to and for consistency just use the hollow icon. can you please provide the PR with that icon and we can merge it in. Since I do not have a mac touchbar I do not know, but does it support multiple themes? Do we also need to design the icon for the dark theme?
I'll check! I don't think it has multiple themes though. And what about the location? I think it's the white icon from the folder that's being displayed on my TouchBar. It's white and has a different aspect ratio. Should I redesign that one as well?
You are correct, here is the location So I would place it just next to that one. And yes the icon should follow the style of those icons, so an empty white triangle seems fitting. Thanks a lot!
Cool! One more thing: That icon is not an equilateral triangle. That's correct? Because I could fix both icons at the same time. The current options: <img width="1067" alt="screenshot 2018-10-19 at 12 04 50" src="https://user-"What's your preference,
I would not change the current shape. Though I leave this decision up to
About the theming: Apple states that you should supply themed images (black on transparent), but I don't see these in the VS Code codebase. So I guess Electron has a specific implementation to translate the png icons to TouchBar-safe icons. The png resolution does not seem to match up either, even though it does look good on the TouchBar.
Thanks for looking into this. I am not sure how to change the theme for the touchbar - if the theme changes and our icons look out of place than I would be open for a PR which does the theming of our touch bar icons
Pinging on the design decision.
Sorry about that, this somehow fall off my radar. Assingin to and November for discussion
I'll start a PR in the meantime.
Verification steps: a macbook that has a touchbar or use a file that you can run (i.e. python file with ) the <img width="80" alt="image" src="https://user-"button to start without debugging should run the file, similarly as going from

}; registerTouchBarEntry(StartAction.ID, StartAction.LABEL, 0, CONTEXT_IN_DEBUG_MODE.toNegated(), 'continue-tb.png'); <ins> registerTouchBarEntry(RunAction.ID, RunAction.LABEL, 1, CONTEXT_IN_DEBUG_MODE.toNegated(), 'continue-without-debugging-tb.png'); </ins> registerTouchBarEntry(ContinueAction.ID, ContinueAction.LABEL, 0, CONTEXT_DEBUG_STATE.isEqualTo('stopped'), 'continue-tb.png'); registerTouchBarEntry(PauseAction.ID, PauseAction.LABEL, 1, ContextKeyExpr.and(CONTEXT_IN_DEBUG_MODE, ContextKeyExpr.notEquals('debugState', 'stopped')), 'pause-tb.png'); registerTouchBarEntry(StepOverAction.ID, StepOverAction.LABEL, 2, CONTEXT_DEBUG_STATE.isEqualTo('stopped'), 'stepover-tb.png');


Question:
Issue Type: <bBug</bWhen working with tagged template literals in JS and JSX (styled-components is my use case), the backticks used to auto-close when typed, but that recently changed. The big issue though is that if you go into a multi-line literal, and then try to type the closing backtick, vscode inserts two backticks, leaving you with three. For example if I type: I would expect to have the closing tick automatically inserted and the cursor in between them. Instead it just stops there. If I then go on to enter some css and then manually enter the closing backtick, I get: I then have to manually delete the third backtick, as if I delete the second, the whole pair is deleted because of the auto-close rules. I have verified this is happening on Mac and Windows 10, with extensions enabled and disabled, and in the Insiders build. VS Code version: Code 1.28.1 (, 2018-10-11T18:07:48.477Z) OS version: Darwin x64 18.0.0 <details<summarySystem Info</summary </details<details<summaryExtensions (20)</summaryExtensionVersion ------ ActiveFileInStatusBar1.0.3 better-comments2.0.2 bracket-pair-colorizer1.0.60 vscode-eslint1.6.1 es7-react-js-snippets1.8.7 prettier-vscode1.6.1 dotnet-test-explorer0.5.4 vscode-styled-components0.0.22 mssql1.4.0 python2018.9.0 csharp1.16.2 vsliveshare0.3.790 indent-rainbow7.2.4 vscode-docker0.3.1 seti-icons0.1.3 code-settings-sync3.1.2 mdx0.1.0 vscode-status-bar-format-toggle1.4.0 vim0.16.10 quokka-vscode1.0.154 (3 theme extensions excluded) </details<!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.498 --<!-- potentialduplicatescomment --
It seems to me the editor only adds backtick if it's legal for a template string to be in that place. However your example is only legal if styled components are allowed. Could you give an example with a valid js syntax? If it only happens with styled component syntax, could be it's a bug (or a lack of feature) in the styled component extension.
It works with just plain ES6 syntax as well. This example: Is valid ES6, no React/styled-components, and the same issue occurs when trying to type the multi-line literal. I should note that manually closing the literal on the same line does work okay, although it doesn't auto-close. It is only on multi-line template literals that the auto-close fires on the last tick.
I'm seeing this bug also in python, where backticks have no special meaning . Sometimes I use them to denote arguments in a user string: But when I type the second backtick, vscode inserts two, resulting in: Strangely, this only happens if there is before inserting the backtick. If I type insert in any other part of the string, the doubling doesn't happen. should I open a different issue with this problem, to be tagged as a bug? If so, does it belong here or to ? Thanks !
Can this be for this iteration?
As a workaround, set: Opened to track possible solution
Thanks for that! Anything workaroundish for the cursor coming inside to the next line with an indent on press Enter? !
FWIW, I found disabling the Babel JavaScript extension put a stop to doubling up on backticks when closing a pair. (However as I rely on that extension, disabling it isn't really an option.)

} // Do not auto-close ' or " after a word character <del> if (autoClosingPair.open.length === 1 && chIsQuote && autoCloseConfig !== 'always') { </del> <ins> if (autoClosingPair.open.length === 1 && (ch === ''' || ch === '"') && autoCloseConfig !== 'always') { </ins> const wordSeparators = getMapForWordSeparators(config.wordSeparators); if (insertOpenCharacter && position.column > 1 && wordSeparators.get(lineText.charCodeAt(position.column - 2)) === WordCharacterClass.Regular) { return null;


Question:
Issue Type: <bBug</bWhen working with tagged template literals in JS and JSX (styled-components is my use case), the backticks used to auto-close when typed, but that recently changed. The big issue though is that if you go into a multi-line literal, and then try to type the closing backtick, vscode inserts two backticks, leaving you with three. For example if I type: I would expect to have the closing tick automatically inserted and the cursor in between them. Instead it just stops there. If I then go on to enter some css and then manually enter the closing backtick, I get: I then have to manually delete the third backtick, as if I delete the second, the whole pair is deleted because of the auto-close rules. I have verified this is happening on Mac and Windows 10, with extensions enabled and disabled, and in the Insiders build. VS Code version: Code 1.28.1 (, 2018-10-11T18:07:48.477Z) OS version: Darwin x64 18.0.0 <details<summarySystem Info</summary </details<details<summaryExtensions (20)</summaryExtensionVersion ------ ActiveFileInStatusBar1.0.3 better-comments2.0.2 bracket-pair-colorizer1.0.60 vscode-eslint1.6.1 es7-react-js-snippets1.8.7 prettier-vscode1.6.1 dotnet-test-explorer0.5.4 vscode-styled-components0.0.22 mssql1.4.0 python2018.9.0 csharp1.16.2 vsliveshare0.3.790 indent-rainbow7.2.4 vscode-docker0.3.1 seti-icons0.1.3 code-settings-sync3.1.2 mdx0.1.0 vscode-status-bar-format-toggle1.4.0 vim0.16.10 quokka-vscode1.0.154 (3 theme extensions excluded) </details<!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.498 --<!-- potentialduplicatescomment --
It seems to me the editor only adds backtick if it's legal for a template string to be in that place. However your example is only legal if styled components are allowed. Could you give an example with a valid js syntax? If it only happens with styled component syntax, could be it's a bug (or a lack of feature) in the styled component extension.
It works with just plain ES6 syntax as well. This example: Is valid ES6, no React/styled-components, and the same issue occurs when trying to type the multi-line literal. I should note that manually closing the literal on the same line does work okay, although it doesn't auto-close. It is only on multi-line template literals that the auto-close fires on the last tick.
I'm seeing this bug also in python, where backticks have no special meaning . Sometimes I use them to denote arguments in a user string: But when I type the second backtick, vscode inserts two, resulting in: Strangely, this only happens if there is before inserting the backtick. If I type insert in any other part of the string, the doubling doesn't happen. should I open a different issue with this problem, to be tagged as a bug? If so, does it belong here or to ? Thanks !
Can this be for this iteration?
As a workaround, set: Opened to track possible solution
Thanks for that! Anything workaroundish for the cursor coming inside to the next line with an indent on press Enter? !
FWIW, I found disabling the Babel JavaScript extension put a stop to doubling up on backticks when closing a pair. (However as I rely on that extension, disabling it isn't really an option.)

model.undo(); } <ins> test('issue #61070: backtick (`) should auto-close after a word character', () => { let mode = new AutoClosingMode(); usingCursor({ text: ['const markup = highlight'], languageId: mode.languageId }, (editor, model, viewModel) => { model.forceTokenization(1); assertType(editor, model, viewModel, 1, 25, '`', '``', `auto closes ` @ (1, 25)`); }); mode.dispose(); }); </ins> test('open parens: default', () => { let mode = new AutoClosingMode(); usingCursor({


Question:
Issue Type: <bBug</bWith at least one folder loaded in Code: to Code Preferences Settings on either "User Settings" or "Workspace Settings" Notice tab spacing is jumpy when changing active selection. It should NOT be as jumpy. I believe it's caused by the text being bolded on active selection. <iDesired</i! <iActual</i! VS Code version: Code 1.28.2 (, 2018-10-17T00:18:43.347Z) OS version: Darwin x64 18.0.0 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Here's the
I'm not sure about this change, I think the bold is necessary to make the selected tab noticeable. Some themes hide the underline on the selected item, and in some themes, the color difference is not really noticeable. So I would worry that this would make it impossible to tell which tab is selected. I also don't really have an issue with the slight shifting, I've never noticed it before now.
We should try to remove this shift as it's not really smooth. In our other tabs (panels, settings json) we don't use alternate font-weights for active/inactive, so I think we should keep them consistent and the same. Alternatively, if we really want to make the states look different we could adjust the opacity (just like the other tabs) as long as they pass the color contrast ratio: !
I agree that it's not smooth. It's also not consistent with the other tabs in the product. There is a hack that can remove the shifting (discussed with this ), however I think that might be overdoing it to achieve this effect. I would add the opacity change as well to help reinforce the two states.
Should I just borrow the inactive color from the panel tabs, at least for the builtin themes? Or if I should use opacity, can you tell me what color/opacity to use? Looking through some popular ones, I don't think this change would be a problem for that many other themes really... Also for folder settings, the folder name and string "Folder Settings" are currently distinguished by size and color, so we might still need 3 colors.
Actually the current panel tab colors in Monokai don't meet the contrast requirement: ! !
We only need to meet the color contrast on the themes we own, which is light/dark/hc. Here's the contrast on the inactive text: Here's the colors and opacity for the active/inactive panels: For the folder settings, you can change the opacity to (which passes) and will end up looking like this: !
Not using the panel foreground color because the background is not always the same, but I think it looks good as is after the PR.

} .settings-editor > .settings-header > .settings-header-controls .settings-tabs-widget .action-label.checked { <del> font-weight: 500; </del> opacity: 1; }


Question:
Issue Type: <bBug</b VS Code version: Code 1.28.2 (, 2018-10-17T00:23:51.859Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.504 --- <!-- score: 0.472 --- <!-- score: 0.457 --<!-- potentialduplicatescomment --

import 'vs/css!./media/settingsWidgets'; import { localize } from 'vs/nls'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; <del> import { foreground, inputBackground, inputBorder, inputForeground, listActiveSelectionBackground, listActiveSelectionForeground, listHoverBackground, listHoverForeground, listInactiveSelectionBackground, listInactiveSelectionForeground, registerColor, selectBackground, selectBorder, selectForeground, textLinkForeground, textPreformatForeground, editorWidgetBorder } from 'vs/platform/theme/common/colorRegistry'; </del> <ins> import { foreground, inputBackground, inputBorder, inputForeground, listActiveSelectionBackground, listActiveSelectionForeground, listHoverBackground, listHoverForeground, listInactiveSelectionBackground, listInactiveSelectionForeground, registerColor, selectBackground, selectBorder, selectForeground, textLinkForeground, textPreformatForeground, editorWidgetBorder, textLinkActiveForeground } from 'vs/platform/theme/common/colorRegistry'; </ins> import { attachButtonStyler, attachInputBoxStyler } from 'vs/platform/theme/common/styler'; import { ICssStyleCollector, ITheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { disposableTimeout } from 'vs/base/common/async';


Question:
Issue Type: <bBug</b VS Code version: Code 1.28.2 (, 2018-10-17T00:23:51.859Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.504 --- <!-- score: 0.472 --- <!-- score: 0.457 --<!-- potentialduplicatescomment --

collector.addRule(`.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a > code { color: ${link}; }`); } <ins> const activeLink = theme.getColor(textLinkActiveForeground); if (activeLink) { collector.addRule(`.settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:hover, .settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:active { color: ${activeLink}; }`); collector.addRule(`.settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:hover > code, .settings-editor > .settings-body > .settings-tree-container .setting-item .setting-item-description-markdown a:active > code { color: ${activeLink}; }`); collector.addRule(`.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:hover, .monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:active { color: ${activeLink}; }`); collector.addRule(`.monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:hover > code, .monaco-select-box-dropdown-container > .select-box-details-pane > .select-box-description-markdown a:active > code { color: ${activeLink}; }`); } </ins> const headerForegroundColor = theme.getColor(settingsHeaderForeground); if (headerForegroundColor) { collector.addRule(`.settings-editor > .settings-header > .settings-header-controls .settings-tabs-widget .action-label.checked { color: ${headerForegroundColor}; border-bottom-color: ${headerForegroundColor}; }`);


Question:
Issue Type: <bBug</bIn Lua, when comment contains "function", like: -- blah blah function then type Enter, the next line will auto indent for one tab, but it shoud not auto indent. VS Code version: Code - OSS 1.27.2 (, 2018-09-14T00:41:55.375Z) OS version: Linux x64 4.18.16-arch1-1-ARCH <details<summarySystem Info</summary </details<details<summaryExtensions (5)</summaryExtensionVersion ------ vscode-language-pack-zh-hans1.27.2 python2018.10.1 cpptools0.20.1 Go0.7.0 markdown-all-in-one1.7.0 </details<!-- generated by issue reporter --
Introduced by

["'", "'"] ], "indentationRules": { <del> "increaseIndentPattern": "^s*((b(else|function|then|do|repeat)b((?!b(end|until)b).)*)|({s*))$", </del> <ins> "increaseIndentPattern": "^((?!(--)).)*((b(else|function|then|do|repeat)b((?!b(end|until)b).)*)|({s*))$", </ins> "decreaseIndentPattern": "^s*((b(elseif|else|end|until)b)|(})|()))" } }


Question:
Issue Type: <bBug</bthe settings editor a setting that has a dropdown so that the options are displayed editors The dropdown remains open: ! Not sure if this is an issue with the select itself, or the settings editor. VS Code version: Code - Insiders 1.30.0-insider (, 2018-12-03T06:12:08.874Z) OS version: Darwin x64 18.0.0 <!-- generated by issue reporter --
Nice, for me it even jumps to the corner of the screen for some reason after switching to the editor. ! I think we will need some way to hide the list when the settings editor hides? Is there a way to force it to hide from outside currently?
Ha, I was afraid this would occur. The _sticky flag that Jackson for debugging was changed to true in a recent PR. I was going to ask if this was intentional. My Insiders was just old enough to not have this. was this left as 'true' by mistake when you're doing some mouse work for list? I will verify if this is the case and fix unless requested otherwise...
Good catch, it looks like a mistake, I'll revert it so it can get into tomorrow's build. Let me know if that's not the case
Actually looks like you are on it go ahead if you want to create a PR.
Fixed with,
- you have to merge, I'm not allowed :-(

private selectionDetailsPane: HTMLElement; private _skipLayout: boolean = false; <del> private _sticky: boolean = true; // for dev purposes only </del> <ins> private _sticky: boolean = false; // for dev purposes only </ins> constructor(options: string[], selected: number, contextViewProvider: IContextViewProvider, styles: ISelectBoxStyles, selectBoxOptions?: ISelectBoxOptions) {


Question:
Issue Type: <bBug</bUsing similar contribution in extension: Command palette is doing it correctly: Keybinginds is only showing . VS Code version: Code 1.29.1 (, 2018-11-15T19:13:36.375Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.447 --<!-- potentialduplicatescomment --
I'm going to work on this.

private static getCommandLabel(menuCommand: ICommandAction, editorActionLabel: string): string { if (menuCommand) { <del> return typeof menuCommand.title === 'string' ? menuCommand.title : menuCommand.title.value; </del> <ins> let category; if (menuCommand.category) { category = typeof menuCommand.category === 'string' ? menuCommand.category : menuCommand.category.value; } const title = typeof menuCommand.title === 'string' ? menuCommand.title : menuCommand.title.value; return category ? `${category}: ${title}` : title; </ins> } if (editorActionLabel) {


Question:
Currently when one types a term in the search-bar of the settings-UI and no matching settings are found then a Clear Search option appears which deletes the term in the search-bar if clicked. However, this option does not appear when matching settings are found. If one wants now to remove the term from the search-bar one has to manually select the typed term and press the delete-button. It would be more convenient if there always would be a 'Delete Search'-Button. This could be a little X symbol on the right of the search-bar. Currently when the Clear Search option is clicked the search-term is deleted but the search-bar loses focus. It would be more convenient if the search-bar would get the focus such that one could immediately start typing the new search-term.
This should be a case for all the inputs around the editor (search, replace etc.), to have a little to quickly erase the input's content. !
I disagree, the user is going to be typing anyway, they can press backspace. In the search view at least you can still use the "clear search results" button to clear all the inputs whether results are present or not (in Insiders only)
This I agree with, I will keep the issue open to do this.
May I ask you why there is only a clear-search-option when no matched settings are found? Why can't we have it also when results are found? Feels kind of half-baked to me. Either there is an option available which enables to clear every search or there is no such option.
I don't want to clutter the UI by adding buttons for something that doesn't really need a button.
Why then not remove the clear-search-option completely? What purpose does it give in the case when no settings are found in contrast to when settings are found?
I guess that when no settings are found, you definitely want to clear the filter because there's nothing else to do, but when you are searching, you either found the setting you want or you want to tweak your search query to search for something different. When the page is full of settings, adding a button/link to clear the query would be UI noise.
I find myself often in one of the following situations when some settings for my typed search-term are found: Wrong settings are found because I didn't know the correct search-term and now I want to delete the complete term and type a completely knew one with the hope that the new term will show me the correct results. I typed the correct term and found the correct settings. After changing the settings I need to type a completely knew term because I want to search for the next settings which I want to change. I typed the correct term and found the correct settings. After changing the settings I want to come back to the default settings-view (where all settings are show as if you just opened the settings-UI). For this however I need first to select the entire search-term (double/triple click the term or select the term manually with the mouse) and then I need two press the del-button and afterwards move my hand back to the mouse. Instead one could simply click on a tiny del-icon right within the search-bar and instantly start typing the new term or even keep the hand on the mouse and keep searching trough the default-search-view. In fact I find the case when no results are found the most useless for a clear-search-button because when no settings are found I instantly can see that. In such a case my hands are usually still on the keyboard what means that it is easier to delete/correct the term with the keyboard instead of reaching to the mouse, clicking on the button and then again moving back to the keyboard to type the new-search-term.
Actually such a clear-search-button already exists in the keyboard-shortcuts-search-bar. You can see it in the screenshot on the far right within the search-bar. !
Got me there. I guess would take a PR that adds the same button to the settings editor.
I've been working on this issue.. Currently I have the search clear button working in the settings editor, I just need to tidy up placement as there is a search counter that appears where the action bar icons normally appear. I was thinking to just place the search counter that appears, slightly to the left beside where the clear button will be. What would you suggest for this?

padding: 0px 8px; border-radius: 2px; position: absolute; <del> right: 10px; </del> <ins> right: 35px; top: 0; } .settings-editor > .settings-header > .search-container > .settings-clear-widget { margin: 6px 0px; padding: 0px 8px; border-radius: 2px; position: absolute; right: 0px; </ins> top: 0; }


Question:
Currently when one types a term in the search-bar of the settings-UI and no matching settings are found then a Clear Search option appears which deletes the term in the search-bar if clicked. However, this option does not appear when matching settings are found. If one wants now to remove the term from the search-bar one has to manually select the typed term and press the delete-button. It would be more convenient if there always would be a 'Delete Search'-Button. This could be a little X symbol on the right of the search-bar. Currently when the Clear Search option is clicked the search-term is deleted but the search-bar loses focus. It would be more convenient if the search-bar would get the focus such that one could immediately start typing the new search-term.
This should be a case for all the inputs around the editor (search, replace etc.), to have a little to quickly erase the input's content. !
I disagree, the user is going to be typing anyway, they can press backspace. In the search view at least you can still use the "clear search results" button to clear all the inputs whether results are present or not (in Insiders only)
This I agree with, I will keep the issue open to do this.
May I ask you why there is only a clear-search-option when no matched settings are found? Why can't we have it also when results are found? Feels kind of half-baked to me. Either there is an option available which enables to clear every search or there is no such option.
I don't want to clutter the UI by adding buttons for something that doesn't really need a button.
Why then not remove the clear-search-option completely? What purpose does it give in the case when no settings are found in contrast to when settings are found?
I guess that when no settings are found, you definitely want to clear the filter because there's nothing else to do, but when you are searching, you either found the setting you want or you want to tweak your search query to search for something different. When the page is full of settings, adding a button/link to clear the query would be UI noise.
I find myself often in one of the following situations when some settings for my typed search-term are found: Wrong settings are found because I didn't know the correct search-term and now I want to delete the complete term and type a completely knew one with the hope that the new term will show me the correct results. I typed the correct term and found the correct settings. After changing the settings I need to type a completely knew term because I want to search for the next settings which I want to change. I typed the correct term and found the correct settings. After changing the settings I want to come back to the default settings-view (where all settings are show as if you just opened the settings-UI). For this however I need first to select the entire search-term (double/triple click the term or select the term manually with the mouse) and then I need two press the del-button and afterwards move my hand back to the mouse. Instead one could simply click on a tiny del-icon right within the search-bar and instantly start typing the new term or even keep the hand on the mouse and keep searching trough the default-search-view. In fact I find the case when no results are found the most useless for a clear-search-button because when no settings are found I instantly can see that. In such a case my hands are usually still on the keyboard what means that it is easier to delete/correct the term with the keyboard instead of reaching to the mouse, clicking on the button and then again moving back to the keyboard to type the new-search-term.
Actually such a clear-search-button already exists in the keyboard-shortcuts-search-bar. You can see it in the screenshot on the far right within the search-bar. !
Got me there. I guess would take a PR that adds the same button to the settings editor.
I've been working on this issue.. Currently I have the search clear button working in the settings editor, I just need to tidy up placement as there is a search counter that appears where the action bar icons normally appear. I was thinking to just place the search counter that appears, slightly to the left beside where the clear button will be. What would you suggest for this?

import { ISettingsEditorViewState, parseQuery, SearchResultIdx, SearchResultModel, SettingsTreeElement, SettingsTreeGroupChild, SettingsTreeGroupElement, SettingsTreeModel, SettingsTreeSettingElement } from 'vs/workbench/contrib/preferences/browser/settingsTreeModels'; import { settingsTextInputBorder } from 'vs/workbench/contrib/preferences/browser/settingsWidgets'; import { createTOCIterator, TOCTree, TOCTreeModel } from 'vs/workbench/contrib/preferences/browser/tocTree'; <del> import { CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_SEARCH_FOCUS, CONTEXT_TOC_ROW_FOCUS, EXTENSION_SETTING_TAG, IPreferencesSearchService, ISearchProvider, MODIFIED_SETTING_TAG, SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU } from 'vs/workbench/contrib/preferences/common/preferences'; </del> <ins> import { CONTEXT_SETTINGS_EDITOR, CONTEXT_SETTINGS_SEARCH_FOCUS, CONTEXT_TOC_ROW_FOCUS, EXTENSION_SETTING_TAG, IPreferencesSearchService, ISearchProvider, MODIFIED_SETTING_TAG, SETTINGS_EDITOR_COMMAND_SHOW_CONTEXT_MENU, SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS } from 'vs/workbench/contrib/preferences/common/preferences'; </ins> import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IPreferencesService, ISearchResult, ISettingsEditorModel, ISettingsEditorOptions, SettingsEditorOptions, SettingValueType } from 'vs/workbench/services/preferences/common/preferences'; import { SettingsEditor2Input } from 'vs/workbench/services/preferences/common/preferencesEditorInput'; import { Settings2EditorModel } from 'vs/workbench/services/preferences/common/preferencesModels'; <ins> import { Action } from 'vs/base/common/actions'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; </ins> function createGroupIterator(group: SettingsTreeGroupElement): Iterator<ITreeElement<SettingsTreeGroupChild>> { const groupsIt = Iterator.fromArray(group.children);


Question:
Currently when one types a term in the search-bar of the settings-UI and no matching settings are found then a Clear Search option appears which deletes the term in the search-bar if clicked. However, this option does not appear when matching settings are found. If one wants now to remove the term from the search-bar one has to manually select the typed term and press the delete-button. It would be more convenient if there always would be a 'Delete Search'-Button. This could be a little X symbol on the right of the search-bar. Currently when the Clear Search option is clicked the search-term is deleted but the search-bar loses focus. It would be more convenient if the search-bar would get the focus such that one could immediately start typing the new search-term.
This should be a case for all the inputs around the editor (search, replace etc.), to have a little to quickly erase the input's content. !
I disagree, the user is going to be typing anyway, they can press backspace. In the search view at least you can still use the "clear search results" button to clear all the inputs whether results are present or not (in Insiders only)
This I agree with, I will keep the issue open to do this.
May I ask you why there is only a clear-search-option when no matched settings are found? Why can't we have it also when results are found? Feels kind of half-baked to me. Either there is an option available which enables to clear every search or there is no such option.
I don't want to clutter the UI by adding buttons for something that doesn't really need a button.
Why then not remove the clear-search-option completely? What purpose does it give in the case when no settings are found in contrast to when settings are found?
I guess that when no settings are found, you definitely want to clear the filter because there's nothing else to do, but when you are searching, you either found the setting you want or you want to tweak your search query to search for something different. When the page is full of settings, adding a button/link to clear the query would be UI noise.
I find myself often in one of the following situations when some settings for my typed search-term are found: Wrong settings are found because I didn't know the correct search-term and now I want to delete the complete term and type a completely knew one with the hope that the new term will show me the correct results. I typed the correct term and found the correct settings. After changing the settings I need to type a completely knew term because I want to search for the next settings which I want to change. I typed the correct term and found the correct settings. After changing the settings I want to come back to the default settings-view (where all settings are show as if you just opened the settings-UI). For this however I need first to select the entire search-term (double/triple click the term or select the term manually with the mouse) and then I need two press the del-button and afterwards move my hand back to the mouse. Instead one could simply click on a tiny del-icon right within the search-bar and instantly start typing the new term or even keep the hand on the mouse and keep searching trough the default-search-view. In fact I find the case when no results are found the most useless for a clear-search-button because when no settings are found I instantly can see that. In such a case my hands are usually still on the keyboard what means that it is easier to delete/correct the term with the keyboard instead of reaching to the mouse, clicking on the button and then again moving back to the keyboard to type the new-search-term.
Actually such a clear-search-button already exists in the keyboard-shortcuts-search-bar. You can see it in the screenshot on the far right within the search-bar. !
Got me there. I guess would take a PR that adds the same button to the settings editor.
I've been working on this issue.. Currently I have the search clear button working in the settings editor, I just need to tidy up placement as there is a search counter that appears where the action bar icons normally appear. I was thinking to just place the search counter that appears, slightly to the left beside where the clear button will be. What would you suggest for this?

private scheduledRefreshes: Map<string, DOM.IFocusTracker>; private lastFocusedSettingElement: string | null = null; <ins> private actionBar: ActionBar; private actionsContainer: HTMLElement; </ins> /** Don't spam warnings */ private hasWarnedMissingSettings = false;


Question:
Currently when one types a term in the search-bar of the settings-UI and no matching settings are found then a Clear Search option appears which deletes the term in the search-bar if clicked. However, this option does not appear when matching settings are found. If one wants now to remove the term from the search-bar one has to manually select the typed term and press the delete-button. It would be more convenient if there always would be a 'Delete Search'-Button. This could be a little X symbol on the right of the search-bar. Currently when the Clear Search option is clicked the search-term is deleted but the search-bar loses focus. It would be more convenient if the search-bar would get the focus such that one could immediately start typing the new search-term.
This should be a case for all the inputs around the editor (search, replace etc.), to have a little to quickly erase the input's content. !
I disagree, the user is going to be typing anyway, they can press backspace. In the search view at least you can still use the "clear search results" button to clear all the inputs whether results are present or not (in Insiders only)
This I agree with, I will keep the issue open to do this.
May I ask you why there is only a clear-search-option when no matched settings are found? Why can't we have it also when results are found? Feels kind of half-baked to me. Either there is an option available which enables to clear every search or there is no such option.
I don't want to clutter the UI by adding buttons for something that doesn't really need a button.
Why then not remove the clear-search-option completely? What purpose does it give in the case when no settings are found in contrast to when settings are found?
I guess that when no settings are found, you definitely want to clear the filter because there's nothing else to do, but when you are searching, you either found the setting you want or you want to tweak your search query to search for something different. When the page is full of settings, adding a button/link to clear the query would be UI noise.
I find myself often in one of the following situations when some settings for my typed search-term are found: Wrong settings are found because I didn't know the correct search-term and now I want to delete the complete term and type a completely knew one with the hope that the new term will show me the correct results. I typed the correct term and found the correct settings. After changing the settings I need to type a completely knew term because I want to search for the next settings which I want to change. I typed the correct term and found the correct settings. After changing the settings I want to come back to the default settings-view (where all settings are show as if you just opened the settings-UI). For this however I need first to select the entire search-term (double/triple click the term or select the term manually with the mouse) and then I need two press the del-button and afterwards move my hand back to the mouse. Instead one could simply click on a tiny del-icon right within the search-bar and instantly start typing the new term or even keep the hand on the mouse and keep searching trough the default-search-view. In fact I find the case when no results are found the most useless for a clear-search-button because when no settings are found I instantly can see that. In such a case my hands are usually still on the keyboard what means that it is easier to delete/correct the term with the keyboard instead of reaching to the mouse, clicking on the button and then again moving back to the keyboard to type the new-search-term.
Actually such a clear-search-button already exists in the keyboard-shortcuts-search-bar. You can see it in the screenshot on the far right within the search-bar. !
Got me there. I guess would take a PR that adds the same button to the settings editor.
I've been working on this issue.. Currently I have the search clear button working in the settings editor, I just need to tidy up placement as there is a search counter that appears where the action bar icons normally appear. I was thinking to just place the search counter that appears, slightly to the left beside where the clear button will be. What would you suggest for this?

this.searchWidget.setValue(query.trim()); } <ins> clearSearch(): void { this.clearSearchResults(); this.focusSearch(); } </ins> private createHeader(parent: HTMLElement): void { this.headerContainer = DOM.append(parent, $('.settings-header')); const searchContainer = DOM.append(this.headerContainer, $('.search-container')); <ins> const clearInputAction = new Action(SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS, localize('clearInput', "Clear Settings Search Input"), 'codicon-clear-all', false, () => { this.clearSearch(); return Promise.resolve(null); }); </ins> const searchBoxLabel = localize('SearchSettings.AriaLabel', "Search settings"); this.searchWidget = this._register(this.instantiationService.createInstance(SuggestEnabledInput, `${SettingsEditor2.ID}.searchbox`, searchContainer, { triggerCharacters: ['@'],