microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.86k stars 29.51k forks source link

Source control diff shows changes from old commits #74889

Closed Rochet2 closed 5 years ago

Rochet2 commented 5 years ago

Also tested latest insider build:

Steps to Reproduce:

  1. in a new folder run
    $ git init
    $ printf 'test\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\ntest\n' > test.txt
    $ git add -A
    $ git commit -m "initial"
    [master (root-commit) ea4522d] initial
    1 file changed, 28 insertions(+)
    create mode 100644 test.txt
  2. Open the folder in visual studio code using "Open Folder"
  3. In VS code change for example the 3rd row of test.txt to aaaa
  4. Save the change and click on the file in Source Control to see the diff of the changes you made.
  5. In Source Control stage the file and commit it.
  6. You should now have committed the file. but you still have the diff open. Edit the 6th line in the Source Control diff view right side panel. You can for example replace the 6th line with bbbb.
  7. Save the change and click on the changed file in Source Control to see the diff file of the changes.
  8. The diff file now contains the old changes (aaaa) as well as the new change (bbbb) even if the first change was already committed.
  9. Stage the file and click on the file in Source Control. The diff should now show only the actual changes, which edited the 6th line.
  10. Unstage the file and click on the file in Source Control. The diff should now again show also the old changes that were already committed (aaaa)
  11. Restarting or reloading VScode fixes the issue and shows the proper diffs

Does this issue occur when all extensions are disabled?: Yes

vscodebot[bot] commented 5 years ago

