Question: if (ir) { let oldEndViewColumn = CursorColumns.visibleColumnFromColumn2(config, model, range.getEndPosition()); const oldEndColumn = range.endColumn; <del> let beforeText = 'n'; if (indentation !== config.normalizeIndentation(ir.beforeEnter)) { beforeText = config.normalizeIndentation(ir.beforeEnter) + lineText.substring(indentation.length, range.startColumn - 1) + 'n'; range = new Range(range.startLineNumber, 1, range.endLineNumber, range.endColumn); } </del> const newLineContent = model.getLineContent(range.endLineNumber); const firstNonWhitespace = strings.firstNonWhitespaceIndex(newLineContent); if (firstNonWhitespace >= 0) {

May be, inspect my settings here: (which has ) and, try to reproduce the issue by applying the exact same settings (copy paste my ).
Also, , Please carefully go through each of the above posts. It seems like you are not reading all the comments. It will save me from repeating the same thing again and again. Thanks.
Thank you for your patience, with your settings, I could finally reproduce. I missed the fact that the editor is configured to use tabs and I believed you might be using vim due to the block cursor in the GIF. You can workaround by using .


Question: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== <ins> eslint-plugin-header@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6" integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg== </ins> eslint-plugin-jsdoc@^19.1.0: version "19.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-19.1.0.tgz#fcc17f0378fdd6ee1c847a79b7211745cb05d014"

Currently, we have to add this copyright header manually to every new file: /
Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See in the project root for license information. *
-------------/ An ES Lint rule that has an auto fix would be really nice. What are your thoughts ! (using )
I like. The closest that we have today is this snippet
Let's do it!


Question: return Promise.all(bps.map(bp => debugService.removeBreakpoints(bp.getId()))); } if (debugService.getConfigurationManager().canSetBreakpointsIn(editor.getModel())) { <del> return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber }]); </del> <ins> return debugService.addBreakpoints(modelUri, [{ lineNumber: position.lineNumber }], 'debugEditorActions.toggleBreakpointAction'); </ins> } return Promise.resolve(null);

When going over our telemetry for debug actions we have the ability to track usage counts of debug actions triggered from keyboard shortcuts and commands, as they execute commands which we emit telemetry for, but we don't seem to have telemetry in place for breakpoints set in the gutter (click or context menu). This is unfortunate as my hypothesis is that the majority of breakpoints are set this way. Ask Add ability to track breakpoint toggles (add/remove/change) from Gutter click Add ability to track breakpoint toggles from gutter context menu
would you like to contribute a PR for this? It shuold be fairly simple and you already have the nice code pointers.
I'd be happy too, but we should land on an agreement on how to implement it. What's the best approach? 1) Add telemetry directly to the gutter actions 2) Re-wire the gutter actions to execute a command instead?
for the best approach let's first see what you want to get exactly? total amount of all breakpoints set (including the gutter) grained events for breakpoint setting based on the way the user initated that aciton In case of 1 we should just add a telemetry ping in the  since everyone should go through there In case of 2 depends on how fine grained you want it, if for every place then we should add an argument or something like that in the addBreakpoints method and then also report that to telemetry.
I'd like us to be able to contribute a source/initiator to given breakpoint, so we can get an UI usage distributions, etc.
I suggest the following Add a third argument In the implementation of that method use the telemetry service to report the appropriate event with the context. And you should nicely get all the errors of all the callers of , simply pass different string context for each caller and you shuold be good to go. Let me know if you have any questions
Cool, I'l see what I can get cooking!
Removing my assignment for this. feel free to assign me back if you do not have time to tackle this and if we need this for August
hey, would you still like this? If yes I can also look into it in October
I'd still like to do this to get my hands dirty.
cool, unasigning myself and let's leave it for October
Verified by code review, adding verified label


Question: # Visual Studio Code - Open Source <del> [VS Code](http://code.visualstudio.com) is a new choice of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. Code provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools. </del> <ins> [VS Code](http://code.visualstudio.com) is a new type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. Code provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools. </ins> <img width="550" alt="vscodereadme" align="middle"  src="https://cloud.githubusercontent.com/assets/1487073/11243985/98562110-8e0b-11e5-9922-29a0b4884eab.png">

Issue Type: <bBug</bGitHub reported a security vulnerability related to the NPM package in my VS Code extension's . <img width="765" alt="Screen Shot 2019-06-18 at 5 49 45 PM" src="https://user-"In my VS Code extension's , I've a dependency for : When I run to see what packages are using , I see this: <img width="156" alt="Screen Shot 2019-06-18 at 5 49 23 PM" src="https://user-"And I see this reflected in my : VS Code version: Code 1.35.1 (, 2019-06-12T14:29:22.216Z) OS version: Darwin x64 18.6.0 <details<summarySystem Info</summary </details<details<summaryExtensions (15)</summaryExtensionVersion ------ vscode-css-formatter1.0.1 npm-intellisense1.3.0 path-intellisense1.4.2 bracket-pair-colorizer1.0.61 vscode-eslint1.9.0 gitlens9.8.2 vscode-npm-script0.3.7 auto-rename-tag0.1.0 beautify1.5.0 ibm-streams0.5.0 vscode-duplicate1.2.1 java0.46.0 change-case1.0.0 JavaScriptSnippets1.7.2 ReactSnippets2.3.0 </details


Question: import { IChatReplyFollowup, IChatService, ISlashCommand, InteractiveSessionVoteDirection } from 'vs/workbench/contrib/chat/common/chatService'; import { IChatRequestViewModel, IChatResponseViewModel, IChatWelcomeMessageViewModel, isRequestVM, isResponseVM, isWelcomeVM } from 'vs/workbench/contrib/chat/common/chatViewModel'; import { IWordCountResult, getNWords } from 'vs/workbench/contrib/chat/common/chatWordCounter'; <ins> import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; </ins> import { AccessibilityVerbositySettingId } from 'vs/workbench/contrib/accessibility/browser/accessibilityContribution'; const $ = dom.$;

We should not translate the PHP parser error messages, but we should localize the strings that appear in the Code UI. !


Question: await profiler.writeProfile(profileMain, `${filenamePrefix}-main.cpuprofile${suffix}`); await profiler.writeProfile(profileRenderer, `${filenamePrefix}-renderer.cpuprofile${suffix}`); await profiler.writeProfile(profileExtHost, `${filenamePrefix}-exthost.cpuprofile${suffix}`); }); }

This is very useful when working with the commandline, and to pass the result directly into the editor. It's especially useful for getting a file out of git's history, eg: FWIW, this works in Sublime.
+1
Here is my workaround (I'm on OSX so might need to adjust accordingly): create ~/bin/codestdin: Then run: Now git log, git show, git diff pipe correctly into vscode
Similar to approach, I've this to my bash profile to wrap the command... definitely not flawless, but it works for my use cases (so far). e.g.
For you have to modify the function a bit and use , because is a BUILTIN in and will return the function itself: What does not work is something like
Hello, For using the redirect, does this express the intent of getting of copy of the file contents assigned to an anonymous file buffer? Would that be similar to for intents sake? I wonder if are the only thing to care for that scenario? Thank you. Good day.
hello yes this should be equivalent as as I know.
Can we get some priority for this issue? It's been open since 2016 (that's 552 days!) and it's a bit ridiculous that VSCode still doesn't provide this extremely rudimentary shell interoperability.
+1
Pushed a change to feed the contents of stdin to a file and have it open in VS Code ( is implied when doing so): ! This currently works by or not, which is a bit brittle. If someone spawns VS Code without terminal emulation we might wrongly assume that data is coming in via stdin and open a tmp file. If it turns out that there are too many regressions, I might have to add a startup argument (, ) to explicitly enable this. If someone has a better idea how to detect if data is flowing in via stdin let me know.
This is great to see! Thanks so much! Is Atom's implementation the same?
as far as I know, Atom does not support this.
huh, I really thought it did, but local tests (and ) suggest not. Anyway, thanks again!
Hello, would you be kind enough to update your OP to note that Atom did and does not as of writing actively support this (probably just taking it out).


Question: await profiler.writeProfile(profileMain, `${filenamePrefix}-main.cpuprofile${suffix}`); await profiler.writeProfile(profileRenderer, `${filenamePrefix}-renderer.cpuprofile${suffix}`); await profiler.writeProfile(profileExtHost, `${filenamePrefix}-exthost.cpuprofile${suffix}`); }); }

There is the PR for them, but it is nice to have the proper perspective that VSCode is in the forefront of this kind of feature. Its no harm to stay, just misleading. Thank you. Good day.
done
Thanks for the feature, very nice. Just my 2 cents on feedback, the implied seems unnecessary. EG: when I pipe to TextMate it gives me my prompt back. There might be other reasons though for having the wait that I'm not thinking about though. Regardless, cheers and thanks for the work!
the calling process is waiting because it is not clear how long data is being sent to . It could be that the editor is already opened but data is still flowing. A workaround on your side would probably to send the command to the background by appending "" at the end?
Hrm, wasn't aware that was even possible. I feel like most commands I pipe complete then output is sent to the editor.
A terminal can have a specific encoding set which my solution did not yet account for. I pushed a change to try a little bit of terminal encoding guessing but I think the solution is not ideal. If someone has a better idea ( ?), let me know: Linux/macOS: use the output of running as encoding Windows: use by default any OS: if you specify an environment variable it will always win over the guessing This will not help if you change the encoding of the terminal ad-hoc as that does not seem to cause any configuration change that the command would detect. On Windows I see the  command but the output of that command seems to be intertwined with human readable text and not just the encoding. If someone has a better idea for Windows, please speak up.


