JetBrains/intellij-community — pull request #189 by shyiko (2014-06-01 00:28:47+00:00)
Title: fileContentIndexingVoter extension point

A proposal for introducing fileContentIndexingVoter extension point which would allow to control file content indexing, effectively providing a way for overcoming issues described in [IDEA-23537](http://youtrack.jetbrains.com/issue/IDEA-23537) (has 8 linked issues, including IDEA, WI and WEB spaces), [IDEA-96277](http://youtrack.jetbrains.com/issue/IDEA-96277) and so on.

I've assembled a small plugin [shyiko/ijignore](https://github.com/shyiko/ijignore) to demonstrate how it can be used. Once .ijignore is in place, opening a project (sandbox home was forcefully rm -rf'ed, so no cheating) with
```
src/
... (few classes)
ext-4.2.1.883/ (374.5 MB / 14,782 items)
...
ideaIC-133.193/ (686.9 MB / 76,952 items)
...
.ijignore
```

where .ijignore looked like

```
ext-4.2.1.883/
ideaIC-133.193/
```

was almost instantaneous (in comparison to "without .ijignore"). Tested on 2 year old Macbook Pro (with SSD).

Same extension point could be used (for example):
- to add "Ignore" to the list of source actions (in addition to "Exclude", if you (ever) see it fit).
- for implementing custom indexing suppression strategies (e.g. by file extension, "marker files")

This would be really helpful for projects with frequent filesystem changes, significantly reducing time spent on "Indexing..." where it's not really needed.

Please let me know if you have any concerns regarding the pull request's content. I'm willing to make any changes you deem appropriate.

Thank you.