(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like:

joaomoreno commented 5 years ago

On step (6):

You should now have committed the file. but you still have the diff open.

As soon as you commit, in at most 10 seconds, the diff should update to adjust for the commit, eventually showing no changes. Does it not?

Are file events working at all in your Code?

Rochet2 commented 5 years ago

As soon as you commit, in at most 10 seconds, the diff should update to adjust for the commit, eventually showing no changes. Does it not?

It does not. I tested on another machine that uses windows instead of ubuntu and it seemed to work as expected and updated the diff view immediately. On the ubuntu machine that is not the case.

Are file events working at all in your Code?

As I tried testing the reproduction case again now, the changes I made in the editor at first were updated to the Source Control so that the file automatically showed up as changed and I could click it to view the diff. After that as I commit the file the diff does not change.

After this I tried to restart VS Code and now even the changes I do to the file do not show up in the Source Control. So it seems as if file events were working, but after the commit I made just now they no longer do - even after restart of VS code. The changes to files in Explorer view such as 'unsaved' status do show up. I would guess that version control events (such as changes to files) are broken.

I have used this workaround to work on a large monorepo before: https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc However reverting it did not help with the issue.

Rochet2 commented 5 years ago

Peek 2019-05-27 16-53

In this gif you can see my current attempt to reproduce the bug.

joaomoreno commented 5 years ago

If you run Developer: Toggle Developer Tools, are there any errors in the console?

Did you open the git repo root folder in Code, or a subfolder of it?

I just pushed a fix for https://github.com/Microsoft/vscode/issues/41085 which might be the underlying issue. Give it another go tomorrow on the Insiders version and let me know how it goes.

Rochet2 commented 5 years ago

Did you open the git repo root folder in Code, or a subfolder of it?

The issue occurs when opening the root folder that contains .git folder. The gif above was taken by opening the root folder in Code. When working I open a subfolder and have the same issue though.

If you run Developer: Toggle Developer Tools, are there any errors in the console?

I get the following error:

workbench.main.js:3313 [Extension Host] debugger listening on port 64972
workbench.main.js:1406   ERR Error: Error: ENOENT: no such file or directory, stat '/home/rimi/Documents/oodikone/repro/.vscode'

when using

Version: 1.35.0
Commit: 553cfb2c2205db5f15f3ee8395bbd5cf066d357d
Date: 2019-06-04T01:13:26.790Z
Electron: 3.1.8
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Linux x64 4.15.0-51-generic

Give it another go tomorrow on the Insiders version and let me know how it goes.

I will test earliest on next monday as I am away from the machine with the problem for a few days.

joaomoreno commented 5 years ago

Let me know once you test Insiders.

Rochet2 commented 5 years ago

On

Version: 1.36.0-insider
Commit: 11b88a3323878a98b418e4efca77e7afabd50d01
Date: 2019-06-17T05:15:27.899Z
Electron: 4.2.4
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Linux x64 4.15.0-51-generic

it seems that the behavior is now as you described. So after committing, the diff view will then update with the correct changes.

It seems that the changes in the file itself still does not update to the source control view. However, editing the file in the diff view does update the source control view. That is probably a separate issue and related to some kind of file events not working maybe.

I still have the same error in the debug console:

[Extension Host] debugger listening on port 19793
log.ts:173   ERR Error: Error: ENOENT: no such file or directory, stat '/home/rimi/Documents/oodikone/repro/.vscode'
joaomoreno commented 5 years ago

That error is not related to the issue.

So... is it working in Insiders? What is not working in Insiders?

Rochet2 commented 5 years ago

Version: 1.36.0-insider

Working:

Not working:

So the issue of old changes in diff is solved.

joaomoreno commented 5 years ago

editing a file directly does not update Source Control panel to have the changed file (must manually press refresh button)

Are you saving the file after editing? Are you waiting at least 10 seconds?

Rochet2 commented 5 years ago

I do save the file. I do wait at least 10 seconds.

Here is a gif where I edit the file (4th row from ffff to eeee), save it (CTRL+S), wait 30 seconds and nothing happens. Then I press the Source Control refresh button and the file appears there. Peek 2019-06-20 12-20

This is still on the same 1.36.0-insider version.

joaomoreno commented 5 years ago

Do you get file events at all? IE: if you create a file in the terminal, does the file appear in the file explorer?

Rochet2 commented 5 years ago

When I create a new file in a terminal, the new file appears in file explorer. The file does not appear in Source Control. Here is a gif of exactly that: Peek 2019-06-20 12-51 In this gif I first show how there is no test2.txt and there are no changes in Source Control. Then I create test2.txt file and it appears to the file explorer automatically instantly, but it does not appear to Source Control.

joaomoreno commented 5 years ago

Can you show me the full output of Git: Show Git Output?

Rochet2 commented 5 years ago
Looking for git in: git
Using git 2.17.1 from git
> git rev-parse --show-toplevel
> git rev-parse --git-dir
> git config --get commit.template
Open repository: /home/local/rimi/Documents/oodikone/repro
> git rev-parse --show-toplevel
> git status -z -u
> git rev-parse --show-toplevel
> git symbolic-ref --short HEAD
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose
> git check-ignore -v -z --stdin
> git checkout -q -- /home/local/rimi/Documents/oodikone/repro/test.txt
> git status -z -u
> git symbolic-ref --short HEAD
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose
> git rev-parse --show-toplevel
> git rev-parse --show-toplevel

For the log below I restarted Code insiders, opened the log and then created test2.txt file. The result was that there was no changes in the git log at all. All of the log was created at starting of Code insiders. So when creating the file there was no git output created. Here is the log:

Looking for git in: git
Using git 2.17.1 from git
> git rev-parse --show-toplevel
> git rev-parse --git-dir
> git config --get commit.template
Open repository: /home/local/rimi/Documents/oodikone/repro
> git rev-parse --show-toplevel
> git status -z -u
> git rev-parse --show-toplevel
> git rev-parse --show-toplevel
> git symbolic-ref --short HEAD
> git rev-parse --show-toplevel
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose
> git check-ignore -v -z --stdin
joaomoreno commented 5 years ago

Can you show me your full settings?

Rochet2 commented 5 years ago

I should have default settings after installing Code insiders. I am not sure how to show you the settings. These are the only 2 json files I found related to settings.

I also found a setting that seemed to show modified settings only. Here is an image of the modified settings: image Workspace tab had no changed settings.

Here is User/settings.json:

{
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue"
}

Here is defaultSettings.json:

```json { // Controls whether the diff editor shows changes in leading or trailing whitespace as diffs. "diffEditor.ignoreTrimWhitespace": true, // Controls whether the diff editor shows +/- indicators for added/removed changes. "diffEditor.renderIndicators": true, // Controls whether the diff editor shows the diff side by side or inline. "diffEditor.renderSideBySide": true, // Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character. "editor.acceptSuggestionOnCommitCharacter": true, // Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions. // - on // - smart: Only accept a suggestion with `Enter` when it makes a textual change. // - off "editor.acceptSuggestionOnEnter": "on", // Controls whether the editor should run in a mode where it is optimized for screen readers. // - auto: The editor will use platform APIs to detect when a Screen Reader is attached. // - on: The editor will be permanently optimized for usage with a Screen Reader. // - off: The editor will never be optimized for usage with a Screen Reader. "editor.accessibilitySupport": "auto", // Controls whether the editor should automatically close brackets after the user adds an opening bracket. // - always // - languageDefined: Use language configurations to determine when to autoclose brackets. // - beforeWhitespace: Autoclose brackets only when the cursor is to the left of whitespace. // - never "editor.autoClosingBrackets": "languageDefined", // Controls whether the editor should automatically close quotes after the user adds an opening quote. // - always // - languageDefined: Use language configurations to determine when to autoclose quotes. // - beforeWhitespace: Autoclose quotes only when the cursor is to the left of whitespace. // - never "editor.autoClosingQuotes": "languageDefined", // Controls whether the editor should automatically adjust the indentation when users type, paste or move lines. Extensions with indentation rules of the language must be available. "editor.autoIndent": true, // Controls whether the editor should automatically surround selections. // - languageDefined: Use language configurations to determine when to automatically surround selections. // - brackets: Surround with brackets but not quotes. // - quotes: Surround with quotes but not brackets. // - never "editor.autoSurround": "languageDefined", // Code action kinds to be run on save. "editor.codeActionsOnSave": {}, // Timeout in milliseconds after which the code actions that are run on save are cancelled. "editor.codeActionsOnSaveTimeout": 750, // Controls whether the editor shows CodeLens. "editor.codeLens": true, // Controls whether the editor should render the inline color decorators and color picker. "editor.colorDecorators": true, // Controls whether syntax highlighting should be copied into the clipboard. "editor.copyWithSyntaxHighlighting": true, // Control the cursor animation style. "editor.cursorBlinking": "blink", // Controls whether the smooth caret animation should be enabled. "editor.cursorSmoothCaretAnimation": false, // Controls the cursor style. "editor.cursorStyle": "line", // Controls the width of the cursor when `editor.cursorStyle` is set to `line`. "editor.cursorWidth": 0, // Defines a default formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter. // - null: None // - vscode.configuration-editing: Provides capabilities (advanced IntelliSense, auto-fixing) in configuration files like settings, launch, and extension recommendation files. // - vscode.css-language-features: Provides rich language support for CSS, LESS and SCSS files. // - vscode.debug-auto-launch: Helper for auto-attach feature when node-debug extensions are not active. // - vscode.debug-server-ready: Open URI in browser if server under debugging is ready. // - vscode.emmet: Emmet support for VS Code // - vscode.extension-editing: Provides linting capabilities for authoring extensions. // - vscode.git: Git SCM Integration // - vscode.git-ui: Git SCM UI Integration // - vscode.grunt: Extension to add Grunt capabilities to VS Code. // - vscode.gulp: Extension to add Gulp capabilities to VSCode. // - vscode.html-language-features: Provides rich language support for HTML and Handlebar files // - vscode.jake: Extension to add Jake capabilities to VS Code. // - vscode.json-language-features: Provides rich language support for JSON files. // - vscode.markdown-language-features: Provides rich language support for Markdown. // - vscode.merge-conflict: Highlighting and commands for inline merge conflicts. // - ms-vscode.node-debug: Node.js debugging support (versions < 8.0) // - ms-vscode.node-debug2: Node.js debugging support // - ms-vscode.references-view: Reference Search results as separate, stable view in the sidebar // - vscode.npm: Extension to add task support for npm scripts. // - vscode.php-language-features: Provides rich language support for PHP files. // - vscode.python: Provides syntax highlighting, bracket matching and folding in Python files. // - vscode.typescript-language-features: Provides rich language support for JavaScript and TypeScript. "editor.defaultFormatter": null, // Controls whether `editor.tabSize#` and `#editor.insertSpaces` will be automatically detected when a file is opened based on the file contents. "editor.detectIndentation": true, // Controls whether the editor should allow moving selections via drag and drop. "editor.dragAndDrop": true, // Controls whether copying without a selection copies the current line. "editor.emptySelectionClipboard": true, // Scrolling speed mulitiplier when pressing `Alt`. "editor.fastScrollSensitivity": 5, // Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible. "editor.find.addExtraSpaceOnTop": true, // Controls whether the find operation is carried out on selected text or the entire file in the editor. "editor.find.autoFindInSelection": false, // Controls whether the search string in the Find Widget is seeded from the editor selection. "editor.find.seedSearchStringFromSelection": true, // Controls whether the editor has code folding enabled. "editor.folding": true, // Controls the strategy for computing folding ranges. `auto` uses a language specific folding strategy, if available. `indentation` uses the indentation based folding strategy. "editor.foldingStrategy": "auto", // Controls the font family. "editor.fontFamily": "'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'", // Enables/Disables font ligatures. "editor.fontLigatures": false, // Controls the font size in pixels. "editor.fontSize": 14, // Controls the font weight. "editor.fontWeight": "normal", // Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document. "editor.formatOnPaste": false, // Format a file on save. A formatter must be available, the file must not be saved after delay, and the editor must not be shutting down. "editor.formatOnSave": false, // Timeout in milliseconds after which the formatting that is run on file save is cancelled. "editor.formatOnSaveTimeout": 750, // Controls whether the editor should automatically format the line after typing. "editor.formatOnType": false, // Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging. "editor.glyphMargin": true, // Controls the behavior of 'Go To' commands, like Go To Definition, when multiple target locations exist. // - peek: Show peek view of the results (default) // - gotoAndPeek: Go to the primary result and show a peek view // - goto: Go to the primary result and enable peek-less navigation to others "editor.gotoLocation.multiple": "peek", // Controls whether the cursor should be hidden in the overview ruler. "editor.hideCursorInOverviewRuler": false, // Controls whether the editor should highlight the active indent guide. "editor.highlightActiveIndentGuide": true, // Controls the delay in milliseconds after which the hover is shown. "editor.hover.delay": 300, // Controls whether the hover is shown. "editor.hover.enabled": true, // Controls whether the hover should remain visible when mouse is moved over it. "editor.hover.sticky": true, // Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `editor.detectIndentation` is on. "editor.insertSpaces": true, // Special handling for large files to disable certain memory intensive features. "editor.largeFileOptimizations": true, // Controls the letter spacing in pixels. "editor.letterSpacing": 0, // Enables the code action lightbulb in the editor. "editor.lightbulb.enabled": true, // Controls the line height. Use 0 to compute the line height from the font size. "editor.lineHeight": 0, // Controls the display of line numbers. // - off: Line numbers are not rendered. // - on: Line numbers are rendered as absolute number. // - relative: Line numbers are rendered as distance in lines to cursor position. // - interval: Line numbers are rendered every 10 lines. "editor.lineNumbers": "on", // Controls whether the editor should detect links and make them clickable. "editor.links": true, // Highlight matching brackets when one of them is selected. "editor.matchBrackets": true, // Lines above this length will not be tokenized for performance reasons "editor.maxTokenizationLineLength": 20000, // Controls whether the minimap is shown. "editor.minimap.enabled": true, // Limit the width of the minimap to render at most a certain number of columns. "editor.minimap.maxColumn": 120, // Render the actual characters on a line as opposed to color blocks. "editor.minimap.renderCharacters": true, // Controls whether the minimap slider is automatically hidden. "editor.minimap.showSlider": "mouseover", // Controls the side where to render the minimap. "editor.minimap.side": "right", // A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events. "editor.mouseWheelScrollSensitivity": 1, // Zoom the font of the editor when using mouse wheel and holding `Ctrl`. "editor.mouseWheelZoom": false, // Merge multiple cursors when they are overlapping. "editor.multiCursorMergeOverlapping": true, // The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier). // - ctrlCmd: Maps to `Control` on Windows and Linux and to `Command` on macOS. // - alt: Maps to `Alt` on Windows and Linux and to `Option` on macOS. "editor.multiCursorModifier": "alt", // Controls whether the editor should highlight semantic symbol occurrences. "editor.occurrencesHighlight": true, // Controls whether a border should be drawn around the overview ruler. "editor.overviewRulerBorder": true, // Controls the number of decorations that can show up at the same position in the overview ruler. "editor.overviewRulerLanes": 3, // Controls whether the parameter hints menu cycles or closes when reaching the end of the list. "editor.parameterHints.cycle": false, // Enables a pop-up that shows parameter documentation and type information as you type. "editor.parameterHints.enabled": true, // Controls whether suggestions should automatically show up while typing. "editor.quickSuggestions": { "other": true, "comments": false, "strings": false }, // Controls the delay in milliseconds after which quick suggestions will show up. "editor.quickSuggestionsDelay": 10, // Controls whether the editor should render control characters. "editor.renderControlCharacters": false, // Render last line number when the file ends with a newline. "editor.renderFinalNewline": true, // Controls whether the editor should render indent guides. "editor.renderIndentGuides": true, // Controls how the editor should render the current line highlight. // - none // - gutter // - line // - all: Highlights both the gutter and the current line. "editor.renderLineHighlight": "line", // Controls how the editor should render whitespace characters. // - none // - boundary: Render whitespace characters except for single spaces between words. // - all "editor.renderWhitespace": "none", // Controls whether selections should have rounded corners. "editor.roundedSelection": true, // Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty. "editor.rulers": [], // Controls the number of extra characters beyond which the editor will scroll horizontally. "editor.scrollBeyondLastColumn": 5, // Controls whether the editor will scroll beyond the last line. "editor.scrollBeyondLastLine": true, // Controls whether the Linux primary clipboard should be supported. "editor.selectionClipboard": true, // Controls whether the editor should highlight matches similar to the selection. "editor.selectionHighlight": true, // Controls whether the fold controls on the gutter are automatically hidden. "editor.showFoldingControls": "mouseover", // Controls fading out of unused code. "editor.showUnused": true, // Controls whether the editor will scroll using an animation. "editor.smoothScrolling": false, // Controls whether snippets are shown with other suggestions and how they are sorted. // - top: Show snippet suggestions on top of other suggestions. // - bottom: Show snippet suggestions below other suggestions. // - inline: Show snippets suggestions with other suggestions. // - none: Do not show snippet suggestions. "editor.snippetSuggestions": "inline", // Keep peek editors open even when double clicking their content or when hitting `Escape`. "editor.stablePeek": false, // Controls whether some suggestion types should be filtered from IntelliSense. A list of suggestion types can be found here: https://code.visualstudio.com/docs/editor/intellisense#_types-of-completions. "editor.suggest.filteredTypes": { "keyword": true }, // Controls whether filtering and sorting suggestions accounts for small typos. "editor.suggest.filterGraceful": true, // Controls whether sorting favours words that appear close to the cursor. "editor.suggest.localityBonus": false, // Controls how many suggestions IntelliSense will show before showing a scrollbar (maximum 15). "editor.suggest.maxVisibleSuggestions": 12, // Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `editor.suggestSelection`). "editor.suggest.shareSuggestSelections": false, // Controls whether to show or hide icons in suggestions. "editor.suggest.showIcons": true, // Control whether an active snippet prevents quick suggestions. "editor.suggest.snippetsPreventQuickSuggestions": true, // Font size for the suggest widget. When set to `0`, the value of `editor.fontSize` is used. "editor.suggestFontSize": 0, // Line height for the suggest widget. When set to `0`, the value of `editor.lineHeight` is used. "editor.suggestLineHeight": 0, // Controls whether suggestions should automatically show up when typing trigger characters. "editor.suggestOnTriggerCharacters": true, // Controls how suggestions are pre-selected when showing the suggest list. // - first: Always select the first suggestion. // - recentlyUsed: Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently. // - recentlyUsedByPrefix: Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`. "editor.suggestSelection": "recentlyUsed", // Enables tab completions. // - on: Tab complete will insert the best matching suggestion when pressing tab. // - off: Disable tab completions. // - onlySnippets: Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled. "editor.tabCompletion": "off", // The number of spaces a tab is equal to. This setting is overridden based on the file contents when `editor.detectIndentation` is on. "editor.tabSize": 4, // Overrides editor colors and font style from the currently selected color theme. "editor.tokenColorCustomizations": {}, // Remove trailing auto inserted whitespace. "editor.trimAutoWhitespace": true, // Inserting and deleting whitespace follows tab stops. "editor.useTabStops": true, // Controls whether completions should be computed based on words in the document. "editor.wordBasedSuggestions": true, // Characters that will be used as word separators when doing word related navigations or operations. "editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?", // Controls how lines should wrap. // - off: Lines will never wrap. // - on: Lines will wrap at the viewport width. // - wordWrapColumn: Lines will wrap at `editor.wordWrapColumn`. // - bounded: Lines will wrap at the minimum of viewport and `editor.wordWrapColumn`. "editor.wordWrap": "off", // Controls the wrapping column of the editor when `editor.wordWrap` is `wordWrapColumn` or `bounded`. "editor.wordWrapColumn": 80, // Controls the indentation of wrapped lines. // - none: No indentation. Wrapped lines begin at column 1. // - same: Wrapped lines get the same indentation as the parent. // - indent: Wrapped lines get +1 indentation toward the parent. // - deepIndent: Wrapped lines get +2 indentation toward the parent. "editor.wrappingIndent": "same", // Controls whether inline actions are always visible in the Source Control view. "scm.alwaysShowActions": false, // Controls whether to always show the Source Control Provider section. "scm.alwaysShowProviders": false, // Controls diff decorations in the editor. "scm.diffDecorations": "all", // Controls the width(px) of diff decorations in gutter (added & modified). "scm.diffDecorationsGutterWidth": 3, // Controls how many providers are visible in the Source Control Provider section. Set to `0` to be able to manually resize the view. "scm.providers.visible": 10, // Controls the visibility of the activity bar in the workbench. "workbench.activityBar.visible": true, // Overrides colors from the currently selected color theme. "workbench.colorCustomizations": {}, // Specifies the color theme used in the workbench. "workbench.colorTheme": "Default Dark+", // Controls the number of recently used commands to keep in history for the command palette. Set to 0 to disable command history. "workbench.commandPalette.history": 50, // Controls whether the last typed input to the command palette should be restored when opening it the next time. "workbench.commandPalette.preserveInput": false, // Controls if the centered layout should automatically resize to maximum width when more than one group is open. Once only one group is open it will resize back to the original centered width. "workbench.editor.centeredLayoutAutoResize": true, // Controls the behavior of empty editor groups when the last tab in the group is closed. When enabled, empty groups will automatically close. When disabled, empty groups will remain part of the grid. "workbench.editor.closeEmptyGroups": true, // Controls whether editors showing a file that was opened during the session should close automatically when getting deleted or renamed by some other process. Disabling this will keep the editor open on such an event. Note that deleting from within the application will always close the editor and that dirty files will never close to preserve your data. "workbench.editor.closeOnFileDelete": false, // Controls whether opened editors show as preview. Preview editors are reused until they are pinned (e.g. via double click or editing) and show up with an italic font style. "workbench.editor.enablePreview": true, // Controls whether opened editors from Quick Open show as preview. Preview editors are reused until they are pinned (e.g. via double click or editing). "workbench.editor.enablePreviewFromQuickOpen": true, // Controls whether tabs are closed in most recently used order or from left to right. "workbench.editor.focusRecentEditorAfterClose": true, // Controls whether a top border is drawn on modified (dirty) editor tabs or not. "workbench.editor.highlightModifiedTabs": false, // Controls the format of the label for an editor. // - default: Show the name of the file. When tabs are enabled and two files have the same name in one group the distinguishing sections of each file's path are added. When tabs are disabled, the path relative to the workspace folder is shown if the editor is active. // - short: Show the name of the file followed by its directory name. // - medium: Show the name of the file followed by its path relative to the workspace folder. // - long: Show the name of the file followed by its absolute path. "workbench.editor.labelFormat": "default", // Controls where editors open. Select `left` or `right` to open editors to the left or right of the currently active one. Select `first` or `last` to open editors independently from the currently active one. "workbench.editor.openPositioning": "right", // Controls the default direction of editors that are opened side by side (e.g. from the explorer). By default, editors will open on the right hand side of the currently active one. If changed to `down`, the editors will open below the currently active one. "workbench.editor.openSideBySideDirection": "right", // Restores the last view state (e.g. scroll position) when re-opening files after they have been closed. "workbench.editor.restoreViewState": true, // Controls whether an editor is revealed in any of the visible groups if opened. If disabled, an editor will prefer to open in the currently active editor group. If enabled, an already opened editor will be revealed instead of opened again in the currently active editor group. Note that there are some cases where this setting is ignored, e.g. when forcing an editor to open in a specific group or to the side of the currently active group. "workbench.editor.revealIfOpen": false, // Controls whether opened editors should show with an icon or not. This requires an icon theme to be enabled as well. "workbench.editor.showIcons": true, // Controls whether opened editors should show in tabs or not. "workbench.editor.showTabs": true, // Controls the position of the editor's tabs close buttons, or disables them when set to 'off'. "workbench.editor.tabCloseButton": "right", // Controls the sizing of editor tabs. // - fit: Always keep tabs large enough to show the full editor label. // - shrink: Allow tabs to get smaller when the available space is not enough to show all tabs at once. "workbench.editor.tabSizing": "fit", // Fetches experiments to run from a Microsoft online service. "workbench.enableExperiments": true, // Controls the visibility of the icon exploration in the workbench. "workbench.iconExploration.enabled": false, // Specifies the icon theme used in the workbench or 'null' to not show any file icons. // - null: No file icons // - vs-minimal // - vs-seti "workbench.iconTheme": "vs-seti", // Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut. "workbench.list.automaticKeyboardNavigation": true, // Controls whether lists and trees support horizontal scrolling in the workbench. "workbench.list.horizontalScrolling": false, // Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter. // - simple: Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes. // - highlight: Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements. // - filter: Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input. "workbench.list.keyboardNavigation": "highlight", // The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier. // - ctrlCmd: Maps to `Control` on Windows and Linux and to `Command` on macOS. // - alt: Maps to `Alt` on Windows and Linux and to `Option` on macOS. "workbench.list.multiSelectModifier": "ctrlCmd", // Controls how to open items in trees and lists using the mouse (if supported). For parents with children in trees, this setting will control if a single click expands the parent or a double click. Note that some trees and lists might choose to ignore this setting if it is not applicable. "workbench.list.openMode": "singleClick", // Controls the default location of the panel (terminal, debug console, output, problems). It can either show at the bottom or on the right of the workbench. "workbench.panel.defaultLocation": "bottom", // Controls whether Quick Open should close automatically once it loses focus. "workbench.quickOpen.closeOnFocusLost": true, // Controls whether the last typed input to Quick Open should be restored when opening it the next time. "workbench.quickOpen.preserveInput": false, // Determines which settings editor to use by default. // - ui: Use the settings UI editor. // - json: Use the JSON file editor. "workbench.settings.editor": "ui", // Controls whether to enable the natural language search mode for settings. The natural language search is provided by a Microsoft online service. "workbench.settings.enableNaturalLanguageSearch": true, // Controls whether opening keybinding settings also opens an editor showing all default keybindings. "workbench.settings.openDefaultKeybindings": false, // Controls whether opening settings also opens an editor showing all default settings. "workbench.settings.openDefaultSettings": false, // Controls the behavior of the settings editor Table of Contents while searching. // - hide: Hide the Table of Contents while searching. // - filter: Filter the Table of Contents to just categories that have matching settings. Clicking a category will filter the results to that category. "workbench.settings.settingsSearchTocBehavior": "filter", // Controls whether to use the split JSON editor when editing settings as JSON. "workbench.settings.useSplitJSON": false, // Controls the location of the sidebar. It can either show on the left or right of the workbench. "workbench.sideBar.location": "left", // Controls which editor is shown at startup, if none are restored from the previous session. // - none: Start without an editor. // - welcomePage: Open the Welcome page (default). // - readme: Open the README when opening a folder that contains one, fallback to 'welcomePage' otherwise. // - newUntitledFile: Open a new untitled file (only applies when opening an empty workspace). // - welcomePageInEmptyWorkbench: Open the Welcome page when opening an empty workbench. "workbench.startupEditor": "welcomePage", // Controls the visibility of the status bar at the bottom of the workbench. "workbench.statusBar.visible": true, // When enabled, will show the watermark tips when no editor is open. "workbench.tips.enabled": true, // This setting is deprecated, please use 'workbench.list.horizontalScrolling' instead. // Controls whether trees support horizontal scrolling in the workbench. "workbench.tree.horizontalScrolling": false, // Controls tree indentation in pixels. "workbench.tree.indent": 8, // Controls whether the tree should render indent guides. "workbench.tree.renderIndentGuides": "onHover", // Enables the grid layout for the workbench. This setting may enable additional layout options for workbench components. "workbench.useExperimentalGridLayout": false, // Controls the visibility of view header actions. View header actions may either be always visible, or only visible when that view is focused or hovered over. "workbench.view.alwaysShowHeaderActions": false, // Controls whether closing the last editor should also close the window. This setting only applies for windows that do not show folders. "window.closeWhenEmpty": false, // If enabled, disables the ability to focus the menu bar with the Alt-key when not set to toggle. "window.disableCustomMenuBarAltFocus": false, // If enabled, double clicking the application icon in the title bar will close the window and the window cannot be dragged by the icon. This setting only has an effect when `window.titleBarStyle` is set to `custom`. "window.doubleClickIconToClose": false, // If enabled, the main menus can be opened via Alt-key shortcuts. Disabling mnemonics allows to bind these Alt-key shortcuts to editor commands instead. "window.enableMenuBarMnemonics": true, // Control the visibility of the menu bar. A setting of 'toggle' means that the menu bar is hidden and a single press of the Alt key will show it. By default, the menu bar will be visible, unless the window is full screen. // - default: Menu is only hidden in full screen mode. // - visible: Menu is always visible even in full screen mode. // - toggle: Menu is hidden but can be displayed via Alt key. // - hidden: Menu is always hidden. "window.menuBarVisibility": "default", // Controls the dimensions of opening a new window when at least one window is already opened. Note that this setting does not have an impact on the first window that is opened. The first window will always restore the size and location as you left it before closing. // - default: Open new windows in the center of the screen. // - inherit: Open new windows with same dimension as last active one. // - maximized: Open new windows maximized. // - fullscreen: Open new windows in full screen mode. "window.newWindowDimensions": "default", // Controls whether files should open in a new window. // Note that there can still be cases where this setting is ignored (e.g. when using the `--new-window` or `--reuse-window` command line option). // - on: Files will open in a new window. // - off: Files will open in the window with the files' folder open or the last active window. // - default: Files will open in a new window unless picked from within the application (e.g. via the File menu). "window.openFilesInNewWindow": "off", // Controls whether folders should open in a new window or replace the last active window. // Note that there can still be cases where this setting is ignored (e.g. when using the `--new-window` or `--reuse-window` command line option). // - on: Folders will open in a new window. // - off: Folders will replace the last active window. // - default: Folders will open in a new window unless a folder is picked from within the application (e.g. via the File menu). "window.openFoldersInNewWindow": "default", // Controls whether a new empty window should open when starting a second instance without arguments or if the last running instance should get focus. // Note that there can still be cases where this setting is ignored (e.g. when using the `--new-window` or `--reuse-window` command line option). // - on: Open a new empty window. // - off: Focus the last active running instance. "window.openWithoutArgumentsInNewWindow": "on", // Controls whether a window should restore to full screen mode if it was exited in full screen mode. "window.restoreFullscreen": false, // Controls how windows are being reopened after a restart. // - all: Reopen all windows. // - folders: Reopen all folders. Empty workspaces will not be restored. // - one: Reopen the last active window. // - none: Never reopen a window. Always start with an empty one. "window.restoreWindows": "one", // Controls the window title based on the active editor. Variables are substituted based on the context:`${activeEditorShort}`: the file name (e.g. myFile.txt). // - `${activeEditorMedium}`: the path of the file relative to the workspace folder (e.g. myFolder/myFileFolder/myFile.txt). // - `${activeEditorLong}`: the full path of the file (e.g. /Users/Development/myFolder/myFileFolder/myFile.txt). // - `${activeFolderShort}`: the name of the folder the file is contained in (e.g. myFileFolder). // - `${activeFolderMedium}`: the path of the folder the file is contained in, relative to the workspace folder (e.g. myFolder/myFileFolder). // - `${activeFolderLong}`: the full path of the folder the file is contained in (e.g. /Users/Development/myFolder/myFileFolder). // - `${folderName}`: name of the workspace folder the file is contained in (e.g. myFolder). // - `${folderPath}`: file path of the workspace folder the file is contained in (e.g. /Users/Development/myFolder). // - `${rootName}`: name of the workspace (e.g. myFolder or myWorkspace). // - `${rootPath}`: file path of the workspace (e.g. /Users/Development/myWorkspace). // - `${appName}`: e.g. VS Code. // - `${dirty}`: a dirty indicator if the active editor is dirty. // - `${separator}`: a conditional separator (" - ") that only shows when surrounded by variables with values or static text. "window.title": "${dirty}${activeEditorShort}${separator}${rootName}${separator}${appName}", // Adjust the appearance of the window title bar. On Linux and Windows, this setting also affects the application and context menu appearances. Changes require a full restart to apply. "window.titleBarStyle": "native", // Adjust the zoom level of the window. The original size is 0 and each increment above (e.g. 1) or below (e.g. -1) represents zooming 20% larger or smaller. You can also enter decimals to adjust the zoom level with a finer granularity. "window.zoomLevel": 0, // Configure file associations to languages (e.g. `"*.extension": "html"`). These have precedence over the default associations of the languages installed. "files.associations": {}, // When enabled, the editor will attempt to guess the character set encoding when opening files. This setting can also be configured per language. "files.autoGuessEncoding": false, // Controls auto save of dirty files. Read more about autosave [here](https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save). // - off: A dirty file is never automatically saved. // - afterDelay: A dirty file is automatically saved after the configured `files.autoSaveDelay`. // - onFocusChange: A dirty file is automatically saved when the editor loses focus. // - onWindowChange: A dirty file is automatically saved when the window loses focus. "files.autoSave": "off", // Controls the delay in ms after which a dirty file is saved automatically. Only applies when `files.autoSave` is set to `afterDelay`. "files.autoSaveDelay": 1000, // The default language mode that is assigned to new files. "files.defaultLanguage": "", // Moves files/folders to the OS trash (recycle bin on Windows) when deleting. Disabling this will delete files/folders permanently. "files.enableTrash": true, // The default character set encoding to use when reading and writing files. This setting can also be configured per language. // - utf8: UTF-8 // - utf8bom: UTF-8 with BOM // - utf16le: UTF-16 LE // - utf16be: UTF-16 BE // - windows1252: Western (Windows 1252) // - iso88591: Western (ISO 8859-1) // - iso88593: Western (ISO 8859-3) // - iso885915: Western (ISO 8859-15) // - macroman: Western (Mac Roman) // - cp437: DOS (CP 437) // - windows1256: Arabic (Windows 1256) // - iso88596: Arabic (ISO 8859-6) // - windows1257: Baltic (Windows 1257) // - iso88594: Baltic (ISO 8859-4) // - iso885914: Celtic (ISO 8859-14) // - windows1250: Central European (Windows 1250) // - iso88592: Central European (ISO 8859-2) // - cp852: Central European (CP 852) // - windows1251: Cyrillic (Windows 1251) // - cp866: Cyrillic (CP 866) // - iso88595: Cyrillic (ISO 8859-5) // - koi8r: Cyrillic (KOI8-R) // - koi8u: Cyrillic (KOI8-U) // - iso885913: Estonian (ISO 8859-13) // - windows1253: Greek (Windows 1253) // - iso88597: Greek (ISO 8859-7) // - windows1255: Hebrew (Windows 1255) // - iso88598: Hebrew (ISO 8859-8) // - iso885910: Nordic (ISO 8859-10) // - iso885916: Romanian (ISO 8859-16) // - windows1254: Turkish (Windows 1254) // - iso88599: Turkish (ISO 8859-9) // - windows1258: Vietnamese (Windows 1258) // - gbk: Simplified Chinese (GBK) // - gb18030: Simplified Chinese (GB18030) // - cp950: Traditional Chinese (Big5) // - big5hkscs: Traditional Chinese (Big5-HKSCS) // - shiftjis: Japanese (Shift JIS) // - eucjp: Japanese (EUC-JP) // - euckr: Korean (EUC-KR) // - windows874: Thai (Windows 874) // - iso885911: Latin/Thai (ISO 8859-11) // - koi8ru: Cyrillic (KOI8-RU) // - koi8t: Tajik (KOI8-T) // - gb2312: Simplified Chinese (GB 2312) // - cp865: Nordic DOS (CP 865) // - cp850: Western European DOS (CP 850) "files.encoding": "utf8", // The default end of line character. // - \n: LF // - \r\n: CRLF // - auto: Uses operating system specific end of line character. "files.eol": "auto", // Configure glob patterns for excluding files and folders. For example, the files explorer decides which files and folders to show or hide based on this setting. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options). "files.exclude": { "**/.git": true, "**/.svn": true, "**/.hg": true, "**/CVS": true, "**/.DS_Store": true }, // Controls whether unsaved files are remembered between sessions, allowing the save prompt when exiting the editor to be skipped. // - off: Disable hot exit. // - onExit: Hot exit will be triggered when the last window is closed on Windows/Linux or when the `workbench.action.quit` command is triggered (command palette, keybinding, menu). All windows with backups will be restored upon next launch. // - onExitAndWindowClose: Hot exit will be triggered when the last window is closed on Windows/Linux or when the `workbench.action.quit` command is triggered (command palette, keybinding, menu), and also for any window with a folder opened regardless of whether it's the last window. All windows without folders opened will be restored upon next launch. To restore folder windows as they were before shutdown set `window.restoreWindows` to `all`. "files.hotExit": "onExit", // When enabled, insert a final new line at the end of the file when saving it. "files.insertFinalNewline": false, // Controls the memory available to VS Code after restart when trying to open large files. Same effect as specifying `--max-memory=NEWSIZE` on the command line. "files.maxMemoryForLargeFilesMB": 4096, // Enables the simple file dialog. The simple file dialog replaces the system file dialog when enabled. "files.simpleDialog.enable": false, // When enabled, will trim all new lines after the final new line at the end of the file when saving it. "files.trimFinalNewlines": false, // When enabled, will trim trailing whitespace when saving a file. "files.trimTrailingWhitespace": false, // Configure glob patterns of file paths to exclude from file watching. Patterns must match on absolute paths (i.e. prefix with ** or the full path to match properly). Changing this setting requires a restart. When you experience Code consuming lots of cpu time on startup, you can exclude large folders to reduce the initial load. "files.watcherExclude": { "**/.git/objects/**": true, "**/.git/subtree-cache/**": true, "**/node_modules/**": true }, // Controls whether turning on Zen Mode also centers the layout. "zenMode.centerLayout": true, // Controls whether turning on Zen Mode also puts the workbench into full screen mode. "zenMode.fullScreen": true, // Controls whether turning on Zen Mode also hides the activity bar at the left of the workbench. "zenMode.hideActivityBar": true, // Controls whether turning on Zen Mode also hides the editor line numbers. "zenMode.hideLineNumbers": true, // Controls whether turning on Zen Mode also hides the status bar at the bottom of the workbench. "zenMode.hideStatusBar": true, // Controls whether turning on Zen Mode also hides workbench tabs. "zenMode.hideTabs": true, // Controls whether a window should restore to zen mode if it was exited in zen mode. "zenMode.restore": false, // Controls whether the explorer should automatically reveal and select files when opening them. "explorer.autoReveal": true, // Controls whether the explorer should ask for confirmation when deleting a file via the trash. "explorer.confirmDelete": true, // Controls whether the explorer should ask for confirmation to move files and folders via drag and drop. "explorer.confirmDragAndDrop": true, // Controls whether file decorations should use badges. "explorer.decorations.badges": true, // Controls whether file decorations should use colors. "explorer.decorations.colors": true, // Controls whether the explorer should allow to move files and folders via drag and drop. "explorer.enableDragAndDrop": true, // Number of editors shown in the Open Editors pane. "explorer.openEditors.visible": 9, // Controls sorting order of files and folders in the explorer. // - default: Files and folders are sorted by their names, in alphabetical order. Folders are displayed before files. // - mixed: Files and folders are sorted by their names, in alphabetical order. Files are interwoven with folders. // - filesFirst: Files and folders are sorted by their names, in alphabetical order. Files are displayed before folders. // - type: Files and folders are sorted by their extensions, in alphabetical order. Folders are displayed before files. // - modified: Files and folders are sorted by last modified date, in descending order. Folders are displayed before files. "explorer.sortOrder": "default", // Controls the positioning of the actionbar on rows in the search view. // - auto: Position the actionbar to the right when the search view is narrow, and immediately after the content when the search view is wide. // - right: Always position the actionbar to the right. "search.actionsPosition": "auto", // Controls whether the search results will be collapsed or expanded. // - auto: Files with less than 10 results are expanded. Others are collapsed. // - alwaysCollapse // - alwaysExpand "search.collapseResults": "auto", // Configure glob patterns for excluding files and folders in searches. Inherits all glob patterns from the `files.exclude` setting. Read more about glob patterns [here](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options). "search.exclude": { "**/node_modules": true, "**/bower_components": true }, // Controls whether to follow symlinks while searching. "search.followSymlinks": true, // Controls whether the search will be shown as a view in the sidebar or as a panel in the panel area for more horizontal space. "search.location": "sidebar", // When enabled, the searchService process will be kept alive instead of being shut down after an hour of inactivity. This will keep the file search cache in memory. "search.maintainFileSearchCache": false, // Whether to include results from recently opened files in the file results for Quick Open. "search.quickOpen.includeHistory": true, // Whether to include results from a global symbol search in the file results for Quick Open. "search.quickOpen.includeSymbols": false, // Whether to run search in the extension host. Requires a restart to take effect. "search.runInExtensionHost": false, // Controls whether to show line numbers for search results. "search.showLineNumbers": false, // Search case-insensitively if the pattern is all lowercase, otherwise, search case-sensitively. "search.smartCase": false, // Controls whether to use global `.gitignore` and `.ignore` files when searching for files. "search.useGlobalIgnoreFiles": false, // Controls whether to use `.gitignore` and `.ignore` files when searching for files. "search.useIgnoreFiles": true, // Whether to use the PCRE2 regex engine in text search. This enables using some advanced regex features like lookahead and backreferences. However, not all PCRE2 features are supported - only features that are also supported by JavaScript. "search.usePCRE2": false, // Controls whether to open Replace Preview when selecting or replacing a match. "search.useReplacePreview": true, // Deprecated. Consider "search.usePCRE2" for advanced regex feature support. // This setting is deprecated and now falls back on "search.usePCRE2". "search.useRipgrep": true, // Deprecated. Use "search.runInExtensionHost" instead // Whether to run search in the extension host "searchRipgrep.enable": false, // The proxy setting to use. If not set will be taken from the http_proxy and https_proxy environment variables. "http.proxy": "", // The value to send as the 'Proxy-Authorization' header for every network request. "http.proxyAuthorization": null, // Controls whether the proxy server certificate should be verified against the list of supplied CAs. "http.proxyStrictSSL": true, // Use the proxy support for extensions. // - off: Disable proxy support for extensions. // - on: Enable proxy support for extensions. // - override: Enable proxy support for extensions, override request options. "http.proxySupport": "override", // Controls whether CA certificates should be loaded from the OS. (On Windows and macOS a reload of the window is required after turning this off.) "http.systemCertificates": true, // Controls the dispatching logic for key presses to use either `code` (recommended) or `keyCode`. "keyboard.dispatch": "code", // This setting is deprecated, please use 'update.mode' instead. // Configure whether you receive automatic updates. Requires a restart after change. The updates are fetched from a Microsoft online service. "update.channel": "default", // Enables Windows background updates. The updates are fetched from a Microsoft online service. "update.enableWindowsBackgroundUpdates": true, // Configure whether you receive automatic updates. Requires a restart after change. The updates are fetched from a Microsoft online service. // - none: Disable updates. // - manual: Disable automatic background update checks. Updates will be available if you manually check for updates. // - default: Enable automatic update checks. Code will check for updates automatically and periodically. "update.mode": "default", // Show Release Notes after an update. The Release Notes are fetched from a Microsoft online service. "update.showReleaseNotes": true, // Controls when the comments panel should open. "comments.openPanel": "openOnSessionStartWithComments", // Allow setting breakpoints in any file. "debug.allowBreakpointsEverywhere": false, // Controls the font family in the debug console. "debug.console.fontFamily": "default", // Controls the font size in pixels in the debug console. "debug.console.fontSize": 14, // Controls the line height in pixels in the debug console. Use 0 to compute the line height from the font size. "debug.console.lineHeight": 0, // Controls if the lines should wrap in the debug console. "debug.console.wordWrap": true, // Controls whether the non-debug hovers should be enabled while debugging. When enabled the hover providers will be called to provide a hover. Regular hovers will not be shown even if this setting is enabled. "debug.enableAllHovers": false, // Show variable values inline in editor while debugging. "debug.inlineValues": false, // Controls when the internal debug console should open. "debug.internalConsoleOptions": "openOnFirstSessionStart", // Controls when the debug view should open. "debug.openDebug": "openOnSessionStart", // Automatically open the explorer view at the end of a debug session. "debug.openExplorerOnEnd": false, // Controls when the debug status bar should be visible. // - never: Never show debug in status bar // - always: Always show debug in status bar // - onFirstSessionStart: Show debug in status bar only after debug was started for the first time "debug.showInStatusBar": "onFirstSessionStart", // Controls whether the debug sub-sessions are shown in the debug tool bar. When this setting is false the stop command on a sub-session will also stop the parent session. "debug.showSubSessionsInToolBar": false, // Controls the location of the debug toolbar. Either `floating` in all views, `docked` in the debug view, or `hidden`. "debug.toolBarLocation": "floating", // Global debug launch configuration. Should be used as an alternative to 'launch.json' that is shared across workspaces. "launch": { "configurations": [], "compounds": [] }, // Enable/disable autoclosing of HTML tags. "html.autoClosingTags": true, // A list of JSON file paths that define custom tags, properties and other HTML syntax constructs. Only workspace folder setting will be read. "html.experimental.customData": [], // List of tags, comma separated, where the content shouldn't be reformatted. `null` defaults to the `pre` tag. "html.format.contentUnformatted": "pre,code,textarea", // Enable/disable default HTML formatter. "html.format.enable": true, // End with a newline. "html.format.endWithNewline": false, // List of tags, comma separated, that should have an extra newline before them. `null` defaults to `"head, body, /html"`. "html.format.extraLiners": "head, body, /html", // Format and indent `{{#foo}}` and `{{/foo}}`. "html.format.indentHandlebars": false, // Indent `` and `` sections. "html.format.indentInnerHtml": false, // Maximum number of line breaks to be preserved in one chunk. Use `null` for unlimited. "html.format.maxPreserveNewLines": null, // Controls whether existing line breaks before elements should be preserved. Only works before elements, not inside tags or for text. "html.format.preserveNewLines": true, // List of tags, comma separated, that shouldn't be reformatted. `null` defaults to all tags listed at https://www.w3.org/TR/html5/dom.html#phrasing-content. "html.format.unformatted": "wbr", // Wrap attributes. // - auto: Wrap attributes only when line length is exceeded. // - force: Wrap each attribute except first. // - force-aligned: Wrap each attribute except first and keep aligned. // - force-expand-multiline: Wrap each attribute. // - aligned-multiple: Wrap when line length is exceeded, align attributes vertically. // - preserve: Preserve wrapping of attributes // - preserve-aligned: Preserve wrapping of attributes but align. "html.format.wrapAttributes": "auto", // Maximum amount of characters per line (0 = disable). "html.format.wrapLineLength": 120, // Controls whether the built-in HTML language support suggests HTML5 tags, properties and values. "html.suggest.html5": true, // Traces the communication between VS Code and the HTML language server. "html.trace.server": "off", // Controls whether the built-in HTML language support validates embedded scripts. "html.validate.scripts": true, // Controls whether the built-in HTML language support validates embedded styles. "html.validate.styles": true, // The setting `json.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`. // Enables or disables color decorators "json.colorDecorators.enable": true, // Enable/disable default JSON formatter "json.format.enable": true, // Associate schemas to JSON files in the current project "json.schemas": [], // Traces the communication between VS Code and the JSON language server. "json.trace.server": "off", // Sets how line-breaks are rendered in the markdown preview. Setting it to 'true' creates a
for every newline. "markdown.preview.breaks": false, // Double click in the markdown preview to switch to the editor. "markdown.preview.doubleClickToSwitchToEditor": true, // Controls the font family used in the markdown preview. "markdown.preview.fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', 'Ubuntu', 'Droid Sans', sans-serif", // Controls the font size in pixels used in the markdown preview. "markdown.preview.fontSize": 14, // Controls the line height used in the markdown preview. This number is relative to the font size. "markdown.preview.lineHeight": 1.6, // Enable or disable conversion of URL-like text to links in the markdown preview. "markdown.preview.linkify": true, // Mark the current editor selection in the markdown preview. "markdown.preview.markEditorSelection": true, // How should clicking on links to markdown files be handled in the preview. // - inPreview: Try to open links in the markdown preview // - inEditor: Try to open links in the editor "markdown.preview.openMarkdownLinks": "inPreview", // When a markdown preview is scrolled, update the view of the editor. "markdown.preview.scrollEditorWithPreview": true, // When a markdown editor is scrolled, update the view of the preview. "markdown.preview.scrollPreviewWithEditor": true, // This setting has been replaced by 'markdown.preview.scrollPreviewWithEditor' and no longer has any effect. // [Deprecated] Scrolls the markdown preview to reveal the currently selected line from the editor. "markdown.preview.scrollPreviewWithEditorSelection": true, // A list of URLs or local paths to CSS style sheets to use from the markdown preview. Relative paths are interpreted relative to the folder open in the explorer. If there is no open folder, they are interpreted relative to the location of the markdown file. All '\' need to be written as '\\'. "markdown.styles": [], // Enable debug logging for the markdown extension. "markdown.trace": "off", // Controls whether the built-in PHP language suggestions are enabled. The support suggests PHP globals and variables. "php.suggest.basic": true, // Enable/disable built-in PHP validation. "php.validate.enable": true, // Points to the PHP executable. "php.validate.executablePath": null, // Whether the linter is run on save or on type. "php.validate.run": "onSave", // Enable/disable automatic closing of JSX tags. Requires using TypeScript 3.0 or newer in the workspace. "javascript.autoClosingTags": true, // Enable/disable default JavaScript formatter. "javascript.format.enable": true, // Defines space handling after a comma delimiter. "javascript.format.insertSpaceAfterCommaDelimiter": true, // Defines space handling after the constructor keyword. Requires using TypeScript 2.3.0 or newer in the workspace. "javascript.format.insertSpaceAfterConstructor": false, // Defines space handling after function keyword for anonymous functions. "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": true, // Defines space handling after keywords in a control flow statement. "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": true, // Defines space handling after opening and before closing JSX expression braces. "javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false, // Defines space handling after opening and before closing non-empty braces. Requires using TypeScript 2.3.0 or newer in the workspace. "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true, // Defines space handling after opening and before closing non-empty brackets. "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false, // Defines space handling after opening and before closing non-empty parenthesis. "javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false, // Defines space handling after opening and before closing template string braces. "javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false, // Defines space handling after a semicolon in a for statement. "javascript.format.insertSpaceAfterSemicolonInForStatements": true, // Defines space handling after a binary operator. "javascript.format.insertSpaceBeforeAndAfterBinaryOperators": true, // Defines space handling before function argument parentheses. "javascript.format.insertSpaceBeforeFunctionParenthesis": false, // Defines whether an open brace is put onto a new line for control blocks or not. "javascript.format.placeOpenBraceOnNewLineForControlBlocks": false, // Defines whether an open brace is put onto a new line for functions or not. "javascript.format.placeOpenBraceOnNewLineForFunctions": false, // Enable/disable semantic checking of JavaScript files. Existing jsconfig.json or tsconfig.json files override this setting. Requires using TypeScript 2.3.1 or newer in the workspace. "javascript.implicitProjectConfig.checkJs": false, // Enable/disable `experimentalDecorators` for JavaScript files that are not part of a project. Existing jsconfig.json or tsconfig.json files override this setting. Requires using TypeScript 2.3.1 or newer in the workspace. "javascript.implicitProjectConfig.experimentalDecorators": false, // Preferred path style for auto imports. // - auto: Automatically select import path style. Prefers using a relative import if `baseUrl` is configured and the relative path has fewer segments than the non-relative import. // - relative: Relative to the file location. // - non-relative: Based on the `baseUrl` configured in your `jsconfig.json` / `tsconfig.json`. "javascript.preferences.importModuleSpecifier": "auto", // Preferred quote style to use for quick fixes: `single` quotes, `double` quotes, or `auto` infer quote type from existing imports. Requires using TypeScript 2.9 or newer in the workspace. "javascript.preferences.quoteStyle": "auto", // Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace. "javascript.preferences.renameShorthandProperties": true, // Enable/disable references CodeLens in JavaScript files. "javascript.referencesCodeLens.enabled": false, // Enable/disable auto import suggestions. Requires using TypeScript 2.6.1 or newer in the workspace. "javascript.suggest.autoImports": true, // Complete functions with their parameter signature. "javascript.suggest.completeFunctionCalls": false, // Enable/disable suggestion to complete JSDoc comments. "javascript.suggest.completeJSDocs": true, // Enabled/disable autocomplete suggestions. "javascript.suggest.enabled": true, // Enable/disable including unique names from the file in JavaScript suggestions. "javascript.suggest.names": true, // Enable/disable suggestions for paths in import statements and require calls. "javascript.suggest.paths": true, // Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace. "javascript.suggestionActions.enabled": true, // Enable/disable automatic updating of import paths when you rename or move a file in VS Code. Requires using TypeScript 2.9 or newer in the workspace. // - prompt: Prompt on each rename. // - always: Always update paths automatically. // - never: Never rename paths and don't prompt. "javascript.updateImportsOnFileMove.enabled": "prompt", // Enable/disable JavaScript validation. "javascript.validate.enable": true, // Enable/disable automatic closing of JSX tags. Requires using TypeScript 3.0 or newer in the workspace. "typescript.autoClosingTags": true, // Check if NPM is installed for Automatic Type Acquisition. "typescript.check.npmIsInstalled": true, // Disables automatic type acquisition. Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries. "typescript.disableAutomaticTypeAcquisition": false, // Enable/disable default TypeScript formatter. "typescript.format.enable": true, // Defines space handling after a comma delimiter. "typescript.format.insertSpaceAfterCommaDelimiter": true, // Defines space handling after the constructor keyword. Requires using TypeScript 2.3.0 or newer in the workspace. "typescript.format.insertSpaceAfterConstructor": false, // Defines space handling after function keyword for anonymous functions. "typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": true, // Defines space handling after keywords in a control flow statement. "typescript.format.insertSpaceAfterKeywordsInControlFlowStatements": true, // Defines space handling after opening and before closing JSX expression braces. "typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces": false, // Defines space handling after opening and before closing non-empty braces. Requires using TypeScript 2.3.0 or newer in the workspace. "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true, // Defines space handling after opening and before closing non-empty brackets. "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false, // Defines space handling after opening and before closing non-empty parenthesis. "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false, // Defines space handling after opening and before closing template string braces. "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": false, // Defines space handling after a semicolon in a for statement. "typescript.format.insertSpaceAfterSemicolonInForStatements": true, // Defines space handling after type assertions in TypeScript. Requires using TypeScript 2.4 or newer in the workspace. "typescript.format.insertSpaceAfterTypeAssertion": false, // Defines space handling after a binary operator. "typescript.format.insertSpaceBeforeAndAfterBinaryOperators": true, // Defines space handling before function argument parentheses. "typescript.format.insertSpaceBeforeFunctionParenthesis": false, // Defines whether an open brace is put onto a new line for control blocks or not. "typescript.format.placeOpenBraceOnNewLineForControlBlocks": false, // Defines whether an open brace is put onto a new line for functions or not. "typescript.format.placeOpenBraceOnNewLineForFunctions": false, // Enable/disable implementations CodeLens. This CodeLens shows the implementers of an interface. "typescript.implementationsCodeLens.enabled": false, // Sets the locale used to report JavaScript and TypeScript errors. Requires using TypeScript 2.6.0 or newer in the workspace. Default of `null` uses VS Code's locale. "typescript.locale": null, // Specifies the path to the NPM executable used for Automatic Type Acquisition. Requires using TypeScript 2.3.4 or newer in the workspace. "typescript.npm": null, // Preferred path style for auto imports. // - auto: Automatically select import path style. Prefers using a relative import if `baseUrl` is configured and the relative path has fewer segments than the non-relative import. // - relative: Relative to the file location. // - non-relative: Based on the `baseUrl` configured in your `jsconfig.json` / `tsconfig.json`. "typescript.preferences.importModuleSpecifier": "auto", // Preferred quote style to use for quick fixes: `single` quotes, `double` quotes, or `auto` infer quote type from existing imports. Requires using TypeScript 2.9 or newer in the workspace. "typescript.preferences.quoteStyle": "auto", // Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace. "typescript.preferences.renameShorthandProperties": true, // Enable/disable references CodeLens in TypeScript files. "typescript.referencesCodeLens.enabled": false, // Report style checks as warnings. "typescript.reportStyleChecksAsWarnings": true, // Enable/disable auto import suggestions. Requires using TypeScript 2.6.1 or newer in the workspace. "typescript.suggest.autoImports": true, // Complete functions with their parameter signature. "typescript.suggest.completeFunctionCalls": false, // Enable/disable suggestion to complete JSDoc comments. "typescript.suggest.completeJSDocs": true, // Enabled/disable autocomplete suggestions. "typescript.suggest.enabled": true, // Enable/disable suggestions for paths in import statements and require calls. "typescript.suggest.paths": true, // Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace. "typescript.suggestionActions.enabled": true, // Enabled/disable occasional surveys that help us improve VS Code's JavaScript and TypeScript support. "typescript.surveys.enabled": true, // Controls auto detection of tsc tasks. // - on: Create both build and watch tasks. // - off: Disable this feature. // - build: Only create single run compile tasks. // - watch: Only create compile and watch tasks. "typescript.tsc.autoDetect": "on", // Specifies the folder path containing the tsserver and lib*.d.ts files to use. "typescript.tsdk": null, // Enables logging of the TS server to a file. This log can be used to diagnose TS Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project. "typescript.tsserver.log": "off", // Additional paths to discover Typescript Language Service plugins. Requires using TypeScript 2.3.0 or newer in the workspace. "typescript.tsserver.pluginPaths": [], // Enables tracing of messages sent to the TS server. This trace can be used to diagnose TS Server issues. The trace may contain file paths, source code, and other potentially sensitive information from your project. "typescript.tsserver.trace": "off", // Enable/disable automatic updating of import paths when you rename or move a file in VS Code. Requires using TypeScript 2.9 or newer in the workspace. // - prompt: Prompt on each rename. // - always: Always update paths automatically. // - never: Never rename paths and don't prompt. "typescript.updateImportsOnFileMove.enabled": "prompt", // Enable/disable TypeScript validation. "typescript.validate.enable": true, // By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior. "css.completion.triggerPropertyValueCompletion": true, // A list of JSON file paths that define custom CSS data that loads custom properties, at directives, pseudo classes / elements. "css.experimental.customData": [], // Invalid number of parameters. "css.lint.argumentsInColorFunction": "error", // Do not use `width` or `height` when using `padding` or `border`. "css.lint.boxModel": "ignore", // When using a vendor-specific prefix make sure to also include all other vendor-specific properties. "css.lint.compatibleVendorPrefixes": "ignore", // Do not use duplicate style definitions. "css.lint.duplicateProperties": "ignore", // Do not use empty rulesets. "css.lint.emptyRules": "warning", // Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes. "css.lint.float": "ignore", // `@font-face` rule must define `src` and `font-family` properties. "css.lint.fontFaceProperties": "warning", // Hex colors must consist of three or six hex numbers. "css.lint.hexColorLength": "error", // Selectors should not contain IDs because these rules are too tightly coupled with the HTML. "css.lint.idSelector": "ignore", // IE hacks are only necessary when supporting IE7 and older. "css.lint.ieHack": "ignore", // Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored. "css.lint.important": "ignore", // Import statements do not load in parallel. "css.lint.importStatement": "ignore", // Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect. "css.lint.propertyIgnoredDueToDisplay": "warning", // The universal selector (`*`) is known to be slow. "css.lint.universalSelector": "ignore", // Unknown at-rule. "css.lint.unknownAtRules": "warning", // Unknown property. "css.lint.unknownProperties": "warning", // Unknown vendor specific property. "css.lint.unknownVendorSpecificProperties": "ignore", // A list of properties that are not validated against the `unknownProperties` rule. "css.lint.validProperties": [], // When using a vendor-specific prefix, also include the standard property. "css.lint.vendorPrefix": "warning", // No unit for zero needed. "css.lint.zeroUnits": "ignore", // Traces the communication between VS Code and the CSS language server. "css.trace.server": "off", // Enables or disables all validations. "css.validate": true, // Invalid number of parameters. "less.lint.argumentsInColorFunction": "error", // Do not use `width` or `height` when using `padding` or `border`. "less.lint.boxModel": "ignore", // When using a vendor-specific prefix make sure to also include all other vendor-specific properties. "less.lint.compatibleVendorPrefixes": "ignore", // Do not use duplicate style definitions. "less.lint.duplicateProperties": "ignore", // Do not use empty rulesets. "less.lint.emptyRules": "warning", // Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes. "less.lint.float": "ignore", // `@font-face` rule must define `src` and `font-family` properties. "less.lint.fontFaceProperties": "warning", // Hex colors must consist of three or six hex numbers. "less.lint.hexColorLength": "error", // Selectors should not contain IDs because these rules are too tightly coupled with the HTML. "less.lint.idSelector": "ignore", // IE hacks are only necessary when supporting IE7 and older. "less.lint.ieHack": "ignore", // Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored. "less.lint.important": "ignore", // Import statements do not load in parallel. "less.lint.importStatement": "ignore", // Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect. "less.lint.propertyIgnoredDueToDisplay": "warning", // The universal selector (`*`) is known to be slow. "less.lint.universalSelector": "ignore", // Unknown property. "less.lint.unknownProperties": "warning", // Unknown vendor specific property. "less.lint.unknownVendorSpecificProperties": "ignore", // A list of properties that are not validated against the `unknownProperties` rule. "less.lint.validProperties": [], // When using a vendor-specific prefix, also include the standard property. "less.lint.vendorPrefix": "warning", // No unit for zero needed. "less.lint.zeroUnits": "ignore", // Enables or disables all validations. "less.validate": true, // Invalid number of parameters. "scss.lint.argumentsInColorFunction": "error", // Do not use `width` or `height` when using `padding` or `border`. "scss.lint.boxModel": "ignore", // When using a vendor-specific prefix make sure to also include all other vendor-specific properties. "scss.lint.compatibleVendorPrefixes": "ignore", // Do not use duplicate style definitions. "scss.lint.duplicateProperties": "ignore", // Do not use empty rulesets. "scss.lint.emptyRules": "warning", // Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes. "scss.lint.float": "ignore", // `@font-face` rule must define `src` and `font-family` properties. "scss.lint.fontFaceProperties": "warning", // Hex colors must consist of three or six hex numbers. "scss.lint.hexColorLength": "error", // Selectors should not contain IDs because these rules are too tightly coupled with the HTML. "scss.lint.idSelector": "ignore", // IE hacks are only necessary when supporting IE7 and older. "scss.lint.ieHack": "ignore", // Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored. "scss.lint.important": "ignore", // Import statements do not load in parallel. "scss.lint.importStatement": "ignore", // Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect. "scss.lint.propertyIgnoredDueToDisplay": "warning", // The universal selector (`*`) is known to be slow. "scss.lint.universalSelector": "ignore", // Unknown property. "scss.lint.unknownProperties": "warning", // Unknown vendor specific property. "scss.lint.unknownVendorSpecificProperties": "ignore", // A list of properties that are not validated against the `unknownProperties` rule. "scss.lint.validProperties": [], // When using a vendor-specific prefix, also include the standard property. "scss.lint.vendorPrefix": "warning", // No unit for zero needed. "scss.lint.zeroUnits": "ignore", // Enables or disables all validations. "scss.validate": true, // When enabled, automatically checks extensions for updates. If an extension has an update, it is marked as outdated in the Extensions view. The updates are fetched from a Microsoft online service. "extensions.autoCheckUpdates": true, // When enabled, automatically installs updates for extensions. The updates are fetched from a Microsoft online service. "extensions.autoUpdate": true, // When enabled, editors with extension details will be automatically closed upon navigating away from the Extensions View. "extensions.closeExtensionDetailsOnViewChange": false, // When enabled, the notifications for extension recommendations will not be shown. "extensions.ignoreRecommendations": false, // When enabled, recommendations will not be fetched or shown unless specifically requested by the user. Some recommendations are fetched from a Microsoft online service. "extensions.showRecommendationsOnlyOnDemand": false, // Customizes what kind of terminal to launch. // - integrated: Use VS Code's integrated terminal. // - external: Use the configured external terminal. "terminal.explorerKind": "integrated", // Customizes which terminal to run on Linux. "terminal.external.linuxExec": "x-terminal-emulator", // Customizes which terminal application to run on macOS. "terminal.external.osxExec": "Terminal.app", // Customizes which terminal to run on Windows. "terminal.external.windowsExec": "C:\\Windows\\System32\\cmd.exe", // A set of command IDs whose keybindings will not be sent to the shell and instead always be handled by Code. This allows the use of keybindings that would normally be consumed by the shell to act the same as when the terminal is not focused, for example ctrl+p to launch Quick Open. // Default Skipped Commands: // // - editor.action.toggleTabFocusMode // - workbench.action.debug.continue // - workbench.action.debug.pause // - workbench.action.debug.restart // - workbench.action.debug.run // - workbench.action.debug.start // - workbench.action.debug.stepInto // - workbench.action.debug.stepOut // - workbench.action.debug.stepOver // - workbench.action.debug.stop // - workbench.action.firstEditorInGroup // - workbench.action.focusActiveEditorGroup // - workbench.action.focusEighthEditorGroup // - workbench.action.focusFifthEditorGroup // - workbench.action.focusFirstEditorGroup // - workbench.action.focusFourthEditorGroup // - workbench.action.focusLastEditorGroup // - workbench.action.focusSecondEditorGroup // - workbench.action.focusSeventhEditorGroup // - workbench.action.focusSixthEditorGroup // - workbench.action.focusThirdEditorGroup // - workbench.action.lastEditorInGroup // - workbench.action.navigateDown // - workbench.action.navigateLeft // - workbench.action.navigateRight // - workbench.action.navigateUp // - workbench.action.nextPanelView // - workbench.action.nextSideBarView // - workbench.action.openNextRecentlyUsedEditorInGroup // - workbench.action.openPreviousRecentlyUsedEditorInGroup // - workbench.action.previousPanelView // - workbench.action.previousSideBarView // - workbench.action.quickOpen // - workbench.action.quickOpenPreviousEditor // - workbench.action.quickOpenView // - workbench.action.showCommands // - workbench.action.tasks.build // - workbench.action.tasks.reRunTask // - workbench.action.tasks.restartTask // - workbench.action.tasks.runTask // - workbench.action.tasks.showLog // - workbench.action.tasks.showTasks // - workbench.action.tasks.terminate // - workbench.action.tasks.test // - workbench.action.terminal.clear // - workbench.action.terminal.clearSelection // - workbench.action.terminal.copySelection // - workbench.action.terminal.deleteToLineStart // - workbench.action.terminal.deleteWordLeft // - workbench.action.terminal.deleteWordRight // - workbench.action.terminal.findNextTerminalFocus // - workbench.action.terminal.findPreviousTerminalFocus // - workbench.action.terminal.focus // - workbench.action.terminal.focusAtIndex1 // - workbench.action.terminal.focusAtIndex2 // - workbench.action.terminal.focusAtIndex3 // - workbench.action.terminal.focusAtIndex4 // - workbench.action.terminal.focusAtIndex5 // - workbench.action.terminal.focusAtIndex6 // - workbench.action.terminal.focusAtIndex7 // - workbench.action.terminal.focusAtIndex8 // - workbench.action.terminal.focusAtIndex9 // - workbench.action.terminal.focusFindWidget // - workbench.action.terminal.focusNext // - workbench.action.terminal.focusNextPane // - workbench.action.terminal.focusPrevious // - workbench.action.terminal.focusPreviousPane // - workbench.action.terminal.hideFindWidget // - workbench.action.terminal.kill // - workbench.action.terminal.moveToLineEnd // - workbench.action.terminal.moveToLineStart // - workbench.action.terminal.new // - workbench.action.terminal.newInActiveWorkspace // - workbench.action.terminal.paste // - workbench.action.terminal.resizePaneDown // - workbench.action.terminal.resizePaneLeft // - workbench.action.terminal.resizePaneRight // - workbench.action.terminal.resizePaneUp // - workbench.action.terminal.runActiveFile // - workbench.action.terminal.runSelectedText // - workbench.action.terminal.scrollDown // - workbench.action.terminal.scrollDownPage // - workbench.action.terminal.scrollToBottom // - workbench.action.terminal.scrollToNextCommand // - workbench.action.terminal.scrollToPreviousCommand // - workbench.action.terminal.scrollToTop // - workbench.action.terminal.scrollUp // - workbench.action.terminal.scrollUpPage // - workbench.action.terminal.selectAll // - workbench.action.terminal.selectToNextCommand // - workbench.action.terminal.selectToNextLine // - workbench.action.terminal.selectToPreviousCommand // - workbench.action.terminal.selectToPreviousLine // - workbench.action.terminal.sendSequence // - workbench.action.terminal.split // - workbench.action.terminal.splitInActiveWorkspace // - workbench.action.terminal.toggleFindCaseSensitiveTerminalFocus // - workbench.action.terminal.toggleFindRegexTerminalFocus // - workbench.action.terminal.toggleFindWholeWordTerminalFocus // - workbench.action.terminal.toggleTerminal // - workbench.action.toggleFullScreen // - workbench.action.toggleMaximizedPanel // - workbench.action.togglePanel "terminal.integrated.commandsToSkipShell": [], // Controls whether to confirm on exit if there are active terminal sessions. "terminal.integrated.confirmOnExit": false, // Controls whether text selected in the terminal will be copied to the clipboard. "terminal.integrated.copyOnSelection": false, // Controls whether the terminal cursor blinks. "terminal.integrated.cursorBlinking": false, // Controls the style of terminal cursor. "terminal.integrated.cursorStyle": "block", // An explicit start path where the terminal will be launched, this is used as the current working directory (cwd) for the shell process. This may be particularly useful in workspace settings if the root directory is not a convenient cwd. "terminal.integrated.cwd": "", // Controls whether bold text in the terminal will always use the "bright" ANSI color variant. "terminal.integrated.drawBoldTextInBrightColors": true, // Controls whether the terminal bell is enabled. "terminal.integrated.enableBell": false, // Object with environment variables that will be added to the VS Code process to be used by the terminal on Linux. Set to `null` to delete the environment variable. "terminal.integrated.env.linux": {}, // Object with environment variables that will be added to the VS Code process to be used by the terminal on macOS. Set to `null` to delete the environment variable. "terminal.integrated.env.osx": {}, // Object with environment variables that will be added to the VS Code process to be used by the terminal on Windows. Set to `null` to delete the environment variable. "terminal.integrated.env.windows": {}, // An experimental setting that will refresh the terminal renderer when the system is resumed. "terminal.integrated.experimentalRefreshOnResume": false, // Controls the font family of the terminal, this defaults to `editor.fontFamily`'s value. "terminal.integrated.fontFamily": "", // Controls the font size in pixels of the terminal. "terminal.integrated.fontSize": 14, // The font weight to use within the terminal for non-bold text. "terminal.integrated.fontWeight": "normal", // The font weight to use within the terminal for bold text. "terminal.integrated.fontWeightBold": "bold", // Whether new shells should inherit their environment from VS Code. This is not supported on Windows. "terminal.integrated.inheritEnv": true, // Controls the letter spacing of the terminal, this is an integer value which represents the amount of additional pixels to add between characters. "terminal.integrated.letterSpacing": 0, // Controls the line height of the terminal, this number is multiplied by the terminal font size to get the actual line-height in pixels. "terminal.integrated.lineHeight": 1, // Controls whether to force selection when using Option+click on macOS. This will force a regular (line) selection and disallow the use of column selection mode. This enables copying and pasting using the regular terminal selection, for example, when mouse mode is enabled in tmux. "terminal.integrated.macOptionClickForcesSelection": false, // Controls whether to treat the option key as the meta key in the terminal on macOS. "terminal.integrated.macOptionIsMeta": false, // Controls how the terminal is rendered. // - auto: Let VS Code guess which renderer to use. // - canvas: Use the standard GPU/canvas-based renderer // - dom: Use the fallback DOM-based renderer. "terminal.integrated.rendererType": "auto", // Controls how terminal reacts to right click. // - default: Show the context menu. // - copyPaste: Copy when there is a selection, otherwise paste. // - selectWord: Select the word under the cursor and show the context menu. "terminal.integrated.rightClickBehavior": "default", // Controls the maximum amount of lines the terminal keeps in its buffer. "terminal.integrated.scrollback": 1000, // Controls whether locale variables are set at startup of the terminal. "terminal.integrated.setLocaleVariables": true, // The path of the shell that the terminal uses on Linux (default: /bin/bash). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shell.linux": null, // The path of the shell that the terminal uses on macOS (default: /bin/bash). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shell.osx": null, // The path of the shell that the terminal uses on Windows (default: cmd.exe). [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shell.windows": null, // The command line arguments to use when on the Linux terminal. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shellArgs.linux": [], // The command line arguments to use when on the macOS terminal. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shellArgs.osx": [ "-l" ], // The command line arguments to use when on the Windows terminal. [Read more about configuring the shell](https://code.visualstudio.com/docs/editor/integrated-terminal#_configuration). "terminal.integrated.shellArgs.windows": [], // Controls whether to show the alert "The terminal process terminated with exit code" when exit code is non-zero. "terminal.integrated.showExitAlert": true, // Controls the working directory a split terminal starts with. // - workspaceRoot: A new split terminal will use the workspace root as the working directory. In a multi-root workspace a choice for which root folder to use is offered. // - initial: A new split terminal will use the working directory that the parent terminal started with. // - inherited: On macOS and Linux, a new split terminal will use the working directory of the parent terminal. On Windows, this behaves the same as initial. "terminal.integrated.splitCwd": "inherited", // Whether to use ConPTY for Windows terminal process communication (requires Windows 10 build number 18309+). Winpty will be used if this is false. "terminal.integrated.windowsEnableConpty": true, // Controls whether Problems view should automatically reveal files when opening them. "problems.autoReveal": true, // Show Errors & Warnings on files and folder. "problems.decorations.enabled": true, // Enable/disable navigation breadcrumbs. "breadcrumbs.enabled": true, // Controls whether and how file paths are shown in the breadcrumbs view. // - on: Show the file path in the breadcrumbs view. // - off: Do not show the file path in the breadcrumbs view. // - last: Only show the last element of the file path in the breadcrumbs view. "breadcrumbs.filePath": "on", // Controls whether and how symbols are shown in the breadcrumbs view. // - on: Show all symbols in the breadcrumbs view. // - off: Do not show symbols in the breadcrumbs view. // - last: Only show the current symbol in the breadcrumbs view. "breadcrumbs.symbolPath": "on", // Controls how symbols are sorted in the breadcrumbs outline view. // - position: Show symbol outline in file position order. // - name: Show symbol outline in alphabetical order. // - type: Show symbol outline in symbol type order. "breadcrumbs.symbolSortOrder": "position", // Enable crash reports to be sent to a Microsoft online service. // This option requires restart to take effect. "telemetry.enableCrashReporter": true, // Enable usage data and errors to be sent to a Microsoft online service. "telemetry.enableTelemetry": true, // Render Outline Elements with Icons. "outline.icons": true, // Use badges for Errors & Warnings. "outline.problems.badges": true, // Use colors for Errors & Warnings. "outline.problems.colors": true, // Show Errors & Warnings on Outline Elements. "outline.problems.enabled": true, // Controls whether force push (with or without lease) is enabled. "git.allowForcePush": false, // Always show the Staged Changes resource group. "git.alwaysShowStagedChangesResourceGroup": false, // Controls the signoff flag for all commits. "git.alwaysSignOff": false, // When enabled, commits will automatically be fetched from the default remote of the current Git repository. "git.autofetch": false, // Duration in seconds between each automatic git fetch, when `git.autofetch` is enabled. "git.autofetchPeriod": 180, // Whether auto refreshing is enabled. "git.autorefresh": true, // Configures when repositories should be automatically detected. // - true: Scan for both subfolders of the current opened folder and parent folders of open files. // - false: Disable automatic repository scanning. // - subFolders: Scan for subfolders of the currently opened folder. // - openEditors: Scan for parent folders of open files. "git.autoRepositoryDetection": true, // Stash any changes before pulling and restore them after successful pull. "git.autoStash": false, // A regular expression to validate new branch names. "git.branchValidationRegex": "", // The character to replace whitespace in new branch names. "git.branchWhitespaceChar": "-", // Controls what type of branches are listed when running `Checkout to...`. // - all: Show all references. // - local: Show only local branches. // - tags: Show only tags. // - remote: Show only remote branches. "git.checkoutType": "all", // Always confirm the creation of empty commits. "git.confirmEmptyCommits": true, // Controls whether to ask for confirmation before force-pushing. "git.confirmForcePush": true, // Confirm before synchronizing git repositories. "git.confirmSync": true, // Controls the git badge counter. // - all: Count all changes. // - tracked: Count only tracked changes. // - off: Turn off counter. "git.countBadge": "all", // Controls whether Git contributes colors and badges to the explorer and the open editors view. "git.decorations.enabled": true, // The default location to clone a git repository. "git.defaultCloneDirectory": null, // Controls whether to automatically detect git submodules. "git.detectSubmodules": true, // Controls the limit of git submodules detected. "git.detectSubmodulesLimit": 10, // Enables commit signing with GPG. "git.enableCommitSigning": false, // Whether git is enabled. "git.enabled": true, // Commit all changes when there are no staged changes. "git.enableSmartCommit": false, // Fetch all branches when pulling or just the current one. "git.fetchOnPull": false, // List of git repositories to ignore. "git.ignoredRepositories": [], // Ignores the legacy Git warning. "git.ignoreLegacyWarning": false, // Ignores the warning when there are too many changes in a repository. "git.ignoreLimitWarning": false, // Ignores the warning when Git is missing. "git.ignoreMissingGitWarning": false, // Controls when to show commit message input validation. "git.inputValidation": "warn", // Controls the commit message length threshold for showing a warning. "git.inputValidationLength": 72, // Controls the commit message subject length threshold for showing a warning. Unset it to inherit the value of `config.inputValidationLength`. "git.inputValidationSubjectLength": 50, // Controls whether the diff editor should be opened when clicking a change. Otherwise the regular editor will be opened. "git.openDiffOnClick": true, // Path and filename of the git executable, e.g. `C:\Program Files\Git\bin\git.exe` (Windows). "git.path": null, // Runs a git command after a successful commit. // - none: Don't run any command after a commit. // - push: Run 'Git Push' after a successful commit. // - sync: Run 'Git Sync' after a successful commit. "git.postCommitCommand": "none", // Controls whether Git should check for unsaved files before committing. "git.promptToSaveFilesBeforeCommit": true, // Fetch all tags when pulling. "git.pullTags": true, // Force git to use rebase when running the sync command. "git.rebaseWhenSync": false, // List of paths to search for git repositories in. "git.scanRepositories": [], // Controls whether to show an inline Open File action in the Git changes view. "git.showInlineOpenFileAction": true, // Controls whether git actions should show progress. "git.showProgress": true, // Controls whether to show a notification when a push is successful. "git.showPushSuccessNotification": false, // Controls whether force pushing uses the safer force-with-lease variant. "git.useForcePushWithLease": true, // Configure editor settings to be overridden for [git-commit] language. "[git-commit]": { "editor.rulers": [ 72 ] }, // Configure editor settings to be overridden for [go] language. "[go]": { "editor.insertSpaces": false }, // Configure editor settings to be overridden for [json] language. "[json]": { "editor.quickSuggestions": { "strings": true } }, // Configure editor settings to be overridden for [makefile] language. "[makefile]": { "editor.insertSpaces": false }, // Configure editor settings to be overridden for [markdown] language. "[markdown]": { "editor.wordWrap": "on", "editor.quickSuggestions": false }, // Configure editor settings to be overridden for [yaml] language. "[yaml]": { "editor.insertSpaces": true, "editor.tabSize": 2, "editor.autoIndent": false }, // Override the kind of an extension. `ui` extensions are installed and run on the local machine while `workspace` extensions are run on the remote. By overriding an extension's default kind using this setting, you specify if that extension should be installed and enabled locally or remotely. "remote.extensionKind": { "pub.name": "ui" }, // Controls whether npm scripts should be automatically detected. "npm.autoDetect": "on", // Enable an explorer view for npm scripts. "npm.enableScriptExplorer": false, // Configure glob patterns for folders that should be excluded from automatic script detection. "npm.exclude": "", // Fetch data from https://registry.npmjs/org and https://registry.bower.io to provide auto-completion and information on hover features on npm dependencies. "npm.fetchOnlinePackageInfo": true, // The package manager used to run scripts. "npm.packageManager": "npm", // Run npm commands with the `--silent` option. "npm.runSilent": false, // The default click action used in the scripts explorer: `open` or `run`, the default is `open`. "npm.scriptExplorerAction": "open", // Controls whether 'Peek References' or 'Find References' is invoked when selecting code lens references // - peek: Show references in peek editor. // - view: Show references in separate view. "references.preferredLocation": "peek", // Whether to automatically navigate to the next merge conflict after resolving a merge conflict. "merge-conflict.autoNavigateNextConflict.enabled": false, // Create a Code Lens for merge conflict blocks within editor. "merge-conflict.codeLens.enabled": true, // Create decorators for merge conflict blocks within editor. "merge-conflict.decorators.enabled": true, // Controls where the diff view should be opened when comparing changes in merge conflicts. // - Current: Open the diff view in the current editor group. // - Beside: Open the diff view next to the current editor group. // - Below: Open the diff view below the current editor group. "merge-conflict.diffViewPosition": "Current", // Automatically attach node debugger when node.js was launched in debug mode from integrated terminal. // - disabled: Auto attach is disabled and not shown in status bar. // - on: Auto attach is active. // - off: Auto attach is inactive. "debug.node.autoAttach": "disabled", // An array of languages where Emmet abbreviations should not be expanded. "emmet.excludeLanguages": [ "markdown" ], // Path to a folder containing Emmet profiles and snippets. "emmet.extensionsPath": null, // Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language. // E.g.: `{"vue-html": "html", "javascript": "javascriptreact"}` "emmet.includeLanguages": {}, // When set to `false`, the whole file is parsed to determine if current position is valid for expanding Emmet abbreviations. When set to `true`, only the content around the current position in css/scss/less files is parsed. "emmet.optimizeStylesheetParsing": true, // Preferences used to modify behavior of some actions and resolvers of Emmet. "emmet.preferences": {}, // Shows possible Emmet abbreviations as suggestions. Not applicable in stylesheets or when emmet.showExpandedAbbreviation is set to `"never"`. "emmet.showAbbreviationSuggestions": true, // Shows expanded Emmet abbreviations as suggestions. // The option `"inMarkupAndStylesheetFilesOnly"` applies to html, haml, jade, slim, xml, xsl, css, scss, sass, less and stylus. // The option `"always"` applies to all parts of the file regardless of markup/css. "emmet.showExpandedAbbreviation": "always", // If `true`, then Emmet suggestions will show up as snippets allowing you to order them as per `editor.snippetSuggestions` setting. "emmet.showSuggestionsAsSnippets": false, // Define profile for specified syntax or use your own profile with specific rules. "emmet.syntaxProfiles": {}, // When enabled, Emmet abbreviations are expanded when pressing TAB. "emmet.triggerExpansionOnTab": false, // Variables to be used in Emmet snippets "emmet.variables": {}, // Controls whether auto detection of Jake tasks is on or off. Default is on. "jake.autoDetect": "on", // Controls whether auto detection of Grunt tasks is on or off. Default is on. "grunt.autoDetect": "on", // Controls whether auto detection of Gulp tasks is on or off. Default is on. "gulp.autoDetect": "on", } ```
joaomoreno commented 5 years ago

Can you also show me a GIF of

diff now updates after committing (was broken before)

Sorry for asking so much detail. I'm finding it hard to understand what could go wrong...

Rochet2 commented 5 years ago

Here is a gif where I edit the file, refresh source control, click on the file in source control to view the diff, stage the changes, click on the staged file (since the diff was updated to not show the changes anymore), commit the file (and again the diff is updated to not show the old changes anymore). So that is working as expected. Peek 2019-06-20 13-31

In https://github.com/microsoft/vscode/issues/74889#issuecomment-499811465 you can see the diff not updating. So the updating was fixed.

And to be clear, it was fixed between 1.35.0-insider 553cfb2 and 1.36.0-insider 11b88a3

joaomoreno commented 5 years ago

Alright, pushed https://github.com/microsoft/vscode/commit/997e91421e9490a11ff3b69dd285b2c175efbe46

Once you get tomorrow's build, which contains this commit, let's do the following:

1) Run Developer: Set Log Level... and change it to Debug 2) Run Git: Show Git Output 3) Repeat the test

