public override ICompletionDataList HandleCodeCompletion(CodeCompletionContext completionContext, char triggerChar, ref int triggerWordLength) { var l = new CompletionDataList(); if (!(triggerChar == ' ' || char.IsLetter(triggerChar) || triggerChar == '@' || triggerChar == '(' || triggerChar == '_' || triggerChar == '.' || triggerChar == '\0')) { return(l); } triggerWordLength = (char.IsLetter(triggerChar) || triggerChar == '_' || triggerChar == '@') ? 1 : 0; // Require a parsed D source var dom = base.Document.ParsedDocument as ParsedDModule; if (dom != null && dom.DDom != null) { lock (dom.DDom) DCodeCompletionSupport.BuildCompletionData( Document, dom.DDom, completionContext, l, triggerChar); } return(l); }
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); }
public override ICompletionDataList HandleCodeCompletion(CodeCompletionContext completionContext, char triggerChar, ref int triggerWordLength) { updater.FinishUpdate(); if (!EnableAutoCodeCompletion && char.IsLetter(triggerChar)) { return(null); } if (char.IsLetterOrDigit(triggerChar) || triggerChar == '_') { if (completionContext.TriggerOffset > 1) { var prevChar = document.Editor.GetCharAt(completionContext.TriggerOffset - 2); if (char.IsLetterOrDigit(prevChar) || prevChar == '"' || prevChar == '#') // Don't trigger if we're already typing an identifier or if we're typing a string suffix (kinda hacky though) { return(null); } } } else if (!(triggerChar == ' ' || triggerChar == '@' || triggerChar == '(' || triggerChar == '.' || triggerChar == '\0')) { return(null); } triggerWordLength = (char.IsLetter(triggerChar) || triggerChar == '_' || triggerChar == '@') ? 1 : 0; // Require a parsed D source var dom = base.Document.ParsedDocument as ParsedDModule; if (dom == null || dom.DDom == null) { return(null); } var l = new CompletionDataList(); if (D_Parser.Misc.CompletionOptions.Instance.EnableSuggestionMode) { l.AddKeyHandler(new SuggestionKeyHandler()); l.AutoCompleteUniqueMatch = false; l.AutoCompleteEmptyMatch = false; l.AutoSelect = true; } else { l.AddKeyHandler(new DoubleUnderScoreWorkaroundHandler(this)); } lock (dom.DDom) DCodeCompletionSupport.BuildCompletionData( Document, dom.DDom, completionContext, l, triggerChar); return(l.Count != 0 ? l : null); }
public override ICompletionDataList HandleCodeCompletion(CodeCompletionContext completionContext, char triggerChar, ref int triggerWordLength) { if (!currentWrapperNullfied && workaround_currentWrapper != null) { workaround_currentWrapper.SetValue(document, null); currentWrapperNullfied = true; } var isLetter = char.IsLetter(triggerChar) || triggerChar == '_'; if (char.IsDigit(triggerChar) || !EnableAutoCodeCompletion && isLetter) { return(null); } if (isLetter) { if (completionContext.TriggerOffset > 1) { var prevChar = document.Editor.GetCharAt(completionContext.TriggerOffset - 2); if (char.IsLetterOrDigit(prevChar) || prevChar == '_' || prevChar == '"' || prevChar == '#') // Don't trigger if we're already typing an identifier or if we're typing a string suffix (kinda hacky though) { return(null); } } } else if (!(triggerChar == ' ' || triggerChar == '@' || triggerChar == '(' || triggerChar == '.' || triggerChar == '\0')) { return(null); } triggerWordLength = isLetter ? 1 : 0; // Require a parsed D source var ast = Document.GetDAst(); if (ast == null) { return(null); } updater.FinishUpdate(); lastTriggerOffset = completionContext.TriggerOffset; var l = new CompletionDataList(); if (D_Parser.Misc.CompletionOptions.Instance.EnableSuggestionMode) { l.AddKeyHandler(new SuggestionKeyHandler()); l.AutoCompleteUniqueMatch = false; l.AutoCompleteEmptyMatch = false; l.AutoSelect = true; } else { l.AddKeyHandler(new DoubleUnderScoreWorkaroundHandler(this)); } try{ lock (ast) DCodeCompletionSupport.BuildCompletionData( Document, ast, completionContext, l, triggerChar); }catch (System.Exception ex) { LoggingService.LogWarning("Error during completion", ex); } return(l.Count != 0 ? l : null); }