Use language settings' prettier parsers as a fallback for files with no path (#12273)

Follow-up of
https://github.com/zed-industries/zed/pull/12095#issuecomment-2123230762
reverting back part of https://github.com/zed-industries/zed/pull/11558
that was related to `language.toml` parsing.

Now all extensions that define `prettier_parser_name` in their language
configs, will enable formatting untitled buffers without any extra
language settings like

```json
{
  "languages": {
    "JSON": {
      "prettier": {
        "allowed": true,
        "parser": "json"
      }
    }
  }
}
```



Release Notes:

- Improved ergonomics of untitled buffer formatting with prettier, no
extra language settings are needed by default.
This commit is contained in:
Kirill Bulatov 2024-05-25 10:50:53 +03:00 committed by GitHub
parent d5fe2c85d8
commit 32f11dfa00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 24 additions and 6 deletions

View file

@ -316,8 +316,10 @@ impl Prettier {
})
.collect();
if prettier_settings.parser.is_none() && buffer_path.is_none() {
log::error!("Formatting unsaved file with prettier failed. No prettier parser configured for language");
let prettier_parser = prettier_settings.parser.as_deref().or_else(|| buffer_language.and_then(|language| language.prettier_parser_name()));
if prettier_parser.is_none() && buffer_path.is_none() {
log::error!("Formatting unsaved file with prettier failed. No prettier parser configured for language {buffer_language:?}");
return Err(anyhow!("Cannot determine prettier parser for unsaved file"));
}
@ -331,7 +333,7 @@ impl Prettier {
anyhow::Ok(FormatParams {
text: buffer.text(),
options: FormatOptions {
parser: prettier_settings.parser.clone(),
parser: prettier_parser.map(ToOwned::to_owned),
plugins,
path: buffer_path,
prettier_options,