forked from extern/nushell
# Description This PR replaces `SkimMatcherV2` from the [fuzzy-matcher](https://docs.rs/fuzzy-matcher/latest/fuzzy_matcher/) crate with the [nucleo-matcher](https://docs.rs/nucleo-matcher/latest/nucleo_matcher/) crate for doing fuzzy matching. This touches both our completion code in `nu-cli` and symbol filtering in `nu-lsp`. Nucleo should give us better performance than Skim. In the event that we decide to use the Nucleo frontend ([crate docs](https://docs.rs/nucleo/latest/nucleo/)) too, it also works on Windows, unlike [Skim](https://github.com/skim-rs/skim), which appears to only support Linux and MacOS. Unfortunately, we still have an indirect dependency on `fuzzy-matcher`, because the [`dialoguer`](https://github.com/console-rs/dialoguer) crate uses it. # User-Facing Changes No breaking changes. Suggestions will be sorted differently, because Nucleo uses a different algorithm from Skim for matching/scoring. Hopefully, the new sorting will generally make more sense. # Tests + Formatting In `nu-cli`, modified an existing test, but didn't test performance. I haven't tested `nu-lsp` manually, but existing tests pass. I did manually do `ls /nix/store/<TAB>`, `ls /nix/store/d<TAB>`, etc., but didn't notice Nucleo being faster (my `/nix/store` folder has 34136 items at the time of writing).
52 lines
2.0 KiB
TOML
52 lines
2.0 KiB
TOML
[package]
|
|
authors = ["The Nushell Project Developers"]
|
|
description = "CLI-related functionality for Nushell"
|
|
repository = "https://github.com/nushell/nushell/tree/main/crates/nu-cli"
|
|
edition = "2021"
|
|
license = "MIT"
|
|
name = "nu-cli"
|
|
version = "0.101.1"
|
|
|
|
[lib]
|
|
bench = false
|
|
|
|
[dev-dependencies]
|
|
nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.101.1" }
|
|
nu-command = { path = "../nu-command", version = "0.101.1" }
|
|
nu-test-support = { path = "../nu-test-support", version = "0.101.1" }
|
|
rstest = { workspace = true, default-features = false }
|
|
tempfile = { workspace = true }
|
|
|
|
[dependencies]
|
|
nu-cmd-base = { path = "../nu-cmd-base", version = "0.101.1" }
|
|
nu-engine = { path = "../nu-engine", version = "0.101.1", features = ["os"] }
|
|
nu-glob = { path = "../nu-glob", version = "0.101.1" }
|
|
nu-path = { path = "../nu-path", version = "0.101.1" }
|
|
nu-parser = { path = "../nu-parser", version = "0.101.1" }
|
|
nu-plugin-engine = { path = "../nu-plugin-engine", version = "0.101.1", optional = true }
|
|
nu-protocol = { path = "../nu-protocol", version = "0.101.1", features = ["os"] }
|
|
nu-utils = { path = "../nu-utils", version = "0.101.1" }
|
|
nu-color-config = { path = "../nu-color-config", version = "0.101.1" }
|
|
nu-ansi-term = { workspace = true }
|
|
reedline = { workspace = true, features = ["bashisms", "sqlite"] }
|
|
|
|
chrono = { default-features = false, features = ["std"], workspace = true }
|
|
crossterm = { workspace = true }
|
|
fancy-regex = { workspace = true }
|
|
is_executable = { workspace = true }
|
|
log = { workspace = true }
|
|
lscolors = { workspace = true, default-features = false, features = ["nu-ansi-term"] }
|
|
miette = { workspace = true, features = ["fancy-no-backtrace"] }
|
|
nucleo-matcher = { workspace = true }
|
|
percent-encoding = { workspace = true }
|
|
sysinfo = { workspace = true }
|
|
unicode-segmentation = { workspace = true }
|
|
uuid = { workspace = true, features = ["v4"] }
|
|
which = { workspace = true }
|
|
|
|
[features]
|
|
plugin = ["nu-plugin-engine"]
|
|
system-clipboard = ["reedline/system_clipboard"]
|
|
|
|
[lints]
|
|
workspace = true |