
This PR adds initial support for FreeBSD (https://github.com/zed-industries/zed/issues/15309). While there is still work left to be done, it seems to be usable. As discussed by @syobocat (https://github.com/zed-industries/zed/discussions/10247), the changes were just adding ```target_os = "freebsd"``` to wherever it checks if the OS is Linux.  Needs to be build with ```RUSTFLAGS="-C link-dead-code"``` Known Issues: - There's an issue in ```crates/project/src/environment.rs``` where a command fails because ```/bin/sh``` on FreeBSD doesn't support the ```-l``` option.  - The file/folder choosers provided by the ```ashpd``` crate don't work on FreeBSD (at least with KDE). This isn't that bad since a fallback dialog is used.  - Moving to trash won't work. - Numerous tests fail (when running on FreeBSD). While I haven't looked into this much, it appears that the corresponding features seem to work fine. Release Notes: - Added initial support for FreeBSD
25 lines
685 B
Rust
25 lines
685 B
Rust
/// The platform style to use when rendering UI.
|
|
///
|
|
/// This can be used to abstract over platform differences.
|
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
|
|
pub enum PlatformStyle {
|
|
/// Display in macOS style.
|
|
Mac,
|
|
/// Display in Linux style.
|
|
Linux,
|
|
/// Display in Windows style.
|
|
Windows,
|
|
}
|
|
|
|
impl PlatformStyle {
|
|
/// Returns the [`PlatformStyle`] for the current platform.
|
|
pub const fn platform() -> Self {
|
|
if cfg!(any(target_os = "linux", target_os = "freebsd")) {
|
|
Self::Linux
|
|
} else if cfg!(target_os = "windows") {
|
|
Self::Windows
|
|
} else {
|
|
Self::Mac
|
|
}
|
|
}
|
|
}
|