Search Symbols by Repository, not Project

Summary:
Fixes T7977.
- Move Indexed Languages and See Symbols From config to Repository
- Make symbol search skip projects

This also makes the default languages to Everything instead of Nothing.

Test Plan:
- Browse files, click symbols.
- Use quick search to find symbols
- Browse revision, click symbols

Reviewers: joshuaspence, epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin, epriestley

Maniphest Tasks: T7977

Differential Revision: https://secure.phabricator.com/D12687
This commit is contained in:
Aviv Eyal
2015-05-18 06:29:47 -07:00
committed by epriestley
parent 79e8d9fc2d
commit 898ce6bace
16 changed files with 336 additions and 83 deletions

View File

@@ -266,32 +266,20 @@ final class DiffusionBrowseFileController extends DiffusionBrowseController {
$id = celerity_generate_unique_node_id();
$projects = $drequest->loadArcanistProjects();
$langs = array();
foreach ($projects as $project) {
$ls = $project->getSymbolIndexLanguages();
if (!$ls) {
continue;
}
$dep_projects = $project->getSymbolIndexProjects();
$dep_projects[] = $project->getPHID();
foreach ($ls as $lang) {
if (!isset($langs[$lang])) {
$langs[$lang] = array();
}
$langs[$lang] += $dep_projects + array($project);
}
}
$repo = $drequest->getRepository();
$symbol_repos = $repo->getSymbolSources();
$symbol_repos[] = $repo;
$lang = last(explode('.', $drequest->getPath()));
if (isset($langs[$lang])) {
$repo_languages = $repo->getSymbolLanguages();
$repo_languages = array_fill_keys($repo_languages, true);
if (empty($repo_languages) || isset($repo_languages[$lang])) {
Javelin::initBehavior(
'repository-crossreference',
array(
'container' => $id,
'lang' => $lang,
'projects' => $langs[$lang],
'repositories' => $symbol_repos,
));
}