72d36d02134d9a34e0d46dd3c8375c31c7ebd127
This is the beginning of setting up a flexible way to open items beyond the text buffer -- think notebooks, images, GeoJSON, etc. The primary requirement to allow opening an arbitrary file is `try_open` on the `project::Item` trait. Now we can make new `Item`s for other types with their own ways to render. Under the hood, `register_project_item` uses this new opening scheme. It supports a dynamic array of opener functions, that will handle specific item types. By default, a `Buffer` should be able to be able to open any file that another opener did not. A key detail here is that the order of registration matters. The last item has primacy. Here's an example: ```rust workspace::register_project_item::<Editor>(cx); workspace::register_project_item::<Notebook>(cx); workspace::register_project_item::<ImageViewer>(cx); ``` When a project item (file) is attempted to be opened, it's first tried with the `ImageViewer`, followed by the `Notebook`, then the `Editor`. The tests are set up in a way that should make it _hopefully_ easy to learn how to write a new opener. First to go after should probably be image files. Release Notes: N/A --------- Co-authored-by: Antonio Scandurra <me@as-cii.com> Co-authored-by: Mikayla Maki <mikayla@zed.dev>
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
You can download Zed today for macOS (v10.15+).
Support for additional platforms is on our roadmap:
- Linux (tracking issue)
- Windows (tracking issue)
- Web (tracking issue)
For macOS users, you can also install Zed using Homebrew:
brew install zed
Alternatively, to install the Preview release:
brew tap homebrew/cask-versions
brew install zed-preview
Developing Zed
- Building Zed for macOS
- Building Zed for Linux
- Building Zed for Windows
- Running Collaboration Locally
Contributing
See CONTRIBUTING.md for ways you can contribute to Zed.
Licensing
License information for third party dependencies must be correctly provided for CI to pass.
We use cargo-about to automatically comply with open source licenses. If CI is failing, check the following:
- Is it showing a
no license specifiederror for a crate you've created? If so, addpublish = falseunder[package]in your crate's Cargo.toml. - Is the error
failed to satisfy license requirementsfor a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to theacceptedarray inscript/licenses/zed-licenses.toml. - Is
cargo-aboutunable to find the license for a dependency? If so, add a clarification field at the end ofscript/licenses/zed-licenses.toml, as specified in the cargo-about book.
Description
GPUI – Community Edition maintained by Oak Team
https://gpui-ce.github.io/
257 MiB
Languages
Rust
95.5%
WGSL
1.2%
Metal
1.1%
HLSL
1.1%
Python
0.7%
Other
0.3%