mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Make Finder "Open With" work correctly
This commit is contained in:
parent
9e5612348c
commit
765773cfe6
@ -75,6 +75,7 @@ fn main() {
|
||||
};
|
||||
|
||||
let (cli_connections_tx, mut cli_connections_rx) = mpsc::unbounded();
|
||||
let (open_paths_tx, open_paths_rx) = mpsc::unbounded();
|
||||
app.on_open_urls(move |urls, _| {
|
||||
if let Some(server_name) = urls.first().and_then(|url| url.strip_prefix("zed-cli://")) {
|
||||
if let Some(cli_connection) = connect_to_cli(server_name).log_err() {
|
||||
@ -83,6 +84,16 @@ fn main() {
|
||||
.map_err(|_| anyhow!("no listener for cli connections"))
|
||||
.log_err();
|
||||
};
|
||||
} else {
|
||||
let paths: Vec<_> = urls
|
||||
.iter()
|
||||
.flat_map(|url| url.strip_prefix("file://"))
|
||||
.map(|path| PathBuf::from(path))
|
||||
.collect();
|
||||
open_paths_tx
|
||||
.unbounded_send(paths)
|
||||
.map_err(|_| anyhow!("no listener for open urls requests"))
|
||||
.log_err();
|
||||
}
|
||||
});
|
||||
|
||||
@ -175,6 +186,9 @@ fn main() {
|
||||
|
||||
cx.set_menus(menus::menus());
|
||||
|
||||
cx.spawn(|cx| handle_open_paths(open_paths_rx, app_state.clone(), cx))
|
||||
.detach();
|
||||
|
||||
if stdout_is_a_pty() {
|
||||
cx.platform().activate(true);
|
||||
let paths = collect_path_args();
|
||||
@ -500,6 +514,17 @@ fn load_config_files(
|
||||
rx
|
||||
}
|
||||
|
||||
async fn handle_open_paths(
|
||||
mut rx: mpsc::UnboundedReceiver<Vec<PathBuf>>,
|
||||
app_state: Arc<AppState>,
|
||||
mut cx: AsyncAppContext,
|
||||
) {
|
||||
while let Some(paths) = rx.next().await {
|
||||
cx.update(|cx| workspace::open_paths(&paths, &app_state, cx))
|
||||
.detach();
|
||||
}
|
||||
}
|
||||
|
||||
fn connect_to_cli(
|
||||
server_name: &str,
|
||||
) -> Result<(mpsc::Receiver<CliRequest>, IpcSender<CliResponse>)> {
|
||||
|
Loading…
Reference in New Issue
Block a user