The code will start printing out file events to the output channel. I wanna know if you get them at all.

Rochet2 commented 5 years ago

The log after opening VS code:

Looking for git in: git
Using git 2.17.1 from git
> git rev-parse --show-toplevel
> git rev-parse --git-dir
> git config --get commit.template
Open repository: /home/local/rimi/Documents/oodikone/repro
> git rev-parse --show-toplevel
> git status -z -u
> git rev-parse --show-toplevel
> git rev-parse --show-toplevel
> git symbolic-ref --short HEAD
> git rev-parse --show-toplevel
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose

Same log persists as I set the loglevel to debug. As I add files to the folder, I get no additional log. The files show up in Explorer, but not in Source Control. When I edit a file (new one or already tracked by git .. any file) then there is still no additional log. As I save changes there is still no additional log. If I then delete any or all of the files (tracked, not tracked, saved, not saved) there is no new log generated.

Here is a full log from when I reproduce the steps from https://github.com/microsoft/vscode/issues/74889#issuecomment-503973858

``` Looking for git in: git Using git 2.17.1 from git > git rev-parse --show-toplevel > git rev-parse --git-dir > git config --get commit.template Open repository: /home/local/rimi/Documents/oodikone/repro > git rev-parse --show-toplevel > git status -z -u > git rev-parse --show-toplevel > git rev-parse --show-toplevel > git symbolic-ref --short HEAD > git rev-parse --show-toplevel > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose --- Edited and saved test.txt --- Pressed Refresh in Source Control > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose > git check-ignore -v -z --stdin --- Clicked on the file in Source Control > git ls-tree -l HEAD -- /home/local/rimi/Documents/oodikone/repro/test.txt > git show fffec8d17b2f7b7fcede9c682abaac6695ea605e > git show HEAD:test.txt > git check-ignore -v -z --stdin --- Clicked to stage the changed file in Source Control git.stage 1 git.stage.scmResources 1 > git add -A -- /home/local/rimi/Documents/oodikone/repro/test.txt [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/index > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose > git rev-parse --show-toplevel > git show :test.txt --- Clicked on the file after staging it > git ls-tree -l HEAD -- /home/local/rimi/Documents/oodikone/repro/test.txt > git show fffec8d17b2f7b7fcede9c682abaac6695ea605e > git ls-files --stage -- /home/local/rimi/Documents/oodikone/repro/test.txt > git cat-file -s 141fc11b7bf965f6acf534082fddfad7d4e9abd4 > git show 141fc11b7bf965f6acf534082fddfad7d4e9abd4 > git show HEAD:test.txt > git show :test.txt --- Committed the file > git commit --quiet --allow-empty-message --file - [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/index [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/COMMIT_EDITMSG [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/HEAD.lock [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/HEAD.lock > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose > git config --get commit.template > git rev-parse --show-toplevel > git show HEAD:test.txt > git show :test.txt ```

