jiebi/CodeConvo huggingface dataset:
Change:
} this._modelData.viewModel.viewLayout.setScrollPosition(position, scrollType); } <ins> public hasPendingScrollAnimation(): boolean { if (!this._modelData) { return false; } return this._modelData.viewModel.viewLayout.hasPendingScrollAnimation(); } </ins> public saveViewState(): editorCommon.ICodeEditorViewState | null { if (!this._modelData) {

Discussion:
Type: <bBug</bI found this problem in Vim extension when using half page scroll with centered view and smoothScrolling, and reproduce this bug in test clean extension. Without smoothScrolling it works fine. When executing command two times with ~150ms delay second action dont trigger (view stay in position by first ). U can see it on this video, when view in some cases not returned to 31 line from 39. https://user- Reproduce: reproducing i set interval with two timeouts to create delay between two executions and set smoothScrolling. ! VS Code version: Code 1.76.2 (, 2023-03-14T17:55:54.936Z) OS version: WindowsNT x64 10.0.

Modes: Unsupported Sandboxed: No <details<summarySystem Info</summary </details<details<summaryExtensions (35)</summaryExtensionVersion ------ better-comments3.0.2 astro-vscode0.28.2 vscode-tailwindcss0.9.11 path-intellisense2.8.4 vscode-css-modules0.4.2 vscode-database-client26.3.4 vscode-eslint2.4.0 es7-react-js-snippets4.4.3 vsc-material-theme-icons2.7.4 prettier-vscode9.10.4 auto-close-tag0.5.14 auto-rename-tag0.1.10 code-runner0.12.0 geril-vim1.25.2 go0.38.0 vscode-graphql0.8.7 vscode-graphql-syntax1.1.0 code-background2.5.4 vscode-docker1.24.0 remote-wsl0.76.1 remote-explorer0.4.0 remote-server1.0.0 material-icon-theme4.25.0 prisma4.12.0 LiveServer5.7.9 rust-analyzer0.3.1463 vscode-styled-components1.7.8 svelte-vscode107.3.0 errorlens3.8.0 intellicode-api-usage-examples0.2.7 vscodeintellicode1.2.30 vscode-icons12.2.0 JavaScriptSnippets1.8.0 material-theme3.15.8 vscode-proto30.5.5 (2 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.77.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
After update to 1.77.1 bug still exists
Thank you for the repro! The root cause is this particular call - introduced via cc That code runs even when the inlayHintsController doesn't do anything and it ends up interrupting the current editor scroll animation.
Change:
this.searchBox.setModel(this.modelService.createModel('', null, uri.parse('extensions:searchinput'), true)); <ins> this.disposables.push(this.searchBox.onDidPaste(() => { this.searchBox.setValue(this.searchBox.getValue().replace(/s+/g, ' ')); this.searchBox.setScrollTop(0); })); </ins> this.disposables.push(this.searchBox.onDidFocusEditorText(() => addClass(this.monacoStyleContainer, 'synthetic-focus'))); this.disposables.push(this.searchBox.onDidBlurEditorText(() => removeClass(this.monacoStyleContainer, 'synthetic-focus')));

Discussion:
Copy text with newlines Paste into extension viewlet search box Now I have multiple lines of text and can scroll with the arrow keys I think the lines should be flattened
Change:
return this._workspaceTrustRequestPromise; } <ins> requestWorkspaceTrustOnStartup(): void { if (!this._workspaceTrustRequestPromise) { // Create promise this._workspaceTrustRequestPromise = new Promise(resolve => { this._workspaceTrustRequestResolver = resolve; }); } this._onDidInitiateWorkspaceTrustRequestOnStartup.fire(); } </ins> //#endregion }

Discussion:
I created a brand new VM and attached remote-ssh to it, then opened my folder on it. I clicked to trust the folder, then immediately after I was prompted by the terminal to trust the folder again. Every time I open a new folder thereafter I'm again double prompted for trust.
this is how we use the API, is promise for the original prompt not being shared with successive requests or something?
All callers of should be sharing the same promise. I will try to set up a repro today and see if I can reproduce the problem locally.
Here is what is happening: initial workspace trust modal dialog is being displayed there is another workspace trust dialog displayed due to the call the workspace will actually resolve the promise and in the background you can see the terminal is initiated The workspace trust request dialog is not being dismissed. I do have couple of ideas that I will discuss with
The fix will be available in Friday's Insiders release.
Change:
} } } <del> } else if (atLeastOneMatch) { return this._doRunTaskCommand(tasks, type, task); } else { return this._doRunTaskCommand(); </del> } <ins> const atLeastOneMatch = tasks.some(t => { if (task) { if (t._label.includes(task)) { if (!type || t.type === type) { return true; } } } else if (type && t.type === type) { return true; } return false; }); return atLeastOneMatch ? this._doRunTaskCommand(tasks, type, task) : this._doRunTaskCommand(); </ins> }); }

