Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Easy Search - Function FinderNew to Visual Studio Code? Get it now.
Easy Search - Function Finder

Easy Search - Function Finder

Akhil Maddineni

|
5 installs
| (0) | Free
Fast fuzzy search for functions, structs, and enums in C/C++/Python with Rust-powered indexing. Source Insight-style partial matching.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Easy Search - Fast Symbol Search

A VS Code extension that provides fast, fuzzy search for functions, structs, and enums in C/C++ and Python files, powered by a blazing-fast Rust indexer with tree-sitter parsing.

Features

✨ Fast Indexing: Blazing-fast symbol indexing using Rust and tree-sitter (~10,000 symbols/second)
🔍 Partial Name Matching: Search using partial names (e.g., "apple cat" finds "apple_ball_cat")
🎯 Multiple Symbol Types: Search functions, structs, and enums with visual type indicators
🌐 Multi-language Support: C, C++, and Python symbol detection
⚡ Sub-10ms Search: Lightning-fast search with subsequence matching
🔄 Auto-updating: Index automatically updates when files change
📍 Jump to Definition: Click any result to jump directly to the symbol
🖥️ Integrated Panel: Dedicated sidebar panel with search-as-you-type interface
🌍 Multi-platform: Native binaries for Windows (x64/ARM64) and Linux (x64)

Installation

Quick Install (Recommended)

  1. Download the latest .vsix file
  2. In VS Code, run: Extensions → Install from VSIX
  3. Reload VS Code

Build from Source

Prerequisites:

  • Windows: Visual Studio Build Tools, Rust, Node.js
  • Linux: build-essential, Rust, Node.js
  • Windows with WSL (for Linux builds): WSL with Alpine/Ubuntu, Rust in WSL

See BUILD_PLATFORMS.md for detailed multi-platform build instructions.

Quick build:

# Install dependencies
npm install

# Windows - Build for Windows platforms only (fastest)
npm run build-native-windows
npm run compile

# Windows with WSL - Build for Linux x64
npm run build-native-linux
npm run compile

# Linux - Build for Linux natively
cd indexer
cargo build --release --target x86_64-unknown-linux-gnu
cp target/x86_64-unknown-linux-gnu/release/libindex.so ../native/linux-x64/index.node
cd ..
npm run compile

# Package the extension
npm run package

The extension automatically detects your platform (Windows x64/ARM64, Linux x64) and loads the correct native module.

Usage

Search Symbols

Sidebar Panel: Click the Easy Search icon in the Activity Bar for the integrated search panel

Keyboard Shortcut: Ctrl+Shift+F12 (Windows/Linux) or Cmd+Shift+F12 (macOS) to open the sidebar panel

Quick Pick: Ctrl+Shift+P → "Easy Search: Find Function" for the quick pick interface

Search Examples

Functions:

Search Query Matches
get_user_data Exact: get_user_data
get user get_user_data, get_user_profile, get_user_info
init db initialize_database_connection, init_db_pool
apple cat apple_ball_cat, appleCat, apple_orange_cat
gud Subsequence: get_user_data
calc total calculate_total_price, calc_total_amount

Structs & Enums:

Search Query Symbol Type Matches
user data Struct user_data_t, UserDataStruct
error code Enum error_code_t, ErrorCodeEnum
cfg Struct config_settings, cfg_data

How It Works

The extension uses a Rust-based native module with tree-sitter parsers to:

  1. Parse: Use tree-sitter to parse C/C++/Python files and extract function definitions, struct declarations, and enum definitions
  2. Index: Build an in-memory index of all symbols with file locations and signatures
  3. Search: Perform fast partial matching using token-based subsequence algorithm
  4. Navigate: Jump directly to symbol definitions with one click from either the sidebar panel or quick pick interface

Matching Algorithm

The search implements partial matching:

  • Token Matching: Splits query into words and matches them in sequence
  • Subsequence Matching: Matches character sequences (e.g., "gud" → "get_user_data")
  • Smart Scoring: Ranks results by match quality and compactness
  • Case Insensitive: Works with any capitalization style

Configuration

Access settings via: File → Preferences → Settings → Search "Easy Search"

Setting Default Description
easySearch.autoIndex true Automatically index workspace on startup
easySearch.maxResults 100 Maximum number of search results to display

Commands

Command Description
Easy Search: Open Search Panel Open the Easy Search sidebar panel (Ctrl+Shift+F12)
Easy Search: Find Function Open quick pick search dialog
Easy Search: Rebuild Index Manually rebuild the symbol index

Performance

  • Indexing Speed: ~10,000 symbols per second
  • Search Speed: <10ms for most queries
  • Memory Usage: ~1MB per 10,000 indexed symbols
  • Symbol Types: Functions, structs, enums
  • Languages: C, C++, Python (more coming soon)

Testing

Test files are included in test_files/:

  1. Open the workspace in VS Code
  2. Press Ctrl+Shift+F12 or click the Easy Search icon in the sidebar
  3. Try these searches:
    • "apple cat" → finds apple_ball_cat function
    • "get user" → finds multiple user-related functions
    • "init db" → finds database initialization functions
    • "proc pay" → finds process_payment_transaction
    • "user data" → finds struct definitions
    • "error" → finds enums and error-related symbols

Troubleshooting

"Native indexer not found"

  • Ensure you built the Rust module: cd indexer && cargo build --release

Extension not activating

  • Check you have C/C++/Python files in your workspace
  • View → Output → Select "Easy Search" to see logs

No search results

  • Run "Easy Search: Rebuild Index" from command palette
  • Ensure your files have .c, .cpp, .h, .hpp, or .py extensions

Requirements

  • VS Code 1.85.0 or higher
  • Supported Platforms:
    • ✅ Windows x64
    • ✅ Windows ARM64
    • ✅ Linux x64 (glibc-based: Ubuntu, Debian, Fedora, etc.)
    • 🔄 Linux ARM64 (planned)
    • 🔄 macOS (planned)
  • For building: Rust 1.70+, Node.js 18+

Contributing

Contributions welcome! The project structure:

easy_search/
├── indexer/              # Rust native module
│   ├── src/
│   │   ├── lib.rs       # Neon bindings
│   │   ├── parser.rs    # Tree-sitter parsing
│   │   └── matcher.rs   # Fuzzy matching algorithm
│   └── Cargo.toml
├── src/
│   └── extension.ts     # VS Code extension
└── test_files/          # Example test files

Roadmap

  • [x] Functions, structs, and enums support
  • [x] Sidebar panel with search-as-you-type
  • [x] Multi-platform native binaries
  • [ ] Support for more languages (Java, JavaScript, TypeScript, Go, Rust)
  • [ ] Function parameter search and filtering
  • [ ] Symbol type filtering UI (toggle functions/structs/enums)
  • [ ] Class and typedef support
  • [ ] Performance optimizations for very large codebases (>100K symbols)

License

MIT License - See LICENSE file for details

Acknowledgments

  • Tree-sitter for the excellent parsing library
  • The Rust and VS Code communities
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft