awesome-repositories.com
Blog
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectAboutHow we rankPressMCP server
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
bbatsov avatar

bbatsov/projectile

0
View on GitHub↗
4,210 stars·587 forks·Emacs Lisp·GPL-3.0·4 viewsdocs.projectile.mx↗

Projectile

Projectile is an Emacs project management library and workflow toolkit designed for discovering project roots, indexing files, and navigating source code. It functions as a project file indexer and project-wide search tool, utilizing version control markers to identify project boundaries and track uncommitted changes.

The system distinguishes itself through a pluggable architecture for indexing backends and search interfaces. It supports asynchronous indexing to prevent interface freezing and utilizes persistent caching to accelerate file lookups. Navigation is further enhanced by the ability to toggle between related files based on naming conventions and the capacity to search for files across multiple project roots in a combined view.

The toolkit covers a broad surface of project administration, including the execution of project-specific build and test commands, integration with CMake presets, and the management of project-specific terminal sessions. It also provides utilities for global text replacement, symbol reference location, and integration with external completion frameworks and file explorers.

Features

  • Project Management Libraries - Serves as a comprehensive library for project root discovery, file indexing, and source code navigation within Emacs.
  • Project Root Discovery - Identifies project boundaries by scanning for version control indicators or specific configuration files in the directory hierarchy.
  • Project Descriptor Caches - Caches high-level project structure and file lists to avoid redundant filesystem scans across sessions.
  • Search Backend Abstractions - Provides pluggable interfaces that abstract global text search and replacement across different search tool implementations.
  • Project File Search - Implements a searchable interface to quickly locate and open files within a project directory.
  • Project Search Tools - Provides high-performance global text search and replacement operations across all files in a recognized project.
  • Project Type Definitions - Registers new project types by specifying unique marker files and compilation conventions.
  • Project Workflow Tools - Offers a toolkit for defining and executing project-specific build commands, test runs, and shell integrations.
  • Version Control Integrations - Utilizes version control markers to identify project boundaries and track uncommitted changes.
  • Project File Indexing - Implements a system for scanning directory structures and caching file lists to enable rapid file lookup.
  • Indexing Backends - Uses a registration system to switch between native Lisp, shell commands, or version control tools for file discovery.
  • Related File Cyclers - Provides utilities to toggle between associated files, such as source and test pairs, based on naming patterns.
  • File Lookup Caches - Stores indexed file lists in memory or on disk to accelerate subsequent lookups and navigation.
  • Asynchronous Project Scans - Performs project indexing in the background to maintain editor responsiveness during large filesystem scans.
  • Code Reference Locators - Finds all occurrences and references of specific symbols across the entire project codebase.
  • Project Command Dispatchers - Triggers common project actions and custom methods through a central interactive dispatch menu.
  • Project Task Execution - Executes build tools and named command sequences within the current project context.
  • Root-Relative Command Execution - Executes configuration, compilation, and test commands relative to the discovered project root.
  • Remote Navigation Optimizations - Accelerates file discovery and indexing over remote connections using optimized shell commands.
  • Project Context Switchers - Transitions the active session to different projects and manages the associated set of buffers.
  • Indexing Exclusions - Allows excluding specific files or extensions from the project index using defined patterns.
  • Asynchronous Project File Streams - Implements mechanisms for incrementally streaming project file lists to asynchronous interfaces during discovery.
  • Directory-Local Command Configurations - Allows project-specific build and test commands to be defined within directory-local configuration files.
  • Source-to-Test Mappings - Switches between source and test files by applying naming conventions and extension transformations to filenames.
  • Project Action Menus - Centralizes project commands and lifecycle tasks through a single interactive dispatch menu.
  • Bulk Text Replacers - Executes global query-replace operations on text patterns across all files in a project.

Star history

Star history chart for bbatsov/projectileStar history chart for bbatsov/projectile

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Projectile

