Question: import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IFileService } from 'vs/platform/files/common/files'; <del> import { IDebugService, State, IDebugSession, IThread, IEnablement, IBreakpoint, IStackFrame, REPL_ID, IConfig } </del> <ins> import { IDebugService, State, IDebugSession, IThread, IEnablement, IBreakpoint, IStackFrame, REPL_ID } </ins> from 'vs/workbench/parts/debug/common/debug'; import { Variable, Expression, Thread, Breakpoint } from 'vs/workbench/parts/debug/common/debugModel'; import { IPartService } from 'vs/workbench/services/part/common/partService';

Somehow I missed the change in the and only now found it out. What I do not udnerstand is why we need all this code? I think this handler should be removed and the action should be called like it was done previously. Code pointer: It would be great if we could tackle this in December. Thanks
The reason for this code change was that creates a handler for command that passes no arguments to the action: So instead I used with a handler that would forward the argument. It looks like there are other debug commands registered in this way in , so I think moving the code for startDebug there makes sense. The handlers there are shorter and less generic, I'll see if rewriting the startDebug one that way causes any issues
what you need is calling the start debug with a configuration, and I believe we already have a way for doing this. can you please provide a pointer to where you are already calling start debug with a configuration. are you calling start debug from the main side or where from exactly? I can also look into this. You can just let me know how to verify that I did not break your scenario.
The extension API's implementation passes a debug configuration to the debug service's startDebugging here:
I'm trying to start debugging from the process explorer. Since it's a separate browser window, it doesn't have access to the debug workbench service, and it's also not an extension, so it can't leverage the extension API for starting debugging. Currently, the process explorer window sends an IPC message back to the issue service in the main process. This then sends an IPC message to the main renderer process to run the debug start command: The path is also used by the native menu to trigger commands from the main process.
ok got it. So the best way it seems is to what you have done going via the action. Can you try to clean up the handler. And if that does not work I can look into an alternative solution.
Sure, I'll work on cleaning up the handler today


Question: "customEditor.imagePreview.displayName": "Image Preview", "customEditor.videoPreview.displayName": "Video Preview", "command.zoomIn": "Zoom in", <del> "command.zoomOut": "Zoom out" </del> <ins> "command.zoomOut": "Zoom out", "command.copyImage": "Copy" </ins> }

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: Version: 1.74.3 (on ) OS Version: Linux, Gnome, Chrome Steps to Reproduce: an image in the media-preview extension click on the image and select copy to paste the image somewhere Nothing happens. Also note that Cut and Paste make no sense here as menu items. I assume that these are just the default context menu options from - perhaps these should be removed entirely from the preview extension and we could manually implement copy?
Hey I would like to work on this issue.
assign this to me
Are these the correct steps to reproduce the issue? I'm unable to verify it on my mac. Can you provide more information? I previewed the image and then copied and pasted it. <img width="950" alt="image" src="https://user-"
I would like to wokr on this issue.
I would like to try solving this issue.
You right-click an image and select "copy", then you click a folder in VSCode's explorer and select "paste". The image should be pasted into that folder but it doesn't.
I would like to work on this issuse. here, I tried to copy and paste (Ctrl+v) it. But it doesn't work. https://user-
After a day of researching, I think I can explain why this issue happens.


Question: "customEditor.imagePreview.displayName": "Image Preview", "customEditor.videoPreview.displayName": "Video Preview", "command.zoomIn": "Zoom in", <del> "command.zoomOut": "Zoom out" </del> <ins> "command.zoomOut": "Zoom out", "command.copyImage": "Copy" </ins> }

Basically in the core webview module (see ), three default context menu actions (cut, copy and paste) are to the menu, which are accessible throughout all webviews, and happens to be one of them, so after you right-click anywhere in a image previewer, you will be able to see these three actions. After you clicks one of these actions, the editor will post an message to the image previewer, telling it to cut, copy or paste. If there is a correspondent listener for this perpose, the image will be actually cut, copied, pasted, but unfortunately there is no such listeners defined. This problem has existed for quite a bit of time. The original modification that cause this problem is from here . It is origianlly meant to allow users to copy selected text within an extension's README page. There is also a closed issue that describe such issue in . Personally I think providing action cut, copy and paste for all webviews is a little bit hasty, since there are not universally required for each webview, and even some of them need, the subject to be copied may vary from different webviews, or even different places in a same webview. I can solve it by disabling the default actions first (there is a option to achieve this), then let image previewer to implement its own copy and cut functionality, but I think this is rather a quick and sloppy solution. There should be another better way to solve this issue.
What about adding a handler :
Here's what I tried VSC insiders without any extensions Open a folder with a .png file Open the png file in vscode Right click and select Paste into folder in vscode = does not work Paste into markdown cell in vscode = does not work What am i doing wrong?
Pasting image data into folders isn't supported by VS Code. Pasting into a notebook cells works fine for me though. To verify though you can also paste into an external image editor


