zed/crates
Thorsten Ball 8e9543aefe
Improve handling of prettier errors on format (#10156)
When no formatter for a language is specified, Zed has the default
behaviour:

1. Attempt to format the buffer with `prettier`
2. If that doesn't work, use the language server.

The problem was that if `prettier` failed to format a buffer due to
legitimate syntax errors, we simply did a fallback to the language
server, which would then format over the syntax errors.

With JavaScript/React/TypeScript projects this could lead to a situation
where

1. Syntax error was introduced
2. Prettier fails
3. Zed ignores the error
4. typescript-language-server formats the buffer despite syntax errors

This would lead to some very weird formatting issues.

What this PR does is to fix the issue by handling `prettier` errors and
results in two user facing changes:

1. When no formatter is set (or set to `auto`) and if we attempted to
start a prettier instance to format, we will now display that error and
*not* fall back to language server formatting.
2. If the formatter is explicitly set to `prettier`, we will now show
errors if we failed to spawn prettier or failed to format with it.

This means that we now might show *more* errors than previously, but I
think that's better than not showing anything to the user at all.

And, of course, it also fixes the issue of invalid syntax being
formatted by the language server even though `prettier` failed with an
error.

Release Notes:

- Improved error handling when formatting buffers with `prettier`.
Previously `prettier` errors would be logged but ignored. Now `prettier`
errors are shown in the UI, just like language server errors when
formatting. And if no formatter is specified (or set to `"auto"`) and
Zed attempts to use `prettier` for formatting, then `prettier` errors
are no longer skipped. That fixes the issue of `prettier` not formatting
invalid syntax, but its error being skipped, leading to
`typescript-language-server` or another language server formatting
invalid syntax.
2024-04-04 11:41:55 +02:00
..
activity_indicator Add auto-update system for extensions (#9890) 2024-03-28 15:41:22 -04:00
anthropic Check license generation for every PR to avoid license-less crate additions (#10033) 2024-04-01 12:16:16 +03:00
assets Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
assistant Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
audio Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
auto_update markdown preview: highlight code blocks (#9087) 2024-03-12 12:54:12 +02:00
breadcrumbs Encode rem values derived from pixels using rems_from_px (#9367) 2024-03-14 16:39:55 -04:00
call Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
channel Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
cli Windows: Enable clippy deny warnings (#9920) 2024-03-28 11:55:35 -04:00
client Fix test name (#9979) 2024-03-29 21:12:47 -04:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab Remove datadog (#10133) 2024-04-03 11:35:23 -06:00
collab_ui Fix clear reply to message and edit message state when you switch state (#10044) 2024-04-04 08:36:27 +02:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette Encapsulate CommandPaletteFilter and CommandPaletteInterceptor (#9402) 2024-03-15 12:37:25 -04:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Query code actions and hovers from all related local language servers (#9943) 2024-03-29 12:18:38 +02:00
copilot_ui Don't update active completion for editors that are not focused (#9904) 2024-03-28 10:51:55 +01:00
db Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
diagnostics Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
editor Refactor LSP adapter methods to compute labels in batches (#10097) 2024-04-03 09:22:56 -07:00
extension Extract Clojure support into an extension (#10088) 2024-04-02 13:47:03 -04:00
extension_api Use "install" to refer to extension installation process (#10049) 2024-04-01 15:27:03 -07:00
extension_cli Add git blame (#8889) 2024-03-28 18:32:11 +01:00
extensions_ui Extract HTML support into an extension (#10130) 2024-04-03 12:42:36 -04:00
feature_flags Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
feedback Include commit hash in Nightly & Dev builds (#10054) 2024-04-02 11:19:19 -04:00
file_finder Fix assorted linux issues (#10061) 2024-04-01 17:22:59 -07:00
file_icons file_icons: Add license file (#10128) 2024-04-03 12:07:53 -04:00
fs Fix git blame not working correctly with submodules (#10114) 2024-04-03 13:49:12 +02:00
fsevent Add rs-notify implementation of fs::watch (#9040) 2024-03-08 22:18:44 -08:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Fix GitHub commit permalinks (#9961) 2024-03-29 13:17:48 -04:00
go_to_line Restore --all-targets for clippy (#9346) 2024-03-14 12:39:45 -04:00
google_ai Fix licensing errors 2024-03-20 15:52:02 +01:00
gpui Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
gpui_macros Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
image_viewer gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Revert "Revert "chore: Bump Rust version to 1.77 (#9631)"" (#9672) 2024-03-22 11:17:16 +01:00
language Refactor LSP adapter methods to compute labels in batches (#10097) 2024-04-03 09:22:56 -07:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
languages Extract HTML support into an extension (#10130) 2024-04-03 12:42:36 -04:00
live_kit_client Add a schema to extensions, to prevent installing extensions on too old of a Zed version (#9599) 2024-03-20 17:33:26 -04:00
live_kit_server Merge prost dependecies (#9522) 2024-03-18 20:33:20 -06:00
lsp Query code actions and hovers from all related local language servers (#9943) 2024-03-29 12:18:38 +02:00
markdown_preview markdown preview: Handle line breaks in between task list items correctly (#9795) 2024-03-26 12:12:57 +02:00
media Revert "Revert "Revert dependency updates in #9836 (#10089)"" 2024-04-02 13:12:38 -06:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer Refactor LSP adapter methods to compute labels in batches (#10097) 2024-04-03 09:22:56 -07:00
node_runtime Allow extensions to define more of the methods in the LspAdapter trait (#9554) 2024-03-20 12:47:04 -07:00
notifications Fix mention notifications are not updated after message change and not removed after a message is deleted (#9847) 2024-04-02 20:40:00 -06:00
open_ai Hard code max token counts for supported models (#9675) 2024-03-21 20:30:33 -06:00
outline Restore --all-targets for clippy (#9346) 2024-03-14 12:39:45 -04:00
picker tab_switcher: Add tab close buttons (#9968) 2024-04-03 17:28:51 +02:00
prettier Fix prettier-plugin-organize-imports plugin removes used imports (#9598) 2024-03-21 08:23:15 +01:00
project Improve handling of prettier errors on format (#10156) 2024-04-04 11:41:55 +02:00
project_panel Fix assorted linux issues (#10061) 2024-04-01 17:22:59 -07:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
recent_projects Fix Recent Documents List (continues #8952) (#9919) 2024-03-29 23:17:25 +02:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
rich_text Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
rope Revert "language: Remove buffer fingerprinting (#9007)" 2024-03-21 14:10:18 -06:00
rpc Query code actions and hovers from all related local language servers (from remote clients) (#10111) 2024-04-03 13:34:56 +03:00
search Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
settings Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
snippet Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Enable clippy::eq_op (#9369) 2024-03-14 17:05:07 -04:00
storybook windows: Support compiling with MinGW toolchain (part 2) (#9843) 2024-03-28 10:40:07 -07:00
sum_tree Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
tab_switcher tab_switcher: Add tab close buttons (#9968) 2024-04-03 17:28:51 +02:00
task task: Add "remove" button next to oneshot tasks (#10083) 2024-04-02 17:59:22 +02:00
tasks_ui tasks: fix panic in render_match (#10137) 2024-04-03 22:09:36 +02:00
telemetry_events Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
terminal Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
terminal_view Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
text Add git blame (#8889) 2024-03-28 18:32:11 +01:00
theme themes: Add pane_group.border color (#9986) 2024-04-01 12:07:26 -04:00
theme_importer themes: Add pane_group.border color (#9986) 2024-04-01 12:07:26 -04:00
theme_selector Add support for applying theme after extension is installed (#9529) 2024-03-20 11:13:58 -04:00
time_format notification panel: rework time formatting (#8997) 2024-03-12 21:02:04 -06:00
ui tab_switcher: Add tab close buttons (#9968) 2024-04-03 17:28:51 +02:00
util Revert PR #6924 - go to reference when there's only one (#10094) 2024-04-02 14:31:58 -07:00
vcs_menu Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
vim Refactor selection expansion logic into a separate method (#10117) 2024-04-04 08:35:26 +02:00
welcome Allow specifying no base keymap (#9471) 2024-03-20 18:52:17 -06:00
workspace Compute scrollbar markers asynchronously (#10080) 2024-04-03 12:21:17 +02:00
worktree Remove git diff base from symlinked files (#10037) 2024-04-01 18:22:25 +03:00
zed v0.131.x dev 2024-04-03 12:11:28 -04:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00