jiebi/CodeConvo huggingface dataset:
Change:
export interface IEditorLayoutComputerInput { readonly outerWidth: number; readonly outerHeight: number; <del> readonly isDominatedByLongLines: boolean </del> <ins> readonly isDominatedByLongLines: boolean; </ins> readonly lineHeight: number; readonly lineNumbersDigitCount: number; readonly typicalHalfwidthCharacterWidth: number;

Discussion:
Currently only accepts values from which is convenient to pick from dropdown, however causes problems with fonts when there is noticeable difference between e.g. , , and because is not valid value. Recently was released which provide nicer look for value but marked as invalid. I propose to allow numeric values in addition to current enum values (for backward compatibility) accordind to Draft PR: If this request will be approved - I'll add same support to and options. Only drawback that I see at this point - it's no longer possible to pick value from dropdown in Settings editor, however text values are still suggested in JSON. UPD. As alternative it would be nice to have at least values at the end of the list of values
any chance to get feedback on this issue? Looks like I'm not the only one with similar request -
I will try to set some time aside in August. I didn't look at it because the PR is marked as a draft. I thought that a "draft PR" represents work-in-progress and is not ready for review.
it was marked as draft for 2 reasons: 1) There was no approve on this issue yet, if proposed solution will be considered and mentioned cons aren't blocker for this feature. 2) If approved - I was going to do same for terminal . Since it's not rejected at this point I can finish changes for terminal and move PR out of draft status. UPD. Implementation for is ready at this point.
It seems to accept 350 (as number) or any other number but I think it is very bogous that "300" (as string) is accepted but not "350". There is also no hit in the hover info that a string-enum and any number is OK.
Previously allowed string values etc. are left as is so users won't have problems with their existing settings (ideally there would be great to have something as migration scripts and replace it with as number and don't allow ). (as string) was never allowed before (worked but was a warning) therefore I don't see it as problem. I can check if it's or and treat it as number otherwise if necessary, however not sure how pattern validation will work in this case. Agree with hint.

