diff --git a/README.md b/README.md
index 86f4ef17..2bc10c01 100644
--- a/README.md
+++ b/README.md
@@ -338,6 +338,7 @@ require('fff').setup({
time_budget_ms = 150,
modes = { 'plain', 'regex', 'fuzzy' },
trim_whitespace = false,
+ enable_filename_constraint = false, -- treat filename-like tokens (e.g. `score.rs`) in a grep query as a file-path filter scoping the search; off = searched as literal text
location_format = ':%d:%d', -- printf format for line:col prefix in grep results, e.g. ':%d' for line-only
},
debug = {
diff --git a/crates/fff-nvim/src/lib.rs b/crates/fff-nvim/src/lib.rs
index 5bfc94a1..a9f3cb2d 100644
--- a/crates/fff-nvim/src/lib.rs
+++ b/crates/fff-nvim/src/lib.rs
@@ -5,8 +5,8 @@ use fff::frecency::FrecencyTracker;
use fff::path_utils::expand_tilde;
use fff::query_tracker::QueryTracker;
use fff::{
- DbHealthChecker, DirSearchConfig, Error, FFFMode, FileSearchConfig, FuzzySearchOptions,
- GrepConfig, MixedSearchConfig, PaginationArgs, QueryParser, Score, SearchResult,
+ DbHealthChecker, DirSearchConfig, Error, FFFMode, FFFQuery, FileSearchConfig,
+ FuzzySearchOptions, MixedSearchConfig, PaginationArgs, QueryParser, Score, SearchResult,
SharedFilePicker, SharedFrecency, SharedQueryTracker,
};
use mimalloc::MiMalloc;
@@ -15,12 +15,14 @@ use once_cell::sync::Lazy;
use path_shortening::PathShortenStrategy;
use std::path::{Path, PathBuf};
use std::time::Duration;
+use user_config::{NvimGrepConfig, UserConfigOptions, set_global_user_config};
mod error;
mod hex_dump;
mod log;
mod lua_types;
mod path_shortening;
+mod user_config;
#[global_allocator]
static GLOBAL: MiMalloc = MiMalloc;
@@ -65,6 +67,7 @@ struct PickerInitOpts {
follow_symlinks: bool,
enable_fs_root_scanning: bool,
enable_home_dir_scanning: bool,
+ enable_filename_constraint: bool,
}
impl PickerInitOpts {
@@ -86,6 +89,9 @@ impl PickerInitOpts {
enable_home_dir_scanning: t
.get::