Bump nucleo to v0.4.1
We will use this in the child commit to improve the picker's running indicator. Nucleo 0.4.0 includes an `active_injectors` member that we can use to detect if anything can push to the picker. When that count drops to zero we can remove the running indicator. Nucleo 0.4.1 contains a fix for crashes with interactive global search on a large directory.
This commit is contained in:
parent
2c9f5b3efb
commit
11f809c177
5 changed files with 29 additions and 20 deletions
15
Cargo.lock
generated
15
Cargo.lock
generated
|
@ -209,12 +209,6 @@ version = "0.8.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cov-mark"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9ffa3d3e0138386cd4361f63537765cac7ee40698028844635a54495a92f67f3"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc32fast"
|
name = "crc32fast"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
|
@ -1785,9 +1779,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nucleo"
|
name = "nucleo"
|
||||||
version = "0.2.1"
|
version = "0.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ae5331f4bcce475cf28cb29c95366c3091af4b0aa7703f1a6bc858f29718fdf3"
|
checksum = "6350a138d8860658523a7593cbf6813999d17a099371d14f70c5c905b37593e9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nucleo-matcher",
|
"nucleo-matcher",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
|
@ -1796,11 +1790,10 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nucleo-matcher"
|
name = "nucleo-matcher"
|
||||||
version = "0.2.0"
|
version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1b702b402fe286162d1f00b552a046ce74365d2ac473a2607ff36ba650f9bd57"
|
checksum = "bf33f538733d1a5a3494b836ba913207f14d9d4a1d3cd67030c5061bdd2cac85"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cov-mark",
|
|
||||||
"memchr",
|
"memchr",
|
||||||
"unicode-segmentation",
|
"unicode-segmentation",
|
||||||
]
|
]
|
||||||
|
|
|
@ -38,7 +38,7 @@ package.helix-term.opt-level = 2
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
tree-sitter = { version = "0.22" }
|
tree-sitter = { version = "0.22" }
|
||||||
nucleo = "0.2.0"
|
nucleo = "0.4.1"
|
||||||
slotmap = "1.0.7"
|
slotmap = "1.0.7"
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use std::ops::DerefMut;
|
use std::ops::DerefMut;
|
||||||
|
|
||||||
use nucleo::pattern::{Atom, AtomKind, CaseMatching};
|
use nucleo::pattern::{Atom, AtomKind, CaseMatching, Normalization};
|
||||||
use nucleo::Config;
|
use nucleo::Config;
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
|
|
||||||
|
@ -38,6 +38,12 @@ pub fn fuzzy_match<T: AsRef<str>>(
|
||||||
if path {
|
if path {
|
||||||
matcher.config.set_match_paths();
|
matcher.config.set_match_paths();
|
||||||
}
|
}
|
||||||
let pattern = Atom::new(pattern, CaseMatching::Smart, AtomKind::Fuzzy, false);
|
let pattern = Atom::new(
|
||||||
|
pattern,
|
||||||
|
CaseMatching::Smart,
|
||||||
|
Normalization::Smart,
|
||||||
|
AtomKind::Fuzzy,
|
||||||
|
false,
|
||||||
|
);
|
||||||
pattern.match_list(items, &mut matcher)
|
pattern.match_list(items, &mut matcher)
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ use crate::{
|
||||||
ctrl, key, shift,
|
ctrl, key, shift,
|
||||||
};
|
};
|
||||||
use helix_core::fuzzy::MATCHER;
|
use helix_core::fuzzy::MATCHER;
|
||||||
use nucleo::pattern::{Atom, AtomKind, CaseMatching};
|
use nucleo::pattern::{Atom, AtomKind, CaseMatching, Normalization};
|
||||||
use nucleo::{Config, Utf32Str};
|
use nucleo::{Config, Utf32Str};
|
||||||
use tui::{buffer::Buffer as Surface, widgets::Table};
|
use tui::{buffer::Buffer as Surface, widgets::Table};
|
||||||
|
|
||||||
|
@ -80,7 +80,13 @@ impl<T: Item> Menu<T> {
|
||||||
pub fn score(&mut self, pattern: &str, incremental: bool) {
|
pub fn score(&mut self, pattern: &str, incremental: bool) {
|
||||||
let mut matcher = MATCHER.lock();
|
let mut matcher = MATCHER.lock();
|
||||||
matcher.config = Config::DEFAULT;
|
matcher.config = Config::DEFAULT;
|
||||||
let pattern = Atom::new(pattern, CaseMatching::Ignore, AtomKind::Fuzzy, false);
|
let pattern = Atom::new(
|
||||||
|
pattern,
|
||||||
|
CaseMatching::Ignore,
|
||||||
|
Normalization::Smart,
|
||||||
|
AtomKind::Fuzzy,
|
||||||
|
false,
|
||||||
|
);
|
||||||
let mut buf = Vec::new();
|
let mut buf = Vec::new();
|
||||||
if incremental {
|
if incremental {
|
||||||
self.matches.retain_mut(|(index, score)| {
|
self.matches.retain_mut(|(index, score)| {
|
||||||
|
|
|
@ -16,7 +16,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
use futures_util::future::BoxFuture;
|
use futures_util::future::BoxFuture;
|
||||||
use helix_event::AsyncHook;
|
use helix_event::AsyncHook;
|
||||||
use nucleo::pattern::CaseMatching;
|
use nucleo::pattern::{CaseMatching, Normalization};
|
||||||
use nucleo::{Config, Nucleo, Utf32String};
|
use nucleo::{Config, Nucleo, Utf32String};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
use tokio::sync::mpsc::Sender;
|
use tokio::sync::mpsc::Sender;
|
||||||
|
@ -506,9 +506,13 @@ impl<T: 'static + Send + Sync, D: 'static + Send + Sync> Picker<T, D> {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let is_append = pattern.starts_with(old_pattern);
|
let is_append = pattern.starts_with(old_pattern);
|
||||||
self.matcher
|
self.matcher.pattern.reparse(
|
||||||
.pattern
|
i,
|
||||||
.reparse(i, pattern, CaseMatching::Smart, is_append);
|
pattern,
|
||||||
|
CaseMatching::Smart,
|
||||||
|
Normalization::Smart,
|
||||||
|
is_append,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue