-
-
Notifications
You must be signed in to change notification settings - Fork 577
Commit
The turbo-alien indexing method optimizes to the limit the speed of the alien 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.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,17 +6,25 @@ want to fine-tune to make Projectile fit your workflow better. | |
|
||
## Project indexing method | ||
|
||
Projectile has two modes of operation - one is portable and is | ||
implemented in Emacs Lisp (therefore it's *native* to Emacs and is known | ||
as the `native indexing method`) and the other relies on external | ||
commands like `find`, `git`, etc to obtain the list of files in a | ||
project. | ||
|
||
Projectile has three modes of operation - one is portable and is | ||
implemented in Emacs Lisp (therefore it's *native* to Emacs and is | ||
known as the `native indexing method`) and the other two (`alien` and | ||
`turbo-alien`) rely on external commands like `find`, `git`, etc to | ||
obtain the list of files in a project. | ||
|
||
The `turbo-alien` indexing method optimizes to the limit the speed of | ||
the `alien` 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 (e.g. `.gitignore`) and won't care about | ||
any additional ignores/unignores/sorting that Projectile might also | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
bbatsov
Author
Owner
|
||
provide. | ||
|
||
!!! Info | ||
|
||
Since the `native` indexing mode is much slower, by default the `alien` | ||
method is used on all operating systems except Windows. | ||
By default the `turbo-alien` method is used on all operating systems except Windows. | ||
Prior to Projectile 1.1 `alien` used to be the default. | ||
|
||
To force the | ||
use of native indexing in all operating systems: | ||
|
@@ -25,16 +33,23 @@ use of native indexing in all operating systems: | |
(setq projectile-indexing-method 'native) | ||
``` | ||
|
||
To force the use of alien indexing in all operating system: | ||
To force the use of alien indexing in all operating systems: | ||
|
||
```el | ||
(setq projectile-indexing-method 'alien) | ||
``` | ||
|
||
This can speed up Projectile in Windows significantly. The | ||
disadvantage of this method is that it's not well supported on Windows | ||
systems, as it requires setting up some Unix utilities there. If | ||
there's problem, you can always use native indexing mode. | ||
To force the use of turbo alien indexing in all operating systems: | ||
|
||
```el | ||
(setq projectile-indexing-method 'turbo-alien) | ||
``` | ||
|
||
This can speed up Projectile in Windows significantly (especially on | ||
big projects). The disadvantage of this method is that it's not well | ||
supported on Windows systems, as it requires setting up some Unix | ||
utilities there. If there's problem, you can always use `native` | ||
indexing mode. | ||
|
||
## Caching | ||
|
||
|
2 comments
on commit e3007ae
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any updates on this? Has it been merged into master?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH, I've been thinking about this problem a while, and I disagree with this solution (if it's considered final).
In the projects I'm working on, we have both files checked into Git but ones that I want to see ignored for navigation (e.g. VCR cassettes), as well as vice versa (some config files, e.g. settings.yml, when the version checked into Git is called settings.sample.yml).
I think we can combine the ignore lists somehow and pass the result to Git using
--exclude-from
. I've been toying with this approach for the built-in project.el backend, albeit very slowly.