Variable: projectile-indexing-method
projectile-indexing-method is a customizable variable defined in
projectile.el.
Value
alien
Documentation
Specifies the indexing method used by Projectile.
There are three indexing methods - native, hybrid and alien.
The native method is implemented in Emacs Lisp (therefore it is native to Emacs). Its advantage is that it is portable and will work everywhere that Emacs does. Its disadvantage is that it is a bit slow (especially for large projects). Generally it's a good idea to pair the native indexing method with caching.
The hybrid indexing method uses external tools (e.g. git, find, etc) to speed up the indexing process. Still, the files will be post-processed by Projectile for sorting/filtering purposes. In this sense that approach is a hybrid between native indexing and alien indexing.
The alien indexing method optimizes to the limit the speed of the hybrid indexing method. This means that Projectile will not do any processing of the files returned by the external commands and you're going to get the maximum performance possible. This behaviour makes a lot of sense for most people, as they'd typically be putting ignores in their VCS config and won't care about any additional ignores/unignores/sorting that Projectile might also provide.
The disadvantage of the hybrid and alien methods is that they are not well supported on Windows systems. That's why by default alien indexing is the default on all operating systems, except Windows.
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260310.858/projectile.el
(defcustom projectile-indexing-method
(if (eq system-type 'windows-nt) 'native 'alien)
"Specifies the indexing method used by Projectile.
There are three indexing methods - native, hybrid and alien.
The native method is implemented in Emacs Lisp (therefore it is
native to Emacs). Its advantage is that it is portable and will
work everywhere that Emacs does. Its disadvantage is that it is a
bit slow (especially for large projects). Generally it's a good
idea to pair the native indexing method with caching.
The hybrid indexing method uses external tools (e.g. git, find,
etc) to speed up the indexing process. Still, the files will be
post-processed by Projectile for sorting/filtering purposes.
In this sense that approach is a hybrid between native indexing
and alien indexing.
The alien indexing method optimizes to the limit the speed
of the hybrid indexing method. This means that Projectile will
not do any processing of the files returned by the external
commands and you're going to get the maximum performance
possible. This behaviour makes a lot of sense for most people,
as they'd typically be putting ignores in their VCS config and
won't care about any additional ignores/unignores/sorting that
Projectile might also provide.
The disadvantage of the hybrid and alien methods is that they are not well
supported on Windows systems. That's why by default alien indexing is the
default on all operating systems, except Windows."
:safe (lambda (x) (memq x '(native hybrid alien)))
:group 'projectile
:type '(radio
(const :tag "Native" native)
(const :tag "Hybrid" hybrid)
(const :tag "Alien" alien)))