in EnvDTE.Host/Callback/Impl/AstImpl/FileCodeModelCallbackProvider.cs [17:36]
public class FileCodeModelCallbackProvider( ProjectModelViewHost host, AstManager astManager)
: IEnvDteCallbackProvider
{
public void RegisterCallbacks(DteProtocolModel model, IScheduler scheduler)
{
model.FileCodeModel_get_CodeElements.SetWithProjectFileAsync(host, (lifetime, _, projectFile) =>
lifetime.StartReadActionAsync(() =>
{
var psiFile = projectFile.ToSourceFile()?.GetPrimaryPsiFile();
if (psiFile is null) return new List<CodeElementModel>();
var query =
from child in psiFile.GetEnvDTEModelChildren()
let childId = astManager.GetOrCreateId(child)
let childTypeId = PsiElementRegistrar.GetTypeId(child)
select new CodeElementModel(childTypeId, childId);
return query.ToList();
}));
}
}