You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
-T rust -t rust still excludes Rust files instead of honoring the later type selection #196
For conflicting -t and -T selections of the same file type, tgrep always gives exclusion precedence. ripgrep honors the later selection. Consequently, -T rust -t rust silently omits Rust files that ripgrep admits.
The same difference is visible in --files, which exits 0 even though its output is incomplete.
Reproduce
mkdir repro-type-order &&cd repro-type-order
mkdir data
printf'needle\n'> data/a.rs
printf'needle\n'> data/a.txt
tgrep --no-index -T rust -t rust -l -- needle data
rg -T rust -t rust -l -- needle data
tgrep --no-index --files -T rust -t rust data
rg --files -T rust -t rust data
# Reverse-order control: both tools exclude Rust files
tgrep --no-index -t rust -T rust -l -- needle data
rg -t rust -T rust -l -- needle data
Case
Actual: tgrep 1.2.0
Expected: rg 15.1.0
-T rust -t rust content search
No stdout, exit 1
data/a.rs, exit 0
--files -T rust -t rust
No stdout, exit 0
data/a.rs, exit 0
Control: -t rust -T rust content search
No stdout, exit 1
No stdout, exit 1
The content-search cases reproduce with --no-index, an on-disk index, and tgrep serve --no-watch.
To repeat the indexed cases, run tgrep index data, remove --no-index, and keep the directory path data. For the server cases, start tgrep serve --no-watch data in another terminal and repeat those directory searches. --stats was used in the Windows harness to verify the selected backend, including (via server).
--files was separately verified in scan and local-index modes.
Environment
tgrep 1.2.0, official Windows x86_64 release.
Source inspected at release commit 3ba6ee02537281b68ee1366bb40df9f8b7cc54f0.
Windows; test harness run with PowerShell 7.
ripgrep 15.1.0 (af60c2de9d).
Verified on 2026-10-12. The shell examples describe the same fixture bytes and arguments tested on Windows.
Cause
tgrep-core/src/filetypes.rs:167 checks the exclusion matcher first and returns false immediately when it matches. tgrep-cli/src/search.rs:2233 receives separate selected/excluded type lists, so it cannot resolve the conflicting selections using their original interleaving.
Possible fix
Preserve the ordering of -t and -T operations when constructing the filter. A later selection of a type should supersede an earlier exclusion of that same type, as in ripgrep.
A regression could cover both argument orders in content search and --files, across indexed and scanned paths.
Activity
Fix ripgrep compatibility issues #194–#201 (#202)