public virtual ICompletionDataList ShowCodeSurroundingsCommand(CodeCompletionContext completionContext) { CompletionDataList list = new CompletionDataList(); list.AutoSelect = true; list.AutoCompleteEmptyMatch = true; list.CompletionSelectionMode = CompletionSelectionMode.OwnTextField; var templateWidget = DocumentContext.GetContent <ICodeTemplateContextProvider> (); CodeTemplateContext ctx = CodeTemplateContext.Standard; if (templateWidget != null) { ctx = templateWidget.GetCodeTemplateContext(); } foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(Editor).WaitAndGetResult(CancellationToken.None)) { if ((template.CodeTemplateType & CodeTemplateType.SurroundsWith) == CodeTemplateType.SurroundsWith) { if (ctx == template.CodeTemplateContext) { list.Add(new CodeTemplateCompletionData(this, template)); } } } return(list); }
public override async Task <ICompletionDataList> HandleCodeCompletionAsync(CodeCompletionContext completionContext, CompletionTriggerInfo triggerInfo, CancellationToken token) { if (inactive) { return(await base.HandleCodeCompletionAsync(completionContext, triggerInfo, token)); } if (!IdeApp.Preferences.EnableAutoCodeCompletion) { return(null); } if (triggerInfo.CompletionTriggerReason != CompletionTriggerReason.CharTyped) { return(null); } char completionChar = triggerInfo.TriggerCharacter.Value; int triggerWordLength = 0; if (char.IsLetterOrDigit(completionChar) || completionChar == '_') { if (completionContext.TriggerOffset > 1 && char.IsLetterOrDigit(Editor.GetCharAt(completionContext.TriggerOffset - 2))) { return(null); } triggerWordLength = 1; } else { return(null); } var result = new CompletionDataList(); result.TriggerWordLength = triggerWordLength; result.AutoSelect = false; result.AutoCompleteEmptyMatch = false; result.AutoCompleteUniqueMatch = false; result.AutoCompleteEmptyMatchOnCurlyBrace = false; foreach (var ct in await CodeTemplateService.GetCodeTemplatesAsync(Editor, token)) { if (string.IsNullOrEmpty(ct.Shortcut) || ct.CodeTemplateContext != CodeTemplateContext.Standard) { continue; } result.Add(new CodeTemplateCompletionData(this, ct)); } foreach (var word in await GetAllWords(Editor.CreateSnapshot(), Editor.CaretOffset)) { result.Add(new CompletionData(word)); } return(result); }
public bool DoInsertTemplate() { string word = CodeTemplate.GetTemplateShortcutBeforeCaret(Editor); foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(Editor).WaitAndGetResult(CancellationToken.None)) { if (template.Shortcut == word) { return(true); } } return(false); }
public bool DoInsertTemplate() { string shortcut = CodeTemplate.GetTemplateShortcutBeforeCaret(EditorExtension.Editor); foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(EditorExtension.Editor).WaitAndGetResult(CancellationToken.None)) { if (template.Shortcut == shortcut) { InsertTemplate(template, view.WorkbenchWindow.Document.Editor, view.WorkbenchWindow.Document); return(true); } } return(false); }
public bool DoInsertTemplate(TextEditor editor, DocumentContext ctx) { string shortcut = CodeTemplate.GetTemplateShortcutBeforeCaret(editor); foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(editor).WaitAndGetResult(CancellationToken.None)) { if (template.Shortcut == shortcut) { InsertTemplate(template, editor, ctx); return(true); } } return(false); }
public virtual ICompletionDataList ShowCodeTemplatesCommand(CodeCompletionContext completionContext) { CompletionDataList list = new CompletionDataList(); list.AutoSelect = true; list.AutoCompleteEmptyMatch = true; list.CompletionSelectionMode = CompletionSelectionMode.OwnTextField; foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(Editor).WaitAndGetResult(CancellationToken.None)) { if (template.CodeTemplateType != CodeTemplateType.SurroundsWith) { list.Add(new CodeTemplateCompletionData(this, template)); } } return(list); }
public bool IsTemplateKnown(ExtensibleTextEditor instance) { string shortcut = CodeTemplate.GetTemplateShortcutBeforeCaret(EditorExtension.Editor); bool result = false; foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(EditorExtension.Editor).WaitAndGetResult(CancellationToken.None)) { if (template.Shortcut == shortcut) { result = true; } else if (template.Shortcut.StartsWith(shortcut)) { result = false; break; } } return(result); }
public bool DoInsertTemplate() { string shortcut = CodeTemplate.GetTemplateShortcutBeforeCaret(EditorExtension.Editor); foreach (CodeTemplate template in CodeTemplateService.GetCodeTemplatesAsync(EditorExtension.Editor).WaitAndGetResult(CancellationToken.None)) { if (template.Shortcut == shortcut) { var doc = view.WorkbenchWindow?.Document ?? IdeApp.Workbench.ActiveDocument; if (doc != null) { InsertTemplate(template, doc.Editor, doc); } else { LoggingService.LogError("DoInsertTemplate(): Can't find valid document"); } return(true); } } return(false); }