Summary: nothing generated new log except doing actions in Source Control such as pressing Refresh, committing, staging ...

I tested this on

``` Version: 1.36.0-insider Commit: e80dd4f217db6e230d311a87fdf4276f740f6445 Date: 2019-06-25T05:17:18.032Z Electron: 4.2.5 Chrome: 69.0.3497.128 Node.js: 10.11.0 V8: 6.9.427.31-electron.0 OS: Linux x64 4.15.0-52-generic ```
joaomoreno commented 5 years ago

After switching to Debug level, does touch .git/index show any output?

Rochet2 commented 5 years ago

After switching to Debug level, does touch .git/index show any output?

Looking for git in: git
Using git 2.17.1 from git
> git rev-parse --show-toplevel
> git rev-parse --git-dir
> git config --get commit.template
Open repository: /home/local/rimi/Documents/oodikone/repro
> git rev-parse --show-toplevel
> git status -z -u
> git symbolic-ref --short HEAD
> git rev-parse --show-toplevel
> git rev-parse --show-toplevel
> git rev-parse --show-toplevel
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose

--- Right after executing touch .git/index
[debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/index
> git rev-parse --show-toplevel

--- After a second or two later:
> git status -z -u
> git symbolic-ref --short HEAD
> git rev-parse master
> git rev-parse --symbolic-full-name master@{u}
fatal: no upstream configured for branch 'master'
> git for-each-ref --format %(refname) %(objectname) --sort -committerdate
> git remote --verbose
joaomoreno commented 5 years ago

Alright we're getting events. Is there anything special at all about your repository? Are you using symlinks? Network shares?

Rochet2 commented 5 years ago

No. I have no symlinks or network shares in the repository. As I show in the main post, the only file in the repository is the test.txt and I only use git init, git add and git commit.

joaomoreno commented 5 years ago

Can you get other [debug] events in the log? Maybe as you touch other files inside and outside of .git.

Rochet2 commented 5 years ago

I tried touch test.txt and got nothing. Tried touch .git/index and got [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/index So no log from touching files outside of .git

EDIT: Also, as previously said in https://github.com/microsoft/vscode/issues/74889#issuecomment-505371955 there is no log from editing, adding or deleting files either.

joaomoreno commented 5 years ago

What about other files in .git?

Rochet2 commented 5 years ago

Inside .git touching files and folders in the root of it triggered a debug message. Touching anything inside the folders did not trigger anything. Here is a log of my actions and of the output in Code:

My actions ``` rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch COMMIT_EDITMSG rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ ls branches config FETCH_HEAD hooks index logs refs COMMIT_EDITMSG description HEAD in info objects rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch config rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch FETCH_HEAD rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch index rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch description rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch in rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch HEAD rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ cd branches/ rimi@lx8-500-089:~/Documents/oodikone/repro/.git/branches$ ls rimi@lx8-500-089:~/Documents/oodikone/repro/.git/branches$ cd ../hooks/ rimi@lx8-500-089:~/Documents/oodikone/repro/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-rebase.sample commit-msg.sample pre-commit.sample pre-receive.sample fsmonitor-watchman.sample prepare-commit-msg.sample update.sample post-update.sample pre-push.sample rimi@lx8-500-089:~/Documents/oodikone/repro/.git/hooks$ touch applypatch-msg.sample rimi@lx8-500-089:~/Documents/oodikone/repro/.git/hooks$ cd ../logs/ rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ ls HEAD refs rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ touch HEAD rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ touch refs rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ cd refs rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs$ ls heads rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs$ cd heads/ rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs/heads$ ls master rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs/heads$ touch master rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs/heads$ cd .. rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs/refs$ cd .. rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ ls HEAD refs rimi@lx8-500-089:~/Documents/oodikone/repro/.git/logs$ cd .. rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ ls branches config FETCH_HEAD hooks index logs refs COMMIT_EDITMSG description HEAD in info objects rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ cd info rimi@lx8-500-089:~/Documents/oodikone/repro/.git/info$ ls exclude rimi@lx8-500-089:~/Documents/oodikone/repro/.git/info$ touch exclude rimi@lx8-500-089:~/Documents/oodikone/repro/.git/info$ cd .. rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ cd objects/ rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects$ ls 04 13 28 33 48 60 71 95 9c b0 c3 d2 e1 ee f8 05 14 2c 3e 4f 63 72 97 a0 b4 c5 d5 e5 f1 ff 0b 17 2d 43 56 68 77 99 a7 bc cf d8 e6 f5 info 0d 21 31 46 5d 6c 82 9a ae be d0 de ea f7 pack rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects$ cd 04 rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects/04$ ls 74ce8a57f87fbe304abd56b4a1127c3d300d1c rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects/04$ touch 74ce8a57f87fbe304abd56b4a1127c3d300d1c rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects/04$ ls 74ce8a57f87fbe304abd56b4a1127c3d300d1c rimi@lx8-500-089:~/Documents/oodikone/repro/.git/objects/04$ cd ../.. rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ ls branches config FETCH_HEAD hooks index logs refs COMMIT_EDITMSG description HEAD in info objects rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch info rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ touch objects rimi@lx8-500-089:~/Documents/oodikone/repro/.git$ ``` git output ``` > git rev-parse --show-toplevel > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/COMMIT_EDITMSG > git rev-parse --show-toplevel > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/config > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/FETCH_HEAD > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/index > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/description > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/in > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/HEAD > git rev-parse --show-toplevel > git rev-parse --show-toplevel > git rev-parse --show-toplevel > git rev-parse --show-toplevel > git rev-parse --show-toplevel [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/info > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose [debug] [.git] Change: /home/local/rimi/Documents/oodikone/repro/.git/objects > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} fatal: no upstream configured for branch 'master' > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose ```
joaomoreno commented 5 years ago

Any chance you can clone VS Code and run it out of dev? https://github.com/microsoft/vscode/wiki/How-to-Contribute

If so, let's try to repro there. If it still repros, let's start putting traces in the right places. Let me know if you can get it to run, should be straightforward.

Rochet2 commented 5 years ago

Alright. I got it installed and running. When trying to edit the test.txt I get no changes in Source Control and there is no [debug] events (so no file events still in the dev build).

I got some installation errors when running yarn to 'install and build all dependencies', but when running it again everything passed. You can see a log of my installation process here: https://gist.github.com/Rochet2/6e78c47c753a747d02b655a0499f2edd after which I ran yarn watch and started vscode with ./scripts/code.sh successfully.

joaomoreno commented 5 years ago

Awesome. Let's try this:

diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index a581f9f5fd..691ee7bcf5 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -648,6 +648,7 @@ export class Repository implements Disposable {
        this.disposables.push(workspaceWatcher);

        const onWorkspaceFileChange = anyEvent(workspaceWatcher.onDidChange, workspaceWatcher.onDidCreate, workspaceWatcher.onDidDelete);
+       onWorkspaceFileChange(e => console.log(e));
        const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
        const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));

Then, running out of dev, show the Console in the Developer Tools and see if something pops up as you edit a file.

Rochet2 commented 5 years ago

When I edit a file I get nothing. But when I save the edits I get the following:

[Extension Host]% {
$mid: 1,
fsPath: "/home/rimi/Documents/oodikone/repro/test.txt",
external: "file:///home/rimi/Documents/oodikone/repro/test.txt",
path: "/home/rimi/Documents/oodikone/repro/test.txt",
scheme: "file"}
__proto__: Object 
(at constructor.e (/home/local/rimi/vscode/extensions/git/out/repository.js:445:44))
joaomoreno commented 5 years ago

When I edit a file I get nothing. But when I save the edits I get the following:

And when you save the edits... do the [debug] logs come up (after setting log level to debug)?

Rochet2 commented 5 years ago

The log I posted in previous reply is all I get. Here is a gif to show everything I do: Peek 2019-07-09 10-41

Am I missing something?

joaomoreno commented 5 years ago

Cool. Let's try this now, same steps:

diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index a581f9f5fd..756ffcb5af 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -648,6 +648,14 @@ export class Repository implements Disposable {
        this.disposables.push(workspaceWatcher);

        const onWorkspaceFileChange = anyEvent(workspaceWatcher.onDidChange, workspaceWatcher.onDidCreate, workspaceWatcher.onDidDelete);
+
+       console.log(repository.root);
+       onWorkspaceFileChange(uri => {
+           console.log(uri);
+           console.log('isDescendant', isDescendant(repository.root, uri.fsPath));
+           console.log('passes filter', !/\/\.git($|\/)/.test(uri.path));
+       });
+
        const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
        const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));