Question: } if (outputLineHeight || fontSize || outputFontSize) { <del> configuration.outputLineHeight = this._computeOutputLineHeight(); </del> <ins> const lineHeight = this.configurationService.getValue<number>(NotebookSetting.outputLineHeight); configuration.outputLineHeight = this._computeOutputLineHeight(lineHeight, configuration.outputFontSize); </ins> } if (outputWordWrap) {

Testing There are "" "notebook.outputLineHeight" "" "notebook.outputFontFamily" "notebook.outputFontSize" Ideally these would be all namespaced or prefixed .
This affects how they show up in the settings editor UI, btw: <img width="919" alt="image" src="https://user-"


Question: <del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/127473 /** * The state of a comment thread. */ export enum CommentThreadState { Unresolved = 0, Resolved = 1 } export interface CommentThread { /** * The optional state of a comment thread, which may affect how the comment is displayed. */ state?: CommentThreadState; } } </del>

<!-- 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. --The comments API doesn't have the concept of resolved/unresolved threads, although most code review tools distinguish them. The current API allows us to surface this to the users, see However, this seems pretty limited. I find it difficult to identify all my unresolved comments. It's very easy to miss some of them. If the API had a boolean for unresolved comments, we could surface them in multiple ways: In the Comments panel, surface the number of unresolved comments, similar to what is done with Problems: ! In the Comments panel, highlight the unresolved comments (or put them in bold), so that it's obvious to the user what comments they still have to go through. In the Comments panel, have a way to hide/filter the resolved comments. In the Editor, consider consider using a different background color for unresolved comments. I currently use a different label for unresolved comments, but this is very subtle. In the gutter, use a different symbol for unresolved comments (e.g. or a diamond of another color). In the Editor, provide a way to go to the next unresolved comment (an alternative to ).
Let's discuss the API change. IMO, the information should be part of a . On many levels, Comments seem similar to s. A diagnostic is a comment provided by a tool such as a compiler. A comment is typically provided by a human. Diagnostics have a severity field, which indicates how important is the problem. We need an equivalent for Comments, something that tells the user if an action is expected (e.g. they need to resolve it) or not. Once the user addresses the comment, the importance is reduced. simplistic solution is to add a boolean, e.g. . to , we can go for a two-state enum instead: to be more general: . We might consider having more fields here. In a code review, multiple users interact with the comments. The current VSCode user is not necessarily the person who needs to do something. For example, the user has just updated the comment and they wait for a response.


Question: <del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/127473 /** * The state of a comment thread. */ export enum CommentThreadState { Unresolved = 0, Resolved = 1 } export interface CommentThread { /** * The optional state of a comment thread, which may affect how the comment is displayed. */ state?: CommentThreadState; } } </del>

So the third value could be used to mean "it's not my turn" or "acknowledged, I'll come back later". The benefit is that the user can use the list of "unresolved" issues as a TODO-list and publish the comments once it's empty.
Thank you very much for your proposal. and me have quickly discussed this and we believe this proposal makes good sense. We plan to start looking into it next milestone. Though no promises yet when this will land, we will know more in December when we start our investigation.
All of the proposals in have merit. In a perfect world I would choose one of options 2 or 4; however, we have users of the comments API who's comments don't have a resolved/unresolved state. Option 3 circumvents that, but then we have the issue of what to show in the UI: a GitHub PR comment isn't high or low priority. Another proposal, similar to how comment reactions work:
I see than left comments on the commit (). I like the approach of having an object for the state (instead of the proposed boolean/enum), it gives more flexibility and lets user create their own states. In my proposal, the information was attached to a thread, not to a single comment. Do we have use-cases where we want this information per comment? We might also want to control the gutter icon:
GitHub comments are resolved per-thread, so no, no cases were we want it per comment. I'll move it to the thread.
After much discussion, we have decided to proceed with the following: The main reasoning behind this is that resolved vs. unresolved comments should look the same to the user across a GitHub PR extension, an Azure Dev Ops PR extensions, and any other PR extension. There original concern around using "resolved" and "unresolved" is that maybe not all comment provider have those states (maybe they have "viewed" and "unviewed" states for example). To alleviate this, we'll see if we can avoid using "resolved"/"unresolved" language in the UI. If additional states are needed later, we can always add more to the API.
I have a basic implementation of this working, with and themable colors. Before I finish up the pull request to send it out, I was wondering what the best practice is for providing defaults for these colors?


Question: <del> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ declare module 'vscode' { // https://github.com/microsoft/vscode/issues/127473 /** * The state of a comment thread. */ export enum CommentThreadState { Unresolved = 0, Resolved = 1 } export interface CommentThread { /** * The optional state of a comment thread, which may affect how the comment is displayed. */ state?: CommentThreadState; } } </del>

In the mocks from we use a yellow for unresolved comments that is inspired by visuals of our internal tool. I am not sure if they match an established VS Code palette.
awesome, looking forward to reviewing it! Generally, we try to avoid introducing a new color entirely for something like this. The best practice would be to look through the existing color values where we use yellow then use the same yellow, just like is done here where uses the same color as : We'll also do a UX review of this, so the color may end up changing anyway.
I went for new colors as the comments are conceptually something different than e.g. editor warnings. Currently the comments in the editor use (default blue), so a theme, an extension, or the users themselves would not be able to style comments independently of peek views. I think it makes sense to base the default on another color like as in your example, so that themes which omit the new colors receive a reasonable default, but it seems like we would give up a lot of flexibility and also clarity if comment widget colors directly used something like internally?
Yes, basing the color on another is what I meant! I agree that we don't want to directly use another theme color.
If anyone is eager for this API to be finalized then please comment and let me know how it's working for you. Otherwise, I will plan to finalize later in 2022.
This would be very nice to have. We are using Github and especially larger PRs are hard to manage, if there are many comments (in Github as well as in VSCode)
So is there currently a way to filter resolved/unresolved comments in the sidebar? If not what can I modify currently to provide a visual distinction between resolved/unresolved?
there's a color difference on the icon, but that's currently it. This is the feature request you're looking for


Question: this.stateModel.setRuntimeValue(LayoutStateKeys.SIDEBAR_HIDDEN, true); } } <ins> // Side bar is hidden and a new window is opened with activity bar not visible (not default) else if (isNewWindow && activityBarNotDefault) { // Open side bar if there is a view container to restore const viewContainerToRestore = this.storageService.get(SidebarPart.activeViewletSettingsKey, StorageScope.WORKSPACE, this.viewDescriptorService.getDefaultViewContainer(ViewContainerLocation.Sidebar)?.id); if (viewContainerToRestore) { this.state.initialization.views.containerToRestore.sideBar = viewContainerToRestore; this.stateModel.setRuntimeValue(LayoutStateKeys.SIDEBAR_HIDDEN, false); } } </ins> // Panel View Container To Restore if (this.isVisible(Parts.PANEL_PART)) {

<!-- 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. --I found that once the [Activity Bar Position] is set to [Top], i can't find the activity bar at the top anymore, when i click [File-New Window] to open a new window. Therefore, i suggest display the activity bar by default when opening a new window.
<img width="1068" alt="" src=""As shown in the picture, the new window does not display the activity bar.
I like this idea, I will look into it.


Question: const cmd = quote(args.shift()!); command += (cmd[0] === ''') ? `& ${cmd} ` : `${cmd} `; for (const a of args) { <del> command += `${quote(a)} `; </del> <ins> command += (a === '<' || a === '>') ? a : quote(a); command += ' '; </ins> } } break;

<!-- 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.67.0 OS Version: Windows 10, using as a default shell Steps to Reproduce: When debugging python(I think debuggers of other languages also got effected too), I'm using following to redirect stdin to my custom input file. This method of implementing redirection when debugging using the < character is also introduced in the . According to the document, This approach requires that the "<" syntax is passed through the debugger extension and ends up unmodified in the Integrated Terminal. and it worked like charm before updating to . From , I've noticed that there was a fix related to automatically add escape character() before special symbols such as or (See Terminal on Windows uses cmd /C, this corrupts passed arguments) When I started debugging session, vscode is now really add before . Since character is escaped, I cannot used redirection with the method mentioned in the document anymore. Is this the intended result? If so, how to use redirection 'correctly' after this build? I know a lot of people redirect stdin to and redirect stdout to when debugging, which is actually very convenient. I think that implementing redirection by passing special characters(, , ) as arguments of the debugger is not a very graceful solution, but that method itself should not be eliminated.
Having the same issue with new version in WSL. It seem some characters are prefix with . My is . But in console, the command is , due to prefix , my code is stuck. It was working fine yesterday, So, I think this issue is with new release.


Question: const cmd = quote(args.shift()!); command += (cmd[0] === ''') ? `& ${cmd} ` : `${cmd} `; for (const a of args) { <del> command += `${quote(a)} `; </del> <ins> command += (a === '<' || a === '>') ? a : quote(a); command += ' '; </ins> } } break;

