GrepAI Supported Languages
This skill covers the programming languages supported by GrepAI for indexing and call graph analysis.
When to Use This Skill
-
Checking if your language is supported
-
Configuring language-specific settings
-
Understanding trace capabilities per language
-
Troubleshooting language-related issues
Supported Languages Overview
GrepAI supports indexing for all text-based files, but has enhanced support for specific programming languages.
Full Support (Index + Trace)
Language Extensions Index Trace
Go .go
✅ ✅
JavaScript .js , .jsx
✅ ✅
TypeScript .ts , .tsx
✅ ✅
Python .py
✅ ✅
PHP .php
✅ ✅
C .c , .h
✅ ✅
C++ .cpp , .hpp , .cc , .cxx , .hh
✅ ✅
Rust .rs
✅ ✅
Zig .zig
✅ ✅
C# .cs
✅ ✅
Java .java
✅ ✅
Pascal/Delphi .pas , .dpr
✅ ✅
Index Only (No Trace)
Language Extensions Index Trace
Ruby .rb
✅ ❌
Swift .swift
✅ ❌
Kotlin .kt , .kts
✅ ❌
Scala .scala
✅ ❌
Lua .lua
✅ ❌
Shell .sh , .bash , .zsh
✅ ❌
SQL .sql
✅ ❌
HTML .html , .htm
✅ ❌
CSS .css , .scss , .less
✅ ❌
Markdown .md , .mdx
✅ ❌
YAML .yaml , .yml
✅ ❌
JSON .json
✅ ❌
TOML .toml
✅ ❌
XML .xml
✅ ❌
Language Configuration
Enabling/Disabling Languages for Trace
.grepai/config.yaml
trace: enabled_languages: - .go - .js - .ts - .jsx - .tsx - .py - .php - .rs - .c - .cpp - .cs - .java
Excluding Certain Extensions
trace: enabled_languages: - .go # Exclude JavaScript intentionally # - .js
exclude_patterns: - "_test.go" - ".spec.ts"
Language-Specific Tips
Go
trace: enabled_languages: - .go exclude_patterns: - "test.go" - "mock.go" - "*_mock.go"
Trace accuracy: Excellent. Go's explicit syntax makes tracing very reliable.
JavaScript/TypeScript
trace: enabled_languages: - .js - .jsx - .ts - .tsx exclude_patterns: - ".test.js" - ".spec.ts" - "*.d.ts" # Type declarations
Trace accuracy: Good. Some dynamic patterns may be missed.
Python
trace: enabled_languages: - .py exclude_patterns: - "test_.py" - "_test.py" - "conftest.py"
Trace accuracy: Good. Dynamic imports and decorators may be missed.
C/C++
trace: enabled_languages: - .c - .h - .cpp - .hpp - .cc - .cxx exclude_patterns: - "*_test.cpp"
Trace accuracy: Good. Macros and templates may affect accuracy.
Rust
trace: enabled_languages: - .rs exclude_patterns: - "/tests/" - "/benches/"
Trace accuracy: Excellent. Rust's explicit syntax aids accurate tracing.
PHP
trace: enabled_languages: - .php exclude_patterns: - "*Test.php" - "/tests/"
Trace accuracy: Good. Magic methods may not be fully traced.
Java
trace: enabled_languages: - .java exclude_patterns: - "*Test.java" - "/test/"
Trace accuracy: Good. Reflection-based calls may be missed.
C#
trace: enabled_languages: - .cs exclude_patterns: - "*Tests.cs" - "/Tests/"
Trace accuracy: Good. Delegates and events may be partially traced.
Multi-Language Projects
For projects with multiple languages:
trace: enabled_languages: # Backend (Go) - .go # Frontend (TypeScript) - .ts - .tsx # Shared (SQL, etc.) - .sql # Index only
exclude_patterns: - "_test.go" - ".spec.ts"
Index vs Trace Explained
Index (Semantic Search)
-
Works on any text file
-
Code is chunked and embedded
-
Enables semantic search
-
No language-specific parsing required
Trace (Call Graphs)
-
Requires language-specific parsing
-
Extracts function definitions and calls
-
Builds caller/callee relationships
-
Uses regex (fast) or tree-sitter (precise)
Trace Modes by Language
Language Fast Mode Precise Mode
Go ✅ ✅
JavaScript ✅ ✅
TypeScript ✅ ✅
Python ✅ ✅
PHP ✅ ✅
C/C++ ✅ ✅
Rust ✅ ✅
Zig ✅ ✅
C# ✅ ✅
Java ✅ ✅
Pascal ✅ ⚠️ Limited
Adding Custom Extensions
If you have non-standard extensions, they'll be indexed but not traced:
Custom extension files will be indexed
ignore:
Only add patterns for files you DON'T want indexed
- "*.generated.go"
File Type Detection
GrepAI uses file extensions for detection. It does NOT use:
-
Shebangs (#!/usr/bin/env python )
-
File content analysis
-
.editorconfig
Unsupported Languages (Index Works, No Trace)
These languages can be indexed for semantic search but don't have trace support:
-
Ruby
-
Swift
-
Kotlin
-
Scala
-
Elixir
-
Clojure
-
Haskell
-
OCaml
-
F#
-
Erlang
-
R
-
Julia
-
Perl
-
Groovy
Workaround: Use semantic search to find code, then manually trace.
Best Practices
-
Enable only needed languages: Faster trace building
-
Exclude test files: Cleaner trace results
-
Use precise mode for accuracy: When trace results seem incomplete
-
Match your tech stack: Configure based on your actual languages
Checking Language Support
Check what's being indexed
grepai status
Will show file counts by type
Common Issues
❌ Problem: Files not being indexed ✅ Solution: Check file isn't in ignore patterns
❌ Problem: Trace missing for language ✅ Solution: Ensure language is in enabled_languages
❌ Problem: Wrong language detected ✅ Solution: GrepAI uses extensions only; rename files if needed
Output Format
Language support summary:
📚 GrepAI Language Support
Full Support (Index + Trace):
- Go (.go)
- JavaScript (.js, .jsx)
- TypeScript (.ts, .tsx)
- Python (.py)
- PHP (.php)
- C/C++ (.c, .cpp, .h, .hpp)
- Rust (.rs)
- Zig (.zig)
- C# (.cs)
- Java (.java)
- Pascal (.pas, .dpr)
Index Only (No Trace):
- Ruby, Swift, Kotlin, Scala
- Shell scripts, SQL, HTML, CSS
- Config files (YAML, JSON, TOML)
- Documentation (Markdown)
Your config enables trace for:
- .go, .js, .ts, .py