Similar open-source projects, ranked by how many features they share with Projectile.
  • sinelaw/freshsinelaw avatar

    sinelaw/fresh

    5,914View on GitHub↗

    Zed is a terminal-based code editor built in Rust that provides a full-featured editing experience with familiar keybindings, mouse support, and multiple cursors. It runs entirely in the terminal while offering capabilities typically found in graphical editors, including split panes, a command palette, and integrated language server protocol support for real-time diagnostics, completions, go-to-definition, and code actions across multiple languages. The editor distinguishes itself through a plugin system that runs sandboxed TypeScript plugins in a QuickJS runtime, with an asynchronous bridge

    Rustideterminal-basedtext-editor
    View on GitHub↗5,914
  • carlhuda/januscarlhuda avatar

    carlhuda/janus

    7,843View on GitHub↗

    Janus is a Vim distribution and curated plugin configuration that transforms the editor into a full-featured development environment. It functions as a Vim-based IDE, integrating a collection of third-party extensions to provide an integrated development experience. The system features a fuzzy-search project navigator for locating files, buffers, and symbols across a codebase. It also includes a Git-integrated workflow that provides real-time diff visualization in the sign column and allows users to stage hunks and manage version control directly within the editor. The environment covers bro

    Vim script
    View on GitHub↗7,843
  • syl20bnr/spacemacssyl20bnr avatar

    syl20bnr/spacemacs

    24,560View on GitHub↗

    Spacemacs is a community-driven configuration for Emacs that integrates modal text editing and a modular system for managing editor features. It implements distinct states for navigation and insertion to separate text manipulation from text entry, combining the efficiency of modal navigation with the extensibility of the Emacs environment. The project distinguishes itself through a layer-based feature composition system, which groups related third-party packages and configurations into modular units. This system includes dependency-based resolution to manage conflicting extensions and a mnemo

    Emacs Lispcommunity-drivenconfigurationemacs
    View on GitHub↗24,560
  • kien/ctrlp.vimkien avatar

    kien/ctrlp.vim

    7,241View on GitHub↗

    ctrlp.vim is a fuzzy file navigation tool for the Vim editor. It enables the location and opening of files, buffers, tags, and recently used items through approximate string matching and regular expressions. The project identifies project roots by scanning for version control markers and configuration files. It allows for the creation of new files and their required parent directories directly from the search interface, and can open multiple files simultaneously. Broad capabilities include text editor resource management and workflow automation, such as executing specific commands immediatel

    VimL
    View on GitHub↗7,241
See all 30 alternatives to Projectile→

Frequently asked questions

What does bbatsov/projectile do?

Projectile is an Emacs project management library and workflow toolkit designed for discovering project roots, indexing files, and navigating source code. It functions as a project file indexer and project-wide search tool, utilizing version control markers to identify project boundaries and track uncommitted changes.

What are the main features of bbatsov/projectile?

The main features of bbatsov/projectile are: Project Management Libraries, Project Root Discovery, Project Descriptor Caches, Search Backend Abstractions, Project File Search, Project Search Tools, Project Type Definitions, Project Workflow Tools.

What are some open-source alternatives to bbatsov/projectile?

Open-source alternatives to bbatsov/projectile include: sinelaw/fresh — Zed is a terminal-based code editor built in Rust that provides a full-featured editing experience with familiar… carlhuda/janus — Janus is a Vim distribution and curated plugin configuration that transforms the editor into a full-featured… syl20bnr/spacemacs — Spacemacs is a community-driven configuration for Emacs that integrates modal text editing and a modular system for… kien/ctrlp.vim — ctrlp.vim is a fuzzy file navigation tool for the Vim editor. It enables the location and opening of files, buffers,… folke/todo-comments.nvim — todo-comments.nvim is a Neovim plugin and codebase task navigator that highlights and manages task keywords within… skwp/dotfiles — This project is a curated configuration suite and development environment bootstrapper designed to optimize Zsh and…