I guess that text like should do the trick
OK, I guess combination of , , and + + will provide good experience - suggests values from existing enum, allows , and has adequate error message for strings like and . Will submit PR later today. Any suggestions on how to improve are welcome.
I like that. Thanks
Change:
const outputQueue = new Queue<void>(); this.rawListeners.push(this.raw.onDidOutput(async event => { <ins> // When a variables event is received, execute immediately to obtain the variables value #126967 if (event.body.variablesReference) { const source = event.body.source && event.body.line ? { lineNumber: event.body.line, column: event.body.column ? event.body.column : 1, source: this.getSource(event.body.source) } : undefined; const container = new ExpressionContainer(this, undefined, event.body.variablesReference, generateUuid()); const children = container.getChildren(); // we should put appendToRepl into queue to make sure the logs to be displayed in correct order // see https://github.com/microsoft/vscode/issues/126967#issuecomment-874954269 outputQueue.queue(async () => { const resolved = await children; resolved.forEach((child) => { // Since we can not display multiple trees in a row, we are displaying these variables one after the other (ignoring their names) (<any>child).name = null; this.appendToRepl(child, severity.Info, source); }); }); return; } </ins> outputQueue.queue(async () => { if (!event.body || !this.raw) { return;

Discussion:
Issue Type: <bBug</bCan any one explain why vs code debug console work like this: when I use for logging name form array using map, at first log it work. On second log its not showing VS Code version: Code 1.57.1 (, 2021-06-17T13:28:07.755Z) OS version: WindowsNT x64 10.0. Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (9)</summaryExtensionVersion ------ insert-unicode0.10.0 bracket-pair-colorizer1.0.61 vscode-markdownlint0.40.4 code-runner0.11.4 js-debug-nightly2021.5.617 material-icon-theme4.7.0 LiveServer5.6.1 vscodeintellicode1.2.14 JavaScriptSnippets1.8.0 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
! It work fine with JavaScript debug terminal !
This works for me, can you reproduce with vscode insiders If yes, can you please share a sample short code that I can just copy and try to reproduce? Thanks
If I use or it work (logs) fine as expected but if I debug using Vscode it's only log first
Thanks for the repro steps. I can reproduce this. The issue seems to be how we are handling events here We should fix this, but I will not have time this milestone, thus adding help wanted, and if no nobody from the community helps I can look into it next milestone.
Hi ~ I create a PR to fixes this issue, maybe u can have a look
This duplicates and has the potential to be fixed by The PR makes a race slightly less likely but doesn't fix the issue, which can still be hit with slow enough processing or large enough output. The PR does have the potential to improve performance in general so I think it's worth taking in some form, but it won't fix this issue globally.
Change:
disturl "https://electronjs.org/headers" <del> target "18.3.2" </del> <ins> target "18.3.3" </ins> runtime "electron" build_from_source "true"

Discussion:
Testing When I just launch and then quit VSCode, I see the black dot on the dock for quite some time. I have launched from CLI: !
Yeah, running with :
This is a side effect of how we gracefully shutdown the utility process, previously the extension host was responsible for shutting itself down and we block the main process exit based on it Utility process lifetimes are controlled by the main process, (i-e) on graceful shutdown of the application the main process will first try to quit the main message loop and the applications have a chance to block this exit based on , event listeners and we use that today to provide chance to shutdown our services and once message loop is good to exit, the main process will cleanup C++ handles to the JS objects and only during this phase I also shutdown the running utility processes gracefully which will emit the event, after that the node environments, child process and threads in the main process will get shutdown one after other eventually exiting the main process itself. So what we are currently seeing is a chicken and egg problem, where the main message loop exit is blocked for 6s by the extension host exit, but the extension host exit is blocked on event from the main message loop. Solution: The runtime can only cleanup the utility process once the main message loop is ready to exit, if the exit is blocked on the application end it is not possible to know when to gracefully shutdown the process from the runtime side. Thoughts ? Alternatively, from the runtime side I can move the cleanup of utility process earlier just before the , event listeners get emitted so that the application receives an event.
The extension host processes should exit by themselves when the MessageChannel is closed. My intuition here is that the event might not be firing on the instance, but I need to debug it to confirm.
Ah yeah, I currently don't emit the event when gets disconnected however the process does exit. Will address it.
Change:
import { VSBuffer } from 'vs/base/common/buffer'; import { encodeSemanticTokensDto } from 'vs/editor/common/services/semanticTokensDto'; import { Range } from 'vs/editor/common/core/range'; <ins> import { Emitter } from 'vs/base/common/event'; import { DisposableStore } from 'vs/base/common/lifecycle'; </ins> export function isSemanticTokens(v: SemanticTokens | SemanticTokensEdits): v is SemanticTokens { return v && !!((<SemanticTokens>v).data);

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. --This request is to allow semantic tokens to not just pick the first most provider in the list of providers. But instead pick the provider that actually has tokens to return. The use case for this is to support jupyter notebook token colorization. Right now there are at least 2 language servers returning tokens for python notebooks: 1) Python extension has a language server registered for all 'python' files. There's no way to 'exclude' files from a DocumentFilter so it has a piece that excludes all notebook cells. 2) Jupyter extension has one ore more language servers registered for all notebook cells. One or more is because the language server in use can only support one python interpreter at a time, so one language server is created per python interpreter in use for any notebook (multiple interpreters can be in use in one VS code session). When semantic tokens are requested the middleware piece in the juptyer extension will skip sending token requests to if they're not for the appropriate document. This creates a problem with the current implementation because the first registered language server wins. This can randomly be python's (where no tokens are returned) or one of the jupyter one's (where it might return tokens if the interpreter for the document matches). I believe this could all be accomplished by making a compositing token provider in the VS code source. Something like so:
I'm going to try out the composite idea and submit a PR if it works.
Verified it works with a notebook !
hey, uhh, I opened an feature-request about semantic tokens the other day, just right after 4 hours from you.... I was trying to make a SemanticTokensProvider that overrides or works on top of already registered another one.... 't it be better if there could be multiple SemanticTokensProvider to work alongside, maybe override one another by User-Specified priority levels? I was struggling to override some of SemanticTokens that the C/C++ extension provides, but then I found out its not really possible to have multiple running Provider for SemanticTokens....
This is a different use case than what I had envisioned. My use case was there were multiple providers but only one was actually returning anything.

Combining them sounds like an even better way to handle it. It would handle it for my case and your case. I upvoted your request.
Thank you.... 19 More people and I really dont have any idea how to get there tho, haha.
Change:
// Move to valid position if any if (moveTo !== null) { this.editorGroupService.moveGroup(position, moveTo); <del> // To reduce flickering during this operation we trigger a refresh of all // title controls right after. POSITIONS.forEach(p => { this.getTitleAreaControl(p).refresh(true); }); </del> } // Otherwise layout to restore proper positioning

Discussion:
For: scoped keybinding service scoped progress service For the title area and the editor itself. This requires a common parent (or the editor-container itself) to be reparented instead of the editor moving around. Enables more scenarios around menu and command contributions for contexts.
I merged this to master: title container, editor container, progress bar widget and the instantiation service are now within a new container that gets reparented when a) you move an editor around or b) you close editor group LEFT when LEFT | RIGHT exist and RIGHT becomes LEFT as well as for when you have 3 editors open and you close the left or center group. Is there a way to verify this works for the scenario you disabled late before we finished June milestone? I remember you reverted a commit and I am not sure if this can be now reverted back again. !
I can verify
LGTM - will push the revert revert commit
Verified via
Change:
this.viewLayout.onFlushed(this.getLineCount()); this.viewLayout.onHeightMaybeChanged(); } <ins> stableViewport.recoverViewportStart(this.coordinatesConverter, this.viewLayout); </ins> } finally { this._eventDispatcher.endEmitViewEvents(); }

