Пример #1
0
        public override void HandleTextEntered(EditorWinForm control, string insertText)
        {
            if (_isInitialized)
            {
                switch (insertText)
                {
                case "'":
                case "\"":
                case " ":
                case "<":
                case ",":
                case "(":
                case ".":
                case "!":
                case "|":
                case "[":
                    _sql.CurrentTextArea = control.Editor.TextArea;
                    ShowCompletions(control)
                    .Done(data =>
                    {
                        if (data != null && data.IsXmlTag && !data.Items.Any() &&
                            control.Editor.CaretOffset < control.Editor.Document.TextLength)
                        {
                            var doc   = control.Editor.TextArea.Document;
                            var quote = doc.GetCharAt(doc.LastIndexOf('=', 0, control.Editor.CaretOffset) + 1);
                            if (insertText[0] == quote && quote == doc.GetCharAt(control.Editor.CaretOffset))
                            {
                                doc.Remove(control.Editor.CaretOffset, 1);
                            }
                        }
                    });
                    break;

                case ">":
                    var endTag = this.LastOpenTag(control.Document.CreateSnapshot(0, control.Editor.CaretOffset));
                    if (!string.IsNullOrEmpty(endTag))
                    {
                        var insert = "</" + endTag + ">";
                        if (!control.Editor.Text.Substring(control.Editor.CaretOffset).StartsWith(insert))
                        {
                            control.Editor.Document.Insert(control.Editor.CaretOffset, insert, AnchorMovementType.BeforeInsertion);
                            control.HideCompletionWindow();
                        }
                    }
                    ShowCompletions(control);
                    break;
                }
            }
        }
Пример #2
0
 public override void HandleTextEntered(EditorWinForm control, string insertText)
 {
   if (_isInitialized)
   {
     switch (insertText)
     {
       case "'":
       case "\"":
       case " ":
       case "<":
       case ",":
       case "(":
       case ".":
       case "!":
         _sql.CurrentTextArea = control.Editor.TextArea;
         ShowCompletions(control)
           .Done(data =>
           {
             if (data != null && data.IsXmlTag && !data.Items.Any()
               && control.Editor.CaretOffset < control.Editor.Document.TextLength)
             {
               var doc = control.Editor.TextArea.Document;
               var quote = doc.GetCharAt(doc.LastIndexOf('=', 0, control.Editor.CaretOffset) + 1);
               if (insertText[0] == quote && quote == doc.GetCharAt(control.Editor.CaretOffset))
               {
                 doc.Remove(control.Editor.CaretOffset, 1);
               }
             }
           });
         break;
       case ">":
         var endTag = this.LastOpenTag(control.Document.CreateSnapshot(0, control.Editor.CaretOffset));
         if (!string.IsNullOrEmpty(endTag))
         {
           var insert = "</" + endTag + ">";
           if (!control.Editor.Text.Substring(control.Editor.CaretOffset).StartsWith(insert))
           {
             control.Editor.Document.Insert(control.Editor.CaretOffset, insert, AnchorMovementType.BeforeInsertion);
             control.HideCompletionWindow();
           }
         }
         ShowCompletions(control);
         break;
     }
   }
 }