Пример #1
0
 public override void HandleTextEntered(CodeEditor 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;
     }
   }
 }