Ejemplo n.º 1
0
    internal TextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
      : base() {
      Contract.Requires(textView != null);
      Contract.Requires(projectTracker != null);

      ContractsPackageAccessor.Current.ExtensionFailed += OnFailed;
      this.TextView = textView;
      if (textView.TextBuffer != null)
      {
        textView.TextBuffer.Changed += OnTextBufferChanged;
      }
      TextView.Closed += OnClosed;
      this._projectTracker = projectTracker;
      projectTracker.BuildDone += OnBuildDone;
//      ContractsPackageAccessor.Current.NewSourceFile += OnNewSourceFile;
      ContractsPackageAccessor.Current.NewCompilation += OnNewComilation;
      
      //Timer
      _textBufferChangedTimer = new System.Timers.Timer();
      _textBufferChangedTimer.AutoReset = false;
      _textBufferChangedTimer.Elapsed += OnTextViewSettled;
      _textBufferChangedTimer.Interval = DelayOnTextViewOpened; //Wait two seconds before attempting to fetch any syntactic/semantic information. This gives VS a chance to properly initialize everything.
      _textBufferChangedTimer.Start();

      //Set the text properties
      VSTextProperties = vsTextProperties;
      ContractsPackageAccessor.Current.QueueWorkItem((() => { VSTextProperties.LineHeight = TextView.LineHeight; }));

      //Set the file name
      Document document = TextView.TextSnapshot.GetOpenDocumentInCurrentContextWithChanges();
      FileName = document.Id;
    }
Ejemplo n.º 2
0
        internal TextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
            : base()
        {
            Contract.Requires(textView != null);
            Contract.Requires(projectTracker != null);

            ContractsPackageAccessor.Current.ExtensionFailed += OnFailed;
            this.TextView = textView;
            if (textView.TextBuffer != null)
            {
                textView.TextBuffer.Changed += OnTextBufferChanged;
            }
            TextView.Closed          += OnClosed;
            this._projectTracker      = projectTracker;
            projectTracker.BuildDone += OnBuildDone;
//      ContractsPackageAccessor.Current.NewSourceFile += OnNewSourceFile;
            ContractsPackageAccessor.Current.NewCompilation += OnNewComilation;

            //Timer
            _textBufferChangedTimer           = new System.Timers.Timer();
            _textBufferChangedTimer.AutoReset = false;
            _textBufferChangedTimer.Elapsed  += OnTextViewSettled;
            _textBufferChangedTimer.Interval  = DelayOnTextViewOpened; //Wait two seconds before attempting to fetch any syntactic/semantic information. This gives VS a chance to properly initialize everything.
            _textBufferChangedTimer.Start();

            //Set the text properties
            VSTextProperties = vsTextProperties;
            ContractsPackageAccessor.Current.QueueWorkItem((() => { VSTextProperties.LineHeight = TextView.LineHeight; }));

            //Set the file name
            Document document = TextView.TextSnapshot.GetOpenDocumentInCurrentContextWithChanges();

            FileName = document.Id;
        }
 public static ITextViewTracker GetOrCreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     Contract.Requires(textView != null);
     Contract.Requires(projectTracker != null);
     Contract.Ensures(Contract.Result<ITextViewTracker>() != null);
     return textView.TextBuffer.Properties.GetOrCreateSingletonProperty<ITextViewTracker>(TextViewTrackerAccessor.TextViewTrackerKey, delegate
     {
         return ContractsPackageAccessor.Current.GetVersionedServicesFactory().CreateTextViewTracker(textView, projectTracker, vsTextProperties);
     });
 }
    public ContractsProvider(IProjectTracker projectTracker) {
      Contract.Requires(projectTracker != null);

      //Grab a pointer back to our project tracker
      _projectTracker = projectTracker;

      //Initialize our caches
      _semanticMembersToCCIMethods = new Dictionary<ISymbol, IMethodReference>();
      _semanticTypesToCCITypes = new Dictionary<ITypeSymbol, ITypeReference>();
      _semanticAssemblysToCCIAssemblys = new Dictionary<IAssemblySymbol, IAssemblyReference>();
      _semanticPropertiesToCCIAccessorMethods = new Dictionary<ISymbol, Tuple<IMethodReference, IMethodReference>>();
    }
Ejemplo n.º 5
0
        public ContractsProvider(IProjectTracker projectTracker)
        {
            Contract.Requires(projectTracker != null);

            //Grab a pointer back to our project tracker
            _projectTracker = projectTracker;

            //Initialize our caches
            _semanticMembersToCCIMethods            = new Dictionary <CSharpMember, IMethodReference>();
            _semanticTypesToCCITypes                = new Dictionary <CSharpType, ITypeReference>();
            _semanticAssemblysToCCIAssemblys        = new Dictionary <CSharpAssembly, IAssemblyReference>();
            _semanticPropertiesToCCIAccessorMethods = new Dictionary <CSharpMember, Tuple <IMethodReference, IMethodReference> >();
        }
 public IContractsProvider CreateContractsProvider(IProjectTracker projectTracker)
 {
     return new ContractsProvider(projectTracker);
 }
 public ITextViewTracker CreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     return new TextViewTracker(textView, projectTracker, vsTextProperties);
 }
 public IContractsProvider CreateContractsProvider(IProjectTracker projectTracker)
 {
     return(new ContractsProvider(projectTracker));
 }
 public ITextViewTracker CreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     return(new TextViewTracker(textView, projectTracker, vsTextProperties));
 }
Ejemplo n.º 10
0
 public static ITextViewTracker GetOrCreateTextViewTracker(IWpfTextView textView, IProjectTracker projectTracker, VSTextProperties vsTextProperties)
 {
     Contract.Requires(textView != null);
     Contract.Requires(projectTracker != null);
     Contract.Ensures(Contract.Result <ITextViewTracker>() != null);
     return(textView.TextBuffer.Properties.GetOrCreateSingletonProperty <ITextViewTracker>(TextViewTrackerAccessor.TextViewTrackerKey, delegate
     {
         return ContractsPackageAccessor.Current.GetVersionedServicesFactory().CreateTextViewTracker(textView, projectTracker, vsTextProperties);
     }));
 }