prettier / prettier-vscode

Visual Studio Code extension for Prettier
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
MIT License
5.04k stars 446 forks source link

Jump to end of file when formating huge JS file #2883

Open x0vr opened 1 year ago

x0vr commented 1 year ago

Hi 👋

I think thi behavior occurs since ~Feb 2023. When I configure VSCode to use for instance "editor.defaultFormatter": "vscode.typescript-language-features" , the issue is gone.

I am using "Prettier - Code formatter" v9.10.4

Summary

When formating a huge JavaScript file in VSCode using Prettier as default formatter, everytime (most of the time?) I format the document the editor jumps to the end of the file (last line).

Steps To Reproduce:

  1. Open a huge / larger JavaScript file in VSCode
  2. Add some blank lines in the code
  3. Format document
  4. Editor jumps to end of file (last line)

Expected result

Document should be formatted and the line position in editor should not be changed.

Actual result

Editor jumps to end of file (last line)

Additional information

Feel free to attach a screenshot.

VS Code Version: 1.75.1

Prettier Extension Version: 9.10.4

OS and version: Win10

Prettier Log Output

["DEBUG" - 3:19:27 PM] Using bundled version of prettier.
["INFO" - 3:19:30 PM] Formatting file:///d%3A/__GIT/_testing/debug/test.js
["DEBUG" - 3:19:30 PM] Using bundled version of prettier.
["INFO" - 3:19:30 PM] Using ignore file (if present) at d:\__GIT\_testing\.prettierignore
["INFO" - 3:19:30 PM] File Info:
{
  "ignored": false,
  "inferredParser": "babel"
}
["INFO" - 3:19:30 PM] No local configuration (i.e. .prettierrc or .editorconfig) detected, falling back to VS Code configuration
["INFO" - 3:19:30 PM] Prettier Options:
{
  "arrowParens": "always",
  "bracketSpacing": true,
  "endOfLine": "lf",
  "htmlWhitespaceSensitivity": "css",
  "insertPragma": false,
  "singleAttributePerLine": false,
  "bracketSameLine": false,
  "jsxBracketSameLine": false,
  "jsxSingleQuote": false,
  "printWidth": 180,
  "proseWrap": "preserve",
  "quoteProps": "as-needed",
  "requirePragma": false,
  "semi": true,
  "singleQuote": true,
  "tabWidth": 4,
  "trailingComma": "es5",
  "useTabs": true,
  "vueIndentScriptAndStyle": false,
  "filepath": "d:\\__GIT\\_testing\\debug\\test.js",
  "parser": "babel"
}
["INFO" - 3:19:31 PM] Formatting completed in 495ms.

Thanks for checking 👍

rotten-bmiller commented 1 year ago

Experiencing this as well with the same setup. Had to disable the prettier extension until this is fixed.

kongku commented 1 year ago

I have the same situation

DeoThemes commented 1 year ago

Same issue but with an HTML file, not only JS

ralfhandl commented 1 year ago

Same issue, size limit seems to be ~100 KB for JS files.

Had this issue with a JS file of 101 KB, problem vanished after refactoring it to 97 KB.

Maybe this is a feature and not a bug, enticing us to use smaller files 😄

wangstar615 commented 1 year ago

I had the same problem 😩

sbikosfp commented 1 year ago

Yep this issue still exists. It's kinda annoying. I had to disable format on save because of this. Is there an estimated date of fixing?

github-actions[bot] commented 10 months ago

This issue has been labeled as stale due to inactivity. Reply to keep this issue open.

ralfhandl commented 10 months ago

Issue still exists, workaround is keeping source files small, which is somewhat painful if I just want to add another test case that thematically belongs into the file that would get too large.

github-actions[bot] commented 8 months ago

This issue has been labeled as stale due to inactivity. Reply to keep this issue open.

ralfhandl commented 8 months ago

Issue still exists

mustafa-colakoglu commented 8 months ago