Discussion:
use autofolding of imports . use a type that is not imported in a TS file use quick fix to add the import the editor scrolls to an incorrect position. I think this is a recent regression, because I've been using both import folding and quick fix for imports since quite a while... maybe starting with the last stable. https://user- Version: 1.72.0-insider Commit: Date: 2022-09-21T05:40:07.654Z Electron: 19.0.17 Chromium: 102.0.5005.167 16.14.2 V8: 10.2.154.15-electron.0 OS: Darwin arm64 21.6.0 Sandboxed: Yes
Un-assigning myself as I don't think this cause by something the JS/TS extension itself is doing
who owns the quick fix UI now?
I own the UI. However it looks like scrolling here happen when the edit from the quick fix is applied. That's why I unassigned myself
It also unfolds if you do "Organize Imports", so seems like any action related with imports unfolds even though setting is
The root cause appears to be the folding ranges change and end up calling . That one does not attempt to maintain the viewport stable in any way.
this issue still exists:
Change:
readonly lineNumbers: number[], readonly lastLineRelativePosition: number ) { } <del> public equals(other: StickyScrollWidgetState | undefined): boolean { return !!other && this.lastLineRelativePosition === other.lastLineRelativePosition && equals(this.lineNumbers, other.lineNumbers); } </del> } const _ttPolicy = createTrustedTypesPolicy('stickyScrollViewLayer', { createHTML: value => value });

Discussion:
enable sticky scroll open a file and scroll such that sticky scroll appears reload the window observe that the sticky scroll lines are not colored until they get rerendered once there is that could be used
Hey thanks for filing the issue. The listener onDidChangeModelTokens already exists inside of the sticky scroll code. I'll investigate the issue.
It appears this is due to the following PR which attempted to fix Since the state was no longer recomputed when the new state was equal to the old state, this means that the rendering was no longer done when the model tokens changed but the state remained the same. A fix will be made to revert this change.