Discussion:
! Here is me triggering run task, it pops up very slowly in todays insiders.
This is most likely because we have to wait for many things before we can provide tasks. Do you see in the status bar an extensions loading spinner?
No the spinner only flashes for like one millisecond. I notice it's slow only when in a repo with just NPM tasks.
which repo are you in there?
this has started happening recently for you, correct?
Yeah, within this iteration. I was on vacation so don't have a better time estimate
I am also experiencing this since updating to the latest VS code version (1.72)
can you share your file?
Change:
import { IModelService } from 'vs/editor/common/services/model'; import { ResourceTextEdit } from 'vs/editor/browser/services/bulkEditService'; import { CancellationToken } from 'vs/base/common/cancellation'; <del> import { SnippetParser } from 'vs/editor/contrib/snippet/browser/snippetParser'; </del> import { performSnippetEdits } from 'vs/editor/contrib/snippet/browser/snippetController2'; <ins> import { SnippetParser } from 'vs/editor/contrib/snippet/browser/snippetParser'; </ins> type ValidationResult = { canApply: true } | { canApply: false; reason: URI }; <ins> type ISingleSnippetEditOperation = ISingleEditOperation & { insertAsSnippet?: boolean }; </ins> class ModelEditTask implements IDisposable { readonly model: ITextModel; private _expectedModelVersionId: number | undefined; <del> protected _edits: (ISingleEditOperation & { insertAsSnippet?: boolean })[]; </del> <ins> protected _edits: ISingleSnippetEditOperation[]; </ins> protected _newEol: EndOfLineSequence | undefined; constructor(private readonly _modelReference: IReference<IResolvedTextEditorModel>) {

Discussion:
go to / vscode open change 200 to 50 create new branch observe that the closing brackets are replaced with } in inlineCompletionsModel please reassigned to who you think might be able to fix this. Looks like a github issue to me though. !
This looks similar to
Looks like similar thing was already fixed for organize imports and some TS actions in
This doesn't repro for me when using the stable VS Code quality on Confirmed that it still reproduces in the latest Insiders on commit
and this looks similar to
Please retry with latest insiders which should have a fix for this
can actually reproduce with latest insiders...
Change:
if (markerIndex >= this._getCommandMarkers().length) { this._currentMarker = Boundary.Bottom; this._terminal.scrollToBottom(); <ins> this.clearMarker(); </ins> return; }

Discussion:
Testing When I use cmd+up/down to navigate between POIs in task output, the blue box renders for a second on the item I have selected, but then disappears. I didn't understand what was happening to the focus border.
that is by design.
This has come up before, I think you had an idea to improve this?
I had the same experience in where I was on a slow machine. I think I had suggested just using a line on the side (like our activity bar) that remains until your focus changes: <img src="https://user-"
To the left of the command decorations? ! I like how visible the outline is when jumping between commands, so we could keep that as is and just also show the persistent line? !
yea I'd be open to trying that out, I think using both might be a bit overkill but just having the single line can also be hard to notice.
Change:
private _yRange: [number, number] | undefined; private get yRange(): [number, number] { if (!this._yRange) { <del> const isTitleBarVisible = this.layoutService.isVisible(Parts.TITLEBAR_PART, mainWindow); </del> <ins> const isTitleBarVisible = this.layoutService.isVisible(Parts.TITLEBAR_PART, dom.getWindow(this.layoutService.activeContainer)); </ins> const yMin = isTitleBarVisible ? 0 : this.layoutService.mainContainerOffset.top; let yMax = 0;

Discussion:
So that you know that you are debugging. //cc
I'm not sure on this, personally I would find it kind of annoying to have the toolbar on all windows. Maybe it's a setting, or can be dragged between windows? (Is there reusable cross-window drag logic yet?)
To clarify: not visible on all windows at the same time, but visible on the window that has focus maybe? Otherwise, it will be quite hard to step through a file using mouse in floating windows?
I think having it appear in the active window (when in floating mode) is good.
We solved this issue for quick open where we also want to appear it at the window that has focus. For that, there is which will always be the right container to put global UI elements and is derived from the currently active window. There is a event that can be used to reparent the UI element live.
Thanks!!!
Verification: Start debugging, and drag an editor out to an aux window Make sure the debug toolbar appears on whichever window has focus The debug toolbar should reappear in the same place per-window as you focus it
Change:
import * as Bal from 'vs/base/browser/browser'; import * as dom from 'vs/base/browser/dom'; import * as browser from 'vs/base/browser/browserService'; <ins> import {IDisposable, disposeAll} from 'vs/base/common/lifecycle'; </ins> import {IHTMLContentElement} from 'vs/base/common/htmlContent'; import {renderHtml} from 'vs/base/browser/htmlContentRenderer'; import {IAction} from 'vs/base/common/actions';

Discussion:
Right now, this sort of ruins the feeling of an input with options -- it becomes more like an input followed by some toggles ! -- if you have the time
! there you go
I made you a reviewer
Nice solution. Merged.
Change:
): vscode.DocumentLink[] { const results: vscode.DocumentLink[] = []; for (const match of matchAll(this.linkPattern, text)) { <del> const pre = match[1]; const link = match[2]; const offset = (match.index || 0) + pre.length; const linkStart = document.positionAt(offset); const linkEnd = document.positionAt(offset + link.length); try { results.push(new vscode.DocumentLink( new vscode.Range(linkStart, linkEnd), normalizeLink(document, link, base))); } catch (e) { // noop </del> <ins> const matchImage = match[4] && extractDocumentLink(document, base, match[3].length + 1, match[4], match.index); if (matchImage) { results.push(matchImage); } const matchLink = extractDocumentLink(document, base, match[1].length, match[5], match.index); if (matchLink) { results.push(matchLink); </ins> } } return results; }

Discussion:
Steps to Reproduce: the markdown: Bug Only is detected as a clickable link.
Hey can I try working on this one?
Sure, here's the relevant regular expression that matches links: And the related tests: You can run the tests by opening VS Code and selecting the from the debug target menu. The regexp is rather complex so let me know if you have any questions
Could you please tell me what is the expected behaviour?
In the example, it should underline and as clickable links that open files and
Change:
let regexp = /${(.*?)}/g; const originalValue = value; const resolvedString = value.replace(regexp, (match: string, name: string) => { <del> let newValue = (<any>this)[name]; </del> <ins> const key = (isWindows && match.indexOf('env:') > 0) ? name.toLowerCase() : name; let newValue = (<any>this)[key]; </ins> if (types.isString(newValue)) { return newValue; } else {

Discussion:
VSCode Version:0.10.13 alpha OS Version:Windows 10 Steps to Reproduce: an variable to your ex. ${env.PATH} "command": "echo", "isShellCommand": true, "args": ["${env.PATH}"], the task. This will expand correctly on Linux and OS X but not Windows since the expansion is case sensitive and PATH on Windows is "Path". Env Var expansion shouldn't be case sensitive so that the same task can run on all platform. This bug was requested by in vscode-docs issue
this is done by the resolver service. IMO env variables on all OSes are case insensitive. Should we address this.
Let's keep it open and if some user is passionate he can tackle it
On linux and macOS environment variables are case sensitive, so "Path" and "PATH" are different variables on linux and macOS (but not on Windows). So your statement from above "IMO env variables on all OSes are case insensitive." is not correct, right? so you are asking for making env var lookup case insensitive on Windows only, correct?
I thought they are always case insensitive. So it should be case insensitive then on Windows only
I'm actually about done with a change for this if you want to take a look.
thanks, I will review the PR.
did you want me to squash it or anything (fixed a broken test because I forgot the existing code returned an empty string for missing environment variables)? Different projects have different requirements and I didn't see anything about squashing in your contrib docs.
no need to squash, I will add the comments to the PR directly if something is needed. Thanks
Change:
const inputDiffs = modifiedBaseRange.getInputDiffs(this.inputNumber); for (const diff of inputDiffs) { <ins> const range = diff.outputRange.toInclusiveRange(); if (range) { result.push({ range, options: { className: `merge-editor-diff ${inputClassName}`, description: 'Merge Editor', isWholeLine: true, } }); } </ins> if (diff.rangeMappings) { for (const d of diff.rangeMappings) { result.push({ range: d.outputRange, options: { <del> className: `merge-editor-diff-input1`, description: 'Base Range Projection' </del> <ins> className: `merge-editor-diff-word ${inputClassName}`, description: 'Merge Editor' </ins> } }); }

Discussion:
I really like how I can see the word-level change per line now in the merge editor, but shouldn't the colors be identical to the diff editor? !
I agree the new color needs to be tweaked. Would you also use the green background?
I think making this look as close as a diff editor if possible would be nice because I am so used at looking at diffs with their color coding. //cc
Change:
} } <del> notifyModelModeChanged(e: { model: ITextModel; oldModeId: string; }): void { </del> <ins> notifyModelModeChanged(model: ITextModel): void { this.handleModelEvent(model); } notifyModelAdded(model: ITextModel): void { this.handleModelEvent(model); } private handleModelEvent(model: ITextModel): void { </ins> if (!this.label || !this.label.resource) { return; // only update if label exists } <del> if (e.model.uri.toString() === this.label.resource.toString()) { if (this.lastKnownConfiguredLangId !== e.model.getLanguageIdentifier().language) { </del> <ins> if (model.uri.toString() === this.label.resource.toString()) { if (this.lastKnownDetectedModeId !== model.getModeId()) { </ins> this.render(true); // update if the language id of the model has changed from our last known state } }

Discussion:
Issue Type: <bBug</bto something like . a new tab. The tab should have the Markdown icon, but it has the Plain Text icon. If you move to another tab then back, the icon will be updated. This only started happening when I updated to 1.3, and it's still happening in Insiders. I've got no extensions or settings (other than ) set. VS Code version: Code - Insiders 1.31.0-insider (, 2018-12-21T06:14:53.023Z) OS version: Darwin x64 18.2.0 <!-- generated by issue reporter --
This is a consequence of adopting : When the tab opens we immediately render the icon, but the resource only gets the mode associated after a on the end of the tick.
via
Change:
import { MarkdownContributionProvider as MarkdownContributionProvider } from './markdownExtensions'; import { Slugifier } from './slugify'; import { SkinnyTextDocument } from './tableOfContentsProvider'; <del> import { Schemes, isOfScheme } from './util/links'; </del> <ins> import { MarkdownFileExtensions, Schemes, isOfScheme } from './util/links'; </ins> const UNICODE_NEWLINE_REGEX = /u2028|u2029/g;

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --Version: 1.43.2 (system setup) Commit: Date: 2020-03-24T07:38:38.248Z Electron: 7.1.11 Chrome: 78.0.3904.130 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0. Steps to Reproduce: in extension's function gives ... '=' character was dropped ! in extension's function gives ... '=' character was not dropped ! <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Hmm ... extension is needed in this case.
As far as I understand, all links in a markdown file are processed with a "normalizer". As part of the normalization, all uri fragments are "slugified": With a default "slugifier", it means, among other things, removing all punctuation: am I correct in thinking that the "slugification" is needed for links to headings in the current document to work ()? If so, a possible fix is to slugify only those uris that do not have authority and path parts.
Yes I don't think the slugifier should be run if the link points to a location that is clearly not a markdown file (such as the path ending in ). It is however helpful to normalize links to other markdown files within your current workspace. As as scoped fix, we could check . If there is a file extension, don't normalize the fragment. Does that sound good? Would you like to submit a PR that does this?
As far as I understand, that may break links to sections of other markdown files that do have an extension (), but I don't see a good fix for that, other than hard-coding all possible markdown file extensions.
Would it be a valid feature request to have an API to guess language id based only on a resource uri?
Change:
return result; } <ins> // TODO@lszomoru - adopt in diffFiles() function parseGitChanges(repositoryRoot: string, raw: string): Change[] { let index = 0; const result: Change[] = []; const segments = raw.trim() .split('x00') .filter(s => s); segmentsLoop: while (index < segments.length - 1) { const change = segments[index++]; const resourcePath = segments[index++]; if (!change || !resourcePath) { break; } const originalUri = Uri.file(path.isAbsolute(resourcePath) ? resourcePath : path.join(repositoryRoot, resourcePath)); let uri = originalUri; let renameUri = originalUri; let status = Status.UNTRACKED; // Copy or Rename status comes with a number (ex: 'R100'). // We don't need the number, we use only first character of the status. switch (change[0]) { case 'A': status = Status.INDEX_ADDED; break; case 'M': status = Status.MODIFIED; break; case 'D': status = Status.DELETED; break; // Rename contains two paths, the second one is what the file is renamed/copied to. case 'R': { if (index >= segments.length) { break; } const newPath = segments[index++]; if (!newPath) { break; } status = Status.INDEX_RENAMED; uri = renameUri = Uri.file(path.isAbsolute(newPath) ? newPath : path.join(repositoryRoot, newPath)); break; } default: // Unknown status break segmentsLoop; } result.push({ status, uri, originalUri, renameUri }); } return result; } </ins> export interface PullOptions { unshallow?: boolean; tags?: boolean;

Discussion:
Testing Create a git stash that includes a new file, or a renamed file "View stash" The editor only shows modified files, and there is no indication that some content is missing <img width="442" alt="image" src=""<img width="305" alt="image" src=""<img width="887" alt="image" src=""
Maybe the pattern is that it only shows files that currently exist in the workspace. If I delete , then "View stash", I don't see that file either.
could you please take a look at this. I have checked and the git extensions is passing all files but it does look like the multi-file diff editor does not display all of them. Let me know if I need to change anything in the git extension. Thanks!
still seeing this, <img width="1725" alt="Screenshot 2024-01-25 at 8 31 59 AM" src=""<img width="1728" alt="Screenshot 2024-01-25 at 8 31 44 AM" src=""<img width="650" alt="Screenshot 2024-01-25 at 8 32 13 AM" src=""
when you have untracked filed you have to use the "Git: Stash (Include Untracked)" command otherwise the untracked files are not being included in the stash.
Change:
public readonly inlineCompletionVisible = GhostTextController.inlineSuggestionVisible.bindTo(this.contextKeyService); public readonly inlineCompletionSuggestsIndentation = GhostTextController.inlineSuggestionHasIndentation.bindTo(this.contextKeyService); public readonly inlineCompletionSuggestsIndentationLessThanTabSize = GhostTextController.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService); <del> public readonly inlineSuggestionJustCommitted = GhostTextController.inlineSuggestionJustCommitted.bindTo(this.contextKeyService); </del> constructor(private readonly contextKeyService: IContextKeyService) { }

Discussion:
(See attached recording) I have enclose it in new use cmd+left to go to start of line ghost suggestions get accepted https://user-
Change:
<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; import { MarkdownEngine } from '../markdownEngine'; import { TableOfContentsProvider } from '../tableOfContentsProvider'; export default class MarkdownFoldingProvider implements vscode.FoldingProvider { constructor( private readonly engine: MarkdownEngine ) { } public async provideFoldingRanges( document: vscode.TextDocument, _token: vscode.CancellationToken ): Promise<vscode.FoldingRangeList> { const tocProvider = new TableOfContentsProvider(this.engine, document); const toc = await tocProvider.getToc(); const foldingRanges = toc.map((entry, startIndex) => { const start = entry.line; let end: number | undefined = undefined; for (let i = startIndex + 1; i < toc.length; ++i) { if (toc[i].level <= entry.level) { end = toc[i].line - 1; break; } } return new vscode.FoldingRange( start, typeof end === 'number' ? end : document.lineCount - 1); }); return new vscode.FoldingRangeList(foldingRanges); } } </ins>  No newline at end of file

Discussion:
:+1:
+1
Why is this essential feature still not a thing?
because it relies on which is non-trivial and it needs to be prioritized against other work.
+1
+1
+1 or adding a heading list view(TOC view) on the right side, it's really convenient for editing a large markdown file.
Please refer to the org-mode tab feature to implement, it's powerful.
+1
duplicate of
Reopening to track the markdown specific work of
I noticed that this is already implemented in the latest insider build, thanks a lot. One more request, would you please preserve the last blank line of a folded region? I mean becomes instead of One reason is that currently
Can anyone update the status on this?
it's coming to the next stable release.