This PR replaces the `lazy_static!` usages in the `paths` crate with
`OnceLock` from the standard library.
This allows us to drop the `lazy_static` dependency from this crate.
The paths are now exposed as accessor functions that reference a private
static value.
Release Notes:
- N/A
This PR extracts the definition of the various Zed paths out of `util`
and into a new `paths` crate.
`util` is for generic utils, while these paths are Zed-specific. For
instance, `gpui` depends on `util`, and it shouldn't have knowledge of
these paths, since they are only used by Zed.
Release Notes:
- N/A
This PR updates the HTML to Markdown converter for rustdoc to strip out
some additional chrome.
Namely, anchors and links to source files.
Release Notes:
- N/A
This PR updates the rustdoc indexing to not start indexing a crate that
is already being indexed.
Currently the indexing of a crate might get continuously interrupted by
the user's typing, resulting in thrashing of the indexing task and never
indexing the crate in its entirety.
Release Notes:
- N/A
This PR adds a `CrateName` newtype used to represent crate names.
This makes the code a bit more self-descriptive and prevents confusing
other string values for a crate name.
It also changes the internal representation from a `String` to an
`Arc<str>` for cheaper clones.
Release Notes:
- N/A
This PR removes the need to use `/rustdoc --index <CRATE_NAME>` and
instead indexes the crates once they are referenced.
As soon as the first `:` is added after the crate name, the indexing
will kick off in the background and update the index as it goes.
Release Notes:
- N/A
This PR updates the rustdoc indexing to be more progressive.
Rather than waiting until we've crawled the entire crate to begin
writing to the database, we instead start writing the docs as we go.
This makes it so you can start getting completions while the indexing is
still running.
Release Notes:
- N/A
This PR updates the `/rustdoc` command with persistence for the
documented rustdoc items.
Now when you run `/rustdoc --index <CRATE_NAME>` it will index the crate
and store the results in LMDB.
The documented items will then be read from the database when searching
using `/rustdoc` and persist across restarts of Zed.
Release Notes:
- N/A
This PR adds an MVP of retrieving docs using the `/rustdoc` command from
an indexed set of docs.
To try this out:
1. Build local docs using `cargo doc`
2. Index the docs for the crate you want to search using `/rustdoc
--index <CRATE_NAME>`
- Note: This may take a while, depending on the size of the crate
3. Search for docs using `/rustdoc my_crate::path::to::item`
- You should get completions for the available items
Here are some screenshots of it in action:
<img width="640" alt="Screenshot 2024-06-12 at 6 19 20 PM"
src="https://github.com/zed-industries/zed/assets/1486634/6c49bec9-d084-4dcb-a92c-1b4c557ee9ce">
<img width="636" alt="Screenshot 2024-06-12 at 6 52 56 PM"
src="https://github.com/zed-industries/zed/assets/1486634/636a651c-7d02-48dc-b05c-931f33c49f9c">
Release Notes:
- N/A
This PR adds a first pass at a rustdoc crawler.
We'll be using this to get information about a crate from the rustdoc
artifacts for use in the Assistant.
Release Notes:
- N/A
---------
Co-authored-by: Richard <richard@zed.dev>