Support .editorconfig (#19455)
Closes https://github.com/zed-industries/zed/issues/8534 Supersedes https://github.com/zed-industries/zed/pull/16349 Potential concerns: * we do not follow up to the `/` when looking for `.editorconfig`, only up to the worktree root. Seems fine for most of the cases, and the rest should be solved generically later, as the same issue exists for settings.json * `fn language` in `AllLanguageSettings` is very hot, called very frequently during rendering. We accumulate and parse all `.editorconfig` file contents beforehand, but have to go over globs and match these against the path given + merge the properties still. This does not seem to be very bad, but needs more testing and potentially some extra caching. Release Notes: - Added .editorconfig support --------- Co-authored-by: Ulysse Buonomo <buonomo.ulysse@gmail.com>
This commit is contained in:
parent
d95a4f8671
commit
d3cb08bf35
30 changed files with 869 additions and 263 deletions
|
@ -6,7 +6,6 @@ use futures::{io::BufReader, StreamExt};
|
|||
use gpui::{AppContext, AsyncAppContext};
|
||||
use http_client::github::{latest_github_release, GitHubLspBinaryVersion};
|
||||
pub use language::*;
|
||||
use language_settings::all_language_settings;
|
||||
use lsp::LanguageServerBinary;
|
||||
use regex::Regex;
|
||||
use smol::fs::{self, File};
|
||||
|
@ -21,6 +20,8 @@ use std::{
|
|||
use task::{TaskTemplate, TaskTemplates, TaskVariables, VariableName};
|
||||
use util::{fs::remove_matching, maybe, ResultExt};
|
||||
|
||||
use crate::language_settings::language_settings;
|
||||
|
||||
pub struct RustLspAdapter;
|
||||
|
||||
impl RustLspAdapter {
|
||||
|
@ -424,13 +425,13 @@ impl ContextProvider for RustContextProvider {
|
|||
cx: &AppContext,
|
||||
) -> Option<TaskTemplates> {
|
||||
const DEFAULT_RUN_NAME_STR: &str = "RUST_DEFAULT_PACKAGE_RUN";
|
||||
let package_to_run = all_language_settings(file.as_ref(), cx)
|
||||
.language(Some(&"Rust".into()))
|
||||
let package_to_run = language_settings(Some("Rust".into()), file.as_ref(), cx)
|
||||
.tasks
|
||||
.variables
|
||||
.get(DEFAULT_RUN_NAME_STR);
|
||||
.get(DEFAULT_RUN_NAME_STR)
|
||||
.cloned();
|
||||
let run_task_args = if let Some(package_to_run) = package_to_run {
|
||||
vec!["run".into(), "-p".into(), package_to_run.clone()]
|
||||
vec!["run".into(), "-p".into(), package_to_run]
|
||||
} else {
|
||||
vec!["run".into()]
|
||||
};
|
||||
|
|
|
@ -101,7 +101,7 @@ impl LspAdapter for YamlLspAdapter {
|
|||
|
||||
let tab_size = cx.update(|cx| {
|
||||
AllLanguageSettings::get(Some(location), cx)
|
||||
.language(Some(&"YAML".into()))
|
||||
.language(Some(location), Some(&"YAML".into()), cx)
|
||||
.tab_size
|
||||
})?;
|
||||
let mut options = serde_json::json!({"[yaml]": {"editor.tabSize": tab_size}});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue