Skip to content

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

Description

@rschristian

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions