public override bool OnCompletionInsert(ScintillaNet.ScintillaControl sci, int position, string text, char trigger) { if (text == "Vector") { string insert = null; string line = sci.GetLine(sci.LineFromPosition(position)); Match m = Regex.Match(line, @"\svar\s+(?<varname>.+)\s*:\s*Vector\.<(?<indextype>.+)(?=(>\s*=))"); if (m.Success) { insert = String.Format(".<{0}>", m.Groups["indextype"].Value); } else { m = Regex.Match(line, @"\s*=\s*new"); if (m.Success) { ASResult result = ASComplete.GetExpressionType(sci, sci.PositionFromLine(sci.LineFromPosition(position)) + m.Index); if (result != null && !result.IsNull() && result.Member != null && result.Member.Type != null) { m = Regex.Match(result.Member.Type, @"(?<=<).+(?=>)"); if (m.Success) { insert = String.Format(".<{0}>", m.Value); } } } if (insert == null) { if (trigger == '.' || trigger == '(') { return(true); } insert = ".<>"; sci.InsertText(position + text.Length, insert); sci.CurrentPos = position + text.Length + 2; sci.SetSel(sci.CurrentPos, sci.CurrentPos); ASComplete.HandleAllClassesCompletion(sci, "", false, true); return(true); } } if (insert == null) { return(false); } if (trigger == '.') { sci.InsertText(position + text.Length, insert.Substring(1)); sci.CurrentPos = position + text.Length; } else { sci.InsertText(position + text.Length, insert); sci.CurrentPos = position + text.Length + insert.Length; } sci.SetSel(sci.CurrentPos, sci.CurrentPos); return(true); } return(false); }
private static List <ICompletionListItem> GetAutoCompletionValuesFromType(string type) { if (type == "Boolean") { return(new List <ICompletionListItem>() { new HtmlAttributeItem("true"), new HtmlAttributeItem("false") }); } else if (type == "Class") { ASComplete.HandleAllClassesCompletion(PluginBase.MainForm.CurrentDocument.SciControl, tokenContext, true, false); } else if (type == "Function") { ClassModel tmpClass = mxmlContext.model.GetPublicClass(); Visibility acc = Visibility.Default | Visibility.Internal | Visibility.Private | Visibility.Protected | Visibility.Public; tmpClass.ResolveExtends(); List <ICompletionListItem> result = null; var validTypes = new Dictionary <string, bool>(); while (tmpClass != null && !tmpClass.IsVoid()) { foreach (MemberModel member in tmpClass.Members) { if ((member.Flags & FlagType.Function) > 0 && (member.Access & acc) > 0) { if (result == null) { result = new List <ICompletionListItem>(); } result.Add(new MemberItem(member)); } } tmpClass = tmpClass.Extends; if (tmpClass != null && tmpClass.InFile.Package == "" && tmpClass.Name == "Object") { break; } // members visibility // TODO: Take into account namespaces! acc = Visibility.Protected | Visibility.Public; } return(result); } return(null); }
private static List <ICompletionListItem> GetAutoCompletionValuesFromType(string type) { if (type == "Boolean") { return(new List <ICompletionListItem>() { new HtmlAttributeItem("true"), new HtmlAttributeItem("false") }); } else if (type == "Class") { ASComplete.HandleAllClassesCompletion(PluginBase.MainForm.CurrentDocument.SciControl, tokenContext, true, false); } return(null); }