- name
- search-code
- description
- Search for code patterns in Syncpack. Use when finding symbols, implementations, or understanding how code is used. Covers ast-grep for Rust and grep/rg for other cases.
# Search Code
Guide for searching the Syncpack codebase effectively.
## Golden Rule
**Use `ast-grep` for Rust files** — it filters out comments, strings, and docs.
## Quick Reference
| Looking for... | Use |
| --------------------------------- | ----------- |
| Rust symbols, patterns, structs | `ast-grep` |
| Multiple file types | `grep`/`rg` |
| Content in comments intentionally | `grep`/`rg` |
| Non-Rust files (JSON, MD, TOML) | `grep`/`rg` |
## ast-grep Examples
```bash
# Find struct definitions
ast-grep -p 'pub struct $NAME' src/
# Find function calls
ast-grep -p 'Specifier::new' src/
# Find enum variants
ast-grep -p 'pub enum $NAME' src/
# Find impl blocks
ast-grep -p 'impl $TYPE' src/
# Find specific method definitions
ast-grep -p 'pub fn run($$$) -> i32' src/
# Find match expressions
ast-grep -p 'match $EXPR { $$$ }' src/
```
## Pattern Syntax
| Pattern | Matches |
| ------- | -------------------------------------------- |
| `$NAME` | Single identifier |
| `$$$` | Zero or more items (arguments, fields, etc.) |
| `$_` | Any single expression |
## When to Use grep/rg
```bash
# Search across file types
rg "TODO" --type rust --type md
# Search in comments (ast-grep ignores these)
rg "FIXME" src/
# Search non-Rust files
rg "version" Cargo.toml
# Case-insensitive search
rg -i "error" src/
```
## Common Searches
### Find where a type is used
```bash
ast-grep -p 'Context' src/
```
### Find all InstanceState assignments
```bash
ast-grep -p 'InstanceState::valid' src/
ast-grep -p 'InstanceState::fixable' src/
ast-grep -p 'InstanceState::unfixable' src/
```
### Find test files
```bash
find src -name '*_test.rs'
```
### Find command implementations
```bash
ast-grep -p 'pub fn run($$$) -> i32' src/commands/
```
## Tips
- Start broad, then narrow with more specific patterns
- Use `ast-grep` output to find the file, then `read_file` to understand context
- Chain searches: find the type, then find where it's constructed
View on GitHub