VS Code Version: 1.67.0 OS Version: Windows 10, WSL Ubuntu20.04
Judjung from of , I'm sure this issue is related to today's release too.
Yeah this is Thanks for pointing out the docs, I didn't know this was recommended. It's suspicious to me that we would want to put shell-specific syntax in the args here. That isn't what "args" means to me. I wonder whether we could add launch config parameters like "stdinFromFile" and "stdoutToFile" (and add those to the runInTerminal request) so that vscode can come up with the right syntax for the shell. I may want to revert the change until we have a better solution. Thoughts Maybe candidate
I'm not a fan of allowing this. We already try to escape things from those arguments, so people doing this today have only a half-working shell syntax in their arguments. It also only works if you run it in the , and is of course shell-dependent too, which feels weird.
This is super messed up. I 100% require being able to redirect the output. This needs to be fixed. ages: ["",""] was 100% working on windows before this update! My work flow is screwed rn
Args mean arguments as if I was writing it after typing it in console including SHELL commands. I want to redirect output Why in the world it would add ^is crazy to me. This has to be be bug.
Additional sometimes you need to chain aliases that take redirect or pass a redirect back in < These are shell scripts that having the debugger "args" accept <,,| is really important to have. It was an amazing and highly convenient way to debug. I seriously doubt this is a feature that few people would want deprecated. I seriously don't and it's killing me it broke after this update.
Yeah I agree that passing redirection symbols through args is somewhat weird, and I understand the need for escaping shell-specific characters. That's why I've said it's not a graceful solution. However, many people uses the redirection feature through that way now(even if the docs have been mislead the users). It's good improvement to escape that characters in arguments since it is literally "argument", but I think there should be official solution to redirect I/O.


Question: const cmd = quote(args.shift()!); command += (cmd[0] === ''') ? `& ${cmd} ` : `${cmd} `; for (const a of args) { <del> command += `${quote(a)} `; </del> <ins> command += (a === '<' || a === '>') ? a : quote(a); command += ' '; </ins> } } break;

As mentioned above, add parameters such as "stdinFromFile" and "stdoutToFile" to might be best solution. BTW, what kind of additional information do I have to add here? I think I mentioned all the details of the sitution but I see the "needs more info" label.
I've spent 3 hours trying to come up with a work around. This is insane. So much of my workflow relied on the ability the redirect stdin and stdout using <,. It's insane that this was deprecated. I don't even get why. It doesn't have to do any crazy checking should just copying what you type in and the shell takes over. This is a serious issue for me. !
If it's about "escaping shell-specific characters" then I could live with this. And if it's about anything else shell then give me something like this:
Sorry for the trouble. Like I said, I didn't realize that people were depending on this behavior, and I agree that it should be supported somehow, since this is a reasonable and useful workflow. To me, "args" means arguments that get passed to the program you are starting. I see a couple solutions Restore the behavior of and require users to shell-escape args in their own config, which is not good, or add which would be shell-escaped Keep the behavior of and add or , or the more specific Any of this will require changes to DAP. I wonder whether anyone is trying to use any shell syntax besides /<, in other words, is there a scenario that adding wouldn't cover?
In my opinion, the second way Keep the behavior of and add or , or the more specific is better workaround since we can prevent use of different way from its real meaning.
just a few comments from vacation... VS Code knows nothing about properties. Some debug extensions introduce in their schema contribution but VS Code cannot provide any direct help with redirecting input/output. VS Code supports/implements the DAP request which some debug extensions use to implement their (private) support. does not allow direct access to shell features (e.g. input/output redirection) because no assumptions can be made about the underlying shell or whether a shell is used at all. So escaping/quoting all shell meta-characters is correct. But we might want to add additional features to the DAP request so that debug adapters can implement / property support themselves.


Question: const cmd = quote(args.shift()!); command += (cmd[0] === ''') ? `& ${cmd} ` : `${cmd} `; for (const a of args) { <del> command += `${quote(a)} `; </del> <ins> command += (a === '<' || a === '>') ? a : quote(a); command += ' '; </ins> } } break;

a debug extension can introduce an alternative property that supports shell features, e.g. a property . In order to support this we would have to add support to the DAP request to pass a full command line unchanged to the underlying shell.
is there a scenario that adding stdinFromFile/ stdoutToFile wouldn't cover? Yes. I for one will use aliases that are shell scrips to redirect their input and output to chain together programs.
Yes, this is basically my thinking. But I think I should revert the change as a candidate until we figure out a better solution. could you give me an example so I understand how that wouldn't be covered by this proposal?
"stdinFromFile/stdoutToFile" makes the most sense to me. I would not be in favor of a option in the request since, similar to the initial problem, the DA has no knowledge of the underlying shell.
I wonder whether we could make everyone happy in the meantime by leaving the current fix but special-casing and and not escaping these? You could have the and filename in a single arg but I don't see anyone doing that. And it would make the behavior almost the same as the intended escaping behavior.
If would work with "" instead of "", "" I could live with that. Or what ever you mean by special-casing. I just want it to work again or have some means to do to it again.
I mean the opposite (the in would not be escaped, and in would be escaped)
that seems like an acceptable interim fix to me. As a C++ debug extension author (vGDB), this has also broken my extension on the most recent VSCode build and I've had to suggest users defer on upgrading for now to not break existing workflows.
Thanks. I am going with this solution for the .2 build that will go out next week. Not a perfect fix - as a single argument would have previously redirected output too - but people are using or in all the examples I have seen so far. It will also be in Insiders tomorrow. I noticed another issue with the escaping, , which will also get fixed in Insiders
thanks for the quick fix!


Question: let hint = ''; const disableKeybinding = this._keybindingService.lookupKeybinding(AccessibilityCommandId.DisableVerbosityHint, this._contextKeyService)?.getAriaLabel(); if (disableKeybinding) { <del> hint = localize('acessibleViewDisableHint', "Disable accessibility verbosity for this feature ({0}). This will disable the hint to open the accessible view for example.n", disableKeybinding); </del> <ins> hint = localize('acessibleViewDisableHint', "nnDisable accessibility verbosity for this feature ({0}).", disableKeybinding); </ins> } else { <del> hint = localize('accessibleViewDisableHintNoKb', "Add a keybinding for the command Disable Accessible View Hint, which disables accessibility verbosity for this feature.n"); </del> <ins> hint = localize('accessibleViewDisableHintNoKb', "nnAdd a keybinding for the command Disable Accessible View Hint, which disables accessibility verbosity for this feature.s"); </ins> } return hint; }

As a result of the discussion in , we should format each command, description, and keybinding more consistently and limit redundancy.
/closedWith though still need to do the same for the chat help dialogs


Question: this.expandReplyArea(); } else if (hasExistingComments) { this.createReplyButton(this.commentEditor, this.form); <del> } else if (focus && (!this._commentThread.comments || this._commentThread.comments.length === 0)) { </del> <ins> } else if (focus && (this._commentThread.comments && this._commentThread.comments.length === 0)) { </ins> this.expandReplyArea(); } this._error = dom.append(this.form, dom.$('.validation-error.hidden'));

!
Caused by I caused when I fixed an issue when there are multiple text editors open with the same uri with comments. When I tried to fix I made it so when extensions call and pass in for the comments, we always expand the reply editor, resulting in the bad behavior above. I took a quick look, and it seems very common for extensions to pass in for the comments and then immediately set them.
To verify: Check out PR with comments that you left Reload to make sure there's not state left over from when you left the comments Open the file with the comments and click on the comment icon in the comment bar to expand a comment that you left Verify that the reply input button is collapsed and isn't a big empty rectangle.
Works great -verified.
<!-- UNABLETOLOCATECOMMITMESSAGE repo --Issue marked as unreleased but unable to locate closing commit in repo history. If this was closed in a separate repo you can add the label directly, or comment .
<!-- UNABLETOLOCATECOMMITMESSAGE --Issue marked as unreleased but unable to locate closing commit in issue timeline. You can manually reference a commit by commenting , or directly add the label if you know this has already been releaased


