Rebuilt from the exact zed-industries/zed @ 8c74db00c4053d6c0a9037863d7bd048658da4ca tree (previous orphan was based on a stale/wrong fetch). Same 3-file patch: - serial.rs: add SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; add latest_serial_of() - window.rs: activate() uses keyboard-enter serial (Mutter focus gate) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
1.2 KiB
Rust
35 lines
1.2 KiB
Rust
use fs::Fs;
|
|
use gpui::AppContext;
|
|
use gpui_platform::headless;
|
|
|
|
fn main() {
|
|
let Some(path_to_read) = std::env::args().nth(1) else {
|
|
println!("Expected path to read as 1st argument.");
|
|
return;
|
|
};
|
|
|
|
let _ = headless().run(|cx| {
|
|
let fs = fs::RealFs::new(None, cx.background_executor().clone());
|
|
cx.background_spawn(async move {
|
|
let timer = std::time::Instant::now();
|
|
let result = fs.load_bytes(path_to_read.as_ref()).await;
|
|
let elapsed = timer.elapsed();
|
|
if let Err(e) = result {
|
|
println!("Failed `load_bytes` after {elapsed:?} with error `{e}`");
|
|
} else {
|
|
println!("Took {elapsed:?} to read {} bytes", result.unwrap().len());
|
|
};
|
|
let timer = std::time::Instant::now();
|
|
let result = fs.metadata(path_to_read.as_ref()).await;
|
|
let elapsed = timer.elapsed();
|
|
if let Err(e) = result {
|
|
println!("Failed `metadata` after {elapsed:?} with error `{e}`");
|
|
} else {
|
|
println!("Took {elapsed:?} to query metadata");
|
|
};
|
|
std::process::exit(0);
|
|
})
|
|
.detach();
|
|
});
|
|
}
|