示例#1
0
 private void UpdateCurrentParameter()
 {
     if (SubjectBuffer != null && TextView != null)
     {
         IREditorDocument document = REditorDocument.TryFromTextBuffer(SubjectBuffer);
         if (document != null)
         {
             SnapshotPoint?p = REditorDocument.MapCaretPositionFromView(TextView);
             if (p.HasValue)
             {
                 document.EditorTree.InvokeWhenReady((o) => {
                     if (TextView != null)
                     {
                         // Session is still active
                         p = REditorDocument.MapCaretPositionFromView(TextView);
                         if (p.HasValue)
                         {
                             ComputeCurrentParameter(document.EditorTree.AstRoot, p.Value.Position);
                         }
                     }
                 }, null, this.GetType());
             }
             else
             {
                 SignatureHelp.DismissSession(TextView);
             }
         }
     }
 }
示例#2
0
 private void OnCaretPositionChanged(object sender, CaretPositionChangedEventArgs e)
 {
     if (TextView != null)
     {
         if (SignatureHelper.IsSameSignatureContext(TextView, SubjectBuffer))
         {
             UpdateCurrentParameter();
         }
         else
         {
             SignatureHelp.DismissSession(TextView, retrigger: true);
         }
     }
     else
     {
         e.TextView.Caret.PositionChanged -= OnCaretPositionChanged;
     }
 }
示例#3
0
        protected virtual void OnSubjectBufferChanged(object sender, TextContentChangedEventArgs e)
        {
            if (Session != null && e.Changes.Count > 0)
            {
                int start, oldLength, newLength;
                TextUtility.CombineChanges(e, out start, out oldLength, out newLength);

                int position = start + newLength;
                if (position < _initialPosition)
                {
                    SignatureHelp.DismissSession(TextView);
                }
                else
                {
                    UpdateCurrentParameter();
                }
            }
        }
示例#4
0
 private void UpdateCurrentParameter()
 {
     if (SubjectBuffer != null && TextView != null)
     {
         IREditorDocument document = REditorDocument.TryFromTextBuffer(SubjectBuffer);
         if (document != null)
         {
             SnapshotPoint?p = REditorDocument.MapCaretPositionFromView(TextView);
             if (p.HasValue)
             {
                 document.EditorTree.EnsureTreeReady();
                 ComputeCurrentParameter(document.EditorTree.AstRoot, p.Value.Position);
             }
             else
             {
                 SignatureHelp.DismissSession(TextView);
             }
         }
     }
 }