Rochet2 commented 5 years ago

With the new changes I now get this:

[Extension Host]% {$mid: 1, fsPath: "/home/rimi/Documents/oodikone/repro/test.txt", external: "file:///home/rimi/Documents/oodikone/repro/test.txt", path: "/home/rimi/Documents/oodikone/repro/test.txt", scheme: "file"} (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:447:21))
console.ts:134 [Extension Host] isDescendant false (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:448:21))
console.ts:134 [Extension Host] passes filter true (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:449:21))

Hmm, looks to me as if console.log(uri); does not log anything at all.

joaomoreno commented 5 years ago

It does, that's the first line in your output. One more:

diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index a581f9f5fd..58e0fbd16a 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -648,6 +648,16 @@ export class Repository implements Disposable {
        this.disposables.push(workspaceWatcher);

        const onWorkspaceFileChange = anyEvent(workspaceWatcher.onDidChange, workspaceWatcher.onDidCreate, workspaceWatcher.onDidDelete);
+
+       console.log(repository.root);
+       onWorkspaceFileChange(uri => {
+           console.log(uri);
+           console.log(repository.root);
+           console.log(uri.fsPath);
+           console.log('isDescendant', isDescendant(repository.root, uri.fsPath));
+           console.log('passes filter', !/\/\.git($|\/)/.test(uri.path));
+       });
+
        const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
        const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));
Rochet2 commented 5 years ago

The following is printed:

[Extension Host]% {$mid: 1, fsPath: "/home/rimi/Documents/oodikone/repro/test.txt", external: "file:///home/rimi/Documents/oodikone/repro/test.txt", path: "/home/rimi/Documents/oodikone/repro/test.txt", scheme: "file"} (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:447:21))
console.ts:134 [Extension Host] /home/local/rimi/Documents/oodikone/repro (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:448:21))
console.ts:134 [Extension Host] /home/rimi/Documents/oodikone/repro/test.txt (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:449:21))
console.ts:134 [Extension Host] isDescendant false (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:450:21))
console.ts:134 [Extension Host] passes filter true (at constructor.uri (/home/local/rimi/vscode/extensions/git/out/repository.js:451:21))
joaomoreno commented 5 years ago

Alright.

Are you sure there are no symlinks in your setup? It sure looks like /home/local/rimi and /home/rimi are the same folder.

Rochet2 commented 5 years ago

It sure looks like /home/local/rimi and /home/rimi are the same folder.

That is indeed the case. /home/rimi points to /home/local/rimi.

joaomoreno commented 5 years ago

That was painful to go through. Duplicate of #5970.