public class FileCodeModelCallbackProvider()

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();
                }));
        }
    }