예제 #1
0
 // Omitting CommitAllDocuments causes races between caches and assembly resolver
 protected virtual void CreateOrUpdateData([NotNull] IT4File t4File)
 {
     Locks.ExecuteOrQueueEx("T4 assembly reference invalidation", () =>
     {
         using var cookie = ReadLockCookie.Create();
         PsiFiles.ExecuteAfterCommitAllDocuments(() => DoInvalidateAssemblies(t4File));
     });
 }
 public void Execute(IDataContext context, DelegateExecute nextExecute)
 {
     using (ReadLockCookie.Create())
     {
         PsiFiles.CommitAllDocuments();
         ShowLocations(Tracker.EditLocations, Tracker.CurrentEdit, "Recent Edits", true);
     }
 }
예제 #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T4FileDataCache"/> class.
        /// </summary>
        /// <param name="lifetime">The lifetime of this class.</param>
        /// <param name="psiFiles">The PSI manager.</param>
        /// <param name="directiveInfoManager">An instance of <see cref="DirectiveInfoManager"/>.</param>
        public T4FileDataCache([NotNull] Lifetime lifetime, [NotNull] PsiFiles psiFiles, [NotNull] DirectiveInfoManager directiveInfoManager)
        {
            _directiveInfoManager = directiveInfoManager;
            _fileDataChanged      = new Signal <Pair <IPsiSourceFile, T4FileDataDiff> >(lifetime, "T4FileDataCache.FileDataChanged");

            lifetime.AddBracket(
                () => psiFiles.PsiFileCreated += OnPsiFileChanged,
                () => psiFiles.PsiFileCreated -= OnPsiFileChanged);
            lifetime.AddBracket(
                () => psiFiles.AfterPsiChanged += OnPsiChanged,
                () => psiFiles.AfterPsiChanged -= OnPsiChanged);
            lifetime.AddDispose(_fileDataBySourceFile);
        }
예제 #4
0
 private void RegisterPsiChanged([NotNull] Lifetime lifetime, [NotNull] PsiFiles psiFiles)
 {
     lifetime.AddBracket(
         () => psiFiles.AfterPsiChanged += OnPsiChanged,
         () => psiFiles.AfterPsiChanged -= OnPsiChanged);
 }