prettier / vim-prettier

A Vim plugin for Prettier
MIT License
1.78k stars 138 forks source link

Prettier and Vim-Prettier don't break lines the same when set to the same print width #290

Open rschristian opened 3 years ago

rschristian commented 3 years ago

Do you want to request a feature or report a bug?

Bug

What is the current/expected behavior?

I'd like vim-prettier to match the output of prettier, but it does not. It seems like the print_width of vim-prettier needs to be much less in order to get the same output.

This is just an excerpt of a package.json file, formatted with Prettier via yarn prettier package.json --write

{
  "eslintConfig": {
    "parser": "@typescript-eslint/parser",
    "extends": [
      "preact",
      "plugin:@typescript-eslint/recommended"
    ],
    "rules": {
      "@typescript-eslint/explicit-module-boundary-types": "off",
      "@typescript-eslint/no-explicit-any": "off"
    }
  },
  "prettier": {
    "singleQuote": true,
    "trailingComma": "none",
    "useTabs": true,
    "arrowParens": "avoid"
  },
  "jest": {
    "preset": "ts-jest",
    "testPathIgnorePatterns": [
      "<rootDir>/{dist,src}"
    ],
    "setupFilesAfterEnv": [
      "<rootDir>/test/setup-tests.ts"
    ],
    "collectCoverageFrom": [
      "<rootDir>/src/**/*.{ts,tsx}",
      "!<rootDir>/src/types/**/*"
    ],
    "moduleNameMapper": {
      "^react$": "preact/compat",
      "^react-dom/test-utils$": "preact/test-utils",
      "^react-dom$": "preact/compat"
    }
  }
}

And this is the following after saving with vim-prettier:

{
  "eslintConfig": {
    "parser": "@typescript-eslint/parser",
    "extends": ["preact", "plugin:@typescript-eslint/recommended"],
    "rules": {
      "@typescript-eslint/explicit-module-boundary-types": "off",
      "@typescript-eslint/no-explicit-any": "off"
    }
  },
  "prettier": {
    "singleQuote": true,
    "trailingComma": "none",
    "useTabs": true,
    "arrowParens": "avoid"
  },
  "jest": {
    "preset": "ts-jest",
    "testPathIgnorePatterns": ["<rootDir>/{dist,src}"],
    "setupFilesAfterEnv": ["<rootDir>/test/setup-tests.ts"],
    "collectCoverageFrom": [
      "<rootDir>/src/**/*.{ts,tsx}",
      "!<rootDir>/src/types/**/*"
    ],
    "moduleNameMapper": {
      "^react$": "preact/compat",
      "^react-dom/test-utils$": "preact/test-utils",
      "^react-dom$": "preact/compat"
    }
  }
}

As you can see, the output formatting is incorrect.

I noticed I have to set vim-prettier to have about a print_width of 60 in order to get output that better resembles 80 with prettier, though still has some issues. Something's not calculated right.

What version of vim-prettier are you using - (output of :PrettierVersion) ?

1.0.0-beta

What version of prettier are you using - (output of :PrettierCliVersion) ?

2.2.1

What is your prettier executable path - (output of :PrettierCliPath) ?

/home/username/Projects/project-name/node_modules/.bin/prettier

Did this work in previous versions of vim-prettier and/or prettier ?

Not that I see, no

Vim-Prettier config

" --- Prettier ---
let g:prettier#autoformat = 1
let g:prettier#autoformat_require_pragma = 0
let g:prettier#config#print_width = 80
kecerud commented 2 years ago

Have you fixed this somehow in the meantime? Having the same issue..

rschristian commented 2 years ago

No, sorry, had to uninstall vim-prettier as I couldn't find a way to get them to agree :/

kecerud commented 2 years ago

@rschristian That's a shame...! What did you decide to use instead, or did you end up just not using a formatter completely?

rschristian commented 2 years ago

Still use prettier, just not tied to vim. Manual runs, precommit hooks, etc. do the trick for me.

There might be good alternative solutions out there, not sure! I don't think I looked for other options, just cut it out and moved on.

pilagod commented 2 years ago

Same here and cannot find a workaround too. 😓

It seems prettier has exceptional rules for package.json that it always splits array into multiple lines. But not sure why vim-prettier doesn't consume those rules.

Since I personally have coc.nvim plugin installed, I finally switch to coc-prettier and it solves this problem.

domvo commented 1 year ago

Running into the same issue, unfortunately I can't find a solution.

ofmendez commented 1 year ago

same issue

szilardhuber commented 9 months ago

Hey, is there any chance this gets addressed anytime soon? It kind of makes vim-prettier unusable in a team environment.