public override ICompletionDataList HandleCodeCompletion(CodeCompletionContext completionContext, char triggerChar, ref int triggerWordLength) { if (!(triggerChar == ' ' || char.IsLetter(triggerChar) || triggerChar == '_' || triggerChar == '.' || triggerChar == '\0')) { return(null); } else if ((char.IsLetter(triggerChar) && !DResolver.IsTypeIdentifier(Document.Editor.Text, Document.Editor.Caret.Offset))) { return(null); } triggerWordLength = DCodeCompletionSupport.IsIdentifierChar(triggerChar) ? 1 : 0; // Require a parsed D source var dom = base.Document.ParsedDocument as ParsedDModule; if (dom == null) { return(null); } // Check if in comment or string literal if (DResolver.CommentSearching.IsInCommentAreaOrString(Document.Editor.Text, completionContext.TriggerOffset)) { return(null); } var l = new CompletionDataList(); DCodeCompletionSupport.BuildCompletionData(Document, dom.DDom, completionContext, l, triggerChar == '\0'?"":triggerChar.ToString()); return(l); }