issue still exists

bookmountain commented 6 months ago

Hi guys, I found this may be a fix, paste this in the settings.json.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},
syvuilliot commented 6 months ago

yes, very annoying issue

syvuilliot commented 6 months ago

Hi guys, I found this may be a fix, paste this in the settings.json.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},

doesn't work for me

mustafa-colakoglu commented 6 months ago

Hi guys, I found this may be a fix, paste this in the settings.json.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},

doesn't work for me

Hi, can you try "endOfLine": "auto"

syvuilliot commented 6 months ago

Hi guys, I found this may be a fix, paste this in the settings.json.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},

doesn't work for me

Hi, can you try "endOfLine": "auto"

I tried with following settings "eslint.codeActionsOnSave.mode": "problems", "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "prettier.endOfLine": "auto"

but always the same behaviour on large files with cursor moving to end of file :-(

mustafa-colakoglu commented 6 months ago

Hi guys, I found this may be a fix, paste this in the settings.json.

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
},

doesn't work for me

Hi, can you try "endOfLine": "auto"

I tried with following settings "eslint.codeActionsOnSave.mode": "problems", "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "prettier.endOfLine": "auto"

but always the same behaviour on large files with cursor moving to end of file :-(

Hi, my configurasyon file I just added endOfLine auto and fixed, I did not add other configurations. Maybe you should remove other configurations

github-actions[bot] commented 4 months ago

This issue has been labeled as stale due to inactivity. Reply to keep this issue open.

ralfhandl commented 4 months ago

Issue still exists, and is still annoying.

Infinite-3D commented 3 months ago

The limit of 100kb (100,000 bytes) seems to be hardcoded in VSCode here.

It would be nice if there was a setting to increase this.

cjbeattie commented 3 months ago

Still exists. Super annoying.

inbflat commented 3 months ago

Still Happening

costaluu commented 2 months ago

Still happening (up)

jacksonthall22 commented 2 months ago

Having this issue too, extension is basically unusable right now :'(

x0vr commented 2 months ago

The behavior can be reproduced with this document, for example: https://github.com/turbulenz/turbulenz_engine/blob/master/tslib/canvas.ts

-> Just add a line at the beginning and format document => Editor jumps to eof

Infinite-3D commented 2 months ago

I think this is a VSCode issue rather than a Prettier one. The same thing happens with other formatters such as CSharpier and the 100k limit is hardcoded in VSCode itself.

arcnid commented 2 months ago

How is this still an ongoing thing? I have tried adjusting my settings.json with no luck. I'm moving to Zed, lol

inbflat commented 2 months ago

I was able to fix this by setting End of line to auto in prettier settings.

Droniukas commented 2 months ago

Seems like none of these fixes work, would be useful to be able to extend the size limit for files...

vital487 commented 2 months ago

Same problem here...

brendansiow commented 2 months ago

I have the same issue but with Go's code, I have uninstalled prettier and turn off format on save, not working

rschlack commented 1 month ago

Same issue here. It's so annoying. I think it only happens on the Windows version of VSCode.

webdev4422 commented 1 month ago

I was able to fix this by setting End of line to auto in prettier settings.

Fix for me too. In VSCode settings.json -> "prettier.endOfLine": "auto"

System info: macOS Sonoma 14.4, VSCode v1.87, Prettier v10.4.0

FacundoBrum16 commented 1 month ago

don't work for me

StevenCrocker commented 1 week ago

So this seems to be the issue, at least in my testing. The end of line character in prettier setting must match the document end of line setting.

The end of line character for Prettier is defaults to "LF" if "prettier.endOfLine" isn't specifically set. You can set this to "auto", or you can update the document itself to use "LF" instead of "CRLF". Do this by searching for "Change End of Line Sequence" in the command prompt (CTRL+SHIFT+P). This can also be changed by clicking the CRLF text in the status bar.

Can anyone confirm?