Autodetect parser name with prettier by default (#11558)
Closes https://github.com/zed-industries/zed/issues/11517 * Removes forced prettier parser name for languages, making `auto` command to run prettier on every file by default. * Moves prettier configs away from plugin language declarations into language settings Release Notes: - N/A
This commit is contained in:
parent
52c70c1082
commit
cb430fc3e4
17 changed files with 291 additions and 209 deletions
|
@ -479,6 +479,7 @@ pub struct Chunk<'a> {
|
|||
}
|
||||
|
||||
/// A set of edits to a given version of a buffer, computed asynchronously.
|
||||
#[derive(Debug)]
|
||||
pub struct Diff {
|
||||
pub(crate) base_version: clock::Global,
|
||||
line_ending: LineEnding,
|
||||
|
|
|
@ -602,13 +602,6 @@ pub struct LanguageConfig {
|
|||
/// or a whole-word search in buffer search.
|
||||
#[serde(default)]
|
||||
pub word_characters: HashSet<char>,
|
||||
/// The name of a Prettier parser that should be used for this language.
|
||||
#[serde(default)]
|
||||
pub prettier_parser_name: Option<String>,
|
||||
/// The names of any Prettier plugins that should be used for this language.
|
||||
#[serde(default)]
|
||||
pub prettier_plugins: Vec<Arc<str>>,
|
||||
|
||||
/// Whether to indent lines using tab characters, as opposed to multiple
|
||||
/// spaces.
|
||||
#[serde(default)]
|
||||
|
@ -700,8 +693,6 @@ impl Default for LanguageConfig {
|
|||
scope_opt_in_language_servers: Default::default(),
|
||||
overrides: Default::default(),
|
||||
word_characters: Default::default(),
|
||||
prettier_parser_name: None,
|
||||
prettier_plugins: Default::default(),
|
||||
collapsed_placeholder: Default::default(),
|
||||
hard_tabs: Default::default(),
|
||||
tab_size: Default::default(),
|
||||
|
@ -1375,14 +1366,6 @@ impl Language {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn prettier_parser_name(&self) -> Option<&str> {
|
||||
self.config.prettier_parser_name.as_deref()
|
||||
}
|
||||
|
||||
pub fn prettier_plugins(&self) -> &Vec<Arc<str>> {
|
||||
&self.config.prettier_plugins
|
||||
}
|
||||
|
||||
pub fn lsp_id(&self) -> String {
|
||||
match self.config.name.as_ref() {
|
||||
"Plain Text" => "plaintext".to_string(),
|
||||
|
|
|
@ -715,15 +715,6 @@ impl LanguageRegistry {
|
|||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
pub fn all_prettier_plugins(&self) -> Vec<Arc<str>> {
|
||||
let state = self.state.read();
|
||||
state
|
||||
.languages
|
||||
.iter()
|
||||
.flat_map(|language| language.config.prettier_plugins.iter().cloned())
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn update_lsp_status(
|
||||
&self,
|
||||
server_name: LanguageServerName,
|
||||
|
|
|
@ -89,9 +89,7 @@ pub struct LanguageSettings {
|
|||
/// How to perform a buffer format.
|
||||
pub formatter: Formatter,
|
||||
/// Zed's Prettier integration settings.
|
||||
/// If Prettier is enabled, Zed will use this for its Prettier instance for any applicable file, if
|
||||
/// the project has no other Prettier installed.
|
||||
pub prettier: HashMap<String, serde_json::Value>,
|
||||
pub prettier: PrettierSettings,
|
||||
/// Whether to use language servers to provide code intelligence.
|
||||
pub enable_language_server: bool,
|
||||
/// The list of language servers to use (or disable) for this language.
|
||||
|
@ -267,12 +265,12 @@ pub struct LanguageSettingsContent {
|
|||
#[serde(default)]
|
||||
pub formatter: Option<Formatter>,
|
||||
/// Zed's Prettier integration settings.
|
||||
/// If Prettier is enabled, Zed will use this for its Prettier instance for any applicable file, if
|
||||
/// the project has no other Prettier installed.
|
||||
/// Allows to enable/disable formatting with Prettier
|
||||
/// and configure default Prettier, used when no project-level Prettier installation is found.
|
||||
///
|
||||
/// Default: {}
|
||||
/// Default: off
|
||||
#[serde(default)]
|
||||
pub prettier: Option<HashMap<String, serde_json::Value>>,
|
||||
pub prettier: Option<PrettierSettings>,
|
||||
/// Whether to use language servers to provide code intelligence.
|
||||
///
|
||||
/// Default: true
|
||||
|
@ -751,6 +749,30 @@ fn merge_settings(settings: &mut LanguageSettings, src: &LanguageSettingsContent
|
|||
merge(&mut settings.inlay_hints, src.inlay_hints);
|
||||
}
|
||||
|
||||
/// Allows to enable/disable formatting with Prettier
|
||||
/// and configure default Prettier, used when no project-level Prettier installation is found.
|
||||
/// Prettier formatting is disabled by default.
|
||||
#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
|
||||
pub struct PrettierSettings {
|
||||
/// Enables or disables formatting with Prettier for a given language.
|
||||
#[serde(default)]
|
||||
pub allowed: bool,
|
||||
|
||||
/// Forces Prettier integration to use a specific parser name when formatting files with the language.
|
||||
#[serde(default)]
|
||||
pub parser: Option<String>,
|
||||
|
||||
/// Forces Prettier integration to use specific plugins when formatting files with the language.
|
||||
/// The default Prettier will be installed with these plugins.
|
||||
#[serde(default)]
|
||||
pub plugins: HashSet<String>,
|
||||
|
||||
/// Default Prettier options, in the format as in package.json section for Prettier.
|
||||
/// If project installs Prettier via its package.json, these options will be ignored.
|
||||
#[serde(flatten)]
|
||||
pub options: HashMap<String, serde_json::Value>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue