jiebi/CodeConvo huggingface dataset:
Change:
testIndentAction('', '  * test() {', '', IndentAction.Indent, null, 0); testIndentAction('  ', '  * test() {', '', IndentAction.Indent, null, 0); }); <ins> test('issue #141816', () => { let support = new OnEnterSupport({ onEnterRules: javascriptOnEnterRules }); let testIndentAction = (beforeText: string, afterText: string, expected: IndentAction) => { let actual = support.onEnter(EditorAutoIndentStrategy.Advanced, '', beforeText, afterText); if (expected === IndentAction.None) { assert.strictEqual(actual, null); } else { assert.strictEqual(actual!.indentAction, expected); } }; testIndentAction('const r = /{/;', '', IndentAction.None); testIndentAction('const r = /{[0-9]/;', '', IndentAction.None); testIndentAction('const r = /[a-zA-Z]{/;', '', IndentAction.None); }); </ins> });

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.63.2 OS Version: MacOS Monterey Steps to Reproduce: a JavaScript file. enter. next line is indented because it doesn't realise the is in a regular expression.
/assign mjbvz -Tyriar
It looks like it is looking for a matching closing bracket. Indent: Indent: No Indent: No Indent:
Change:
}); } async run(accessor: ServicesAccessor) { <del> const quickInputService = accessor.get(IQuickInputService); const currentProfile = that.userDataProfileService.currentProfile; const result = await quickInputService.pick(that.userDataProfilesService.profiles.map(profile => ({ id: profile.id, label: currentProfile.id === profile.id ? `$(check) ${profile.name}` : profile.name, profile })), { placeHolder: localize('switch profile', "Switch Profile") }); if (result?.profile) { that.userDataProfileManagementService.switchProfile(result?.profile); </del> <ins> if (that.userDataProfileService.currentProfile.id !== profile.id) { return that.userDataProfileManagementService.switchProfile(profile); </ins> } } }); } <ins> private readonly currentprofileActionsDisposable = this._register(new MutableDisposable<DisposableStore>()); private registerCurrentProfilesActions(): void { this.currentprofileActionsDisposable.value = new DisposableStore(); this.currentprofileActionsDisposable.value.add(this.registerUpdateCurrentProfileShortNameAction()); this.currentprofileActionsDisposable.value.add(this.registerRenameCurrentProfileAction()); this.currentprofileActionsDisposable.value.add(this.registerExportCurrentProfileAction()); this.currentprofileActionsDisposable.value.add(this.registerImportProfileAction()); } </ins> private registerUpdateCurrentProfileShortNameAction(): IDisposable { const that = this; return registerAction2(class UpdateCurrentProfileShortName extends Action2 {

Discussion:
We have noticed in the user study that users interact with profiles in different ways and they do not find the indication of active profile super useful. We should also be aware of all the Menus that profiles are present in right now in addition to the Profile activity bar item are confusing. Main menu Account activity bar item Gear activity bar item
After discussing in today's stand up we agreed upon having its own space for profiles and therefore we wanted to show profile indicator and drop the actions in accounts and gear menus. We shall investigate on how to make this profile indicator appealing to users -
Looks great -verified
Change:
const light = join(extension.description.extensionFolderPath, icon.light); const dark = join(extension.description.extensionFolderPath, icon.dark); createCSSRule(`.icon.${iconClass}`, `background-image: url("${URI.file(light).toString()}")`); <del> createCSSRule(`.vs-dark .icon.${iconClass}, hc-black .icon.${iconClass}`, `background-image: url("${URI.file(dark).toString()}")`); </del> <ins> createCSSRule(`.vs-dark .icon.${iconClass}, .hc-black .icon.${iconClass}`, `background-image: url("${URI.file(dark).toString()}")`); </ins> } }

Discussion:
VSCode Version: Code 1.11.1 (, 2017-04-06T13:58:12.954Z) OS Version: Windows_NT ia32 6.1.7601 Extensions: ; Steps to Reproduce: SCM icon and M show in front of the different file but the arrow and the + signs are not enough clear ! It would be nice if ot could be contrast increased... Besides that, the last release with keyboard new mapping system is really great!
Change:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { isFullscreen, onDidChangeFullscreen, onDidChangeZoomLevel } from 'vs/base/browser/browser'; </del> <ins> import { isFullscreen, onDidChangeFullscreen } from 'vs/base/browser/browser'; </ins> import { hide, show } from 'vs/base/browser/dom'; import { Emitter, Event } from 'vs/base/common/event'; import { DisposableStore } from 'vs/base/common/lifecycle';

Discussion:
Testing a workspace a tab into a new floating window in a couple times using keyboard shortcuts the zoom status bar item to zoom out. When the zoom out happens, the status bar item will move further right, as expected because everything is getting small. However, the hover itself moved further left. I would expect it to either stay under my cursor (ideal) or move with the status bar item. !
It also moves around unexpectedly when I zoom in.
My cursor isn't showing properly in this gif, but I think you can get the idea. !
<!-- 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!
Change:
}; const preferredLightThemeSettingSchema: IConfigurationPropertySchema = { type: 'string', <del> markdownDescription: nls.localize({ key: 'preferredLightColorTheme', comment: ['`#{0}#` will become a link to an other setting. Do not remove backtick or #'] }, 'Specifies the preferred color theme for light OS appearance when `#{0}#` is enabled.', ThemeSettings.DETECT_COLOR_SCHEME), </del> <ins> markdownDescription: nls.localize({ key: 'preferredLightColorTheme', comment: ['{0} will become a link to another setting.'] }, 'Specifies the preferred color theme for light OS appearance when {0} is enabled.', formatSettingAsLink(ThemeSettings.DETECT_COLOR_SCHEME)), </ins> default: ThemeSettingDefaults.COLOR_THEME_LIGHT, enum: colorThemeSettingEnum, enumDescriptions: colorThemeSettingEnumDescriptions,

Discussion:
open the settings, in the filter box enter . Check the settings description. It should contain links. The links use a special syntax: that must not be changed. The translated string has a message mentioning that. !
Thank you for your feedback. We are currently reviewing it (reference ).
could you please lock the placeholders with these annotations? I'll fix the local translation meanwhile.
I've got a fix out ^^
Verified in code while the translation is in work.
Change:
return toDisposable(() => { subscription.dispose(); <ins> schemeRegistration.dispose(); </ins> this._linkProvider.delete(scheme); this._usedSchemes.delete(scheme); this._fsProvider.delete(handle);

Discussion:
Refs: A text document can be readonly if it's underlying file system provider is readonly. I am not sure how a custom editor implementor can figure this out and provide the correct experience.
Could we add a property to ? Does VS Code internally already know if a given textDocument is read only?
We basically ask the file system provider for the resource of the document for being readonly or not. That should be doable.
Change:
.monaco-workbench .part.editor.empty.has-watermark { background-position-y: calc(50% - 100px); <del> transition: background-position-y 1s; </del> } .monaco-workbench > .part.editor > .watermark {

Discussion:
The empty document well animations (infinity icon motion, text fade in) make the tool feel slow, as if it can't keep up with me resizing the window. If i make the windows smaller, the text disappears and then the icon catches up with me. When i make the window larger, the icon motion is behind my resizing gesture, and eventually the text fades in. All of these visuals happen after i make a resize gesture, which makes me feel like the tool can't keep up, like something is happening in the background, and I should wait for it. it is distracting too, it always catches my eye and then I lose my context. VS Code is lightweight and fast. The UI should feel snappy, not delayed. We don't animate in search results or when we open a file. Quick Open is instantaneous. Async queries in the Extensions viewlet show me a progress bar immediately. Why then does our desktop resize animate behind my gestures? CC
I have exactly the same feeling.
Remove animation completely (make it snap in/out instantly with no transition) Reduce the latency and duration of the animation by say 75% (.25 seconds vs. 1 second) Make the tips dismissible with an affordance for people who don't like it (thus animation would not apply) Remove logo entirely and center the tips at all times. One other thing we discussed in UX sync today was that the tips seem more important than the logo (function over form). So why are we hiding the tips and not the logo at small window heights? Since we don't want to invalidate Sean's experiment, we will not attempt to change anything in product in October iteration, but we can figure out what our next move is and make the change in November.
Removed all animations/transitions in my PR linked above.
Change:
try { const { default: open } = await import('open'); <del> await open(url, { </del> <ins> const res = await open(url, { </ins> app: { // Use `open.apps` helper to allow cross-platform browser // aliases to be looked up properly. Fallback to the

Discussion:
Testing Not sure if this is possible, but I set the to even though I don't have Firefox... then I tried to open something and nothing happened. I was confused because I thought I had Firefox installed, but I guess I remembered incorrectly! I think something like this is increasingly important in the workspace-setting level. Sure, the protection of this is behind Workspace Trust... but I don't seem to get any notification or indication that there's a setting applied that influences how VS Code opens the browser or if it's going to no-op. Considering this setting influences things like user auth flows, I think we should try to do something here. I was surprised that no browser was opened when I attempted to log in to a GitHub extension... which makes sense if this setting is set to something invalid.
I think this might be reported as and misses a fix or workaround. If someone has an idea, either by contributing to or seeing what we can do here:
<!-- 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!
It appears that this is fixed by opening the default instead of what is configured. That makes sense to me.
Change:
import { GhostTextContext, MockInlineCompletionsProvider } from 'vs/editor/contrib/inlineCompletions/test/utils'; import { ITestCodeEditor, TestCodeEditorCreationOptions, withAsyncTestCodeEditor } from 'vs/editor/test/browser/testCodeEditor'; import { createTextModel } from 'vs/editor/test/common/editorTestUtils'; <del> import sinon = require('sinon'); </del> import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils'; <ins> import { runWithFakedTimers } from 'vs/editor/contrib/inlineCompletions/test/timeTravelScheduler'; </ins> suite('Inline Completions', () => { ensureNoDisposablesAreLeakedInTestSuite();

Discussion:
I used blame to find the owner of inline completions. Who should this be assigned to?
Looks like you did that wrong <img width="826" alt="Screen Shot 2021-07-12 at 12 53 21" src="https://user-"
From slack: I found the real issue of the flaky unit test. Apparently, some test that runs before the inline suggestion test (which fakes /) calls . spawns a (5 seconds) that calls itself (basically an endless loop over time). When the time is faked, my inline completion test waits for all scheduled timers to finish until the queue of scheduled timers is empty (assuming I am in control of all scheduled timers when my test is run). However, the loop in then causes an endless loop. My test gives up after running 1000 scheduled timers and I guess then things are in an inconsistent state. This only happens when my tests are run right before is about to run. If my tests a run in the 5s interval in which is not called, nothing bad happens. As a quick fix, I will change my tests to not wait for the timer queue to get empty. As a long term fix, I think tests should be isolated better - at least they should make really sure they clean up everything (such as disposables/timers/global handlers/etc.). Joh tracked this down to this leaking disposable:
Change:
canTunnel(uri: URI): boolean; openTunnel(addressProvider: IAddressProvider | undefined, remoteHost: string | undefined, remotePort: number, localPort?: number, elevateIfNeeded?: boolean, privacy?: string, protocol?: string): Promise<RemoteTunnel | undefined> | undefined; <ins> getExistingTunnel(remoteHost: string, remotePort: number): Promise<RemoteTunnel | undefined>; </ins> setEnvironmentTunnel(remoteHost: string, remotePort: number, localAddress: string, privacy: string, protocol: string): void; closeTunnel(remoteHost: string, remotePort: number): Promise<void>; setTunnelProvider(provider: ITunnelProvider | undefined): IDisposable;

Discussion:
<!-- 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'm using the 'Remote - SSH' extension. Suppose I set up static forwarding in my local : So port 3000 is statically forwarded to port 3000. Now if I output a link to the terminal (from within the remote), when this link is 'Command + Clicked', vscode opens in the browser - the wrong port, because it's auto-forwarded to the next available port. It feels like if static forwarding for this port is already set up, it could always infer that no auto port forwarding is needed and hence open in the browser at port 3000. The setting does not help in this case. Thanks :)
does the SSH extension use () to ensure that statically forwarded ports like this show in the ports view?
Yes
Thanks for confirming!
This looks like it will be a larger change. Moving to September.
Hi. Just encountered this problem today. I am using VSCode Docker remotes with Docker Desktop. One of my containers is running minio. There is a static port forward configured in that looks like this: My application sometimes prints out a full URL to the integrated terminal that looks like Clicking that link to open it in my web browser causes VSCode to dynamically forward a brand new port and rewrite the URL replacing the 9000 with something like . I would actually be ok with that, but that URL with the new port number doesn't even work. The original one does work. My situation sounds basically the same as OP, only using Docker remote instead of SSH remote. Just wanted to share my use case to verify it is actually the same issue and that whatever solution comes will solve it for both of us. I also want to say this feature was very unexpected. Personally, I think it should be off by default. URLs should be opened exactly as they are written. Please provide at least a setting so I can always open URLs from integrated terminal exactly as they appear. The back of my mind also wonders if there could be any potential security implication of rewriting URLs this way. Thanks.
Change:
assert.equal(new FormatString(1, 'downcase').resolve('FOO'), 'foo'); assert.equal(new FormatString(1, 'capitalize').resolve('bar'), 'Bar'); assert.equal(new FormatString(1, 'capitalize').resolve('bar no repeat'), 'Bar no repeat'); <ins> assert.equal(new FormatString(1, 'pascalcase').resolve('bar-foo'), 'BarFoo'); </ins> assert.equal(new FormatString(1, 'notKnown').resolve('input'), 'input'); // if

Discussion:
It would be nice to have additional snippet format options, e.g. kebabCase, camelCase, snakeCase, startCase, pascalCase. For example, for file named and snippet generated code would be .
Not sure yet as we would derive further from what is defined in TextMate
Why didn't you bring auto closing tag features in vs code for html
Code pointer:
FYI, I ended up using plugin.
I'm on it.
But ... but ... the issue had several formats: and PR only 1 (PascalCase)
Change:
// Terminal import 'vs/workbench/contrib/terminal/electron-browser/terminal.contribution'; <del> // CodeEditor Contributions import 'vs/workbench/contrib/codeEditor/electron-browser/codeEditor.contribution'; </del> // External Terminal import 'vs/workbench/contrib/externalTerminal/node/externalTerminal.contribution';

Discussion:
I noticed a dependency from : Is this something we could change so that we do not depend on node directly?
You can use to create the logger instead of creating it using spdlog directly. It will make sure it creates proper logger in the given environment. See how it is being used by other components, for eg output channels:
thanks, I opened a PR. Can you check if the logger creation is proper? It is my understanding I need to create the file first? Happens here:
I do not think creating the file is necessary - Underlying logger will take care of it.
Ok I think I saw an unrelated error then because we seem to try to read from this file directly after starting to log.
Change:
protected onTitleAreaUpdate(compositeId: string): void { <del> // Active Composite if (this.activeComposite && this.activeComposite.getId() === compositeId) { // Title this.updateTitle(this.activeComposite.getId(), this.activeComposite.getTitle()); </del> <ins> // Title const compositeItem = this.instantiatedCompositeItems.get(compositeId); if (compositeItem) { this.updateTitle(compositeItem.composite.getId(), compositeItem.composite.getTitle()); } </ins> <del> // Actions </del> <ins> // Actions if (this.activeComposite && this.activeComposite.getId() === compositeId) { </ins> const actionsBinding = this.collectCompositeActions(this.activeComposite); this.mapActionsBindingToComposite.set(this.activeComposite.getId(), actionsBinding); actionsBinding();

Discussion:
Testing When the WebviewView is not visible, changing the title is not reflected visually:
Doesn't reproduce for me: ! Can you please share your full example?
I should have mentioned that his is when its in a bottom "Panel" and not a side tree, IOW:
I believe the issue is in here: If an extension updates the title when switching away from a view—or updates the title of a non-active view—then the condition fails so we never call . Could we move the call outside of the conditional?
reverted , will fix with a separate implementation of update title like panelPart has
Change:
const notebookDiffEditorInputFactory: DiffEditorInputFactoryFunction = ({ modified, original, label, description }) => { return { editor: NotebookDiffEditorInput.create(this._instantiationService, modified.resource!, label, description, original.resource!, notebookProviderInfo.id) }; }; <ins> const mergeEditorInputFactory: MergeEditorInputFactoryFunction = (mergeEditor: IResourceMergeEditorInput): EditorInputWithOptions => { return { editor: this._instantiationService.createInstance( MergeEditorInput, mergeEditor.base.resource, { uri: mergeEditor.input1.resource, title: mergeEditor.input1.label ?? basename(mergeEditor.input1.resource), description: mergeEditor.input1.description ?? '', detail: mergeEditor.input1.detail }, { uri: mergeEditor.input2.resource, title: mergeEditor.input2.label ?? basename(mergeEditor.input2.resource), description: mergeEditor.input2.description ?? '', detail: mergeEditor.input2.detail }, mergeEditor.result.resource ) }; }; </ins> const notebookFactoryObject: EditorInputFactoryObject = { createEditorInput: notebookEditorInputFactory, createDiffEditorInput: notebookDiffEditorInputFactory, createUntitledEditorInput: notebookUntitledEditorFactory, <ins> createMergeEditorInput: mergeEditorInputFactory </ins> }; const notebookCellFactoryObject: EditorInputFactoryObject = { createEditorInput: notebookEditorInputFactory,

Discussion:
Locally I have an empty cell at the bottom of my notebook because I executed the last cell When I try to merge in a change that has new cells, I get a merge conflict that requires I open the ipynb in a text editor to resolve. !
We can explore how to handle this gracefully in the serializer.
not sure what needs to be done in the serializer here. can you provide more information, i would have thought this was purely an issue with merge conflicts.
Can this please be solved? It's hard to work collaboratively within a team using Jupyter notebooks and VS Code if we can't sort out merge conflicts.
I suggest there be an option to disable the notebook renderer temporarily in all editors. git operates at the text level and when merge conflict happens, it will likely produce a malformed JSON file. We now have an error message to notify users to fallback to text editor, but "resolve in merge editor" button still don't work. !
Note: When there are merge conflicts, one will always have to open a plain text (json) editor to resolve the merge confligs I.e. its not possible to use Notebook UI to resolve merge conflicts (at least not yet) Steps to test Ensure you have merge conflicts in a Notebook document Open the SCM view, and click on the IPYNB file, and verify you can see the merge conflicts in plain text editor view Click on the button and verify you get the merge editor (again plain text), see here When you have merge conflicts, try opening the ipynb file from the explorer view, if this fails verify you are displayed with an error message with the option to open the file in plain text view