in VS Code :bug: sticky scroll has no syntax highlighting <img width="691" alt="image" src=""
Hey I update my insiders version and tested on the file you sent, I am currently not able to reproduce this error: ! I'll try to reproduce this issue. I think I may have seen this happen for a very brief moment.
It appears this is due to the following PR which attempted to fix Since the state was no longer recomputed when the new state was equal to the old state, this means that the rendering was no longer done when the model tokens changed but the state remained the same. A fix will be made to revert this change.
Change:
} } <ins> resetFocusContextKey(): void { this._terminalFocusContextKey.reset(); } </ins> private _initDragAndDrop(container: HTMLElement) { this._dndObserver?.dispose(); const dndController = this._instantiationService.createInstance(TerminalInstanceDragAndDropController, container);

Discussion:
https://user- As shown in the recording, when I tried to paste in the editor The terminal paste command is matched, meaning that the terminal is still "focused" based on the context keys The terminal shows a context menu for paste. We are not seeing this in the editor, the terminal should handle in the same way
As long as the terminal is opened once, I have to reload the window to get it fixed.
I think this means that this isn't happening on safari for some reason
This gets hit even when I click in the editor area !
Still reproduced on latest codespace with VS Code insider bits.
Had a call, we believe it's happening because we set when hiding the panel which caused the blur/focusout events to not fire. We also noticed this happens in terminal editors as well. So to fix we need to reset or refresh the state of the context key when the terminal panel/view is hidden as well as when the terminal editor is hidden. Something to verify when these changes are made is to make sure if you have a single terminal editor and a single terminal in the panel, toggling the panel should still keep because the terminal editor will now be focused (ie. the panel hide context key reset should happen before the terminal editor focus is handled).
Change:
}, "keybindings": { "key": ".", <del> "command": "^acceptSelectedSuggestion", </del> <ins> "command": "typescript.tryAcceptSelectedSuggestionOnDot", </ins> "when": "editorTextFocus && suggestWidgetVisible && editorLangId == 'typescript' && suggestionSupportsAcceptOnKey" }, "commands": [

Discussion:
VSCode Version: Code 1.8.1 (, 2016-12-19T14:49:23.350Z) OS Version: Windows_NT ia32 10.0. Extensions: Steps to Reproduce: from npm with typings to import a relative path downwards( import Person from '../person' for instance ). The import will suggest "" as it includes a '.' character or something.
in general please include snippets and screenshots that illustrate the problem and provide precise steps with snippets, screenshots that illustrates a problem (see our ).
Sorry, i provided a video now, it includes full editor and you can see the structure there. The is standard, so is with saved and Steps to reproduce is: init install --init in a folder, () containing a class: in a subfolder () to import a relative path to File1. When you're going to type a relative step back (../), it will autocorrect to "" instead of ".." as shown in the video. If anything more is needed, please let me know. hope this make things a bit clearer
thanks for the additional info.
Short update, it does not seem to happen when running js. i thought it might due to the automatic type acquisition, but it works as intended, for me at least.
me too
this looks like an issue we've seen before...
Fix reverted ,
Picked up improved fix with
Change:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <ins> .preferences-editor { display: flex; flex-direction: column; } </ins> .preferences-editor > .preferences-header { padding-left: 27px; padding-right: 32px;

Discussion:
Issue Type: <bBug</bI believe this just started, but I can no longer resize the split editor via the middle bar. Diff editor still works, and it works fine in stable as well. VS Code version: Code - Insiders 1.39.0-insider (, 2019-09-09T17:00:17.505Z) OS version: WindowsNT x64 10.0. <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Not sure which editor you mean... what steps are you doing to get to that UI?
From the command palette, Preferences: Open Settings (JSON) !
does that provide what you need?
For some reason I no longer can open that view... it always opens a regular editor, not that old settings editor.
now you have to set . I can reproduce but haven't changed it,
Aha! Couldn't find the name of that setting...
Since I investigated it I ended up just making a fix for it. Not sure why it broke tho.
Change:
} } <ins> interface RPCTelemetryData { type: string; length: number; } type RPCTelemetryDataClassification = { owner: 'jrieken'; comment: 'Insights about RPC message sizes'; type: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; comment: 'The type of the RPC message' }; length: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; isMeasurement: true; comment: 'The byte-length of the RPC message' }; }; class TelemetryRPCLogger implements IRPCProtocolLogger { static isEnabled(): boolean { // this will be a very high frequency event, so we only log a small percentage of them return Math.trunc(Math.random() * 1000) < 5; // 5/1000 } private readonly _pendingRequests = new Map<number, string>(); constructor(@ITelemetryService private readonly _telemetryService: ITelemetryService) { } logIncoming(msgLength: number, req: number, initiator: RequestInitiator, str: string): void { if (initiator === RequestInitiator.LocalSide && /^receiveReply(Err)?:/.test(str)) { // log the size of reply messages const requestStr = this._pendingRequests.get(req) ?? 'unknown_reply'; this._pendingRequests.delete(req); this._telemetryService.publicLog2<RPCTelemetryData, RPCTelemetryDataClassification>('extensionhost.incoming', { type: `${str} ${requestStr}`, length: msgLength }); } if (initiator === RequestInitiator.OtherSide && /^receiveRequest /.test(str)) { // incoming request this._telemetryService.publicLog2<RPCTelemetryData, RPCTelemetryDataClassification>('extensionhost.incoming', { type: `${str}`, length: msgLength }); } } logOutgoing(msgLength: number, req: number, initiator: RequestInitiator, str: string): void { if (initiator === RequestInitiator.LocalSide && str.startsWith('request: ')) { this._pendingRequests.set(req, str); this._telemetryService.publicLog2<RPCTelemetryData, RPCTelemetryDataClassification>('extensionhost.outgoing', { type: str, length: msgLength }); } } } </ins> interface ExtHostLatencyResult { remoteAuthority: string | null; up: number;

Discussion:
re We know from telemetry that deserialising and serialising RPC messages can become costly and this issue to follow up on that. For now, let's add telemetry if any of the API implementations send or receive unexpected large amount of data. We usually cap those but it is likely that we are missing a couple of cases
Change:
if (oldPrimary !== newPrimary) { this._onDidChangePrimaryStatus.fire(newPrimary); } <del> } else { this._statuses.set(status.id, status); // It maybe the case that status hasn't changed, there isn't a good way to check this based on // `ITerminalStatus`, so just fire the event anyway. this._onDidAddStatus.fire(status); </del> } }

Discussion:
Just saw , this goes against the design. It's meant to only add the status if it doesn't already exist, if the status changed then it should use a different id and/or remove the old status first.
I'm not clear on the solution. There're a limited number of Terminal Status IDs: In this case status ID hasn't changed, it's still , only the description which comes with it has updated.
working on it, I'll send a PR to you in a bit
Validate still doesn't happen.
Change:
} private getPreferencesMenu(): Electron.MenuItem { <del> const settings = this.createMenuItem(nls.localize({ key: 'miOpenSettings', comment: ['&& denotes a mnemonic'] }, "&&Settings"), 'workbench.action.openSettings2'); </del> <ins> const settings = this.createMenuItem(nls.localize({ key: 'miOpenSettings', comment: ['&& denotes a mnemonic'] }, "&&Settings"), 'workbench.action.openSettings'); </ins> const kebindingSettings = this.createMenuItem(nls.localize({ key: 'miOpenKeymap', comment: ['&& denotes a mnemonic'] }, "&&Keyboard Shortcuts"), 'workbench.action.openGlobalKeybindings'); const keymapExtensions = this.createMenuItem(nls.localize({ key: 'miOpenKeymapExtensions', comment: ['&& denotes a mnemonic'] }, "&&Keymap Extensions"), 'workbench.extensions.action.showRecommendedKeymapExtensions'); const snippetsSettings = this.createMenuItem(nls.localize({ key: 'miOpenSnippets', comment: ['&& denotes a mnemonic'] }, "User &&Snippets"), 'workbench.action.openSnippets');

Discussion:
Preferences Settings New settings editor opened Just in the native menu. The revert brought back the code that opens the new editor.
Change:
} } private async _getKernelRecommendationsQuickPickItems( notebookTextModel: NotebookTextModel, extensionWorkbenchService: IExtensionsWorkbenchService,

Discussion:
Currently when there is one suggested kernel and that's the one users are using in current document, its presentation in kernel picker is weird <img width="601" alt="image" src="https://user-"This can be simplified as a single "Selected" group at the very top <img width="601" alt="image" src="https://user-"