Question: <del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><style>.st0{opacity:0}.st0,.st1{fill:#f6f6f6}.st2{fill:#424242}.st3{fill:#f0eff1}</style><g id="outline"><path class="st0" d="M0 0h16v16H0z"/><path class="st1" d="M5 1v5H0v9h11v-2.586l1 1 4-4V1H5zm5 3v2L8 4.586V4h2zm-2 8H3V9h5v3z"/></g><g id="icon_x5F_bg"><path class="st2" d="M3 9h2v2H3zM6 10h2v2H6zM14 3v3h.586L15 5.586V2H6v4h1V3z"/><path class="st2" d="M9 10.414V13H2V8h6V7H1v7h9V11.414zM9.414 6H10V4H8v.586z"/><path class="st2" d="M13 5h-2v4L9 7v2l3 3 3-3V7l-2 2z"/></g><g id="icon_x5F_fg"><path class="st3" d="M8 9.414V8H2v5h7v-2.586l-1-1zM5 11H3V9h2v2zm3 1H6v-2h2v2zM8 4.586V4h6V3H7v3h1z"/></g></svg> </del>  No newline at end of file <ins> <svg fill="none" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m5 1v5h-5v9h11v-2.586l1 1 4-4v-8.414zm5 3v2l-2-1.414v-.586zm-2 8h-5v-3h5z" fill="#f6f6f6"/><g fill="#424242"><path d="m3 9h2v2h-2zm3 1h2v2h-2zm8-7v3h.586l.414-.414v-3.586h-9v4h1v-3z"/><path d="m9 10.414v2.586h-7v-5h6v-1h-7v7h9v-2.586zm.414-4.414h.586v-2h-2v.586z"/><path d="m13 5h-2v4l-2-2v2l3 3 3-3v-2l-2 2z"/></g><path d="m8 9.414v-1.414h-6v5h7v-2.586zm-3 1.586h-2v-2h2zm3 1h-2v-2h2zm0-7.414v-.586h6v-1h-7v3h1z" fill="#f0eff1"/></svg> </ins>  No newline at end of file

Environment Details: VSCode Version : 1.24.1 OS Version : Win10 Additional Details: MAS Violated: MAS2.4.7 Repro Steps: VS Code Keyboard Shortcuts from the Settings icon on the bottom left bar. Dark+(default dark) theme and other dark themes and check the focus visibility. Actual: Keyboard focus is not clearly visible on Sort by precedence button when default dark theme is applied. Expected: Focus should be clearly visible and should be outlined by solid or dotted line. Recommendations: Refer below link which is repository of bug fixes code snippets: User Impact: User will not be able to see the focus properly. MAS Reference Attachment for Reference: ! Does this issue occur when all extensions are disabled?: Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.593 --- <!-- score: 0.523 --- <!-- score: 0.457 --<!-- potentialduplicatescomment --
Sounds like colors and contrast, also assigning to
can you clarify if this also applies to our overall focus treatment? We use the same blue outline for most of our focus treatments: ! ! !
You can use any color for emphasizing the focus but it should be clearly visible to the user on all the color themes.
Please let me know when there are any changes to be done from my side.
will do, I think I'll need to play around with the offset of the outline color (and possibly opacity).
This issue has been closed automatically because it needs more information and has not had recent activity. See also our guidelines. Happy Coding!


Question: // Send data if the pty is ready this._process.send({ event: 'input', <del> data: this._sanitizeInput(data) </del> <ins> data </ins> }); } else { // If the pty is not ready, queue the data received from

VSCode Version: Version 1.12.2 (1.12.2) OS Version: OS X E Capitan 10.11.6 Steps to Reproduce: integrated terminal <kbdctrl+`</kbdterminal: key combination <kbdctrl + j</kbdExpected Cursor moves back a word, this the behavior that iTerm and exhibit Actual Newline is sent, essentially the same as using <kbdreturn</kbd
doesn't seem to be in the path in for me?
It's in zsh which is in mac by default? So just type in
Works for me, if you remove the backtick from your command: Not
Oh that was a typo, I am using Hmm that works in the integrated terminal for you? Using zsh without a .zshrc: Expected (in iTerm): ! <kbdctrl + j</kbdcauses the cursor to jump back to the beginning of each word. Actual (in integrated terminal): ! Should have probably left this gif linger a bit longer but at the end it says: As if you had just pressed <kbdreturn</kbd.
FYI, I just tried rebinding <kbdctrl + j</kbdwith bash's native binding commands: Again this works in iTerm and but not in the integrated terminal. Expected Terminal screen should be cleared Actual Newline is sent, essentially the same as using return
Hm I doesn't seem to be working anymore, maybe I didn't test it right or something. I looked into it a little bit, it seems to work fine in the demo which is the underlying library used. so that's why it's happening. The question is why does it work in the demo but not VS Code. It definitely gets registered within zsh inside VS Code: <img width="430" alt="screen shot 2017-05-17 at 9 50 05 pm" src=""Stepping through the code nothing stuck out as misbehaving through when run inside VS Code; they appear to both be sending 'n'. Nothing in the seems to be wrong either.
Aw I was really of hoping it was something wrong with my local configuration. Also I got the same behavior when trying it on windows + cygwin with a fresh install of vscode, <kbdctrl + j</kbdnot being distinguished from newline.
Hey just wondering if there was any progress on this?


Question: // Send data if the pty is ready this._process.send({ event: 'input', <del> data: this._sanitizeInput(data) </del> <ins> data </ins> }); } else { // If the pty is not ready, queue the data received from

If this is low priority could one of the contributors point me a area/file that might be causing the issue? Thanks!
I can't look into it any further right now, I'm pretty stumped on where to go from here though. It's a pretty technical problem so it might not be the easiest thing to jump in to. If you want to you can start by cloning and trying to reproduce it using the demo. If you can reproduce it you can check what's sent to the backend by loading up devtools and debugging If works fine, it would be a matter of doing a similar exercise but figuring out why VS Code behaves different by debugging similar code.
(Copied from ) This was happening because ctrl+j translates to (see ) and since we normalized to all input to the pty, this was getting lost and converted to a new line. The fix here is to never "sanitize" data that has already been processed by (ie. key strokes and paste) as knows how to handle them. We only need to process text that we send directly to the terminal such as a script the user is running or text being pasted into vim, etc.
Hmm just updated to 1.14.1 and this still isn't working for me... !
This will only be in 1.15.
Oh okay thanks.


Question: import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { BrowserLifecycleService } from 'vs/workbench/services/lifecycle/browser/lifecycleService'; import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; <ins> import { IHostService } from 'vs/workbench/services/host/browser/host'; </ins> export class BrowserWindow extends Disposable {

I like the improved "All done. You can close this tab now."-dialog but I think it is missing a "Close Tab" option. Today, when everything works you need to hit "Cancel" but I don't have the close tab option - which is what the title suggests
what are the steps to trigger this?
Use Continue On Reopen on the Desktop from


Question: fn print_listening(log: &log::Logger, tunnel_name: &str) { debug!(log, "VS Code Server is listening for incoming connections"); <del> let extension_name = "+ms-vscode.remote-server"; </del> let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("")); let current_dir = env::current_dir().unwrap_or_else(|_| PathBuf::from(""));

Testing After enabling remote tunnel access, a link like this is printed: The browser ends up redirecting to It would be nicer to genrate the vanity format


Question: document: vscode.TextDocument, link: string, ): { uri: vscode.Uri, tooltip?: string } | undefined { <del> const externalSchemeUri = getUriForLinkWithKnownExternalScheme(link); </del> <ins> const cleanLink = stripAngleBrackets(link); const externalSchemeUri = getUriForLinkWithKnownExternalScheme(cleanLink); </ins> if (externalSchemeUri) { // Normalize VS Code links to target currently running version if (isOfScheme(Schemes.vscode, link) || isOfScheme(Schemes['vscode-insiders'], link)) {

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.60.0 OS Version: MacOS 10.14.3 Steps to Reproduce: & paste into markdown file <kbd⌘</kbdand click the link .ext)
This is my first go at launching into the vscode code, but hopefully this information may be useful. Perhaps we could update the parsing of the URI schemes in general to strip out the angle brackets when editing markdown? See my findings below for why I'm suggesting this, but I'm also unsure of what problems and side effects doing that may cause. Main points of interest While the Command + Click doesn't follow the web link when you're a Markdown file, it does follow the link in the of the Markdown file. So I think markdown syntax is actually ok In debugging the project a little bit, I found that the link you try to follow that has angle brackets may be trying to or something similar (instead of open a web browser) In the function , I think the scheme of http(s) isn't recognized because of the < brackets in the link portion. See around line 18, where it tries to recognize the scheme, but doesn't recognize it when it tries calling In the file you can add a few new schemes, and then you're able to follow the link just fine. Though, this is probably not the final way the issue should be fixed


Question: export enum MarkdownPreviewSecurityLevel { Strict = 0, AllowInsecureContent = 1, <del> AllowScriptsAndAllContent = 2 </del> <ins> AllowScriptsAndAllContent = 2, AllowInsecureLocalContent = 3 </ins> } export interface ContentSecurityPolicyArbiter {

<!-- Do you have a question? Please ask it on --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.21.1 OS Version: MacOS High Sierra 10.13.3 (17D102) Steps to Reproduce: markdown preview in combination with local plantuml server code to use local server for rendering a markdown with embedded plantUML content error about unsafe content ! The current only allow to enable/disable unsafe (HTTP without the S) entirely. Would it make sense to add an option that allows unsafe content from localhost but not from remote sources?
This may be ok (at least for images): If someone wants to take a look at this, you would just need to update the content security policy to allow :
Looking into it, thanks for the pointer.


Question: } } <del> private updateImageWatchers(containingImages: { src: string }[]) { const srcs = new Set(containingImages.map(img => img.src)); </del> <ins> private updateImageWatchers(srcs: Set<string>) { </ins> // Delete stale file watchers. for (const [src, watcher] of this._fileWatchersBySrc) { if (!srcs.has(src)) {

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.68.1 OS Version: Windows 10 Steps to Reproduce: a Markdown file and open "Open Preview to the Side" add line: ! image in preview second line: ! second image shows up. Remove the line above image preview shows 2 images and does not update properly !
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.68.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Still happens in 1.68.1. Updating bug
Does this reproduce in the with all ?
Yes still happens with all extensions disabled


Question: } } } <ins> function getExtensionName(id: string, extensionService: IExtensionService): string { return extensionService.extensions.find(e => e.id === id)?.displayName || id; } </ins>

Testing Show extension display name instead of extension id. You can also make them links to open the extension editor. <img width="522" alt="image" src="https://user-"
what's the right way to do this? I had a look and could only see async methods to do this which seemed odd to me (and would require some refactoring to get the tooltip to work with async).
1 I see this as well
There are multiple ways depending upon the source of this extension id. Since it is a running extension, I would prefer to use this api since you do not want to have async
thanks will use that. You don't have an id -name map to avoid iterating over it multiple times though?
There exists one, but it is async


Question: /* Right aligned */ <del> .monaco-workbench .activitybar.right > .content :not(.monaco-menu) > .monaco-action-bar .action-label:not(.codicon) { </del> <ins> .monaco-workbench .activitybar.right > .content :not(.monaco-menu) > .monaco-action-bar .action-label:not(.codicon):not(.profile-activity-item) { </ins> margin-left: 0; padding: 0 48px 0 0; background-position: calc(100% - 9px) center;

Type: <bBug</ba new profile from empty click on activity bar "Move Primary Side Bar Right" ! VS Code version: Code - Insiders 1.72.0-insider (, 2022-09-29T08:07:23.017Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes Remote OS version: Linux x64 5.15.62.1-microsoft-standard-WSL2 Remote OS version: Linux x64 5.15.62.1-microsoft-standard-WSL2 <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --


Question: backups.folderWorkspaces.forEach(workspacePath => { const backupPath = path.join(this.backupHome, this.getWorkspaceHash(workspacePath)); <del> if (!this.hasBackupsSync(backupPath)) { </del> <ins> const hasBackups = this.hasBackupsSync(backupPath); const missingWorkspace = hasBackups && !fs.existsSync(workspacePath); // If the folder has no backups, make sure to delete it // If the folder has backups, but the target workspace is missing, convert backups to empty ones if (!hasBackups || missingWorkspace) { </ins> const backupWorkspace = this.sanitizePath(workspacePath); staleBackupWorkspaces.push({ workspaceIdentifier: Uri.file(backupWorkspace).fsPath, backupPath, isEmptyWorkspace: false }); <ins> if (missingWorkspace) { const identifier = this.pushBackupPathsSync(this.getRandomEmptyWorkspaceId(), true /* is empty workspace */); const newEmptyWorkspaceBackupPath = path.join(path.dirname(backupPath), identifier); try { fs.renameSync(backupPath, newEmptyWorkspaceBackupPath); } catch (ex) { console.error(`Backup: Could not rename backup folder for missing workspace: ${ex.toString()}`); this.removeBackupPathSync(identifier, true); } } </ins> } });

Moving this over from After the backups are not restored if the workspace directory doesn't exist anymore. The workspace is no longer tracked but the backups are kept around in the backup directory should they be needed later.
Tricky.... I would expect an empty window to open with those files dirty. This might require some work on the area of restoring on empty workspaces. Have not thought about this longer yet.
Marking as important because this means data loss if the folder is deleted on disk.
maybe this should be done on the main side on startup similarly to If a folder no longer exists, convert it into an empty workspace backup and let it open as empty window.
On test plan:


Question: } } <del> // Handle empty to open (only if no other window opened) if (usedWindows.length === 0 || filesToOpen) { if (filesToOpen && !emptyToOpen) { emptyToOpen++; } </del> <ins> // Open empty window either if enforced or when files still have to open if (filesToOpen || openOneEmptyWindow) { </ins> const remoteAuthority = filesToOpen ? filesToOpen.remoteAuthority : openConfig.remoteAuthority; <del> for (let i = 0; i < emptyToOpen; i++) { addUsedWindow(await this.doOpenEmpty(openConfig, openFolderInNewWindow, remoteAuthority, filesToOpen), !!filesToOpen); // any other window to open must open in new window then openFolderInNewWindow = true; } </del> <ins> addUsedWindow(await this.doOpenEmpty(openConfig, openFolderInNewWindow, remoteAuthority, filesToOpen), !!filesToOpen); </ins> } return { windows: distinct(usedWindows), filesOpenedInWindow };

Steps to Reproduce: to 1 window on a folder open the command line run = only the folder opens, but not an empty window I would expect here 2 windows to open, one is the folder and one the empty window since no argument was given to open any folder or file.


Question: } .action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled) { <del> background-color: var(--vscode-quickInputList-focusBackground); </del> <ins> background-color: var(--vscode-quickInputList-focusBackground) !important; </ins> color: var(--vscode-quickInputList-focusForeground); outline: 1px solid var(--vscode-menu-selectionBorder, transparent); outline-offset: -1px; } .action-widget .monaco-list-row.group-header { <del> color: var(--vscode-pickerGroup-foreground); </del> <ins> color: var(--vscode-pickerGroup-foreground) !important; </ins> font-weight: 600; }

I'm using Light+. ! Could this be caused by bundling issues?
I also see this in oss. Seems like a somewhat recent regression


Question: id: 'breadcrumbs.toggle', title: { value: localize('cmd.toggle', "Toggle Breadcrumbs"), <del> mnemonicTitle: localize('miBreadcrumbs', "Toggle &&Breadcrumbs"), </del> <ins> mnemonicTitle: localize({ key: 'miBreadcrumbs', comment: ['&& denotes a mnemonic'] }, "Toggle &&Breadcrumbs"), </ins> original: 'Toggle Breadcrumbs', }, category: Categories.View, toggled: { condition: ContextKeyExpr.equals('config.breadcrumbs.enabled', true), title: localize('cmd.toggle2', "Breadcrumbs"), <del> mnemonicTitle: localize('miBreadcrumbs2', "&&Breadcrumbs") </del> <ins> mnemonicTitle: localize({ key: 'miBreadcrumbs2', comment: ['&& denotes a mnemonic'] }, "&&Breadcrumbs") </ins> }, menu: [ { id: MenuId.CommandPalette },

Issue Type: <bBug</bGo to menu affichage apparence afficher la barre latérale secondaire L'item indique ceci " afficher la bar&re latérale secondaire" Un petit And & se balade Have a nice day VS Code version: Code 1.67.1 (, 2022-05-06T12:37:03.389Z) OS version: WindowsNT x64 10.0. Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (3)</summaryExtensionVersion ------ copilot1.20.5902 vscode-pull-request-github0.42.0 vscode-language-pack-fr1.67.3 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
the translation lacks an extra ampersand to turn this into a mnemonic <img width="501" alt="image" src="https://user-"
can you ensure there's a comment that says "don't touch the ampersand"? Additionally, you can add another comment in the form of: to ensure that they do not get "translated". See this example:
I have the same comment in 275 places across the code base And this is the string
Best I can do is ask for the string to be updated manually to ensure is not translated... but that won't prevent this from happening in the future due to human error. better is using a locked comment like the one above... could also have the be a runtime string instead... but really we need language-aware mnemonics where the position of the changes based on the language but I'm not sure if there's a process for that. do you know?
so I add? what kind of enforcement does this do? does it just force that a mnemonic exists? its not really required that a translation contains a mnemonic even if the original does
I believe it forces that it exists, though or are experts here.
I know a little bit more... this does basically "fail the string" until it meets the criteria of "there should be a somewhere in the string and a translator looks at this. did you get the chance to add this to the comments?


Question: export interface MainThreadCommandsShape extends IDisposable { $registerCommand(id: string): void; $unregisterCommand(id: string): void; <del> $executeCommand<T>(id: string, args: any[], retry: boolean): Promise<T | undefined>; </del> <ins> $executeCommand<T>(id: string, args: any[] | SerializableObjectWithBuffers<any[]>, retry: boolean): Promise<T | undefined>; </ins> $getCommands(): Promise<string[]>; }

Currently when using , ArrayBuffers just turn into an empty object. We should support these for efficient data transfer between extensions/extension hosts. We recently support for them on a protocol level, so support here should not be terribly hard...
I see two possible approaches to support this: this logic specifically for commands (or even just for a specific command). This is what we do for webviews for example: our implementation aware of array buffers instead of only supporting VSBuffers. Take a look at how is used in our rpc code as a starting point: The webview serialization logic I linked to above would probably be a good starting point for this


Question: <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-vs-bg{fill:#424242;}.icon-vs-action-blue{fill:#00539c;}</style></defs><title>Compare_16x</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="M16,11H12.121l1.939,1.94a1.5,1.5,0,1,1-2.12,2.12L9.433,12.554A4.4,4.4,0,0,1,9,12.735V16H0V5H4.706A4.445,4.445,0,0,1,7,4.051V0h5.621L16,3.379Z" style="display: none;"/></g><g id="iconBg"><path class="icon-vs-bg" d="M15,3.793V10H11.735a4.4,4.4,0,0,0,.237-1H14V4.207L11.793,2H9V4.276a4.485,4.485,0,0,0-1-.225V1h4.207ZM7,12.949V14H2V7H3.276a4.493,4.493,0,0,1,.486-1H1v9H8V12.972A4.612,4.612,0,0,1,7.5,13,4.342,4.342,0,0,1,7,12.949Z"/></g><g id="colorAction"><path class="icon-vs-action-blue" d="M13.354,13.646l-3-3a.545.545,0,0,0-.071-.047A3.462,3.462,0,0,0,11,8.5,3.5,3.5,0,1,0,7.5,12a3.462,3.462,0,0,0,2.1-.717.57.57,0,0,0,.047.07l3,3a.5.5,0,1,0,.708-.707ZM7.5,11A2.5,2.5,0,1,1,10,8.5,2.5,2.5,0,0,1,7.5,11Z"/></g></svg> </del>  No newline at end of file <ins> <svg fill="none" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="m6 12h-1c-.27-.02-.48-.11-.69-.31s-.3-.42-.31-.69v-6.28c.59-.34 1-.98 1-1.72 0-1.11-.89-2-2-2s-2 .89-2 2c0 .73.41 1.38 1 1.72v6.28c.03.78.34 1.47.94 2.06s1.28.91 2.06.94c0 0 1.02 0 1 0v2l3-3-3-3zm-3-10.2c.66 0 1.2.55 1.2 1.2s-.55 1.2-1.2 1.2-1.2-.55-1.2-1.2.55-1.2 1.2-1.2zm11 9.48c0-1.73 0-6.28 0-6.28-.03-.78-.34-1.47-.94-2.06s-1.28-.91-2.06-.94h-1v-2l-3 3 3 3v-2h1c.27.02.48.11.69.31s.3.42.31.69v6.28c-.59.34-1 .98-1 1.72 0 1.11.89 2 2 2s2-.89 2-2c0-.73-.41-1.38-1-1.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2s.55-1.2 1.2-1.2 1.2.55 1.2 1.2-.55 1.2-1.2 1.2z" fill="#424242" fill-rule="evenodd"/></svg> </ins>  No newline at end of file

Issue Type: <bFeature Request</bTo see the changes i made to a source controlled checked-in file, a user clicks on the "Open Changes" icon on the top right. I would like to see a better looking icon that represents git and changes. The current one looks like a search button. VS Code version: Code 1.29.1 (, 2018-11-15T19:13:36.375Z) OS version: Windows_NT x64 10.0.


Question: position: relative; padding: 0 6px; margin-bottom: 4px; <del> align-items: center; </del> <ins> align-items: flex-end; </ins> justify-content: space-between; }

In VS Code action items inside inputs are vertically aligned to top, in the Chat features they are centered in the middle. This happens when putting in a lot of text or pressing Shift+Enter. Panel: <img width="425" alt="image" src=""Inline: <img width="608" alt="image" src=""Quick: <img width="621" alt="image" src=""For Inline and Quick the action items to the right of the input box should also stick to the top.
Seems like we have a mix of top-aligned and overflow w/ scroll (see below). But I agree that we should be consistent as much as possible. But it does feel like a chat send button should generally but aligned to the bottom, no? We may even consider rendering the toolbar on its own row once we're into multiple lines. That would ensure the text isn't forced to fill a tiny space now that we have 2+ icons. Here's how Teams does it as an example: ! ! ! !
Would be awesome if the text could wrap around it, especially in the narrow search widget case, I've always wanted that but I think it would be a pain to implement.
Don't have a strong opinion about top or bottom, I think each can be justified on a case-by-case basis. but middle looks weird. :) For example, inline Chat may want to do top alignment as the icons would align with those outside the input field (poppet and close) Bottom would help with the wrapping.


Question: const pathSeparatorClause = '/'; // '":; are allowed in paths but they are often separators so ignore them // Also disallow  to prevent a catastropic backtracking case #24798 <del> const excludedPathCharactersClause = '[^0s!$`&*()[]+'":;]'; </del> <ins> const excludedPathCharactersClause = '[^0s!$`&*()[]'":;]'; </ins> /** A regex that matches paths in the form /foo, ~/foo, ./foo, ../foo, foo/bar */ export const unixLocalLinkClause = '((' + pathPrefix + '|(' + excludedPathCharactersClause + ')+)?(' + pathSeparatorClause + '(' + excludedPathCharactersClause + ')+)+)'; export const winDrivePrefix = '(?:?)?[a-zA-Z]:'; const winPathPrefix = '(' + winDrivePrefix + '|..?|~)'; const winPathSeparatorClause = '(|/)'; <del> const winExcludedPathCharactersClause = '[^0<>?|/s!$`&*()[]+'":;]'; </del> <ins> const winExcludedPathCharactersClause = '[^0<>?|/s!$`&*()[]'":;]'; </ins> /** A regex that matches paths in the form ?c:foo c:foo, ~foo, .foo, ..foo, foobar */ export const winLocalLinkClause = '((' + winPathPrefix + '|(' + winExcludedPathCharactersClause + ')+)?(' + winPathSeparatorClause + '(' + winExcludedPathCharactersClause + ')+)+)';

Issue Type: <bBug</bnew VSCode window new Terminal terminal: terminal: in Cmd and mouse over the two listing name. Only the /tmp/Foo.h will be clickable. won't be because of the . VS Code version: Code 1.43.0 (, 2020-03-09T19:34:44.548Z) OS version: Darwin x64 19.3.0 <!-- generated by issue reporter --
/duplicate


Question: const resources: { originalUri: Uri | undefined; modifiedUri: Uri | undefined }[] = []; for (const change of stashChanges) { if (change.status === Status.INDEX_ADDED) { <del> resources.push({ originalUri: undefined, modifiedUri: toGitUri(change.uri, `stash@{${stash.index}}`) }); </del> <ins> resources.push({ originalUri: undefined, modifiedUri: toGitUri(change.uri, stash.hash) }); </ins> } else if (change.status === Status.DELETED) { <del> resources.push({ originalUri: change.uri, modifiedUri: undefined }); </del> <ins> resources.push({ originalUri: toGitUri(change.uri, stashParentCommit), modifiedUri: undefined }); </ins> } else if (change.status === Status.INDEX_RENAMED) { <del> resources.push({ originalUri: change.originalUri, modifiedUri: toGitUri(change.uri, `stash@{${stash.index}}`) }); </del> <ins> resources.push({ originalUri: toGitUri(change.originalUri, stashParentCommit), modifiedUri: toGitUri(change.uri, stash.hash) }); </ins> } else { <del> resources.push({ originalUri: change.uri, modifiedUri: toGitUri(change.uri, `stash@{${stash.index}}`) }); </del> <ins> resources.push({ originalUri: toGitUri(change.uri, stashParentCommit), modifiedUri: toGitUri(change.uri, stash.hash) }); </ins> } }

a new file with the following content and commit it. the file to like as follows, save it, and create a stash with it the file to like as follows, and save it the "Git: View Stash..." command and pick the created stash diff in the stash should look as follows: <img width="921" alt="image" src=""


Question: } } <ins> private _onReplaceInputKeyDown(e: IKeyboardEvent): void { if (e.equals(KeyCode.Enter)) { this.replaceOne(); e.preventDefault(); return; } } </ins> protected onInputChanged(): boolean { this._state.change({ searchString: this.inputValue }, false); // this._findModel.research();

Testing a notebook with some content the replace widget to replace an existing string enter while focused in the replace box no effect, string should be replaced as it does in a text editor
It's a bad bug, but fixing it is not trivial. Considering it's not regression, I'll fix it next week.


Question: import { IFileService } from 'vs/platform/files/common/files'; import { createFileStat } from 'vs/workbench/test/common/workbenchTestServices'; import { URI } from 'vs/base/common/uri'; <ins> import { ILogService, NullLogService } from 'vs/platform/log/common/log'; </ins> const unixLinks: (string | { link: string; resource: URI })[] = [ // Absolute

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --So far, I haven't been able to find any issues around this, but I also haven't found a ton of documentation on this feature either. Basically, I'd like to have finer grained control over how the terminal "word link" auto detection works. This is one of the only comments I was able to find about: Example: In the terminal, I have some output from a compiler that includes relative paths that can be clicked conveniently as an autodetected "word link": Specifically, clicking takes me to the line in question, which is great! However, at some point I tried configuring to include a forward slash (colon has related effects too), e.g. By doing so, the auto-detected file path is no longer clickable, since each path segment is considered as a separate word instead. Notably, the absolute path above is still clickable, but relative paths appear not to be (unless I remove from again). I guess there is probably more than one way to solve this, but a simple solution that comes to mind would be to have a separate config, maybe something like . If null it could fall back to the value, but at least this way it would be possible to configure different separators for double-click selection and link detection. Thanks in advance!
This case is meant to work with the regular non-word link detection as you can see here: <img width="490" alt="Screenshot 2023-05-08 at 6 31 15 am" src="https://user-"This may not work is if the relative path is not relative to the current working directory or you have shell integration disabled (which is provides better cwd detection). In your example is relative to the directory the terminal was currently on? The word links are meant to catch the majority of cases where the verified file links fall through.
Edit: never mind, I think I was testing with the wrong value of as I described in the original issue body :( I did however notice an interesting data point while integration was still disabled: the clickability of the file path seemed inconsistent. Here are a few screenshots showing what I mean (ctrl held in each case): Can't click in a compiler diagnostic, maybe due to the prefix on that line? !


Question: import { IFileService } from 'vs/platform/files/common/files'; import { createFileStat } from 'vs/workbench/test/common/workbenchTestServices'; import { URI } from 'vs/base/common/uri'; <ins> import { ILogService, NullLogService } from 'vs/platform/log/common/log'; </ins> const unixLinks: (string | { link: string; resource: URI })[] = [ // Absolute

A command I wrote without line/column numbers works fine: ! A command I wrote with line/column numbers works fine: !
It's a little hard to tell if this is by design or not without knowing the exact cwd and full path of these folders. What we're going for is verify if the file is real if it's relative to the current working directory (which is citro3d-rs in your last 2, not sure for the first), otherwise fall back to word links. Since you changed wordSeparators, the fall back isn't as useful, but it looks like it's working properly.
Ah sorry I forgot to include those extra details. The cwd and path was the same in all 3 cases (i.e., the relative file path should work in each case, I think?): I guess the part that doesn't make sense to me is why the latter two cases work but the first one doesn't - since in each case the path is the same and I haven't changed directories at all. I suppose the workaround of removing and from is still an option but it would be nice if the linking was more consistent.
Yeah this is strange if it's all the same cwd. I Can't repro here I'm improving trace logging in , when that is released to insiders (the day after it's merged) you will be able to set the log level via the command palette (F1) and view the trace logs when hovering the terminal line by looking in the Output panel Window dropdown entry. That will give us some more info on why this is happening.
The logging changes should be in tomorrow's insiders
thanks for that, here is the trace log output that I think is relevant for debugging. Please let me know if you need more info or another reproduction: Edit: the cwd again was and the relative path should resolve: <details<summarytrace output</summary</detailsOne odd thing I noticed - without changing any settings, I actually had one instance where it worked as expected and linked the relative path to . However I'm not sure how or why it worked. When I opened a new terminal the old behavior (not linking) came back. If I can reproduce that again I'll try to capture those trace logs and maybe it will highlight a difference in behavior that's helpful. Thanks again for looking at this!


Question: import { IFileService } from 'vs/platform/files/common/files'; import { createFileStat } from 'vs/workbench/test/common/workbenchTestServices'; import { URI } from 'vs/base/common/uri'; <ins> import { ILogService, NullLogService } from 'vs/platform/log/common/log'; </ins> const unixLinks: (string | { link: string; resource: URI })[] = [ // Absolute

So there's this in the logs: So it's parsed as a possible link, but not made a link candidate (which checked the file system before making the link). Somehow this part isn't adding the candidate: The only way I think that could happen is if doesn't return anything. I another log to verify the cwd and also improved fallback in case it is undefined. Can you do the same again on the next Insiders which should come out on Monday?
This issue has been closed automatically because it needs more information and has not had recent activity. See also our guidelines. Happy Coding!
sorry for the delay, was a bit busy last week but I was able to check with a recent build (): The link is clickable now, even with and both in ! I'm guessing the fallback changes you did the trick. It seems the triage bot closed this as "not planned" but maybe you are able to update its status to "fixed" or similar? Thanks for your help looking into this issue!
great news! I still don't totally understand how it was failing before but at least the issue is fixed


Question: } } <del> private onEditorClosed(listenerDispose: IDisposable, resourcesToWaitFor: URI[], waitMarkerFile: URI): void { // In wait mode, listen to changes to the editors and wait until the files // are closed that the user wants to wait for. When this happens we delete // the wait marker file to signal to the outside that editing is done. if (resourcesToWaitFor.every(resource => !this.editorService.isOpen({ resource }))) { listenerDispose.dispose(); this.fileService.del(waitMarkerFile); } } </del> private onContextMenu(e: MouseEvent): void { if (e.target instanceof HTMLElement) { const target = <HTMLElement>e.target;

VSCode Version: 1.33.1 OS Version: 10.14.4 When editing and closing a git commit message file very quickly, the contents are not provided to git. Currently I manually save before closing any git commit file but it seems clear this should work properly - autosave should happen, then Code should inform Git that the commit file is ready. Currently it appears the two events are happening in reverse order, causing a bug. Steps to Reproduce: VS Code as editor () a git commit the commit message in Code close the commit message in Code, before autosave occurs Result: git complains about an empty commit message Expected: Autosave should happen before Code releases control back to git, resulting in a properly saved commit message Does this issue occur when all extensions are disabled?: Yes
Good catch. Extra points for using auto save in VSCode :+1:
via


Question: } private createSearchResultsView(container: HTMLElement): void { <del> this.resultsElement = dom.append(container, $('.results.show-file-icons')); </del> <ins> this.resultsElement = dom.append(container, $('.results.show-file-icons.file-icon-themable-tree')); </ins> const delegate = this.instantiationService.createInstance(SearchDelegate); const identityProvider: IIdentityProvider<RenderableMatch> = {

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: Windows 11 / MacOS Monterey Steps to Reproduce: . the icons using the command. that the arrows are still not hidden. The vscode-icons extension has a setting called , which, as the name suggests, hides the explorer arrows next to the project folders. This look something like this: ! With the introduction of the tree mode in the search panel, I would not have expected to see any explorer arrows there. Alas, the panel has the search arrows, regardless of the extension setting. ! I already opened an issue on the vscode-icons repository, which you can find .
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.72.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Still happens on 1.72.2!


Question: id: 'editor.action.toggleStickyScroll', title: { value: localize('toggleStickyScroll', "Toggle Sticky Scroll"), <del> mnemonicTitle: localize('mitoggleStickyScroll', "&&Toggle Sticky Scroll"), </del> <ins> mnemonicTitle: localize({ key: 'mitoggleStickyScroll', comment: ['&& denotes a mnemonic'] }, "&&Toggle Sticky Scroll"), </ins> original: 'Toggle Sticky Scroll', }, category: Categories.View, toggled: { condition: ContextKeyExpr.equals('config.editor.stickyScroll.enabled', true), title: localize('stickyScroll', "Sticky Scroll"), <del> mnemonicTitle: localize('miStickyScroll', "&&Sticky Scroll"), </del> <ins> mnemonicTitle: localize({ key: 'miStickyScroll', comment: ['&& denotes a mnemonic'] }, "&&Sticky Scroll"), </ins> }, menu: [ { id: MenuId.CommandPalette },


Question: if (!disableServiceWorker) { hostMessaging.onMessage('did-load-resource', (_event, data) => { <del> navigator.serviceWorker.getRegistration().then(registration => { assertIsDefined(registration.active).postMessage({ channel: 'did-load-resource', data }, data.data?.buffer ? [data.data.buffer] : []); }); </del> <ins> assertIsDefined(navigator.serviceWorker.controller).postMessage({ channel: 'did-load-resource', data }, data.data?.buffer ? [data.data.buffer] : []); </ins> }); hostMessaging.onMessage('did-load-localhost', (_event, data) => { <del> navigator.serviceWorker.getRegistration().then(registration => { assertIsDefined(registration.active).postMessage({ channel: 'did-load-localhost', data }); }); </del> <ins> assertIsDefined(navigator.serviceWorker.controller).postMessage({ channel: 'did-load-localhost', data }); </ins> }); navigator.serviceWorker.addEventListener('message', event => {

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.77.1 OS Version: All Steps to Reproduce: This is not a problem in the extension, the extension code is the same, but a commit changes the way webviews are loaded and it's breaking it. This commit: Has introduced a regression that makes my extension unusable. It introduces a problem on webviews in which workers are not available, and causes the following errors in the console: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'active') at I have been tracking all changes since 1.76.2 release, building VSCode myself, and setting the build to the previous commit, my webview works flawlessly, if I checkout this commit, it's totally broken. I have not been able to send you are reproducible test case, but if interested, I can show you a video on how to use my extension, so you can check for yourself the issue. Thanks!
To add more information, check these two videos: Not working scenario, with the code at 1.77.1: ! Working scenario at the commit previous to the one I mention. Just remark that checking out the code at the commit I'm pointing, causes the not working scenario: !
Sorry you are running into this. Do you have an extension you can share that shows this issue? I can't simply revert the change because it was made to fix an hang with webviews opening. If I can repo this locally though, I can try to investigate
Thanks for checking this one!


Question: if (!disableServiceWorker) { hostMessaging.onMessage('did-load-resource', (_event, data) => { <del> navigator.serviceWorker.getRegistration().then(registration => { assertIsDefined(registration.active).postMessage({ channel: 'did-load-resource', data }, data.data?.buffer ? [data.data.buffer] : []); }); </del> <ins> assertIsDefined(navigator.serviceWorker.controller).postMessage({ channel: 'did-load-resource', data }, data.data?.buffer ? [data.data.buffer] : []); </ins> }); hostMessaging.onMessage('did-load-localhost', (_event, data) => { <del> navigator.serviceWorker.getRegistration().then(registration => { assertIsDefined(registration.active).postMessage({ channel: 'did-load-localhost', data }); }); </del> <ins> assertIsDefined(navigator.serviceWorker.controller).postMessage({ channel: 'did-load-localhost', data }); </ins> }); navigator.serviceWorker.addEventListener('message', event => {

My extension is this one: Find attached a sample project: These are the steps: Install the extension Unzip in its own folder Open the folder with VSCode With selected, issue the command Toggle Design/Code This will open up the webview, and with the changes, you could see in the console the issues Find here a video with the steps on how to open the webview, and the behavior when its working: ! Thanks!
Needless to say that if I should perform any changes on the extension to make it work, it's not a problem at all. That is, if I can get an idea on what the changes are, have no problem on that. :-) Thanks!
Thanks for the repo steps I have a potential Please try the next VS Code insiders build that comes out and let me know if you still see the problem. With the fix, things seem to be loading correctly: <img width="1129" alt="Screenshot 2023-04-12 at 4 06 24 PM" src="https://user-"
Checked insiders, but not sure if the fix got through, as I see some checks failed: ! Also tried update from the repository, and it seems still is not merged. In any case, what I see in your shot is that the Tool Palette is missing content. The content is provided by loading an external file called "" and it seems the webview is not able to load it: ! Will keep checking, THANKS!
ignore my last message, I have merged your changes locally and works perfect! So once this is merged, consider the issue fixed, thanks a lot!! !
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
/verified


Question: disposables.length = 0; }); <del> test('sendText immediately after createTerminal should not throw', (done) => { disposables.push(window.onDidOpenTerminal(term => { try { equal(terminal, term); } catch (e) { done(e); return; } terminal.dispose(); disposables.push(window.onDidCloseTerminal(() => done())); })); </del> <ins> test('sendText immediately after createTerminal should not throw', async () => { </ins> const terminal = window.createTerminal(); <ins> const result = await new Promise<Terminal>(r => { disposables.push(window.onDidOpenTerminal(t => { if (t === terminal) { r(t); } })); }); equal(result, terminal); </ins> doesNotThrow(terminal.sendText.bind(terminal, 'echo "foo"')); <ins> await new Promise<void>(r => { disposables.push(window.onDidCloseTerminal(t => { if (t === terminal) { r(); } })); terminal.dispose(); }); </ins> }); (process.platform === 'linux' ? test.skip : test)('echo works in the default shell', (done) => {

Seeing 2 test failures today for integration tests in Web ():
feel free to skip them if needed, they're known to be flaky. This was my top priority for debt week but it was completely consumed with the settings sync preview.
you mean flaky in general or only for web?
Flaky in general, it seems especially on web though.
We can leave them running, I am not seeing them failing often, just found this one. It is not something to look at now, but eventually. Will revisit if I see this again more frequently.
ok seeing them fail again today, pushing to disable them when running in web via checking for . Your tests seem to have a questionable use of , I see one error being that is called multiple times. Why do you not rewrite to use async and promises?
Another one:
I ended up disabling them all for web:
Maybe this has now leaked from the tests into the code itself. I'm creating a new terminal within an extension using the API and give it a pseudo terminal. Sometimes the terminal is shown but no output is displayed and does not work. But I can also see no error or trace. This happens for me in vscode 1.44.2 using linux.
Is this still an issue?


Question: editorService.openEditor({ resource: GettingStartedInput.RESOURCE, options: <GettingStartedEditorOptions>{ selectedCategory: selectedCategory, selectedStep: selectedStep, preserveFocus: toSide ?? false } <del> }).then((editor) => { </del> <ins> }, toSide ? SIDE_GROUP : undefined).then((editor) => { </ins> (editor as GettingStartedPage)?.makeCategoryVisibleWhenAvailable(selectedCategory, selectedStep); }); } } else { <del> editorService.openEditor({ resource: GettingStartedInput.RESOURCE }); </del> <ins> editorService.openEditor({ resource: GettingStartedInput.RESOURCE, options: <GettingStartedEditorOptions>{ preserveFocus: toSide ?? false } }, toSide ? SIDE_GROUP : undefined); </ins> } } });

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.82.2 OS Version: MacOS 12.0.1 Steps to Reproduce: our extension (Evidence), create a new project using the VS Code command palette which pages open automatically text file is opened automatically on the left walkthrough is opened automatically on the right This was working until one of the more recent VS Code versions I believe. text file is opened in full walkthrough is opened in full, taking over the editor pane from the text file (i.e. you can only see the walkthrough in your editor) This is the function we use to open the walkthrough: Where maps to I was under the impression that the in this function will open the walkthrough "to the side", which was happening successfully before, but is no longer working.
I had an older version of VS Code running on another computer and have confirmed it used to work in VS Code version
should this command be documented here
I did update our docs last week to include this command. Waiting for the newer changes to be published.


Question: this._onDidBlur.fire(); })); <del> this._register(this._inputEditor.onDidChangeCursorPosition(e => { const model = this._inputEditor.getModel(); if (!model) { return; } const atTop = e.position.column === 1 && e.position.lineNumber === 1; this.chatCursorAtTop.set(atTop); this.historyNavigationBackwardsEnablement.set(atTop); this.historyNavigationForewardsEnablement.set(e.position.equals(getLastPosition(model))); })); </del> this.toolbar = this._register(this.instantiationService.createInstance(MenuWorkbenchToolBar, inputContainer, this.options.menus.executeToolbar, { telemetrySource: this.options.menus.telemetrySource,

Testing Repro: /explain in inline chat to get a long response. using to focus the last response (does not work) to focus the last response using to scroll up in list view of chat messages. (does not work)
Same for panel chat. I believe the keybinding simply isn't bound
You may have to press it twice, once to move the cursor to the top of the editor, and then another time to trigger the chat keybinding, does that work? It's working fine for me.
Oh, not in inline chat though
I can't remember what terminal chat looked like in March, do you still want this disabled? I think we probably want it enabled in all chat widgets now:
I fixed this so that cmd+up/down will work in the terminal and inline chat widgets. But in the terminal, once the list is focused, then the arrow keys still navigate history. It looks like the terminal widget is registering a bunch of its own commands for history and for moving focus around. You shouldn't need to do that anymore, since you can use the commands that the ChatWidget has.


Question: private applicationStorage: IStorage | undefined; private applicationStorageDatabase: IIndexedDBStorageDatabase | undefined; <del> private readonly applicationStoragePromise = new DeferredPromise<{ indededDb: IIndexedDBStorageDatabase; storage: IStorage }>(); </del> <ins> private readonly applicationStoragePromise = new DeferredPromise<{ indexedDb: IIndexedDBStorageDatabase; storage: IStorage }>(); </ins> private profileStorage: IStorage | undefined; private profileStorageDatabase: IIndexedDBStorageDatabase | undefined;

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.69 () OS Version: macOS Ventura (13.0) developer beta 2, Firefox 102.0 Steps to Reproduce: an Insiders Codespace with any repository on Settings Sync until extensions are installed many walkthroughs being opened Here is a video demonstration: Something else that I took note of (also seen in the demo video) is that: Sync is turned off for every new codespace I create the extension setup, the page reloads every time in some stage of the process (this could be expected though) I have tested this both on Brave and Firefox with various different repositories. Original issue:
The respective component owner has to opt into syncing the state.
This user is stating it only happens in codespaces and not on or I'm not sure if settings sync is treated differently here but we do sync walkthrough state
Yes indeed, In addition, this does not happen for me in 1.68.1 (stable).
Created a PR fixing this Can it be cherry-picked to the release branch before tomorrows release :pray: ? This also affects workbench theme as it flashes from default theme to the theme from settings sync which is really annoying, in 1.68 workbench starts with the theme from sync server directly cc
It seems the newly created codespace is not getting initialised with synced data because the workspace says it is not new.


Question: const repositoryPath = await window.withProgress( opts, <del> (progress, token) => this.git.clone(url!, parentPath, progress, token) </del> <ins> (progress, token) => this.git.clone(url!, parentPath!, progress, token) </ins> ); let message = localize('proposeopen', "Would you like to open the cloned repository?");

<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --I'm working on a Visual Studio Code extension that's supposed to make it easier to clone a git repository in a user configured directory. The basic idea is that the user configures the directory once (e.g.: in ) and then all the cloned repositories will be placed in this directory. The seems the ideal candidate for implementing something like this (especially now with the new ). However, the only problem is that the command is always asking the user for the destination directory. This feature request is about adding an option to the command which would allow other extensions to clone a repository in a specific directory without showing the dialog. One possible implementation could be as simple as adding another optional argument (for the destination directory) to the command ().
Found a quirk:
Fixing the quirk is fine in the future. Thus pushing it out to the On Deck milestone since Joao is on vacation. please speak up if you disagree.
+1 for this issue. I'm also working on a VS Code extension (specifically the C++ extension here in Redmond). We're working on an experience that involves operating on the files in a repository that the user has cloned via the command, but currently there is no way to know which parent directory was selected. Allowing the repository parent directory to be passed in would solve the problem entirely for us -- I'll be watching this issue closely. :slightlysmilingface:
This has been implemented () and you can already use it in Visual Studio Code version .
Thanks
Since this is already implemented I am closign this issue. Thanks As for the quirk can handle as an independet issue
should this issue be labelled with again? I also wonder if the quirk has been filed as a separate issue.


Question: "@microsoft/1ds-post-js": "^3.2.13", "@vscode/iconv-lite-umd": "0.7.0", "@vscode/vscode-languagedetection": "1.0.21", <del> "@xterm/addon-canvas": "0.6.0-beta.19", "@xterm/addon-image": "0.7.0-beta.17", "@xterm/addon-search": "0.14.0-beta.19", "@xterm/addon-serialize": "0.12.0-beta.19", "@xterm/addon-unicode11": "0.7.0-beta.19", "@xterm/addon-webgl": "0.17.0-beta.19", "@xterm/xterm": "5.4.0-beta.19", </del> <ins> "@xterm/addon-canvas": "0.6.0-beta.20", "@xterm/addon-image": "0.7.0-beta.18", "@xterm/addon-search": "0.14.0-beta.20", "@xterm/addon-serialize": "0.12.0-beta.20", "@xterm/addon-unicode11": "0.7.0-beta.20", "@xterm/addon-webgl": "0.17.0-beta.20", "@xterm/xterm": "5.4.0-beta.20", </ins> "jschardet": "3.0.0", "tas-client-umd": "0.1.8", "vscode-oniguruma": "1.7.0",

/gifPlease
Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, files are preferred as they are displayed inline on GitHub. You may find helpful as a browser-based gif recording tool. If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording ( in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue. Happy coding!
The terminal's usage of may have regressed?
The issue I'm seeing is no longer seems to flip the terminal link modifiers and column select modifier. Additionally the cursor isn't showing anymore when using column selection.
Actually I don't think it ever flipped the column select modifier
When is set, alt+click still opens fine. After the crosshair will be working as intended, the link pointer cursor will override it correctly.
! I can still repro if . Is there something else I should set? It works fine if I set .
Since verification steps are needed and is OOF, this issue will be moved to the February 2024 milestone.
in case you know the verifications steps.
I verified that regardless of the value of , I can open links in the terminal with ctrlCmd and holding alt allows me to do column selection, which I believe is by design.
It turns out that the bug has nothing to do with the cross cursor. The real cause was extension host keep crashing after a few minutes after opening a big TypeScript monorepo.


Question: // Modifed to not include the message as part of the marker key to work around // https://github.com/microsoft/vscode/issues/77475 if (markerData.message && useMessage) { <del> result.push(markerData.message.replace('¦', '¦')); </del> <ins> result.push(markerData.message.replace('¦', '¦')); </ins> } else { result.push(emptyString); }

The code in question looks like: This doesn't actually do anything, and is likely a bug. There are a few cases in .


Question: assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${lineNumber} xyz'), `abc ${editorService.mockLineNumber} xyz`); }); <ins> test('current selected text', () => { assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${selectedText} xyz'), `abc ${editorService.mockSelectedText} xyz`); }); </ins> test('substitute many', () => { if (platform.isWindows) { assert.strictEqual(configurationResolverService.resolve(workspace, '${workspaceFolder} - ${workspaceFolder}'), 'VSCodeworkspaceLocation - VSCodeworkspaceLocation');

Variable substitutions that are available for (see ) do not include currently selected text. I am looking for something similar to $(CurText) that is available in Visual Studio Arguments for External Tools (see ). Please add a variable ${curtext} which would be replaced with the currently selected text in the editor window. If no selection is available, it could use the current line at cursor position.
Nice idea, but I think it's too late for implement that in the current milestone...
Fixed by in
Verifiers: what happens if all text in a 300 MB file is selected...
good point. Maybe we should put a limit on this. Or only to copy the howl line at most (even though the line could also be 300mb I am fine with that) thoughts?
Selecting lots of text, at some point I get . If there's a predictable limit where this will fail, we should just cut the string off there. Unless only sending part of the text could be dangerous or unexpected for the user. In any case I think that sending multiple lines of text could be useful.
there is not a predictable limit since the variables are used in different scenarios. If somebody has an idea for a limit I am open to PRs


Question: return; } <del> const session = await VoiceChatSessions.getInstance(instantiationService).start(controller, context); </del> <ins> session = await VoiceChatSessions.getInstance(instantiationService).start(controller, context); </ins> await holdMode; handle.dispose();

I see this when starting the panel chat voice action in dev tools. An easy way to know when this reproduces is to enable the audio cue, which then plays forever.
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!


Question: items.splice(0, 0, item); } <del> const working = repo.workingTreeGroup.resourceStates.find(r => r.resourceUri.fsPath === uri.fsPath); if (working) { const date = new Date(); const item = new GitTimelineItem('', index ? '~' : 'HEAD', localize('git.timeline.uncommitedChanges', 'Uncommitted Changes'), date.getTime(), 'working', 'git:file:working'); // TODO@eamodio: Replace with a better icon -- reflecting its status maybe? item.iconPath = new ThemeIcon('git-commit'); item.description = ''; item.setItemDetails(you, undefined, dateFormatter.format(date), Resource.getStatusText(working.type)); const cmd = this.commands.resolveTimelineOpenDiffCommand(item, uri); if (cmd) { item.command = { title: openComparison, command: cmd.command, arguments: cmd.arguments, }; } items.splice(0, 0, item); } </del> } return {

Testing a GH/Azure Repos repository on and file, and open the timeline view that both Git and Local History entries are shown a change to the file and save Local History entry is to the top of the list Local History entry is then moved under "Uncommitted Changes" entry
Just in case: this is not specific to web version and can be reproduced in Desktop as well.
I think this works as designed: the "Uncommitted Changes" from Git is probably always updating when you save and is more recent than the actual save event. would you agree this works as intended?
Roughly as designed, but could be smoother. Maybe if we had a way to denote at an API level that an event is "current" rather than historical. Or maybe we shouldn't even have the "uncommitted changes" entry now that we have local file history.
I agree, I don't think "uncommitted changes" should be a history entry at all. It's not a historical event. You might have uncommitted changes, but itself is not a change like everything else the timeline shows. Perhaps have a "diff" action in the Timeline title instead.
I really like the idea to not have "Uncommitted Changes" at all. It seems to originate from the git extension: Especially now that we have local history enabled, there will always be an entry for local history above the last committ, so the information is redundant. Lets do this.
not sure whether we want to remove those for remotehub extension as well:
Removed the Uncommitted Changes timeline entries for RemoteHub. I kept the Staged Changes timeline entry though, since that is a historical event and it looks like we also kept those for the git extension.
Thanks!
This change has actually caught me off guard. While I like the idea for the "Local History" in general, It's sometimes too granular and I'd like to view all the changes since the last commit. Imho, the "Uncommited Changes" entry should be shown when "local history" is disabled, or it should be configurable by settings.
Can you report a new feature request for this?


Question: <del> { "comments": { "lineComment": "#", "blockComment": [ "#", " " ] }, "brackets": [ ["{", "}"], ["[", "]"], ["(", ")"] ], "autoClosingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ], "surroundingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ] } </del>  No newline at end of file

VSCode Version: 1.6.0 OS Version: OSX 10.11.6 *.ini files comments-line starts with the SEMI-COLON. but VSCode has insert (or remove) the HASHMARK.
Pull request pushed, thanks a lot !


Question: <del> { "comments": { "lineComment": "#", "blockComment": [ "#", " " ] }, "brackets": [ ["{", "}"], ["[", "]"], ["(", ")"] ], "autoClosingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ], "surroundingPairs": [ ["{", "}"], ["[", "]"], ["(", ")"], [""", """], ["'", "'"] ] } </del>  No newline at end of file

VSCode Version: v1.2.1 OS Version: Windows 10 Steps to Reproduce: file type to INI "A=b;xxxx" in file content Expected: "b;xxxx" colored as white Actual: "b" in white but ";xxxx" in green ";xxxx" should only be regard as comments when there is no other contents in the line before ";"
This issue was moved to demyte/language-cshtml


Question: assert.ok(!fs.exists(service.toBackupPath(fooFile.fsPath))); assert.ok(!fs.exists(service.toBackupPath(barFile.fsPath))); <ins> // 4) backup workspace path points to a workspace that no longer exists // so it should convert the backup worspace to an empty workspace backup const fileBackups = path.join(service.toBackupPath(fooFile.fsPath), 'file'); fs.mkdirSync(service.toBackupPath(fooFile.fsPath)); fs.mkdirSync(service.toBackupPath(barFile.fsPath)); fs.mkdirSync(fileBackups); service.registerWindowForBackups(1, false, null, fooFile.fsPath); assert.equal(service.workspaceBackupPaths.length, 1); assert.equal(service.emptyWorkspaceBackupPaths.length, 0); fs.writeFileSync(path.join(fileBackups, 'backup.txt'), ''); service.loadSync(); assert.equal(service.workspaceBackupPaths.length, 0); assert.equal(service.emptyWorkspaceBackupPaths.length, 1); </ins> done(); });

Moving this over from After the backups are not restored if the workspace directory doesn't exist anymore. The workspace is no longer tracked but the backups are kept around in the backup directory should they be needed later.
Tricky.... I would expect an empty window to open with those files dirty. This might require some work on the area of restoring on empty workspaces. Have not thought about this longer yet.
Marking as important because this means data loss if the folder is deleted on disk.
maybe this should be done on the main side on startup similarly to If a folder no longer exists, convert it into an empty workspace backup and let it open as empty window.
On test plan:


Question: //#endregion <del> readonly capabilities = 0; </del> <ins> readonly capabilities = WorkingCopyCapabilities.None; </ins> readonly name = basename(this.labelService.getUriLabel(this.resource));

<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- 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: head OS Version: n/a This is a bug/inconsistency in the VSC codebase, which is currently obscured because of the specific way the code is written. This wouldn't really matter, but when using a build step that generates files for dependencies, the gets evaluated down to and compilation fails. And overall, it'd be nice for the types to align in a sensible way. Steps to Reproduce: , replace with Expected: compiles fine Actual: there are a number of errors like Property 'getFirstLineText' does not exist on type 'never'. The intersection 'this & IResolvedTextFileEditorModel' was reduced to 'never' because property 'capabilities' has conflicting types in some (2339)TextFileEditorModelIWorkingCopyIResolvedTextFileEditorModelthis.isResolved() is known to be true) says capabilities should be a readonly 2. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes
Since this seems to concern only you with your specific setup, wanna do a PR to fix this?
I would be more than happy to, but I'm not sure what approach you'd find (in)appropriate. could type in as a number instead of an enum (since checks against it are anyways done via bitwise-and) could change in to actually be 2 instead of 0 (though it seems like you also use 0 for this field in other places like , and somehow TSC doesn't care...) could add a enum value of 0 to , since it seems like that's how you use it. I'm leaning towards approach 3. What are your thoughts?
Yeah I think we can give 3. a try in a PR.


Question: }; for (let i = 0; i < this._regions.length; i++) { const foldRange = this._regions.toFoldRange(i); <del> if (!foldRange.isUserDefined && !foldRange.isRecovered || !containedBy(foldRange)) { </del> <ins> if (!foldRange.isUserDefined && !foldRange.isRecovered || !intersects(foldRange)) { </ins> newFoldingRanges.push(foldRange); } }

Remove Manual Folding Range doesn't work Originally posted by in select a range in the editor invoke . Selection turns into a folding range put the cursor at the beginning of the collapsed line invoke . Should remove the manual folding range
It works when the cursor is at the second column or to the right of that, but not when it's right at the beginning of the line, which is exactly where it is placed after running the create manual folding range command.


Question: private _findMatchesInLine(searchRegex:RegExp, text:string, lineNumber:number, deltaOffset:number, counter:number, result:EditorCommon.IEditorRange[], limitResultCount:number): number { var m:RegExpExecArray; <ins> // Reset regex to search from the beginning searchRegex.lastIndex = 0; </ins> do { m = searchRegex.exec(text); if (m) { <del> result.push(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset)); </del> <ins> var range = new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset); // Exit early if the regex matches the same range if (range.equalsRange(result[result.length - 1])) { return counter; } result.push(range); </ins> counter++; if (counter >= limitResultCount) { return counter;

Using regex expressions am unable to find empty lines. Tried both the end of line sequence. Copying the same text in sublime simple n finds all the blank lines.
That has been an issue for me for quite a while. Never really checked again if it's already working because I started to automatically open notepad++ again whenever I needed to replace newlines.
This problem could manifest if the lines are being split before searching as opposed to doing a full text search. Interesting side note; seems to work in find in files (Ctrl+Shift+F), just not in the find dialog (Ctrl+F).
Couldn't even find empty lines with ^$ (in case they were being split without EOL).
Looked at the code, it does indeed look at each line individually. I'm created a new issue for multi-line matching


Question: constructor( @IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService, <del> @IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService, </del> @IModelService private readonly modelService: IModelService, @ILanguageService private readonly languageService: ILanguageService, @IProductService productService: IProductService, <del> @INotificationService private readonly notificationService: INotificationService, @ITelemetryService private readonly telemetryService: ITelemetryService, </del> @IStorageService private readonly storageService: IStorageService, @IExtensionRecommendationNotificationService private readonly extensionRecommendationNotificationService: IExtensionRecommendationNotificationService, @IExtensionIgnoredRecommendationsService private readonly extensionIgnoredRecommendationsService: IExtensionIgnoredRecommendationsService, @IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService, <del> @IExtensionManagementServerService private readonly extensionManagementServerService: IExtensionManagementServerService, </del> ) { super(); this.fileOpenRecommendations = {};

When a user opens a file extension that does not have a specific recommendation tied to it, we show the general notification that points users to the marketplace. This has the following flaws: Most popular file types are already covered by specific extensions, so what gets left in this experience is leftovers For most of the extensions there is no good extension to handle this experience. Thus opening the Extension page does not provide value This is adding un-needed pings to the Marketplace service Also we had a bug that this feature was not available in stable and only 3 users found it is not there Would love for us to get some telemetry on this actions to see if this is actually bringing value to users. If not, we should either: Remove this flow completely Have a pre-defined set of file extensions for which we show this. Checking with tags seems to be very faulty. In my example below there is not an extension that helps with PowerPoint files. !
Only of these notifications end up with users clicking on Search Marketplace ! When it is actually clicked here are the top extensions ! Thus I suggest that we: Remove this dialog Add explicit extension recommendation for and . Since those seem to be missing. what do you think?
Sounds good to me
Great. Ok, you remove the dialog when you find time, I will add the recommendations for csv and pdf. Or if you go on vacation, I can also remove the dialog. I am working in August. Thanks
Feel free to remove it in August, otherwise I can also do it in September. Here it is
To verify: a file with some strange extension. For example -make sure no notification shows up a .py file or .go file. Make sure you get an extension recommendation for specific python / go extensions


Question: } } } <ins> KeybindingsRegistry.registerKeybindingRule({ id: 'undo', weight: 1000, primary: KeyMod.CtrlCmd | KeyCode.LeftArrow, when: ContextKeyExpr.and(EditorContextKeys.writable, ContextKeyExpr.or(GhostTextController.inlineSuggestionVisible, GhostTextController.inlineSuggestionJustCommitted)), }); </ins>

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --When using Copilot, users would like to be able to only partially accept suggestion instead of the whole suggestion at once. The users demand either word by word or line by line completion. Desired behaviour: Press a predefined key and accept the whole suggestion. Use a predefined combination of 2 keys to accept the top line of the suggestion. (eg: For a suggestion of 3 lines, the user would need to press the combination 3 times to accept the whole suggestion). The prompt would not show the line already accepted.
this sounds to me like a UX problem. Is there a mock sketch for a potential solution here? Is there some other editor which already supports this? We can also discuss it in one of our UX weekly meetings.
I don’t have a mock sketch. No other editors are supporting this yet but it is a requested features. I wanted to get the discussion going (doing the same for the other editors) to understand the constraints around it as well.
Technically, I think this would be rather easy to implement. I'd love to hear some more UX discussion before we implement this thought. What key-binding do you have in mind?
do you have some UX designers on your team that would like to help here? Once we have some good ux proposal we can bring it in our UX weekly sync on Wednesday to start the discussion.
No I dont have a UX designer in my team. I ll see how i can come up with a suggestion and get back to you
This is similar to Solution for me was 'CMD + -' to accept a word at a time. Something similar here would be great.
Fish shell allows word-by-word completion using the <kbdAlt</kbd+ <kbd&;</kbdkey-combo, which—at least on macOS—is used system-wide for navigating text word-by-word. I notice that I keep trying to automatically use this key-combo, so big +1 from me. ( Did not realise this is the vscode repo.)
awesome idea. since you said this is low hanging maybe we assign to July for the initial investigation? What do you think?
This would be great.


Question: } } } <ins> KeybindingsRegistry.registerKeybindingRule({ id: 'undo', weight: 1000, primary: KeyMod.CtrlCmd | KeyCode.LeftArrow, when: ContextKeyExpr.and(EditorContextKeys.writable, ContextKeyExpr.or(GhostTextController.inlineSuggestionVisible, GhostTextController.inlineSuggestionJustCommitted)), }); </ins>

I am loving copilot so far, but this is my biggest UX gripe. Copilot's first suggestions in a new piece of code tend to only be accurate for the first few words. It tends to get much better only after more context is . Not a blocker, but it'd make it much easier to get started.
We did an initial investigation and this is not low hanging as I have initially commented above. Also, this milestone we have been mostly focusing on improving the merge editor. So this one will have to continue in September.
Had a sync with the VS folk and here's some very early thinking: When partial completion is accepted the ghost text should not change - we should use the cache. VS did multiple user studies and users always get shocked when the ghost text changes beneath them Undo is the user gesture to undo the last partial acceptance (this should work out of the box for us). Simple keybindings like word next navigation, and navigate to end of line should be used for partial word acceptance, and whole line acceptance. So same keybindnigs as and commands. Open questions (probably not for first version): How to make this keybindings discoverable Should we support the mouse? For example alt + mouse click to accept until the mouse click
I've also previously advocated for a way to accept only a single line out of the multi-line completion. I would strongly support doing this at a line granularity, rather than e.g. token granularity, since I ~never run into the case where I want to accept 'more than 0 tokens but less than a line' of a multi-line completion -- it's ~always either one line or maybe a couple, or the whole completion. Repurposing regular cursor movement commands for partial acceptance when a ghost text completion is open sounds error-prone. I see this kind of key-stealing behavior in some autocomplete systems (especially for ), but it's always optional, since it's really easy to interfere with muscle memory and frustrate people. This would apply to text navigation commands for sure, and it would be even worse in the middle-of-the-line completion case (which would also be wonky if we want an 'accept a single token' shortcut).
Hi! A use case for per-word completion: comment/natural language completion. I want this almost every time that copilot gives me a comment suggestion.


Question: } } } <ins> KeybindingsRegistry.registerKeybindingRule({ id: 'undo', weight: 1000, primary: KeyMod.CtrlCmd | KeyCode.LeftArrow, when: ContextKeyExpr.and(EditorContextKeys.writable, ContextKeyExpr.or(GhostTextController.inlineSuggestionVisible, GhostTextController.inlineSuggestionJustCommitted)), }); </ins>

To make sure I understand the shape of the discussion, I think three issues are separable here: 1) whether to offer partial completion; 2) at what granularities (here the use case and example-based analysis is most relevant, and feed back into question 1); 3) if doing it, what default keybindings at these levels to provide so as not to hijack muscle memory (but possibly still utilize it in a parallel modifier key universe)? Is that right, and if so at what stage does the team currently see the conversation? For 3), in Lisp-y language tools, Paredit's keybindings might be a decent template too: in some sense what we are doing here is structurally selecting part of what is an (falling back on a as above) structure before "acceptance" (which is already well-understood as a result of by default keybinding users). That would be a more elaborate form of the partial acceptance, though, requiring a language-sensitive parse, so definitely not low hanging fruit.
It's a marketing problem, they market the code you accept as efficiency. If they would also add the 97% of the code you have to remove carefully again it wouldn't be that a nice metric. I believe we need to adapt the plugins on our own or write a plugin watchdog, something that monitors completions, immediately removes them and offers a word-by-word insert of the code.
A use case from He wants to accept the first couple of words here (but not the entire completion): ! ... ~~ A use case for line based acceptance: !
For jetbrains IDE's you can use my plugin () You press CTRL+ALT+D and it will complete the sentence word by word. So in your example you press it 3 times (you'll be after "to", then you type "have a per" and you can continue with the shortcut 3 more times on the new completion text. Or just "TAB" if all is good after your intervention, it doesn't block you from using the default behavior of copilot Though the plugin only works on IntelliJ IDE's (you need to install 'LivePlugin' and 'Stewardess')
I love this suggestion. I encounter the scenario of wanting to only accept a suggestion partially a lot.
would you prefer word-by-word partial acceptance or line-by-line?


Question: } } } <ins> KeybindingsRegistry.registerKeybindingRule({ id: 'undo', weight: 1000, primary: KeyMod.CtrlCmd | KeyCode.LeftArrow, when: ContextKeyExpr.and(EditorContextKeys.writable, ContextKeyExpr.or(GhostTextController.inlineSuggestionVisible, GhostTextController.inlineSuggestionJustCommitted)), }); </ins>

It would be awesome to be able to do both, but if only one of the two is possible, then I would prefer word-by-word.
There is no reason why only one would be doable. A line based completion is a couple of lines of code. Word based completion is half a page if you want to do the word separation smart, or an abstract if it's dumb.
First iteration has been implemented in


Question: import { onUnexpectedError, isPromiseCanceledError } from 'vs/base/common/errors'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { TPromise } from 'vs/base/common/winjs.base'; <del> import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; </del> <ins> import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; </ins> import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { localize } from 'vs/nls'; import { Action } from 'vs/base/common/actions';

When you open a recent project from the welcome screen, the last one remains opened in a tab. VSCode Version: 1.9.1 OS Version: macOS Sierra 10.12.3 Steps to Reproduce: a new VSCode window. a recent project from the welcome screen. project is opened and the welcome screen remains opened.
The current behavior was chosen in the hope that this would help new users by staying in the same context.
I agree that the welcome screen should be closed after taking an action from it. Especially in my case, where I prefer to use the setting, having to close the otherwise empty welcome window after opening from the 'Recents' list or via FileOpen feels like a bug.
You can just not show it at all. Or do you need any of the actions on it? (I'm trying to preserve the new user experience here which relies much more on guidance.)
It's ok showing the welcome screen, but it should be closed after opening a project from there.
With we change the Welcome editor to open in preview mode, this way it will close when the next editor opens. (If preview mode is not disabled in settings.)
This could be an additional value for the setting.
Hey, I could look into this. Got any tips on where I should start ?
Great: Add an additional enum literal here: Check for that literal and the 'open folder' condition here:
Hey , I've ran into some questions which you might be able to help me with: should I name the enum literal? I can't seem to come up with the right name would I check for the 'open folder' condition?
You could use . Check for no folder being open: . You can get at the context service by adding it to the constructor of the calling class, similar to:
Hey everything seems to be working now, just one last question which is confusing me: isn't the objective of this issue to NOT show the Welcome Page when opening a new project? So why is your enum suggestion welcomePageInEmptyWorkbench? What is happening right now after my additions is: upon opening a new project, no Welcome Page is shown. Is this right?
Show it only in the empty workbench. :)
Hey Now I'm getting upon opening a new window (empty workbench). Any ideas? I did the comparison as you said for no folder being open.
Is the ?


Question: import { onUnexpectedError, isPromiseCanceledError } from 'vs/base/common/errors'; import { IWindowService } from 'vs/platform/windows/common/windows'; import { TPromise } from 'vs/base/common/winjs.base'; <del> import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; </del> <ins> import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; </ins> import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { localize } from 'vs/nls'; import { Action } from 'vs/base/common/actions';

You can debug it either in VS Code or in the Developer Tools (Help Toggle Developer Tools in the window running from source).
Upon opening a new window, it isn't undefined (verified by a console log) but then it turns undefined (verified by the same console log). Edit: and immediately after Edit2: Found it! Seems like isWelcomePageEnabled() is called twice, once in the class constructor and the other one in the onReady method. I'll make the PR in a bit


Question: isExtensionOwnedTerminal?: boolean; useShellEnvironment?: boolean; location?: TerminalLocation | { viewColumn: number, preserveFocus?: boolean } | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean }; <ins> disablePersistence?: boolean; </ins> } export interface MainThreadTerminalServiceShape extends IDisposable {

Currently we enable the persistent terminal/reconnect feature if a terminal is launched by an extension, unlike the env var relaunch where we disable outright because it can cause issues with the extension as it loses access to the terminal upon relaunch. Relaunching the PowerShell extension right now for example is a bit of a weird experience though because it creates the "PowerShell Integrated Console", and that reconnects upon reload but is no longer managed by the extension. Before reload: ! After reload it is restored, but no longer owned by the extension: ! Assigning to March for exploration. Thoughts
I think just allowing opt-out/opt-in on this behavior would be more than enough for PowerShell's case.
Has there been any progress on this? Now that persistent terminals are the default, this gets quite annoying and bothers users when extension-owned terminals come back but aren't actually connected.
No progress, we'll try get it in the next version
proposal:
Is this still ongoing and targeted for February?
Yes it is


Question: import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; import { UntitledTextEditorInputSerializer, UntitledTextEditorWorkingCopyEditorHandler } from 'vs/workbench/services/untitled/common/untitledTextEditorHandler'; import { DynamicEditorConfigurations } from 'vs/workbench/browser/parts/editor/editorConfiguration'; <del> import { EditorActionsDefaultAction, EditorActionsTitleBarAction, HideEditorActionsAction, HideEditorTabsAction, ShowMultipleEditorTabsAction, ShowSingleEditorTabAction, ZenHideEditorTabsAction, ZenShowMultipleEditorTabsAction, ZenShowSingleEditorTabAction } from 'vs/workbench/browser/actions/layoutActions'; </del> <ins> import { ConfigureEditorAction, ConfigureEditorTabsAction, EditorActionsDefaultAction, EditorActionsTitleBarAction, HideEditorActionsAction, HideEditorTabsAction, ShowMultipleEditorTabsAction, ShowSingleEditorTabAction, ZenHideEditorTabsAction, ZenShowMultipleEditorTabsAction, ZenShowSingleEditorTabAction } from 'vs/workbench/browser/actions/layoutActions'; </ins> import { ICommandAction } from 'vs/platform/action/common/action'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';

! is not very discoverable. If it would be a submenu of the context menu, it would be much easier to tweak this setting.
...
I'm for making these types of settings more discoverable, however, I do not want to add these types of settings to the contextmenu. We mainly use the context menu to change the visibility of elements/features but we don't really use it to configure them/change appearance. Also, the context menu is already pretty full and I don't want to overload it.
I'm open to other ideas to make them more discoverable. Maybe a "configure" entry in the overflow menu of the toolbar?
Yeah I like the idea of an action in the "..." menu to configure all things editor related by narrowing down a settings search in the settings editor.
verification steps: Right click on the tab bar (not on a tab) At the bottom of the context menu there is an action "Configure Tabs...", press it Settings editor should open with tabs related settings