[package]
name         = "lapce"
version      = { workspace = true }
authors      = { workspace = true }
edition      = { workspace = true }
license      = { workspace = true }
rust-version = { workspace = true }
default-run  = "lapce"

[dependencies]
lapce-app   = { path = "./lapce-app" }
lapce-proxy = { path = "./lapce-proxy" }

[[bin]]
name = "lapce"
path = "lapce-app/src/bin/lapce.rs"

[[bin]]
name = "lapce-proxy"
path = "lapce-proxy/src/bin/lapce-proxy.rs"

[workspace]
members = ["lapce-app", "lapce-proxy", "lapce-rpc", "lapce-core"]

[workspace.package]
version      = "0.4.0"
edition      = "2021"
rust-version = "1.75"
license      = "Apache-2.0"
homepage     = "https://lapce.dev"
authors      = ["Dongdong Zhou <dzhou121@gmail.com>"]

[workspace.dependencies]
anyhow            = { version = "1.0" }
backtrace         = { version = "0.3" }
chrono            = { version = "0.4" }
clap              = { version = "4.5.0", default-features = false, features = ["std", "help", "usage", "derive"] }
crossbeam-channel = { version = "0.5.12" }
directories       = { version = "4.0.1" }
flate2            = { version = "1.0" }
globset           = { version = "0.4.14" }
hashbrown         = { version = "0.14.3", features = ["serde"] }
im                = { version = "15.0.0", features = ["serde"] }
include_dir       = { version = "0.6.2" }
indexmap          = { version = "2.0", features = ["serde"] }
interprocess      = { version = "1.2.1" }
itertools         = { version = "0.12.1" }
notify            = { version = "5.2.0", features = ["serde"] }
once_cell         = { version = "1.19" }
parking_lot       = { version = "0.12.0" }
rayon             = { version = "1.10.0" }
regex             = { version = "1.10.4" }
reqwest           = { version = "0.11", features = ["blocking", "json", "socks"] }
serde             = { version = "1.0" }
serde_json        = { version = "1.0" }
smallvec          = { version = "1.13.2" }
strum             = { version = "0.26.2" }
strum_macros      = { version = "0.26.2" }
tar               = { version = "0.4" }
thiserror         = { version = "1.0" }
toml              = { version = "*" }
toml_edit         = { version = "0.20.2", features = ["serde"] }
url               = { version = "2.5.0" }

lsp-types = { version = "0.95.1", features = ["proposed"] }                                                  # not following semver, so should be locked to patch version updates only
psp-types = { git = "https://github.com/lapce/psp-types", rev = "f7fea28f59e7b2d6faa1034a21679ad49b3524ad" }

lapce-xi-rope = { version = "0.3.2", features = ["serde"] }

lapce-core  = { path = "./lapce-core" }
lapce-rpc   = { path = "./lapce-rpc" }
lapce-proxy = { path = "./lapce-proxy" }

floem-editor-core = { git = "https://github.com/lapce/floem", rev = "a3dd7599823d74977ff431ecb08fffbcf4df2d8a", features = ["serde"] }
# floem-editor-core = { path = "../workspaces/floem/editor-core/", features = ["serde"] }

[patch.crates-io]
# Temporarily patch lsp-types with a version that supports inline-completion
lsp-types = { git = "https://github.com/lapce/lsp-types", rev = "feaa1e2ec80975c9dadd400a238ceacf071058e6" }
regalloc2 = { rev = "5d79e12d0a93b10fc181f4da409b4671dd365228", git = "https://github.com/bytecodealliance/regalloc2" }


[workspace.dependencies.tracing]
git     = "https://github.com/tokio-rs/tracing"
rev     = "908cc432a5994f6e17c8f36e13c217dc40085704"
package = "tracing"

[workspace.dependencies.tracing-log]
git     = "https://github.com/tokio-rs/tracing"
rev     = "908cc432a5994f6e17c8f36e13c217dc40085704"
package = "tracing-log"

[workspace.dependencies.tracing-subscriber]
git     = "https://github.com/tokio-rs/tracing"
rev     = "908cc432a5994f6e17c8f36e13c217dc40085704"
package = "tracing-subscriber"

[workspace.dependencies.tracing-appender]
git     = "https://github.com/tokio-rs/tracing"
rev     = "908cc432a5994f6e17c8f36e13c217dc40085704"
package = "tracing-appender"

[workspace.dependencies.alacritty_terminal]
version = "0.23.0"

[workspace.dependencies.windows-sys]
version  = "0"
features = ["Win32_Foundation"]

[profile.release-lto]
inherits      = "release"
lto           = true
codegen-units = 1

# A profile which compiles all (non-workspace) dependencies in release mode
# but Lapce code in dev mode. This gives a good debugging experience for your
# code and fast performance of other people's code. After the initial
# build subsequent ones are as fast as dev mode builds.
# See https://doc.rust-lang.org/cargo/reference/profiles.html
# To use this profile:
#   cargo build --profile fastdev
#   cargo run --profile fastdev --bin lapce
[profile.fastdev.package."*"]
opt-level = 3

[profile.fastdev]
inherits = "dev"

