Add a setting for custom associations between languages and files (#9290)

Closes #5178

Release Notes:

- Added a `file_types` setting that can be used to associate languages
with file names and file extensions. For example, to interpret all `.c`
files as C++, and files called `MyLockFile` as TOML, add the following
to `settings.json`:

    ```json
    {
      "file_types": {
        "C++": ["c"],
        "TOML": ["MyLockFile"]
      }
    }
    ```

As with most zed settings, this can be configured on a per-directory
basis by including a local `.zed/settings.json` file in that directory.

---------

Co-authored-by: Marshall <marshall@zed.dev>
This commit is contained in:
Max Brunsfeld
2024-03-13 10:23:30 -07:00
committed by GitHub
co-authored by Marshall
parent 77de5689a3
commit 724c19a223
30 changed files with 640 additions and 415 deletions
+13 -1
View File
@@ -9,7 +9,7 @@ use gpui::{
};
use indoc::indoc;
use itertools::Itertools;
use language::{Buffer, BufferSnapshot};
use language::{Buffer, BufferSnapshot, LanguageRegistry};
use parking_lot::RwLock;
use project::{FakeFs, Project};
use std::{
@@ -120,6 +120,18 @@ impl EditorTestContext {
})
}
pub fn language_registry(&mut self) -> Arc<LanguageRegistry> {
self.editor(|editor, cx| {
editor
.project
.as_ref()
.unwrap()
.read(cx)
.languages()
.clone()
})
}
pub fn update_buffer<F, T>(&mut self, update: F) -> T
where
F: FnOnce(&mut Buffer, &mut ModelContext<Buffer>) -> T,