Add lua script access to code using cx + reuse project search logic (#26269)

Access to `cx` will be needed for anything that queries entities. In
this commit this is use of `WorktreeStore::find_search_candidates`. In
the future it will be things like access to LSP / tree-sitter outlines /
etc.

Changes to support access to `cx` from functions provided to the Lua
script:

* Adds a channel of requests that require a `cx`. Work enqueued to this
channel is run on the foreground thread.

* Adds `async` and `send` features to `mlua` crate so that async rust
functions can be used from Lua.

* Changes uses of `Rc<RefCell<...>>` to `Arc<Mutex<...>>` so that the
futures are `Send`.

One benefit of reusing project search logic for search candidates is
that it properly ignores paths.

Release Notes:

- N/A
This commit is contained in:
Michael Sloan 2025-03-07 03:02:49 -07:00 committed by GitHub
parent b0d1024f66
commit 205f9a9f03
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 222 additions and 105 deletions

View file

@ -15,10 +15,15 @@ doctest = false
[dependencies]
anyhow.workspace = true
assistant_tool.workspace = true
futures.workspace = true
gpui.workspace = true
mlua.workspace = true
parking_lot.workspace = true
project.workspace = true
regex.workspace = true
schemars.workspace = true
serde.workspace = true
serde_json.workspace = true
smol.workspace = true
util.workspace = true
workspace.workspace = true
regex.workspace = true