Question: private _bufferTracker: BufferContentTracker | undefined; private _bufferProvider: TerminalAccessibleBufferProvider | undefined; private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined; <del> private _onCommandExecutedShowListener: MutableDisposable<IDisposable> = new MutableDisposable(); </del> <ins> private _onDidRunCommand: MutableDisposable<IDisposable> = new MutableDisposable(); </ins> constructor( private readonly _instance: ITerminalInstance,

Type: <bBug</b I am not sure whether the insiders version reflects the up-to-date patch though, does not seem to work in Powershell. I have noticed that this works in my remote z shell though. VS Code version: Code - Insiders 1.85.0-insider (, 2023-11-03T15:11:12.179Z) OS version: WindowsNT x64 10.0. Modes: Remote OS version: Linux x64 4.18.0-477.27.1.el88.x8664 <details<summarySystem Info</summary </details<details<summaryExtensions (104)</summaryExtensionVersion ------ aiprm-lang0.0.2 Bookmarks13.4.2 spellright3.0.118 mermaid-markdown-syntax-highlighting1.5.3 vscode-firefox-debug2.9.10 codespaces1.16.2 remotehub0.62.0 overleaf-workshop0.4.1 easy-snippet0.6.3 scheme0.2.0 better-cpp-syntax1.17.2 lilypond-snippets0.1.1 vscode-edge-devtools2.1.3 jupyter-keymap1.1.2 remote-containers0.322.0 remote-ssh0.108. remote-ssh-edit0.86.0 remote-wsl0.81.8 vscode-remote-extensionpack0.24.0 azure-repos0.38.0 remote-explorer0.5. remote-repositories0.40.0 vscode-serial-monitor0.10.0 vscode-speech0.3.


Question: private _bufferTracker: BufferContentTracker | undefined; private _bufferProvider: TerminalAccessibleBufferProvider | undefined; private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined; <del> private _onCommandExecutedShowListener: MutableDisposable<IDisposable> = new MutableDisposable(); </del> <ins> private _onDidRunCommand: MutableDisposable<IDisposable> = new MutableDisposable(); </ins> constructor( private readonly _instance: ITerminalInstance,

multi-command1.6.0 errorlens3.15.0 Bookmarks13.4.2 openscad1.2.2 zoterolatex0.4.1 mermaid-markdown-syntax-highlighting1.5.3 codium0.7.13 doxdocgen1.4.0 vscode-markdownlint0.52.0 vscode-eslint2.4.2 vscode-quick-select0.2.9 vscode-deno3.26.0 gitlens14.4.1 EditorConfig0.16.4 prettier-vscode10.1.0 shell-format7.2.5 vscode-google-translate1.4.13 codespaces1.16.2 copilot1.133.531 copilot-chat0.11. remotehub0.62.0 vscode-github-actions0.26.2 vscode-pull-request-github0.77. cslpreview0.2.2 path-autocomplete1.25.0 latex-workshop9.14.1 lilypond-syntax0.1.1 scheme0.2.0 better-cpp-syntax1.17.2 vscode-lua-format1.3.8 lilypond-formatter0.2.3 lilypond-pdf-preview0.2.8 lilypond-snippets0.1.1 vslilypond1.7.3 git-graph1.30.0 vscode-docker1.27.0 black-formatter2023.4.1 flake82023.10.0 isort2023.10.1 python2023.20.0 vscode-pylance2023.11.10 jupyter2023.11.


Question: private _bufferTracker: BufferContentTracker | undefined; private _bufferProvider: TerminalAccessibleBufferProvider | undefined; private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined; <del> private _onCommandExecutedShowListener: MutableDisposable<IDisposable> = new MutableDisposable(); </del> <ins> private _onDidRunCommand: MutableDisposable<IDisposable> = new MutableDisposable(); </ins> constructor( private readonly _instance: ITerminalInstance,

jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 azure-repos0.38.0 cmake-tools1.15.31 cpptools1.17.5 cpptools-extension-pack1.3.0 js-debug-nightly2023.11.217 remote-repositories0.40.0 vscode-github-issue-notebooks0.0.130 vscode-selfhost-test-provider0.3.20 vscode-serial-monitor0.10.0 vsliveshare1.0.5892 autodocstring0.6.1 pandocciter0.10.3 shiny-python0.1.5 shinyuieditor0.5.0 quarto1.106.3 r-debugger0.5.4 java1.24.0 vscode-xml0.26.1 r2.8.2 multi-command1.6.0 vscode-deepl1.0.6 lua3.7.0 latex-utilities0.4.10 cmake0.0.17 errorlens3.15.0 intellicode-api-usage-examples0.2.8 vscodeintellicode1.2.30 vscode-java-debug0.55.0 vscode-java-dependency0.23.2 vscode-java-pack0.25.15 vscode-java-test0.40.1 vscode-maven0.43.0 markdown-all-in-one3.5.1 grammarly0.24.0 (2 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
it is working for me on windows with PowerShell. could you share a gif?
!
-- Also, I have noticed that sometimes the first letter typed in Accessible View is not bypassed as demonstrated in the z shell.
Thanks for the gif, yeah, it's not working for you. I cannot reproduce even when I use a terminal in the editor area. Could you pls set terminal log level to debug, repro, and provide me with those?
Looks like shell integration isn't working properly for you for some reason, which is why this isn't working. We run the open command , so that's not happening.
And yeah, I can reproduce sometimes the key not getting sent to the terminal.


Question: private _bufferTracker: BufferContentTracker | undefined; private _bufferProvider: TerminalAccessibleBufferProvider | undefined; private _xterm: Pick<IXtermTerminal, 'shellIntegration' | 'getFont'> & { raw: Terminal } | undefined; <del> private _onCommandExecutedShowListener: MutableDisposable<IDisposable> = new MutableDisposable(); </del> <ins> private _onDidRunCommand: MutableDisposable<IDisposable> = new MutableDisposable(); </ins> constructor( private readonly _instance: ITerminalInstance,

It's a timing issue related to the context view that is shown.
I'll split that issue out
As expected, your logs do not show , which explains why it's not working for you.
I wonder if is loaded for you. That would be the only way that event wouldn't happen
Can you pls run and provide the output?
!
So is disabled for you, which is why this isn't working.
If you add this line to your , it will work
is disabled by default when screen reader is used, and enabling it does not resolve the issue. Please see the gif: !
oh, seems we'll have to use instead for this case then.
I still cannot repro. I have the likely fix, so you'll be able to verify it tomorrow.


Question: importProfile(uri: URI, options?: IProfileImportOptions): Promise<void>; showProfileContents(): Promise<void>; createFromCurrentProfile(name: string): Promise<void>; <del> createTemporaryProfile(from: IUserDataProfile, name: string, extensionsDisabled: boolean): Promise<void>; </del> <ins> createTroubleshootProfile(): Promise<void>; </ins> setProfile(profile: IUserDataProfileTemplate): Promise<void>; }

Testing I started the Troubleshoot issue flow and it took a long time to create my initial profile. All I had was a status bar item which took me a while to discover (I actually thought something else went wrong). I would love to see and editor / web view better guiding me through that process by: listing the steps and adding check marks when done showing me the number of bisects still necessary giving me a final report.
<img width="258" alt="capture" src=""
We should also have a UI to always stop the process (see ) for a situation where this is useful
I now see that there is a notification for each step. This makes it better, so may be a simple thing to do is to show a notificatio with progress when the profile is created instead of a simple status bar item.
Actually, setting up the trouble shooting profile should be fast and instant.
Was not for me :-(
Following notification is shown now !


Question: .comments-panel .comments-panel-container .tree-container .comment-thread-container .comment-snippet-container .count, .comments-panel .comments-panel-container .tree-container .comment-thread-container .comment-metadata-container .user { <del> overflow: hidden; text-overflow: ellipsis; </del> <ins> min-width: fit-content; </ins> } .comments-panel .comments-panel-container .tree-container .comment-thread-container .comment-snippet-container .text {

When the comment is too long to fit in the panel (which is common), the author name and the date get truncated first. Instead, we should truncate the comment: e.g. look at the last comment in ! Showing the author name (instead of ) should be more important than showing a few more characters in the comment preview. (cc
/verified It prefers the user name over comment now.


Question: this.initServices(configuration); const isSnap = process.platform === 'linux' && process.env.SNAP && process.env.SNAP_REVISION; <ins> const targetExtension = configuration.data.extensionId ? configuration.data.enabledExtensions.find(extension => extension.id === configuration.data.extensionId) : undefined; </ins> this.issueReporterModel = new IssueReporterModel({ issueType: configuration.data.issueType || IssueType.Bug, versionInfo: {

Feature Request The command takes an extension argument so that extensions can open an issue reporter for that extension. I'd like to use this for the built-in JS/TS extension as well but cannot at the moment: It'd be nice if for VS Code builtin extensions, we automatically changed the field to
<!-- -96bd-47a8-a0e8- --This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our . Happy Coding!


Question: private onDidActiveEditorChange(): void { const activeEditorGroup = this.editorGroupService.activeGroup; const activeEditorPane = activeEditorGroup.activeEditorPane; if (this.lastActiveEditor && this.editorHelper.matchesEditorIdentifier(this.lastActiveEditor, activeEditorPane)) { return; // return if the active editor is still the same }

Steps to Reproduce: recently opened ("Clear Editor History") quick open and search for a file (such as a TS file) to see symbols (notice how the file opens in the background) to a symbol = when you open quick open again, the file is not part of the recently opened section //cc this is a regression from the transient work we did


Question: return extHostQuickOpen.showWorkspaceFolderPick(options); }, showInputBox(options?: vscode.InputBoxOptions, token?: vscode.CancellationToken) { <del> if (options?.validateInput2) { checkProposedApiEnabled(extension, 'inputBoxSeverity'); } </del> return extHostQuickOpen.showInput(options, token); }, showOpenDialog(options) {

<!-- 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. --We already have this feature in Core: where you can return where . Truth be told, this already works in API today though it's not officially a part of the API today (so it could change at any moment). For example, I can do: <img width="738" alt="image" src="https://user-"with it goes from: to it goes from: to
ref
Created a TPI so moving this to April for Finalization.


Question: const title = localize('import profile preview', "Import"); if (!userDataProfileImportState.isEmpty()) { <del> let importProfile = await this.selectProfileResources( userDataProfileImportState, localize('import title', "{0}: {1} ({2})", PROFILES_CATEGORY.value, title, profileTemplate.name), localize('import description', "Choose what to import") ); if (importProfile === undefined) { return; } if (!importProfile) { importProfile = await this.showProfilePreviewView(`workbench.views.profiles.import.preview`, title, title, localize('cancel', "Cancel"), userDataProfileImportState); } </del> <ins> const importProfile = await this.showProfilePreviewView(`workbench.views.profiles.import.preview`, title, title, localize('cancel', "Cancel"), userDataProfileImportState); </ins> if (!importProfile) { return; }

<!-- 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: OS Version: MacOS Big Sur latest Steps to Reproduce: Create a new profile Click on the Profile Activity Bar icon, then choose Result: the quick pick comes up... ! Now click on the menu item to bring up the view Click on the menu item again Result: focus just moves to the pane ! Expectation: Show the Quick Pick so the menu works the same regardless of whether or not the content view is open
I was also hit by this - that by clicking on "Export Profile..." it looks like it has no effect, when it fact it just passed the focus. we could always show quick pick as Chris suggests?
What about the contents view when you click on again? Does this has to be closed or remain like this? May I understand what is confusing in navigating to the contents view when you click on export profile button?
I think you can leave the view open, but I would open the Quick Pick right away, not force the user to click on the Export button (again).
Another idea (that was also mentioned in the UX call) is how about always open the view and ditch quick pick? This was initial flow actually.
I think that flow might work. My biggest concern is that users might not notice that the focus moved to the view (especially if the view is already open). Long term - maybe the view becomes a custom editor? fyi
Quick pick is removed and by default we show the contents view now.


Question: 'remote'?: string; 'force'?: boolean; 'do-not-sync'?: boolean; <ins> 'preserve-env'?: boolean; </ins> 'force-user-env'?: boolean; 'force-disable-user-env'?: boolean; 'sync'?: 'on' | 'off';

<!-- 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.82.3 OS Version: Ventura 13.6 This one was tricky to investigate and is impacting the and & scenario. In that scenario, VS Code is started from one application using the macOS command. This reproduces without requiring Unity and with no extension installed. This seems to be a macOS only issue. When opening either from the macOS Finder or through , the VS Code application will expand the PATH of its subprocess so that extensions that depend on something in the path of the terminal will find it. So in my case, if I start VS Code from the Finder, the processes will look like this: This is expected and good. Extensions can find in the PATH. The issue is that now, if I want to open another workspace in the same instance (but launched from another application), the PATH doesn't get expanded in the second workspace and I get: So in my second workspace, will not be found in the PATH.


Question: 'remote'?: string; 'force'?: boolean; 'do-not-sync'?: boolean; <ins> 'preserve-env'?: boolean; </ins> 'force-user-env'?: boolean; 'force-disable-user-env'?: boolean; 'sync'?: 'on' | 'off';

For this to happen, VS Code must be started from an application launched from the Finder (and not from the Terminal, otherwise it will inherit the PATH of the Terminal) Steps to Reproduce: Xcode, create a new SwiftUI project (I mean, it doesn't have to be a SwiftUI project, you can re-create the issue with anything that is able to output a macOS .app but for this particular repro I used SwiftUI) the Sandbox for the project: <img width="562" alt="Screenshot 2023-10-03 at 10 33 02 AM" src=""the look like this: the variables and to point to 2 different workspaces. the project, I personally use in command line. all VS Code instances. the .app from the Finder, it will be in if you built from the command line by default. the button As you can see from the code, the .app will: set the PATH with a marker open a new VS Code workspace on workspace1 wait a bit open a new VS Code workspace on workspace2 activity monitor, find the child process ID: <img width="1045" alt="Screenshot 2023-10-03 at 10 40 50 AM" src=""the terminal, look at their path: (Your pid may vary) that the second child process doesn't have its PATH expanded, and only inherited the PATH from the .app:
I think you're best equip to handle this issue? but feel free to reassign to whoever.
I can't repro this. To know more, please do the following: Quit VS Code From a Terminal, run , this should open VS Code In that window, run and set it to . Then, from a Terminal, run , this should open the second window On the second window, reveal the Output panel and the Window logs. Search for , what do you find?
the entire point of long repro is to not start VS Code from the terminal, but from an app launched from macOS. As I said in the bug:
Using is the same as launching from Finder. Let me know the result.


Question: 'remote'?: string; 'force'?: boolean; 'do-not-sync'?: boolean; <ins> 'preserve-env'?: boolean; </ins> 'force-user-env'?: boolean; 'force-disable-user-env'?: boolean; 'sync'?: 'on' | 'off';

I'm afraid it's not exactly the same as it exhibits a different behavior as it appears the second instance of the process will simply inherit the PATH of the process that started it, instead of expanding the PATH to be like a terminal Using twice will work as expected from the Terminal as the second instance of the process will inherit the PATH of the Terminal. Using the repro steps to create an app that will call on Visual Studio Code twice won't work as expected. If I close all VSC instances, and do twice on two different workspaces, I get: Things are visibility different as the main Code process seems to inherits the PATH from the Terminal. Whereas if I launch Code manually from the Finder, I get: So there is a difference.
Thanks for testing! Very interesting, I was unaware of differences here. Last I saw this (when I did the macOS integration years ago), did not propagate environments. It seems like it does now. Can you try just once more with: , replacing with the path to the workspace? Thanks, I really appreciate it!
Version: 1.84.0-insider Commit: With from the Terminal I get the same behavior as :
Hi we're seeing a growing number of customer reports on this. I think I've provided all the info that was needed including a way to create a self-contained repro. How could we get this looked at? Thanks!
Same here guys. Just installed unity + vscode and have this message about missing net sdk. I came from here.
I came here from microsoft/vscode-dotnettools as well – and I'm glad I did! I've been banging my head against the " isn't on the PATH" issue (and related!) for quite a long while and with insight from the fantastic writeup for this issue was able to get it to work again. For me, the break comes down to how I open my Unity project in VS Code. I generally open my Unity Projects is with the following: the project in Unity. "Open C# Project" from the Assets menu. <img width="253" alt="image" src=""If the project isn't already open, Visual Studio Code will open up a new window and load the project. When this happens, I get all the "I can't find !" issues. a new VS Code window (keyboard shortcut/menu/palette/whatever).


Question: 'remote'?: string; 'force'?: boolean; 'do-not-sync'?: boolean; <ins> 'preserve-env'?: boolean; </ins> 'force-user-env'?: boolean; 'force-disable-user-env'?: boolean; 'sync'?: 'on' | 'off';

the project from within VS Code. In my case, I do this via the "Open Recent..." menu as what I'm looking for is usually listed there. Regardless, if I open the project in VS Code in this manner, everything works as expected.
sorry for the silence here. Let's try to figure this one out. First of all, I can't get your Swift sample to work. It launches VS Code but fails to open each workspace properly, even after triple checking that I've changed both workspace paths to something that exists. I really couldn't figure out why... In any case, can I ask you for one more piece of info? from Finder (main process regular PATH, Code Helper with sourced PATH) a Terminal, call the command with the path to the second workspace. What's the of that second Code Helper process that comes up? Resolved?
Hey thanks for bumping this, happy new year, looking forward to having a resolution for this. That happened to me before I turned the sandbox off. See step 2 of the repro? We could also try the real world scenario with Unity, but it's going to be a slightly longer setup, I'd encourage you to reach out to my email at work to help get you setup. In that case: The main Visual Studio App inherits the PATH of the Finder (so just /usr/bin:/bin) The first process gets a PATH expended. The second process inherits the PATH of the Terminal, verified by doing: Just before calling in the Terminal.
Sorry about that. It runs correctly now! And I can repro! Funny: it seems to only affect the variable. If, say, one adds to , that gets properly propagated to both extension hosts (). Interesting, digging more...
Nice! Good luck :)
Got it!
<!-- 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: // 	}); // }); <del> test('No expanding when html is excluded in the settings in completion list', async () => { </del> <ins> test.skip('No expanding when html is excluded in the settings in completion list', async () => { </ins> const oldConfig = workspace.getConfiguration('emmet').inspect('excludeLanguages')?.globalValue; await workspace.getConfiguration('emmet').update('excludeLanguages', ['html'], ConfigurationTarget.Global); await testHtmlCompletionProvider(new Selection(9, 6, 9, 6), '', '', true);

Build:
Hit this again with
Again:
is trying to get more details when this happens:
Also saw this
This is because of atomic writing and in windows renaming is failing sometimes and I think this is because some other processes (defender ) might be holding the file that has to be renamed. I have seen similar issues in extensions when I implemented atomic installation of extensions long time back, ie. extracting the zip to a temp file in the same folder and renaming it. I have to retry renaming multiple times to avoid this. I am not sure if this is the right solution for FS atomic write. So, I would wait for until then I will revert my atomic write changes.
Check this issue - This is common in windows and it seems the workaround is to retry.
should the skipped tests be restored, I think they are still skipped
Seems like they can probably be restored.


Question: // to get better profile traces. Last, we listen on stdout for a signal that tells us to // stop profiling. if (args['prof-startup']) { const portMain = await findFreePort(9222, 10, 6000); const portRenderer = await findFreePort(portMain + 1, 10, 6000); const portExthost = await findFreePort(portRenderer + 1, 10, 6000);

This is very useful when working with the commandline, and to pass the result directly into the editor. It's especially useful for getting a file out of git's history, eg: FWIW, this works in Sublime.
+1
Here is my workaround (I'm on OSX so might need to adjust accordingly): create ~/bin/codestdin: Then run: Now git log, git show, git diff pipe correctly into vscode
Similar to approach, I've this to my bash profile to wrap the command... definitely not flawless, but it works for my use cases (so far). e.g.
For you have to modify the function a bit and use , because is a BUILTIN in and will return the function itself: What does not work is something like
Hello, For using the redirect, does this express the intent of getting of copy of the file contents assigned to an anonymous file buffer? Would that be similar to for intents sake? I wonder if are the only thing to care for that scenario? Thank you. Good day.
hello yes this should be equivalent as as I know.
Can we get some priority for this issue? It's been open since 2016 (that's 552 days!) and it's a bit ridiculous that VSCode still doesn't provide this extremely rudimentary shell interoperability.
+1
Pushed a change to feed the contents of stdin to a file and have it open in VS Code ( is implied when doing so): ! This currently works by or not, which is a bit brittle. If someone spawns VS Code without terminal emulation we might wrongly assume that data is coming in via stdin and open a tmp file. If it turns out that there are too many regressions, I might have to add a startup argument (, ) to explicitly enable this. If someone has a better idea how to detect if data is flowing in via stdin let me know.
This is great to see! Thanks so much! Is Atom's implementation the same?
as far as I know, Atom does not support this.
huh, I really thought it did, but local tests (and ) suggest not. Anyway, thanks again!
Hello, would you be kind enough to update your OP to note that Atom did and does not as of writing actively support this (probably just taking it out).


Question: // to get better profile traces. Last, we listen on stdout for a signal that tells us to // stop profiling. if (args['prof-startup']) { const portMain = await findFreePort(9222, 10, 6000); const portRenderer = await findFreePort(portMain + 1, 10, 6000); const portExthost = await findFreePort(portRenderer + 1, 10, 6000);

There is the PR for them, but it is nice to have the proper perspective that VSCode is in the forefront of this kind of feature. Its no harm to stay, just misleading. Thank you. Good day.
done
Thanks for the feature, very nice. Just my 2 cents on feedback, the implied seems unnecessary. EG: when I pipe to TextMate it gives me my prompt back. There might be other reasons though for having the wait that I'm not thinking about though. Regardless, cheers and thanks for the work!
the calling process is waiting because it is not clear how long data is being sent to . It could be that the editor is already opened but data is still flowing. A workaround on your side would probably to send the command to the background by appending "" at the end?
Hrm, wasn't aware that was even possible. I feel like most commands I pipe complete then output is sent to the editor.
A terminal can have a specific encoding set which my solution did not yet account for. I pushed a change to try a little bit of terminal encoding guessing but I think the solution is not ideal. If someone has a better idea ( ?), let me know: Linux/macOS: use the output of running as encoding Windows: use by default any OS: if you specify an environment variable it will always win over the guessing This will not help if you change the encoding of the terminal ad-hoc as that does not seem to cause any configuration change that the command would detect. On Windows I see the  command but the output of that command seems to be intertwined with human readable text and not just the encoding. If someone has a better idea for Windows, please speak up.


Question: *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import * as nls from '../../../../nls.js'; import { IPreferencesService, ISetting } from '../../../services/preferences/common/preferences.js'; import { settingKeyToDisplayFormat } from '../../preferences/browser/settingsTreeModels.js'; </del> <ins> import { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js'; import { IAction } from '../../../../base/common/actions.js'; import type { Tokens } from '../../../../base/common/marked/marked.js'; import { Schemas } from '../../../../base/common/network.js'; </ins> import { URI } from '../../../../base/common/uri.js'; <ins> import * as nls from '../../../../nls.js'; import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js'; </ins> import { ConfigurationTarget, IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js'; <del> import { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js'; import { IAction } from '../../../../base/common/actions.js'; </del> import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js'; <del> import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js'; import { Schemas } from '../../../../base/common/network.js'; import { Tokens } from '../../../../base/common/marked/marked.js'; </del> <ins> import { IPreferencesService, ISetting } from '../../../services/preferences/common/preferences.js'; import { settingKeyToDisplayFormat } from '../../preferences/browser/settingsTreeModels.js'; </ins> export class SimpleSettingRenderer { private readonly codeSettingRegex: RegExp;

<!-- 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. --<!-- 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.93.0-insider (user setup) Commit: Date: 2024-09-04T13:13:15.344Z Electron: 30.4.0 ElectronBuildId: Chromium: 124.0.6367.243 20.15.1 V8: 12.4.254.20-electron.0 OS: Windows_NT x64 10.0. OS Version: Windows 11 Insiders Steps to Reproduce: in the first paragraph doesn't appear to be a link, which I was surprised about: ! I hover over it, I see it's supposed to be a link, but clicking on it does nothing: ! The other docs links at the bottom of the playground appear correctly as links and do open when I click on them: !
This seems related to the bookmark issue we had in the release notes. The other bookmark links in the interactive playground don't work either.
Fixed the toc links. Need another fix for the documentation link too (which use command uris)
The Editor Playground is not showing at all anymore in the latest insiders. When selecting the Editor Playground menu item, a black editor comes up.
hm working from oss builds. Insiders, it seems like the error is:
Actually unrelated. Seems like a duplicate of and fixed by


Question: // if agent has a refer command, massage the input to include the agent name await this._instaService.invokeFunction(sendRequest, massagedInput); <del> if (!this._session.lastExchange) { // DONE when there wasn't any exchange yet. We used the inline chat only as trampoline return State.ACCEPT; } return State.WAIT_FOR_INPUT; </del> <ins> return State.ACCEPT; </ins> } this._session.addInput(new SessionPrompt(input, this._nextAttempt, this._nextWithIntentDetection));

Just asked hi: ! Expected: ! Version: 1.88.0-insider (user setup) Commit: Date: 2024-03-25T05:49:32.344Z Electron: 28.2.6 ElectronBuildId: Chromium: 120.0.6099.291 18.18.2 V8: 12.0.267.19-electron.0 OS: Windows_NT x64 10.0. GitHub Copilot Chat v0.14. (pre-release)
because of
To verify configure have a very wide view port ask AI to change some code make sure the input widget is full width of the zone widget


Question: // if agent has a refer command, massage the input to include the agent name await this._instaService.invokeFunction(sendRequest, massagedInput); <del> if (!this._session.lastExchange) { // DONE when there wasn't any exchange yet. We used the inline chat only as trampoline return State.ACCEPT; } return State.WAIT_FOR_INPUT; </del> <ins> return State.ACCEPT; </ins> } this._session.addInput(new SessionPrompt(input, this._nextAttempt, this._nextWithIntentDetection));

cmd+i now cmd+backspace invokes instead of deleting the line in the text editor The ChatWidget is writing its context keys to the editor's ContextKeyService, so we need a scoped CKS at some point, either inside the ChatWidget or outside in the inline widgets
pushing a fix to use a scoped CKS but this does look like debt. Isn't a better fix to reset context keys when hiding/dispose the chat widget?
I don't think those context keys should be applied on the editor at all, they are intended to just be active inside the widget's dom tree.


Question: white-space: nowrap; } <ins> .monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row > .option-text-description { display: none; } </ins> .monaco-select-box-dropdown-container > .select-box-dropdown-container-width-control { flex: 1 1 auto; align-self: flex-start;

New enum/select box detailed descriptions should be read by reader. Add describedby attribute handling for details provider within selectbox.
Either describedby or just
Yep, I've thought about live/alert also. By my research this does not really match the expected taxonomy for the accessibility tree, an extended description is pretty much exactly what describedby is for. That said, describedby probably will not be happy changing which will mean I will need the static set of descriptions in the Dom. Not a big deal, just another example of where nothing is straightforward. But, that's why we get paid the big bucks ... well at least you :-o ! What I really want to solve is getting rid of the multiple 'clickable' readings. I think I may have a way to avoid that which will be very important for these descriptions given the number of links.
Good point, I have no idea if pointing all of the selectbox items at the same details box will work, or if there's something we can do to order events to make it work better. Or maybe changing the 'id' of the details element for each item. I'm very curious what's causing that! Very weird.
describedby can have a list of IDs associated with it. like labeled by and most other ARIA aspects it does not like things changing underneath it, that of course is what aria-live is for but, but everything I read says use this judiciously. I think having a separate set of descriptions (modified for reader output/minimal clickable) will not be a big deal. Just as the options are static, so are the descriptions so hiding them in the select for use will not be an issue. I haven't done the definitive experiment yet but, I believe the multiple clickable issue has to do with something like this: I think the reader can find these as all clickable elements when they are descendents of a managed accessibility tree. my research has yet to determine if this is considered a bug or as designed


Question: export class CursorMoveCommands { <del> public static addCursorDown(context: CursorContext, cursors: CursorState[]): CursorState[] { </del> <ins> public static addCursorDown(context: CursorContext, cursors: CursorState[], useLogicalLine: boolean): CursorState[] { </ins> let result: CursorState[] = [], resultLen = 0; <del> for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromViewState(MoveOperations.translateDown(context.config, context.viewModel, cursor.viewState)); </del> <ins> if (useLogicalLine) { for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromModelState(MoveOperations.translateDown(context.config, context.model, cursor.modelState)); } } else { for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromViewState(MoveOperations.translateDown(context.config, context.viewModel, cursor.viewState)); } </ins> } return result; } <del> public static addCursorUp(context: CursorContext, cursors: CursorState[]): CursorState[] { </del> <ins> public static addCursorUp(context: CursorContext, cursors: CursorState[], useLogicalLine: boolean): CursorState[] { </ins> let result: CursorState[] = [], resultLen = 0; <del> for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromViewState(MoveOperations.translateUp(context.config, context.viewModel, cursor.viewState)); </del> <ins> if (useLogicalLine) { for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromModelState(MoveOperations.translateUp(context.config, context.model, cursor.modelState)); } } else { for (let i = 0, len = cursors.length; i < len; i++) { const cursor = cursors[i]; result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState); result[resultLen++] = CursorState.fromViewState(MoveOperations.translateUp(context.config, context.viewModel, cursor.viewState)); } </ins> } return result; }

VSCode Version: 0.10.11 OS Version: OS X 10.10.5 Steps to Reproduce: a long line of text that wraps in the editor the cursor on the first line and press Cmd-Option-Down (on OS X). This creates a second cursor on the next visual line, which means it is somewhere on the same logical line depending on how the text is wrapped. When creating multiple cursors on adjacent lines, often it is to perform the same edit on multiple (logical) lines that are aligned with each other. The current behavior having the second cursor appear instead at some situation-specific place on the same logical line throws a wrench in this workflow. I can't think of a good situation where it makes sense (though I do realize it is consistent with pressing the down arrow without cmd-option) Definitions: a logical line is a line in the file on disk. A visual line is a line in the editor. A logical line may span multiple visual lines when there is wrapping.


Question: "editor.foreground": "#000000e4", "editor.inactiveSelectionBackground": "#E5EBF1", "editor.selectionHighlightBackground": "#ADD6FF80", <del> "editorCursor.foreground": "#005FB8", </del> "editorGroup.border": "#0000001a", "editorGroupHeader.tabsBackground": "#f8f8f8", "editorGroupHeader.tabsBorder": "#0000001a",

<!-- 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.75.0-insider OS Version: Linux Hello, IMHO, the block cursor could use a different background. Default Dark+ Experimental (v2): ! ! Default Dark+: ! ! Default Dark+ Experimental (v2): with some cursor background color. For ex: ! ! ! ! Edit (one more option) (with color set to 's value, giving inverted cursor effect) ! ! Thanks


Question: } @throttle <ins> async pullFromRemote(remote : string, branch : string): Promise<void> { await this.run(Operation.Pull, () => this.repository.pull(false, remote, branch)); } @throttle </ins> async push(): Promise<void> { await this.run(Operation.Push, () => this.repository.push()); }

In VS Code we able to push git repos to different places with "git push to" and choosing the remote server to push. I'll be nice if we can be able to choose from the repo to pull files, and manage the default remote, today the first remote repo is the default isn't possible to change that via VS Code
Thanks for all your contributions. You all created a PR to solve the same issue; all in a surprisingly similar way. I wanted to keep the record of all your work so I did an octopus merge with git, thus keeping your names in history. Thanks once again!


Question: column = model.getLineMaxColumn(lineNumber); } } else if (wordNavigationType === WordNavigationType.WordAccessibility) { <ins> if (movedDown) { // If we move to the next line, pretend that the cursor is right before the first character. // This is needed when the first word starts right at the first character - and in order not to miss it, // we need to start before. column = 0; } </ins> while ( nextWordOnLine <del> && nextWordOnLine.wordType === WordType.Separator </del> <ins> && (nextWordOnLine.wordType === WordType.Separator || nextWordOnLine.start + 1 <= column ) </ins> ) { // Skip over a word made up of one single separator <ins> // Also skip over word if it begins before current cursor position to ascertain we're moving forward at least 1 character. </ins> nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, nextWordOnLine.end + 1)); } if (nextWordOnLine) { <del> column = nextWordOnLine.end + 1; </del> <ins> column = nextWordOnLine.start + 1; </ins> } else { column = model.getLineMaxColumn(lineNumber); }

Issue Type: <bBug</b(I have fixed this myself and will send a pull request in a minute) Steps to reproduce: accessibility mode in settings. a new document and type: to the beginning and press Ctrl+Right. Expected behavior: Cursor should jump to the letter w - that is the beginning of the second word. This behavior would be consistent with word navigation in most other Windows programs, e.g. notepad, MS Word, Visual Studio - just to name a few. Actual behavior: Cursor jumps to the space immediately after the first word, and the screenreader announces "Hello". The biggest problem with this behavior is that screenreader users would have to relearn how they make small edits in text files. For example, if I want to delete the word "world" in my example, I would go to the beginning of the line and press Control+Right until my screenreader announces the word I'm interested in. And then, assuming that cursor at this point is at the beginning of the word, I would press delete 5 times. However, in VSCode the cursor would be at the end of the word, and I would end up deleting wrong part of the line. VS Code version: Code - Insiders 1.40.0-insider (, 2019-10-25T14:03:31.497Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </detailsExtensions: none <!-- generated by issue reporter --
FYI, I found related discussion here: , but that thread is now locked.


Question: if (selectedDiffs_.length > 0) { const selections = this._editors.modifiedSelections.read(reader); <del> const btn = new RevertButton(selections[selections.length - 1].positionLineNumber, this._widget, selectedDiffs_.flatMap(d => d.rangeMappings), true); </del> <ins> const btn = store.add(new RevertButton(selections[selections.length - 1].positionLineNumber, this._widget, selectedDiffs_.flatMap(d => d.rangeMappings), true)); </ins> this._editors.modified.addGlyphMarginWidget(btn); glyphWidgetsModified.push(btn); }

<!-- 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.85.0 OS Version: Ubuntu 23.04 a file with contents a file with contents the explorer, right click on file and select the explorer, right click on file and select , opening the diff editor the diff editor that , and event listeners have been but not been removed The issue is not present in VS Code 1.84.2. It seems to be caused by


Question: rcedit "^0.3.0" rimraf "^2.4.2" semver "^4.3.4" <ins> sumchecker "^3.0.1" </ins> temp "^0.8.3" vinyl "^3.0.0" vinyl-fs "^3.0.3"

Today when running out of sources and/or building, we get some components from online resources such as GitHub or our Marketplace. We should add SHA256 checksum verification to these: [x] [x] built-in extensions [x] electron
Adding the foundation for this for and extensions in


Question: const myToken = new CancellationTokenSource(); this._pendingUpdate.set(model.id, myToken); <del> this._editorWorkerService.computeMoreMinimalEdits(model.uri, [{ text: value, range: model.getFullModelRange() }]).then(edits => { </del> <ins> try { const edits = await this._editorWorkerService.computeMoreMinimalEdits(model.uri, [{ text: value, range: model.getFullModelRange() }]); </ins> // remove token this._pendingUpdate.delete(model.id);

Does this issue occur when all extensions are disabled?: Yes VS Code Version: 1.77.2 OS Version: Windows 10 It seems that when refreshing () the in a short period, the second refresh is not actually performed. I have provided an example repo and a video demonstrating the issue. Basically we have a that shadows the active editor so whenever a user changes the active editor we update the read only document. However, if the user changes the editors quickly enough then the second change is dropped... Steps to Reproduce: the extension the command "Open Read Only Document" tabs quickly and see how it falls behind even though the content is up to date https://user- The content is actually set but it seems the second is dropped. Because if you refresh the document manually it shows the correct content (see the video above). The issue seems to happen more frequently if the content of the file(s) is large.
I found out why it happens and attempted a fix (with explanation) in
Pinging so it does not get lost


Question: .quick-input-header { display: flex; <del> padding: 8px 6px 0px 6px; margin-bottom: -2px; </del> <ins> padding: 8px 6px 6px 6px; </ins> } .quick-input-widget.hidden-input .quick-input-header {

I just now noticed how the progress bar was a the very end of the quick pick but not below input box, I think it should be below input box because the progress is for what I typed. Steps: have some history entries in Cmd+P picker be on a slow OS (Windows) start to type and notice progress bar is below the history entries //cc
Seems like this might have been a regression at some point. for relocating it back near the input.
I like where it is now. To me it says "the results are still populating".
The reason I do not like it: the progress bar is at a non-deterministic location depending on the number of items the progress bar indicator is away from the location that triggers it (the input box)


Question: } export interface IMessage { <del> readonly content: string; </del> <ins> readonly content?: string; </ins> readonly formatContent?: boolean; // defaults to false readonly type?: MessageType; }

Type: <bBug</ba file for which a DocumentSymbolProvider will return some items, for example on the filename in the breadcrumb, then type Ctrl/Cmd+F. The list filter widget looks OK, though it hides the first filename in the list ( ought to help with this once merged). the same but one item to the right in the breadcrumb. The filter widget is transparent. ! VS Code version: Code - Insiders 1.71.0-insider (, 2022-08-22T05:16:19.478Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes <!-- generated by issue reporter --
/assign
Easier steps: <kbdCtrl F</kbdon an outline breadcrumb
I still see this. It looks like the background of the find widget gets removed, but the contents still scroll up out of the breadcrumbs widget
Did you test this in dev? Because we still didn't get an Insiders build with the fix.


Question: } export interface IMessage { <del> readonly content: string; </del> <ins> readonly content?: string; </ins> readonly formatContent?: boolean; // defaults to false readonly type?: MessageType; }

Originally posted by in
This also happens if step 5 is omitted and Search mode is used. The problem seems to be that to put the 'No elements found.' warning message under the find-in-list's input widget a ContextView is created immediately below it. But when find is occurring in a breadcrumb list, that list is itself in a ContextView which gets hidden and cleared immediately before the one for the warning message is shown. The warning message appears in the top left of the VS Code window in a very narrow column. See below, where I open , click on the filename in the breadcrumb to get a list of sibling filenames, then type "z" which isn't present in any of the filenames. !


Question: UpdateAction, ReloadAction, EnableDropDownAction, DisableDropDownAction, ExtensionStatusLabelAction, SetFileIconThemeAction, SetColorThemeAction, RemoteInstallAction, ExtensionStatusAction, LocalInstallAction, ToggleSyncExtensionAction, SetProductIconThemeAction, ActionWithDropDownAction, InstallDropdownAction, InstallingLabelAction, UninstallAction, ExtensionActionWithDropdownActionViewItem, ExtensionDropDownAction, <del> InstallAnotherVersionAction, ExtensionEditorManageExtensionAction, WebInstallAction, SwitchToPreReleaseVersionAction, SwitchToReleasedVersionAction </del> <ins> InstallAnotherVersionAction, ExtensionEditorManageExtensionAction, WebInstallAction, SwitchToPreReleaseVersionAction, SwitchToReleasedVersionAction, MigrateDeprecatedExtension </ins> } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';

Code, search for "bracket pair colorizer" how it is nicely rendered as deprecated on install -notice dialog The dialog should offer a third button to configure built-in settings instead. Same if an extension had an alternative extension. Example: ! fyi
I assume you want the extra button to replicate this link in the hover tip, right? ! As an aside, any doc yet about how an extension gets tagged as deprecated?
yes, a button that will replicate that behaviour correct. No docs yet written. I plan to add them soon. The process is to write an email to us or to ping us on GitHub. In the future we will have a more straightforward approach when MP adds UI.
I feel, the third option would be a general options like More Information... clicking on this shall open the extension editor. This will be consistent and useful so that user will get enough info before taking an action
"More Information..." might work, but in order to have one less hop we could render: "Install EXTENSION_NAME Instead" "Enable Native Settings Instead" That would just do the action right straight away. I am not sure if those button names are too long. So just a suggestion. Whatever you prefer...
Yah I see your point, but going to extension editor gives user more information and an opportunity to look at the alternative extension before installing. And also I do not like that this button changes with extension. More Information... would be consistent.
That's fair. We can start with your proposal and see how it goes. My only concern with "More Information" is that the user might think it is more information about the deprecation. While we actually want to guide the user to a solution. So it is something like "More about the alternative". I am not sure if there is a good button label to represent this.
<img width="308" alt="image (1)" src="https://user-"
Changed the second button as follows ! !
Awesome!!


Question: import { ICodeEditorService } from 'vs/editor/common/services/codeEditorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; <del> import { IEditorOptions, Position as EditorPosition } from 'vs/platform/editor/common/editor'; </del> <ins> import { Position as EditorPosition, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </ins> import { MainThreadTextEditor } from './mainThreadEditor'; import { ITextEditorConfigurationUpdate, TextEditorRevealType, IApplyEditsOptions, IUndoStopOptions } from 'vs/workbench/api/node/extHost.protocol';

For
Verify: write an extension that exercises the following APIs by passing in a selection as option and verify the selection is revealed and showing up in the opened editor: command API Provide a property of type to get it. !


Question: // Store into config object URL this.configuration = { <ins> zoomLevel: data.zoomLevel, </ins> appRoot: this.environmentService.appRoot, windowId: 0, userEnv: {},

Type: <bBug</bIssue Reporter, e.g. from off Command Palette. the first dropdown to VS Code version: Code - Insiders 1.92.0-insider (, 2024-07-24T07:50:18.385Z) OS version: Windows_NT x64 10.0. Modes: <!-- generated by issue reporter --
good catch, thanks! looks like an issue with the refactor


Question: } else if (!edit.newResource && edit.oldResource) { edits.push(new DeleteEdit(edit.oldResource, edit.options ?? {}, false)); } else if (edit.newResource && !edit.oldResource) { <del> edits.push(new CreateEdit(edit.newResource, edit.options ?? {}, undefined)); </del> <ins> edits.push(new CreateEdit(edit.newResource, edit.options ?? {}, edit.options.contentsBase64 ? decodeBase64(edit.options.contentsBase64) : undefined)); </ins> } }

Add support for setting the contents of files created by workspace edits My proposed would be to add a option to : For , we want to support copying images from desktop into with drag and drop. Right now we have to use the apis to create the image file Using a workspace edit would let us express the entire operation in a single , which will play more nicely with undo/redo
Looks like support for this may already exist internally: However getting a of new file data from the extension host to the main process may be tricky. We can only efficiently serialize a if it is a top level argument to an RPC call or if the entire object is wrapped in a (which has a perf cost). Open to ideas on how to handle this
I do like the and believe the cost is manageable - we don't send edits is large frequencies and of large sizes. I can take a look at this but it honestly is stretch for June - there is some debt in how workspace edits are represented on the wire and I would take this issue as a reason to clean things up
work started here: I didn't bother with or hoisting the data to the top but instead it uses quick and dirty base64 encoding. I'd suggest we go with that and see how it works out over time.


Question: if (initialName !== value && this.userDataProfilesService.profiles.some(p => p.name === value)) { return { content: localize('profileExists', "Profile with name {0} already exists.", value), <del> type: MessageType.ERROR </del> <ins> type: MessageType.WARNING </ins> }; } return null;

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --when you import a profile file, vscode will create a new profile but not overwrite current one or merge it to current one Actually I don't need so many profiles, the default profile is enough for me. sometimes I just want to import a keybinding settings from some one, and keep my other settings after I import it, WHAT HAPPEND!!!, all my other settings and extension are gone!!! This is unreasonable! what vscode should do is merging(or overwriting) new keybinding to my old one!! <!-- Describe the feature you'd like. --
Can I have a try on this? I'm new to contributing to this repo but want to try out stuff and get along with starting out at the same time..
Edit: Ignore this, I misread this with other issue
Just wondering is not this same as Can you please distinguish your ask from the other?
partially like But I request more flexibility: Suppose current profile is profile X (X can be default or user profile) when I import A profile, that will be: A.keybinding, A.UI, A.extensions ..... and I choose A.keybindings only to import what I expect: there are 2 options for user when importing: option 1 - merge to current profile, (so X profile's keybindings overwritten but other part of settings kept) option 2 - or create a new profile partially basing on what imported (this is what VSCode currently does )
<!-- -96bd-47a8-a0e8- --This feature request is now a candidate for our backlog. The community has 60 days to the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our . Happy Coding!
<!-- -c9e0-7adb-d31b- --:slightlysmilingface: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our . Happy Coding!
?


Question: if (initialName !== value && this.userDataProfilesService.profiles.some(p => p.name === value)) { return { content: localize('profileExists', "Profile with name {0} already exists.", value), <del> type: MessageType.ERROR </del> <ins> type: MessageType.WARNING </ins> }; } return null;

I would think this is not a good one to start at and recommend to look for issues labelled with or
I really want to try out.. just to experience and I think I would be able to do it. Even if it's not a good first issue I have contributed to other open source repos. Can I?
Sure, here is the starting point
Thanks a lot for this I was checking your PR with the user-profile feature implementation.. For now I'm just figuring out stuff that is already present. Just a single doubt that I had was about the merging of profiles.. would the editor be like a merge editor that opens whenever we get a merge conflict on git..? Or something else with checkboxes on which settings to get imported from each of the sides(current and imported one)? I'll try my best
For the sake of simplicity, during conflicts, I would simply override with the new one.
Also
Note to self: see for manual workaround.
You can now import and replace any existing profile (including Default profile) from new Profiles Editor UI
To verify: Create a profile A and configure with some settings and extensions Export the profile A to the disk Change some settings and extensions in the profile Import the profile A You should be able to import the profile with name A replacing the existing profile
When I export the profile, install some new extensions, then import the profile with the same name, I would expect the installed extensions to disappear from my extensions list, but that doesn't seem to be the case
It is working for me, ie., I only see the extension from the imported profile. After importing, extensions are getting replaced. Can you please share the exact steps to repro?
Using vscode 1.92.2, I can't figure out how to get to that UI. Where do I find it?
search settings for "profiles experimental"
Thank you!


Question: * created with all its APIs available for use by extensions. When using the Terminal object * of a TerminalRenderer it acts just like normal only the extension that created the * TerminalRenderer essentially acts as a process. For example when an <del> * [Terminal.onData](#Terminal.onData) listener is registered, that will fire when * [TerminalRenderer.write](#TerminalRenderer.write) is called. Similarly when </del> <ins> * [Terminal.onDidWriteData](#Terminal.onDidWriteData) listener is registered, that will fire * when [TerminalRenderer.write](#TerminalRenderer.write) is called. Similarly when </ins> * [Terminal.sendText](#Terminal.sendText) is triggered that will fire the <del> * [TerminalRenderer.onInput](#TerminalRenderer.onInput) event. </del> <ins> * [TerminalRenderer.onDidAcceptInput](#TerminalRenderer.onDidAcceptInput) event. </ins> * * **Example:** Create a terminal renderer, show it and write hello world in red * ```typescript

re see
same for
Same is true for Wanted to reuse the issue but didn't read all comments. Ignore mine. already mentioned it.
I'll change them to ,


Question: import {SyncDescriptor} from 'vs/platform/instantiation/common/descriptors'; import {KeyMod, KeyChord, KeyCode} from 'vs/base/common/keyCodes'; import {CloseEditorsInGroupAction, CloseEditorsInOtherGroupsAction, CloseAllEditorsAction, MoveGroupLeftAction, MoveGroupRightAction, SplitEditorAction, KeepEditorAction, CloseOtherEditorsInGroupAction, OpenToSideAction, <del> NavigateBetweenGroupsAction, FocusFirstGroupAction, FocusSecondGroupAction, FocusThirdGroupAction, EvenGroupWidthsAction, MaximizeGroupAction, MinimizeOtherGroupsAction, FocusPreviousGroup, FocusNextGroup, ShowEditorsInLeftGroupAction, </del> <ins> NavigateBetweenGroupsAction, FocusActiveGroupAction, FocusFirstGroupAction, FocusSecondGroupAction, FocusThirdGroupAction, EvenGroupWidthsAction, MaximizeGroupAction, MinimizeOtherGroupsAction, FocusPreviousGroup, FocusNextGroup, ShowEditorsInLeftGroupAction, </ins> toEditorQuickOpenEntry, CloseLeftEditorsInGroupAction, CloseRightEditorsInGroupAction, OpenNextEditor, OpenPreviousEditor, NavigateBackwardsAction, NavigateForwardAction, ReopenClosedEditorAction, OpenPreviousRecentlyUsedEditorInGroupAction, NAVIGATE_IN_LEFT_GROUP_PREFIX, OpenPreviousEditorFromHistoryAction, ShowAllEditorsAction, NAVIGATE_ALL_EDITORS_GROUP_PREFIX, ClearEditorHistoryAction, ShowEditorsInCenterGroupAction, MoveEditorRightInGroupAction, NAVIGATE_IN_CENTER_GROUP_PREFIX, ShowEditorsInRightGroupAction, NAVIGATE_IN_RIGHT_GROUP_PREFIX, RemoveFromEditorHistoryAction, FocusLastEditorInStackAction, OpenNextRecentlyUsedEditorInGroupAction, MoveEditorToLeftGroupAction, MoveEditorToRightGroupAction, MoveEditorLeftInGroupAction

In order to create custom keybindings to toggle focus between the editor and something such as the terminal panel, a command to focus the active/most recently used editor group needs to be . I believe this is the best that can be accomplished currently: Focuses the first group, meaning if the second or third editor groups were focused this would feel wrong: Or this which focused the most recently used editor group but opens the last editor/file in the group: Some context on request:
isn't that as easy as providing a global command that just puts focus into the active editor? E.g. ? PR welcome if you wanna give it a try.
yes, I expect it to be pretty easy.
got a better name than ?
works for me